HotXLS Docs

คลาส TXLSXChartLayout

TXLSXChartLayout เก็บ manual layout แบบคงสภาพรายฟิลด์สำหรับพื้นที่พล็อต, หัวเรื่องของแผนภูมิหรือแกน และ 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 เป็นค่า normalize เทียบกับกรอบสี่เหลี่ยมของแผนภูมิ โหมด edge จะให้ X กับ Y เป็นพิกัดซ้ายและบน ส่วนกว้างกับสูงเป็นพิกัดขวาและล่าง โหมด factor จะให้ X กับ Y เป็นการขยับจากตำแหน่ง automatic และกว้างกับสูงเป็นขนาดเทียบกับแผนภูมิ
โมเดลนี้เก็บแต่ละฟิลด์และโหมดแยกจากกัน ส่วนที่ถูกละไว้ในไฟล์ที่โหลดมาจะยังถูกละไว้ และ token ตัวเลขที่ไม่ถูกต้องจะรอดจากการบันทึกแบบไม่แก้ไข ขณะที่ตอนเรนเดอร์จะ fallback ไปใช้เรขาคณิตแบบ automatic
เลย์เอาต์ของหัวเรื่องอาจมีแค่ X กับ Y และคงขนาดที่วัดอัตโนมัติไว้ ส่วนเลย์เอาต์ของพื้นที่พล็อตและ legend ต้องมีพิกัดครบทั้งสี่ค่า
SetPositionAndSize กำหนดทั้งสี่ค่า มาร์คโหมดของค่าเหล่านั้นว่ามีอยู่ และเปิดใช้เลย์เอาต์ในครั้งเดียว setter ของพิกัดแต่ละตัวก็เปิดใช้เลย์เอาต์เช่นกัน

โหมดและ target

xlsxChartLayoutEdgeระบุตำแหน่งจากขอบแผนภูมิ ใช้เป็นค่าเริ่มต้นของ X กับ Y
xlsxChartLayoutFactorตัวประกอบขนาดหรือการขยับ ใช้เป็นค่าเริ่มต้นของความกว้างกับความสูง
Targetกรอบพล็อตแบบ inner หรือ outer และมีความหมายเฉพาะกับ PlotAreaLayout

การ resolve และการแปลง

TXLSXChartLayoutResolver resolve กรอบของหัวเรื่อง, legend, พื้นที่พล็อต inner/outer และหัวเรื่องแกน รอบเดียวสำหรับเอาต์พุต pagination, SVG, PDF, รูปภาพ, พรีวิว, การพิมพ์, viewer และ HTML เรขาคณิตที่ไม่ถูกต้องหรือไม่สมบูรณ์จะคงกรอบ automatic ไว้ ส่วนกรอบที่ถูกต้องแต่เกินขอบเขตจะถูกเลื่อนไปตำแหน่งที่ใกล้ในแผนภูมิที่สุดโดยไม่เปลี่ยนขนาด
การแปลงเป็น ODF แมปเรขาคณิตที่ resolve แล้วไปเป็นระยะสัมบูรณ์ของแผนภูมิ หัวเรื่องกับ legend ใช้ svg:x กับ svg:y ส่วนพื้นที่พล็อตใช้ svg:width กับ svg:height เพิ่มด้วย legend แบบ manual ใน 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);

ดูเพิ่มเติม