چیدمان و رندر جدول 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 استفاده می‌کند

Methods

MethodDescription
THPDFTable.Create(ADoc: THotPDF)جدول را متصل به سندی که صفحه‌ها، فونت‌ها و تصاویر را فراهم می‌کند می‌سازد
THPDFTable.Destroyجدول را همراه تک‌تک سطرها و سلول‌های متعلق به‌اش آزاد می‌کند
THPDFTable.AddColumn(Width: Single): Integerستونی با عرض داده‌شده در واحدهای صفحهٔ جاری اضافه می‌کند و اندیسش را برمی‌گرداند
THPDFTable.AddRow: THPDFTableRowسطری هم‌اندازهٔ شمار ستون‌های جاری اضافه می‌کند و آن را برمی‌گرداند
THPDFTable.SetBounds(AX, AY: Single)مبدأ جدول را روی صفحهٔ جاری جای می‌دهد
THPDFTable.Renderارتفاع سطرها را اندازه می‌گیرد، پس‌زمینه‌ها، کادرها و محتوای سلول‌ها را می‌کشد و تا وقتی سطر باقی مانده در صفحه‌های جدید ادامه می‌دهد

Properties

PropertyDescription
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وقتی true باشد نوار سرصفحه در بالای هر صفحهٔ ادامه دوباره صادر می‌شود
THPDFTable.TotalHeightRendered: Singleارتفاع کل مصرف‌شدهٔ آخرین گذر رندر روی همهٔ صفحه‌ها

THPDFTableRow

THPDFTableRow سلول‌های یک سطر جدول به‌علاوهٔ پرچم‌های سطح-سطرِ به‌کاررفته در اندازه‌گیری و رندر را نگه می‌دارد

MemberDescription
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 محتوا و بازنویسی‌های هر-سلول را حمل می‌کند که روی پیش‌فرض‌های جدول اعمال می‌شوند

PropertyDescription
THPDFTableCell.Text: WideStringمتن سلول؛ وقتی THPDFTableCell.IsHTML true باشد از طریق THPDFPage.TextOutHTML رندر می‌شود تا نشانه‌گذاری درون‌خطیِ ضخیم، رنگ، پیوند و زیرنویس/بالانویس رعایت شود
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: BooleanTHPDFTableCell.Text را به THPDFPage.TextOutHTML می‌فرستد تا نشانه‌گذاری درون‌خطی رندر شود

شمارش‌گرهای تراز

THPDFCellAlign = (caLeft, caCenter, caRight) تراز افقی سلول و THPDFCellVAlign = (cvaTop, cvaMiddle, cvaBottom) تراز عمودی سلول را انتخاب می‌کند

رفتار چیدمان و شکست صفحه

ارتفاع سطرها از محتوای سلول‌ها با شکست واژه و رعایت THPDFTableRow.MinHeight اندازه گرفته می‌شود، سلول‌های spanدار روی یک شبکهٔ داخلی جای می‌گیرند تا THPDFTableCell.ColSpan و THPDFTableCell.RowSpan درست میان سطرها ادغام شوند، و گذر رندر وقتی سطر بعدی بالای THPDFTable.BottomMargin جا نشود به صفحهٔ جدید می‌شکند

وقتی THPDFTable.RepeatHeader true باشد، نوار سرصفحه پیش از کشیده‌شدن سطرهای بعدی در بالای هر صفحهٔ ادامه دوباره صادر می‌شود

سلول‌های تصویریِ اضافه‌شده در v2.432.0 با اندیس به تصویری ثبت‌شده از طریق THotPDF.AddImage ارجاع می‌دهند، به عرض سلول مقیاس می‌شوند و ارتفاعشان از THPDFTableCell.ImageAspect به دست می‌آید تا تصویر نسبت ابعاد مبدأش را حفظ کند

همچنین ببینید