Birim: lxHandle
Bir çağıranın, belirli bir çizim renk yuvası için
XlsApplyThemeColorToDrawing
öğesine önceden aktardığı tema idx + renk tonunu kurtarır. Çalışma kitabının bellek içi
yan tablosunda yuvaya karşılık gelen bir girdi olduğunda her iki out değeri dolu olarak
True döndürür; aksi halde çağıranın
ColorFormat.RGB
değerine düşebilmesi için
False döndürür.
v2.64.0 sürümünden (grafik birikim dalgası D aşama 7) beri kullanılabilir
Sözdizimi
function XlsGetDrawingThemeColor(
ColorFormat : TXLSColorFormat;
Workbook : TXLSWorkbook;
out ThemeIdx: Word;
out Tint : Double): Boolean;
Parametreler
ColorFormat — sorgulanacak çizim renk yuvası (XlsApplyThemeColorToDrawing öğesine aktarılan tutamaçla aynı)
Workbook — ana TXLSWorkbook — yan tablo, renk yuvasında değil çalışma kitabı örneğinde bulunur
ThemeIdx (out) — fonksiyon True döndürdüğünde kaydedilen 0 tabanlı tema yuvası; aksi halde 0
Tint (out) — fonksiyon True döndürdüğünde -1.0 .. +1.0 aralığında kaydedilen renk tonu; aksi halde 0
Açıklamalar
Yan tablo, ayarlayıcının kullandığı anahtarla aynı olan (ColorFormat._Container, ColorFormat._Pid) ile anahtarlanır. Aynı şekil + aynı özellik kimliği her zaman aynı girdiye düşer; bu nedenle ardışık XlsApplyThemeColorToDrawing çağrıları geçmişi biriktirmek yerine birbirinin üzerine yazar
Tek işlem kapsamı. Yan tablo diske serileştirilmez — BIFF8 OfficeArt'ın disk biçiminde tema rengi yuvası yoktur; bu nedenle tema amacının kendisi kalıcı olamaz, yalnızca çözülen RGB kalıcı olur. SaveAs veya Open sonrasında çalışma kitabı, yan tablosu boş olan yeni bir TXLSWorkbook örneğidir ve bu alıcı her sorguda False döndürür. Kalıcı amaca ihtiyaç duyan uygulama kodu, çalışma kitabının yanında kendi durumunu korumalıdır
Alıcıyı, düz ColorFormat.RGB ile (yani XlsApplyThemeColorToDrawing yerine) ayarlanmış bir yuva ile çağırmak da False döndürür — hatırlanacak bir tema amacı yoktur, RGB gerçeğin kaynağıdır
Örnek
İlk çalışma sayfasının şekillerini gezer ve bir tema varsa tema idx + renk tonunu günlüğe yazar; aksi halde ham RGB değerine geri döner
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;
Ayrıca bkz.