HotXLS 문서

XlsGetDrawingThemeColor 함수

유닛: lxHandle
호출자가 이전에 지정된 드로잉 색상 슬롯에 대해 XlsApplyThemeColorToDrawing에 전달한 테마 idx + 색조를 복구합니다. 통합 문서의 메모리 내 사이드 테이블에 해당 슬롯에 대한 항목이 있으면 두 출력 값이 채워진 상태로 True를 반환합니다. 그렇지 않으면 False를 반환하므로 호출자는 ColorFormat.RGB로 대체할 수 있습니다. v2.64.0(차트 백로그 웨이브 D 7단계)부터 사용 가능합니다

구문

function XlsGetDrawingThemeColor(
  ColorFormat : TXLSColorFormat;
  Workbook    : TXLSWorkbook;
  out ThemeIdx: Word;
  out Tint    : Double): Boolean;

매개변수

ColorFormat — 쿼리할 드로잉 색상 슬롯(XlsApplyThemeColorToDrawing에 전달된 것과 동일한 핸들)
Workbook — 호스트 TXLSWorkbook — 사이드 테이블은 색상 슬롯이 아닌 통합 문서 인스턴스에 있습니다
ThemeIdx (출력) — 함수가 True를 반환할 때 기록된 0 기반 테마 슬롯; 그렇지 않으면 0
Tint (출력) — 함수가 True를 반환할 때 -1.0 .. +1.0 범위의 기록된 색조; 그렇지 않으면 0

비고

사이드 테이블은 (ColorFormat._Container, ColorFormat._Pid)를 키로 사용합니다 — 설정자가 사용하는 것과 동일한 키입니다. 동일한 도형 + 동일한 속성 id는 항상 동일한 항목에 도달하므로 연속적인 XlsApplyThemeColorToDrawing 호출은 기록을 누적하는 대신 서로 덮어씁니다
단일 프로세스 범위. 사이드 테이블은 디스크에 직렬화되지 않습니다 — BIFF8 OfficeArt는 온디스크 형식에 테마 색상 슬롯이 없으므로 테마 의도 자체가 지속될 수 없으며 해석된 RGB만 가능합니다. SaveAs 또는 Open 후 통합 문서는 사이드 테이블이 비어 있는 새 TXLSWorkbook 인스턴스이며 이 게터는 모든 쿼리에 대해 False를 반환합니다. 지속적인 의도가 필요한 응용 프로그램 코드는 통합 문서와 함께 자체 상태를 유지해야 합니다
XlsApplyThemeColorToDrawing 대신 일반 ColorFormat.RGB를 통해 설정된 슬롯으로 게터를 호출해도 False를 반환합니다 — 기억할 테마 의도가 없었으며 RGB가 진실의 원천입니다

예제

첫 번째 워크시트의 도형을 탐색하고 테마 idx + 색조가 있는 경우 로그에 씁니다. 그렇지 않으면 원시 RGB로 대체합니다

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;

참조