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 模式的寬高是右下角座標;factor 模式的 X、Y 是對自動位置的位移,factor 模式的寬高則是相對圖表的大小
模型會獨立保留每個欄位與模式。載入時缺席的欄位維持缺席,無效的數值 token 在未變更儲存時原樣保留,算繪時才退回自動幾何
標題版面可以只含 X 與 Y,並保留自動量測出來的大小。繪圖區與圖例版面則需要全部四個座標
SetPositionAndSize 一次呼叫就指派全部四個值、標記四個模式存在並啟用版面。個別座標 setter 也會啟用版面
模式與目標
| xlsxChartLayoutEdge | 以圖表邊緣為基準的位置,X 與 Y 預設使用這個模式 |
| xlsxChartLayoutFactor | 大小或位移係數,寬高預設使用這個模式 |
| 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);
另請參閱