Dokumentacja HotXLS

Metoda SetThemeColor (Interior)

Ustawia kolor wypełnienia cieniowania komórki (pierwszy plan) do jednego z 12 slotów kolorów motywu Office z opcjonalnym dostosowaniem odcienia. Towarzysz Interior.Color dla wywołujących, którzy chcą bezpośrednio adresować kolory motywu Office (dzięki czemu Excel może zmienić odcień komórki za pomocą palety motywu skoroszytu) zamiast przypinać stały RGB. Dostępne od v2.61.0 (faza 4 paczki D wykresu)

Składnia

procedure SetThemeColor(ThemeIdx: Word; Tint: Double);

Parametry

ThemeIdx — slot motywu od zera: 0=lt1, 1=dk1, 2=lt2, 3=dk2, 4..9=accent1..accent6, 10=hlink, 11=foHlink Odpowiada standardowej kolejności motywu Office używanej przez stronę XLSX
Tint — dostosowanie jaśniejszy/ciemniejszy w stylu spec w zakresie -1.0 .. +1.0 0.0 używa podstawowego koloru slotu motywu; wartości ujemne ciemnieją (jasność HSL ku 0), wartości dodatnie rozjaśniają (jasność HSL ku 1). Czytnik HotXLS koduje to jako 15-bitową liczbę całkowitą ze znakiem w polu FullColorExt.nTintShade rekordu XFExt

Uwagi

Ustawiacz przechodzi dwiema ścieżkami, dzięki czemu ta sama komórka renderuje się poprawnie zarówno w Excel 2007+, jak i Excel 2003:
Komórki ustawione przez SetThemeColor są przesyłane po załadowaniu: Interior.Color zwraca rozwiązany RGB (motyw + odcień zastosowany przez paletę motywu BIFF), dzięki czemu wywołujący zawsze widzą konkretną wartość LongWord
Niestandardowe palety motywu ustawione w programie Excel przez Układ strony → Kolory przetrwają załadowanie i zapis przez rekord BIFF8 Theme ($0892), więc każde odwołanie SetThemeColor po stronie wywołującego jest rozwiązywane przez rzeczywisty motyw skoroszytu zamiast domyślnego schematu Office

Przykład

Wypełnia wiersz nagłówka kolorem accent1 i oznacza komórki ostrzeżeń z 50% rozjaśnionym czerwonym akcentem (accent2 + odcień 0.5)

var
  Header   : IXLSRange;
  Warnings : IXLSRange;
begin
  Header := Workbook.Sheets[1].Range['A1', 'G1'];
  Header.Interior.SetThemeColor(4, 0.0);   // accent1, base shade

  Warnings := Workbook.Sheets[1].Range['G2', 'G20'];
  Warnings.Interior.SetThemeColor(5, 0.5);   // accent2, 50% lighter

  Workbook.SaveAs('ThemeFills.xls', xlExcel97);
end;

Zobacz też