HotXLS Belgeleri

XlsGetDrawingThemeColor fonksiyonu

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.