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 | כשהערך true, רצועת הכותרת נפלטת מחדש בראש כל עמוד המשך |
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, כך שה-markup הפנימי להדגשה, צבע, קישורים ו-sub-sup מכובד |
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 כך שה-markup הפנימי מרונדר |
enums של יישור
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 כך שהתמונה שומרת על יחס התלתל המקורי שלה