تخطيط الجداول ورسمها في THPDFTable
THPDFTable هو محرك تخطيط الجداول ورسمها خفيف الوزن المقدَّم في الإصدار v2.429.0 والمكشوف عبر وحدة HPDFTable
قبل الإصدار v2.429.0 كان على المُنتِجين رسم الخلايا يدويًا بـ Rectangle مع TextOut وإحداثيات X مثبَّتة للأعمدة، مع إدارة ارتفاعات الصفوف والتخطيط المخطط وكسور الصفحات بأنفسهم؛ وTHPDFTable يقود عناصر الرسم القائمة في THPDFPage فتُرسَم الجداول بارتفاعات صفوف مقيسة وخلايا مدموجة واستمرار تلقائي عبر الصفحات
الوحدة
HPDFTable
مثال للاستخدام
uses
HPDFTable;
var
Tbl: THPDFTable;
Row: THPDFTableRow;
begin
Tbl:= THPDFTable.Create(HPDF);
try
Tbl.AddColumn(80); Tbl.AddColumn(200); Tbl.AddColumn(120);
Tbl.SetBounds(50, 60);
Row:= Tbl.AddRow; Row.IsHeader:= True;
Row.Cells[0].Text:= 'No';
Row.Cells[1].Text:= 'Description';
Row:= Tbl.AddRow;
Row.Cells[0].ColSpan:= 2; // merged cell across columns 0..1
Row.Cells[0].Text:= 'merged header';
Tbl.Render;
finally
Tbl.Free;
end;
end;
THPDFTable
يملك THPDFTable تخطيط الأعمدة ومجموعة الصفوف وتمريرة الرسم؛ ويرسم عبر مكوّن THotPDF الممرَّر إلى THPDFTable.Create، ولا يستخدم إلا الأعضاء العموميين من THPDFPage وTHotPDF
الطرق
| التابع | الوصف |
|---|---|
THPDFTable.Create(ADoc: THotPDF) | ينشئ الجدول مرتبطًا بالمستند الذي يوفّر الصفحات والخطوط والصور |
THPDFTable.Destroy | يحرر الجدول مع كل صف وخلية يملكهما |
THPDFTable.AddColumn(Width: Single): Integer | يضيف عمودًا بالعرض المعطى بوحدات الصفحة الحالية ويعيد فهرسه |
THPDFTable.AddRow: THPDFTableRow | يضيف صفًا بحجم عدد الأعمدة الحالي ويعيده |
THPDFTable.SetBounds(AX, AY: Single) | يتموضع أصل الجدول على الصفحة الحالية |
THPDFTable.Render | يقيس ارتفاعات الصفوف ويرسم الخلفيات والحدود ومحتوى الخلايا، ويواصل على صفحات جديدة ما دامت هناك صفوف |
الخصائص
| الخاصية | الوصف |
|---|---|
THPDFTable.Doc: THotPDF | المستند المرتبط الممرَّر إلى المُنشئ |
THPDFTable.ColCount: Integer | عدد الأعمدة المضافة بـ THPDFTable.AddColumn |
THPDFTable.RowCount: Integer | عدد الصفوف المضافة بـ THPDFTable.AddRow |
THPDFTable.Rows[Index: Integer]: THPDFTableRow | الوصول إلى صف بالفهرس |
THPDFTable.X: Single و THPDFTable.Y: Single | أصل الجدول على الصفحة بوحدات الصفحة الحالية |
THPDFTable.HeaderBgColor: TColor | لون الخلفية المرسوم خلف صفوف الرأس |
THPDFTable.AlternatingBg: TColor | خلفية التخطيط المخطط المطبقة على الصفوف غير الرأسية المتناوبة |
THPDFTable.BorderColor: TColor و THPDFTable.BorderWidth: Single | لون خطوط الشبكة وعرضها المستخدمان لحدود الخلايا |
THPDFTable.DefaultFontName: AnsiString، THPDFTable.DefaultFontSize: Single، THPDFTable.DefaultAlign: THPDFCellAlign | الخط والمحاذاة الاحتياطيان للخلايا التي لا تتجاوزهما |
THPDFTable.Padding: Single | التباعد الداخلي بين حد الخلية ومحتواها |
THPDFTable.BottomMargin: Single | المساحة المحجوزة أسفل الصفحة قبل أن تنتقل تمريرة الرسم إلى صفحة جديدة |
THPDFTable.RepeatHeader: Boolean | عند التفعيل يُعاد إصدار شريط الرأس أعلى كل صفحة متابعة |
THPDFTable.TotalHeightRendered: Single | الارتفاع الكلي المستهلك في آخر تمريرة رسم عبر كل الصفحات |
THPDFTableRow
يحتفظ THPDFTableRow بخلايا صف واحد من الجدول مع أعلام مستوى الصف المستخدمة أثناء القياس والرسم
| العضو | الوصف |
|---|---|
THPDFTableRow.Create(InitialColCount: Integer) | ينشئ الصف مهيأً مسبقًا بعدد الخلايا المعطى |
THPDFTableRow.Destroy | يحرر الصف وخلاياه |
THPDFTableRow.AddCell: THPDFTableCell | يضيف خلية واحدة ويعيدها |
THPDFTableRow.EnsureCells(Count: Integer): Integer | ينمّي الصف إلى عدد خلايا لا يقل عن المعطى ويعيد العدد الجديد |
THPDFTableRow.Cells[Index: Integer]: THPDFTableCell | خاصية مصفوفة افتراضية للوصول إلى خلية بالفهرس |
THPDFTableRow.Count: Integer | عدد الخلايا التي يحتفظ بها الصف حاليًا |
THPDFTableRow.IsHeader: Boolean | يميّز الصف كصف رأس يُرسَم بلون THPDFTable.HeaderBgColor ويُكرَّر عند تفعيل THPDFTable.RepeatHeader |
THPDFTableRow.MinHeight: Single | الحد الأدنى المطبق على ارتفاع الصف المقيس |
THPDFTableCell
يحمل THPDFTableCell المحتوى وتجاوزات كل خلية المطبقة فوق افتراضيات الجدول
| الخاصية | الوصف |
|---|---|
THPDFTableCell.Text: WideString | نص الخلية؛ يُرسَل عبر THPDFPage.TextOutHTML عندما تكون THPDFTableCell.IsHTML true فتُراعى وسوم السطر المضمنة للعريض واللون والروابط والمرتفع والمنخفض |
THPDFTableCell.Align: THPDFCellAlign و THPDFTableCell.VAlign: THPDFCellVAlign | محاذاة المحتوى الأفقية والرأسية داخل الخلية |
THPDFTableCell.ColSpan: Integer و THPDFTableCell.RowSpan: Integer | عددا الدمج الأفقي والرأسي، وكلاهما يساوي 1 افتراضيًا |
THPDFTableCell.BgColor: TColor و THPDFTableCell.HasBgColor: Boolean | تجاوز لون الخلفية لكل خلية وعلامة وجوده |
THPDFTableCell.TextColor: TColor و THPDFTableCell.HasTextColor: Boolean | تجاوز لون النص لكل خلية وعلامة وجوده |
THPDFTableCell.FontName: AnsiString، THPDFTableCell.FontSize: Single، THPDFTableCell.FontStyle: TFontStyles، THPDFTableCell.HasFont: Boolean | تجاوز الخط لكل خلية وعلامة وجوده |
THPDFTableCell.WordWrap: Boolean | يلف النص الطويل عبر أسطر مقيسة داخل الخلية، ومفعّل افتراضيًا |
THPDFTableCell.ImageIndex: Integer | عندما تكون القيمة صفرًا أو أكثر تعرض الخلية الصورة المسجلة بذلك الفهرس عبر THotPDF.AddImage بدلًا من النص، والافتراضي -1 |
THPDFTableCell.ImageAspect: Single | نسبة العرض إلى الارتفاع للعرض في خلية صورة؛ وتُقاس الصورة على عرض الخلية ويُشتق ارتفاعها من هذه النسبة، والافتراضي 1.0 |
THPDFTableCell.IsHTML: Boolean | يمرّر THPDFTableCell.Text عبر THPDFPage.TextOutHTML فتُرسَم الوسوم المضمنة |
تعدادات المحاذاة
تختار THPDFCellAlign = (caLeft, caCenter, caRight) محاذاة الخلية الأفقية وتختار THPDFCellVAlign = (cvaTop, cvaMiddle, cvaBottom) محاذاة الخلية الرأسية
التخطيط وسلوك كسر الصفحات
تُقاس ارتفاعات الصفوف من محتوى الخلايا مع مراعاة التفاف النص وTHPDFTableRow.MinHeight، وتوضع الخلايا المامتدة على شبكة داخلية بحيث تندمج THPDFTableCell.ColSpan وTHPDFTableCell.RowSpan بشكل صحيح عبر الصفوف، وتنتقل تمريرة الرسم إلى صفحة جديدة عندما لا يتسع الصف التالي فوق THPDFTable.BottomMargin
عندما تكون THPDFTable.RepeatHeader true يُعاد إصدار شريط الرأس أعلى كل صفحة متابعة قبل رسم صفوف إضافية
تشير خلايا الصور المقدَّمة في الإصدار v2.432.0 إلى صورة مسجلة عبر THotPDF.AddImage بالفهرس، وتُقاس على عرض الخلية، ويُشتق ارتفاعها من THPDFTableCell.ImageAspect فتحافظ الصورة على نسبة أبعادها المصدرية