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

MethodDescription
THPDFTable.Create(ADoc: THotPDF)Creează tabela legată de documentul care furnizează paginile, fonturile și imaginile
THPDFTable.DestroyEliberează tabela împreună cu fiecare rând și celulă pe care le deține
THPDFTable.AddColumn(Width: Single): IntegerAdaugă o coloană cu lățimea dată, în unitățile curente de pagină, și returnează indexul ei
THPDFTable.AddRow: THPDFTableRowAdaugă 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.RenderMasoară î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

PropertyDescription
THPDFTable.Doc: THotPDFDocumentul legat, furnizat constructorului
THPDFTable.ColCount: IntegerNumărul de coloane adăugate cu THPDFTable.AddColumn
THPDFTable.RowCount: IntegerNumărul de rânduri adăugate cu THPDFTable.AddRow
THPDFTable.Rows[Index: Integer]: THPDFTableRowAccesează un rând după index
THPDFTable.X: Single și THPDFTable.Y: SingleOriginea tabelului pe pagină, în unitățile curente de pagină
THPDFTable.HeaderBgColor: TColorCuloarea de fundal vopsită în spatele rândurilor de antet
THPDFTable.AlternatingBg: TColorFundalul în dungi zebra aplicat rândurilor alternante care nu sunt antet
THPDFTable.BorderColor: TColor și THPDFTable.BorderWidth: SingleCuloarea și lățimea liniilor de grilă folosite pentru bordurile celulelor
THPDFTable.DefaultFontName: AnsiString, THPDFTable.DefaultFontSize: Single, THPDFTable.DefaultAlign: THPDFCellAlignFontul și alinierea de rezervă pentru celulele care nu le suprascriu
THPDFTable.Padding: SingleSpațierea interioară dintre bordura unei celule și conținutul ei
THPDFTable.BottomMargin: SingleSpațiul rezervat la baza paginii înainte ca trecerea de randare să sară pe o pagină nouă
THPDFTable.RepeatHeader: BooleanCâ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

MemberDescription
THPDFTableRow.Create(InitialColCount: Integer)Creează rândul pre-populat cu numărul dat de celule
THPDFTableRow.DestroyEliberează rândul și celulele lui
THPDFTableRow.AddCell: THPDFTableCellAdaugă o celulă și o returnează
THPDFTableRow.EnsureCells(Count: Integer): IntegerCrește rândul până la cel puțin numărul dat de celule și returnează noul număr
THPDFTableRow.Cells[Index: Integer]: THPDFTableCellProprietate tablou implicit care accesează o celulă după index
THPDFTableRow.Count: IntegerNumărul de celule reținute în prezent de rând
THPDFTableRow.IsHeader: BooleanMarchează rândul ca rând de antet, vopsit cu THPDFTable.HeaderBgColor și repetat când THPDFTable.RepeatHeader este activat
THPDFTableRow.MinHeight: SingleLimita 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

PropertyDescription
THPDFTableCell.Text: WideStringTextul 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: THPDFCellVAlignAlinierea orizontală și verticală a conținutului în celulă
THPDFTableCell.ColSpan: Integer și THPDFTableCell.RowSpan: IntegerNumerele de îmbinare orizontală și verticală, ambele implicite la 1
THPDFTableCell.BgColor: TColor și THPDFTableCell.HasBgColor: BooleanSuprascrierea per celulă a culorii de fundal și fanionul prezenței ei
THPDFTableCell.TextColor: TColor și THPDFTableCell.HasTextColor: BooleanSuprascrierea per celulă a culorii textului și fanionul prezenței ei
THPDFTableCell.FontName: AnsiString, THPDFTableCell.FontSize: Single, THPDFTableCell.FontStyle: TFontStyles, THPDFTableCell.HasFont: BooleanSuprascrierea 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: IntegerCând este zero sau mai mare, celula arată imaginea înregistrată cu acel index prin THotPDF.AddImage în locul textului, implicit -1
THPDFTableCell.ImageAspect: SingleRaportul 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: BooleanRoutează 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

Vezi și