Dokumentasi HotXLS

Fungsi XlsGetDrawingThemeColor

Unit: lxHandle
Memulihkan theme idx + tint yang sebelumnya dilewatkan pemanggil ke XlsApplyThemeColorToDrawing untuk slot warna gambar yang ditentukan. Mengembalikan True dengan kedua nilai out diisi saat tabel sisi dalam memori workbook memiliki entri untuk slot; mengembalikan False jika tidak sehingga pemanggil dapat jatuh ke ColorFormat.RGB. Tersedia sejak v2.64.0 (gelombang D fase 7 backlog grafik)

Sintaks

function XlsGetDrawingThemeColor(
  ColorFormat : TXLSColorFormat;
  Workbook    : TXLSWorkbook;
  out ThemeIdx: Word;
  out Tint    : Double): Boolean;

Parameter

ColorFormat — slot warna gambar yang akan dikueri (handle yang sama yang diteruskan ke XlsApplyThemeColorToDrawing)
WorkbookTXLSWorkbook host — tabel sisi berada di instance workbook, bukan slot warna
ThemeIdx (out) — slot tema berbasis-0 yang direkam ketika fungsi mengembalikan True; 0 jika tidak
Tint (out) — tint yang direkam dalam rentang -1.0 .. +1.0 ketika fungsi mengembalikan True; 0 jika tidak

Keterangan

Tabel sisi dikunci oleh (ColorFormat._Container, ColorFormat._Pid) — kunci yang sama yang digunakan penyetel. Bentuk yang sama + id properti yang sama selalu mendarat di entri yang sama, sehingga panggilan XlsApplyThemeColorToDrawing berturut-turut menimpa satu sama lain daripada mengakumulasi riwayat
Cakupan satu proses. Tabel sisi tidak diserialisasi ke disk — OfficeArt BIFF8 tidak memiliki slot warna tema dalam format pada disknya, sehingga niat tema itu sendiri tidak dapat dipertahankan, hanya RGB yang diselesaikan. Setelah SaveAs atau Open, workbook adalah instance TXLSWorkbook baru yang tabel sisinya kosong, dan getter ini mengembalikan False untuk setiap kueri. Kode aplikasi yang membutuhkan niat yang persisten harus menyimpan statusnya sendiri di samping workbook
Memanggil getter dengan slot yang diatur melalui ColorFormat.RGB biasa (alih-alih XlsApplyThemeColorToDrawing) juga mengembalikan False — tidak ada niat tema yang perlu diingat, RGB adalah sumber kebenaran

Contoh

Menelusuri bentuk pada worksheet pertama dan menulis theme idx + tint ke log saat ada, jatuh kembali ke RGB mentah jika tidak

var
  i        : Integer;
  Shape    : TXLSShape;
  ThemeIdx : Word;
  Tint     : Double;
begin
  for i := 0 to Workbook.Worksheets[1].Shapes.Count - 1 do
  begin
    Shape := Workbook.Worksheets[1].Shapes.Items[i];

    if XlsGetDrawingThemeColor(Shape.Fill.ForeColor, Workbook, ThemeIdx, Tint)
    then
      LogLine(Format('shape %d: theme=%d tint=%.2f', [i, ThemeIdx, Tint]))
    else
      LogLine(Format('shape %d: rgb=%.8x',         [i, Shape.Fill.ForeColor.RGB]));
  end;
end;

Lihat juga