유닛: lxHandle
응용 프로그램이 차트 채우기, 차트 선 색상 또는 도형 채우기를
Interior.SetThemeColor를 통해 셀이 수행하는 것과 동일한 방식으로 통합 문서 테마 팔레트를 추적하게 하려는 경우 이 도우미를 사용합니다
구문
procedure XlsApplyThemeColorToDrawing(
ColorFormat: TXLSColorFormat;
Workbook : TXLSWorkbook;
ThemeIdx : Word;
Tint : Double);
매개변수
Workbook — 호스트 TXLSWorkbook. 테마 팔레트를 해석하고 메모리 내 사이드 테이블을 보유하는 데 필요합니다
ThemeIdx — 0 기반 테마 슬롯(0=lt1, 1=dk1, 2=lt2, 3=dk2, 4..9=accent1..6, 10=hlink, 11=foHlink)
Tint — -1.0 .. +1.0 범위의 스펙 스타일 밝게/어둡게 조정
비고
도우미는 호출당 두 번 씁니다:
- OfficeArt opt blob (on disk). 테마 idx와 tint는 통합 문서의 BIFF 테마 팔레트를 통해 구체적인 RGB로 해석되어 도형 색상 슬롯에 기록됩니다. BIFF8 OfficeArt는 기본 테마 색 인코딩이 없는 Office 2007 이전 이진 형식이므로, Save / Open을 거쳐 살아남는 것은 이것뿐입니다
- 통합 문서의 메모리 내 보조 테이블(v2.64.0+). 설정자는 원래의
(ThemeIdx, Tint)를 TXLSWorkbook.FDrawingThemeColors에 (ColorFormat._Container, ColorFormat._Pid)를 키로 기록합니다. 짝이 되는 XlsGetDrawingThemeColor 읽기 쪽은 같은 프로세스 안에서 그 값을 다시 가져옵니다. 같은 슬롯을 다시 설정하면 항목이 덮어써지므로, 보조 테이블은 기록을 누적하지 않고 최신 의도를 추적합니다
단일 프로세스 전용. BIFF8 OfficeArt 4바이트 ColorRef는 인덱스/RGB/구성표/sysColor 변형을 인코딩하지만, 테마 idx + 색조가 지속될 수 있는 XFExt $087D와 유사한 확장 레코드는 없습니다. 따라서 저장/열기 왕복 전달의 제한은 HotXLS의 격차가 아닌 파일 형식에 구조적으로 내재된 것입니다. 재로드 후 통합 문서는 빈 사이드 테이블을 가진 새 TXLSWorkbook 인스턴스이며 XlsGetDrawingThemeColor는 False를 반환하고 ColorFormat.RGB로 대체됩니다
예제
도형의 단색 채우기를 25% 어두운 색조로 accent5로 재색상화한 다음 통합 문서 사이드 테이블에서 테마 의도를 다시 읽어 속성 패널에 표시합니다. SaveAs / Open 후 사이드 테이블이 다시 비워지므로 지속적인 의도가 필요한 호출자는 자체 상태를 유지해야 합니다
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;
참조