چیدمان و رندر جدول 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
| Method | Description |
|---|---|
THPDFTable.Create(ADoc: THotPDF) | جدول را متصل به سندی که صفحهها، فونتها و تصاویر را فراهم میکند میسازد |
THPDFTable.Destroy | جدول را همراه تکتک سطرها و سلولهای متعلق بهاش آزاد میکند |
THPDFTable.AddColumn(Width: Single): Integer | ستونی با عرض دادهشده در واحدهای صفحهٔ جاری اضافه میکند و اندیسش را برمیگرداند |
THPDFTable.AddRow: THPDFTableRow | سطری هماندازهٔ شمار ستونهای جاری اضافه میکند و آن را برمیگرداند |
THPDFTable.SetBounds(AX, AY: Single) | مبدأ جدول را روی صفحهٔ جاری جای میدهد |
THPDFTable.Render | ارتفاع سطرها را اندازه میگیرد، پسزمینهها، کادرها و محتوای سلولها را میکشد و تا وقتی سطر باقی مانده در صفحههای جدید ادامه میدهد |
Properties
| Property | Description |
|---|---|
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 سلولهای یک سطر جدول بهعلاوهٔ پرچمهای سطح-سطرِ بهکاررفته در اندازهگیری و رندر را نگه میدارد
| Member | Description |
|---|---|
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 محتوا و بازنویسیهای هر-سلول را حمل میکند که روی پیشفرضهای جدول اعمال میشوند
| Property | Description |
|---|---|
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: Boolean | THPDFTableCell.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 به دست میآید تا تصویر نسبت ابعاد مبدأش را حفظ کند