تخطيط الجداول ورسمها في 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 فتحافظ الصورة على نسبة أبعادها المصدرية

انظر أيضًا