TXLSXChartLayout یک layout دستیِ محافظِ فیلدها را برای plot area ها، عنوانهای chart یا محور و legend ها نگه میدارد
اعلان
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 نسبت به مستطیل chart نرمالیزه میشوند. در حالت Edge، X و Y مختصات چپ و بالا هستند، width و height لبه مختصات راست و پایین را میدهند، X و Y از نوع factor جای خودکار را جابهجا میکنند و width و height از نوع factor اندازههای نسبی به chart هستند
این مدل هر فیلد و حالت را مستقل نگه میدارد. فیلدهایی که موقع بارگذاری غایباند غایب میمانند و توکنهای عددی نامعتبر در یک ذخیرهسازی بدون تغییر سرجایشان میمانند، در حالی که رندر به هندسه خودکار fallback میکند
layout عنوان ممکن است فقط X و Y را داشته باشد و اندازه اندازهگیریشده خودکار را حفظ کند. layout های plot-area و legend به هر چهار مختصه نیاز دارند
SetPositionAndSize هر چهار مقدار را در یک فراخوانی اختصاص میدهد، حالتهای آنها را موجود علامت میزند و layout را فعال میکند. setter های تکمقداری هم layout را فعال میکنند
حالتها و target
| xlsxChartLayoutEdge | موقعیت از لبه chart، بهصورت پیشفرض برای X و Y به کار میرود |
| xlsxChartLayoutFactor | ضریب اندازه یا آفست، بهصورت پیشفرض برای width و height به کار میرود |
| Target | مستطیل plot داخلی یا بیرونی و فقط برای PlotAreaLayout معنا دارد |
محاسبه و تبدیل
TXLSXChartLayoutResolver مستطیلهای عنوان، legend، plot-area داخلی و بیرونی و عنوان محور را یکبار برای خروجیهای pagination، SVG، PDF، تصویر، preview، چاپ، viewer و HTML محاسبه میکند. هندسه نامعتبر یا ناقص همان مستطیل خودکار را نگه میدارد، در حالی که مستطیل معتبر ولی خارج از محدوده بدون تغییر اندازه به نزدیکترین موقعیت داخل chart منتقل میشود
تبدیل ODF هندسه محاسبهشده را به فواصل مطلق chart نگاشت میکند. عنوان و legend از svg:x و svg:y استفاده میکنند و plot area علاوه بر آنها از svg:width و svg:height هم استفاده میکند. legend دستی ODF شامل chart:legend-position نمیشود، چون این attribute بر مختصات مطلق اولویت میگیرد
مثال
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);
همچنین ببینید