THPDFTable – layout și randare tabele
THPDFTable este motorul ușor de layout și randare a tabelelor introdus în v2.429.0 și expus de unit-ul HPDFTable
Înainte de v2.429.0, producerii trebuiau să deseneze manual celulele cu Rectangle plus TextOut și coordonate X hardcodate ale coloanelor, gestionând pe cont propriu înălțimile rândurilor, dungi zebra și trecerile pe pagină nouă; THPDFTable conduce primitivele existente de desen ale THPDFPage, astfel încât tabelele se randează cu înălțimi de rând măsurate, celule îmbinate și continuare automată pe pagină nouă
Unit
HPDFTable
Exemplu de utilizare
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; // celulă îmbinată peste coloanele 0..1
Row.Cells[0].Text:= 'merged header';
Tbl.Render;
finally
Tbl.Free;
end;
end;
THPDFTable
THPDFTable deține layout-ul de coloane, colecția de rânduri și trecerea de randare; desenează prin componenta THotPDF pasată lui THPDFTable.Create și folosește doar membri publici THPDFPage și THotPDF
Metode
| Method | Description |
|---|---|
THPDFTable.Create(ADoc: THotPDF) | Creează tabela legată de documentul care furnizează paginile, fonturile și imaginile |
THPDFTable.Destroy | Eliberează tabela împreună cu fiecare rând și celulă pe care le deține |
THPDFTable.AddColumn(Width: Single): Integer | Adaugă o coloană cu lățimea dată, în unitățile curente de pagină, și returnează indexul ei |
THPDFTable.AddRow: THPDFTableRow | Adaugă un rând dimensionat după numărul curent de coloane și îl returnează |
THPDFTable.SetBounds(AX, AY: Single) | Poziționează originea tabelului pe pagina curentă |
THPDFTable.Render | Masoară înălțimile rândurilor, desenează fundalurile, bordurile și conținutul celulelor și continuă pe pagini noi cât timp mai există rânduri |
Proprietăți
| Property | Description |
|---|---|
THPDFTable.Doc: THotPDF | Documentul legat, furnizat constructorului |
THPDFTable.ColCount: Integer | Numărul de coloane adăugate cu THPDFTable.AddColumn |
THPDFTable.RowCount: Integer | Numărul de rânduri adăugate cu THPDFTable.AddRow |
THPDFTable.Rows[Index: Integer]: THPDFTableRow | Accesează un rând după index |
THPDFTable.X: Single și THPDFTable.Y: Single | Originea tabelului pe pagină, în unitățile curente de pagină |
THPDFTable.HeaderBgColor: TColor | Culoarea de fundal vopsită în spatele rândurilor de antet |
THPDFTable.AlternatingBg: TColor | Fundalul în dungi zebra aplicat rândurilor alternante care nu sunt antet |
THPDFTable.BorderColor: TColor și THPDFTable.BorderWidth: Single | Culoarea și lățimea liniilor de grilă folosite pentru bordurile celulelor |
THPDFTable.DefaultFontName: AnsiString, THPDFTable.DefaultFontSize: Single, THPDFTable.DefaultAlign: THPDFCellAlign | Fontul și alinierea de rezervă pentru celulele care nu le suprascriu |
THPDFTable.Padding: Single | Spațierea interioară dintre bordura unei celule și conținutul ei |
THPDFTable.BottomMargin: Single | Spațiul rezervat la baza paginii înainte ca trecerea de randare să sară pe o pagină nouă |
THPDFTable.RepeatHeader: Boolean | Când e true, banda de antet este reemisă în vârful fiecărei pagini de continuare |
THPDFTable.TotalHeightRendered: Single | Înălțimea totală consumată de ultima trecere de randare, pe toate paginile |
THPDFTableRow
THPDFTableRow reține celulele unui rând de tabel plus fanioanele de nivel de rând folosite la măsurare și randare
| Member | Description |
|---|---|
THPDFTableRow.Create(InitialColCount: Integer) | Creează rândul pre-populat cu numărul dat de celule |
THPDFTableRow.Destroy | Eliberează rândul și celulele lui |
THPDFTableRow.AddCell: THPDFTableCell | Adaugă o celulă și o returnează |
THPDFTableRow.EnsureCells(Count: Integer): Integer | Crește rândul până la cel puțin numărul dat de celule și returnează noul număr |
THPDFTableRow.Cells[Index: Integer]: THPDFTableCell | Proprietate tablou implicit care accesează o celulă după index |
THPDFTableRow.Count: Integer | Numărul de celule reținute în prezent de rând |
THPDFTableRow.IsHeader: Boolean | Marchează rândul ca rând de antet, vopsit cu THPDFTable.HeaderBgColor și repetat când THPDFTable.RepeatHeader este activat |
THPDFTableRow.MinHeight: Single | Limita inferioară aplicată înălțimii măsurate a rândului |
THPDFTableCell
THPDFTableCell poartă conținutul și suprascrierile per celulă aplicate peste valorile implicite ale tabelului
| Property | Description |
|---|---|
THPDFTableCell.Text: WideString | Textul celulei; randat prin THPDFPage.TextOutHTML când THPDFTableCell.IsHTML este true, astfel încât markup-ul inline pentru bold, culoare, linkuri și sub-sup este onorat |
THPDFTableCell.Align: THPDFCellAlign și THPDFTableCell.VAlign: THPDFCellVAlign | Alinierea orizontală și verticală a conținutului în celulă |
THPDFTableCell.ColSpan: Integer și THPDFTableCell.RowSpan: Integer | Numerele de îmbinare orizontală și verticală, ambele implicite la 1 |
THPDFTableCell.BgColor: TColor și THPDFTableCell.HasBgColor: Boolean | Suprascrierea per celulă a culorii de fundal și fanionul prezenței ei |
THPDFTableCell.TextColor: TColor și THPDFTableCell.HasTextColor: Boolean | Suprascrierea per celulă a culorii textului și fanionul prezenței ei |
THPDFTableCell.FontName: AnsiString, THPDFTableCell.FontSize: Single, THPDFTableCell.FontStyle: TFontStyles, THPDFTableCell.HasFont: Boolean | Suprascrierea per celulă a fontului și fanionul prezenței ei |
THPDFTableCell.WordWrap: Boolean | Împarte textul lung pe linii măsurate în interiorul celulei, activat implicit |
THPDFTableCell.ImageIndex: Integer | Când este zero sau mai mare, celula arată imaginea înregistrată cu acel index prin THotPDF.AddImage în locul textului, implicit -1 |
THPDFTableCell.ImageAspect: Single | Raportul de aspect de afișare pentru o celulă imagine; imaginea e scalată la lățimea celulei, iar înălțimea ei rezultă din acest raport, implicit 1.0 |
THPDFTableCell.IsHTML: Boolean | Routează THPDFTableCell.Text prin THPDFPage.TextOutHTML, astfel încât markup-ul inline să fie randat |
Enumerările de aliniere
THPDFCellAlign = (caLeft, caCenter, caRight) selectează alinierea orizontală a celulei, iar THPDFCellVAlign = (cvaTop, cvaMiddle, cvaBottom) selectează alinierea verticală
Layout și comportare la trecerea pe pagină nouă
Înălțimile rândurilor sunt măsurate din conținutul celulelor, respectând word wrap și THPDFTableRow.MinHeight, celulele cu întindere sunt plasate pe o grilă internă astfel încât THPDFTableCell.ColSpan și THPDFTableCell.RowSpan să se îmbine corect peste rânduri, iar trecerea de randare sare pe o pagină nouă când următorul rând nu mai încap deasupra lui THPDFTable.BottomMargin
Când THPDFTable.RepeatHeader este true, banda de antet este reemisă în vârful fiecărei pagini de continuare, înainte de a desena rândurile următoare
Celulele imagine introduse în v2.432.0 referă după index o imagine înregistrată prin THotPDF.AddImage, se scalează la lățimea celulei și își derivă înălțimea din THPDFTableCell.ImageAspect, astfel încât poza își păstrează raportul de aspect al sursei