Moduł: lxHandle
Stosuje kolor motywu ze skalowaniem odcienia/cienia do wartości koloru RGB. Odwzorowuje indeks koloru motywu Excel na pełny kolor RGB używając aktywnej palety motywu
TXLSColorFormat — the same handle that
FillFormat.ForeColor and
LineFormat.ForeColor udostępniają na kształtach i elementach wykresów. Dostępne od v2.62.0 (chart backlog wave D phase 5). v2.64.0 (phase 7) dodał tabelę boczną w pamięci na poziomie skoroszytu, aby kolejne wywołanie
XlsGetDrawingThemeColor w obrębie tego samego procesu mogło odzyskać oryginalne theme idx + tint
Składnia
procedure XlsApplyThemeColorToDrawing(
ColorFormat: TXLSColorFormat;
Workbook : TXLSWorkbook;
ThemeIdx : Word;
Tint : Double);
Opis
Ten przykład pobiera odcień koloru motywu dla koloru tła kształtu — gniazdo koloru rysunku do zaktualizowania. Zazwyczaj
ForeColor of a
TXLSFillFormat or
TXLSLineFormat Workbook — the host TXLSWorkbook. Needed to resolve the theme palette and to hold the in-memory side-table
ThemeIdx — 0-based theme slot
(0=lt1, 1=dk1, 2=lt2, 3=dk2, 4..9=accent1..6, 10=hlink, 11=foHlink)
Tint — spec-style lighter/darker adjustment in the range -1.0 .. +1.0
Przykład
The helper performs two writes per call:
- Blob opt OfficeArt (na dysku). Motyw idx + tint jest rozwiązywany przez paletę motywu BIFF skoroszytu do konkretnego RGB i zapisywany do slotu koloru rysunku. BIFF8 OfficeArt to binarny format sprzed Office 2007 bez natywnego kodowania koloru motywu, więc to jedyny element, który przetrwa Save / Open
- Wewnętrzna tabela pomocnicza w pamięci skoroszytu (v2.64.0+). Ustawiający zapisuje też oryginalne
(ThemeIdx, Tint) w TXLSWorkbook.FDrawingThemeColors , kluczowane przez (ColorFormat._Container, ColorFormat._Pid). Towarzyszący czytnik XlsGetDrawingThemeColor pobiera te wartości w tym samym procesie. Ponowne ustawienie tego samego slotu nadpisuje wpis, więc tabela pomocnicza śledzi najnowszy zamiar zamiast gromadzić historię
Why single-process only. 4-bajtowy ColorRef w BIFF8 OfficeArt koduje warianty indexed / RGB / scheme / sysColor, ale nie ma rekordu rozszerzenia analogicznego do XFExt $087D, w którym idx motywu + tint dałoby się utrwalić. Limit round-tripu Save / Open wynika więc z konstrukcji formatu pliku, a nie z braku w HotXLS. Po ponownym wczytaniu skoroszyt jest świeżą instancją TXLSWorkbook instance with an empty side-table and XlsGetDrawingThemeColor returns False, falling through to ColorFormat.RGB
Przykład
Ponownie barwi jednolite wypełnienie kształtu na accent5 z odcieniem ciemniejszym o 25%, a następnie odczytuje intencję motywu z tablicy pomocniczej skoroszytu, aby pokazać ją w panelu właściwości. Po SaveAs / Open tablica pomocnicza znowu startuje pusta, więc wywołujący potrzebujący trwałej intencji powinni przechowywać własny stan
var
Shape : TXLSShape;
ThemeIdx : Word;
Tint : Double;
begin
Shape := Workbook.Worksheets[1].Shapes.Items[0];
XlsApplyThemeColorToDrawing(Shape.Fill.ForeColor, Workbook, 8, - 0.25);
// Same process — the side-table still has the entry.
if XlsGetDrawingThemeColor(Shape.Fill.ForeColor, Workbook, ThemeIdx, Tint)
then
ShowMessage(Format('theme=%d tint=%.2f', [ThemeIdx, Tint]));
Workbook.SaveAs('ThemedShape.xls', xlExcel97);
end;
Zobacz także