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 כך שהתמונה שומרת על יחס התלתל המקורי שלה

ראו גם