TXLSXChartLayout은 플롯 영역, 차트·축 제목, 범례를 위한 필드 보존형 수동 레이아웃을 저장합니다
선언
type
TXLSXChartLayoutTarget = (xlsxChartLayoutOuter, xlsxChartLayoutInner);
TXLSXChartLayoutMode = (xlsxChartLayoutFactor, xlsxChartLayoutEdge);
TXLSXChartLayout = class
property Enabled: Boolean;
property HasTarget: Boolean;
property HasXMode, HasYMode, HasWidthMode, HasHeightMode: Boolean;
property HasX, HasY, HasWidth, HasHeight: Boolean;
property Target: TXLSXChartLayoutTarget;
property XMode, YMode, WidthMode, HeightMode: TXLSXChartLayoutMode;
property X, Y, Width, Height: Double;
procedure ClearTarget;
procedure ClearXMode;
procedure ClearYMode;
procedure ClearWidthMode;
procedure ClearHeightMode;
procedure ClearX;
procedure ClearY;
procedure ClearWidth;
procedure ClearHeight;
procedure SetPositionAndSize(AX, AY, AWidth, AHeight: Double);
procedure Assign(Source: TXLSXChartLayout);
procedure Clear;
end;
좌표 모델
X, Y, Width, Height는 차트 사각형을 기준으로 정규화됩니다. edge X와 Y는 왼쪽·위쪽 좌표이고, edge width·height는 오른쪽·아래쪽 좌표입니다. factor X와 Y는 자동 위치에 대한 오프셋이고, factor width·height는 차트 상대 크기입니다
이 모델은 각 필드와 모드를 독립적으로 유지합니다. 가져올 때 누락된 항목은 누락된 채로 남고, 유효하지 않은 숫자 토큰도 변경 없이 저장되며, 렌더링 시에는 자동 지오메트리로 폴백합니다
제목 레이아웃은 X와 Y만 담고 자동으로 측정된 크기를 유지할 수 있습니다. 플롯 영역과 범례 레이아웃은 네 좌표를 모두 요구합니다
SetPositionAndSize는 네 값을 한 번에 할당하고 모드를 존재 표시한 뒤 레이아웃을 활성화합니다. 개별 좌표 setter도 레이아웃을 활성화합니다
모드와 대상
| xlsxChartLayoutEdge | 차트 가장자리로부터의 위치. X와 Y의 기본값입니다 |
| xlsxChartLayoutFactor | 크기 또는 오프셋 계수. width와 height의 기본값입니다 |
| Target | 안쪽 또는 바깥쪽 플롯 사각형. PlotAreaLayout에서만 의미가 있습니다 |
해석 및 변환
TXLSXChartLayoutResolver는 제목, 범례, 안쪽·바깥쪽 플롯 영역, 축 제목 사각형을 페이지 매기기, SVG, PDF, 이미지, 미리 보기, 인쇄, 뷰어, HTML 출력용으로 한 번에 해석합니다. 잘못되었거나 불완전한 지오메트리는 자동 사각형을 유지하고, 유효하지만 범위를 벗어난 사각형은 크기를 바꾸지 않은 채 차트 안의 가장 가까운 위치로 이동합니다
ODF 변환은 해석된 지오메트리를 절대 차트 거리로 매핑합니다. 제목과 범례는 svg:x와 svg:y를 사용하고, 플롯 영역은 svg:width와 svg:height도 사용합니다. 수동 ODF 범례는 chart:legend-position을 생략합니다. 이 속성은 절대 좌표를 덮어쓰기 때문입니다
예제
Chart.PlotAreaLayout.Target := xlsxChartLayoutInner;
Chart.PlotAreaLayout.SetPositionAndSize(0.12, 0.18, 0.72, 0.64);
Chart.TitleLayout.SetPositionAndSize(0.1, 0.02, 0.6, 0.12);
Chart.LegendLayout.SetPositionAndSize(0.2, 0.84, 0.6, 0.1);
참고 항목