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)
Workbook — TXLSWorkbook 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