THPDFTable tabelayout og rendering

THPDFTable er den letvægts tabelayout- og renderingmotor, der kom til i v2.429.0 og eksponeres af HPDFTable-unit'en

Før v2.429.0 skulle man tegne celler i hånden med Rectangle plus TextOut og hårdkodede kolonne-X-koordinater, mens rækkehøjder, zebra-stribning og sideskift skulle styres manuelt; THPDFTable kører oven på de eksisterende THPDFPage-tegneprimitiver, så tabeller renderes med målte rækkehøjder, flettede celler og automatisk fortsættelse ved sideskift

Enhed

HPDFTable

Eksempel på brug

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 ejer kolonnelayoutet, rækkesamlingen og selve renderingen; den tegner gennem THotPDF-komponenten, som sendes til THPDFTable.Create, og bruger kun offentlige THPDFPage- og THotPDF-medlemmer

Metoder

MetodeBeskrivelse
THPDFTable.Create(ADoc: THotPDF)Opretter tabellen bundet til det dokument, der leverer sider, fonts og billeder
THPDFTable.DestroyFrigiver tabellen sammen med hver række og celle, den ejer
THPDFTable.AddColumn(Width: Single): IntegerTilføjer en kolonne med den givne bredde i aktuelle sideenheder og returnerer dens indeks
THPDFTable.AddRow: THPDFTableRowTilføjer en række størrelsesjusteret til det aktuelle kolonneantal og returnerer den
THPDFTable.SetBounds(AX, AY: Single)Placerer tabellens origo på den aktuelle side
THPDFTable.RenderMåler rækkehøjder, tegner baggrunde, kanter og celleindhold og fortsætter på nye sider, mens der er rækker tilbage

Egenskaber

EgenskabBeskrivelse
THPDFTable.Doc: THotPDFDet bundne dokument, som sendes til konstruktoren
THPDFTable.ColCount: IntegerAntal kolonner tilføjet med THPDFTable.AddColumn
THPDFTable.RowCount: IntegerAntal rækker tilføjet med THPDFTable.AddRow
THPDFTable.Rows[Index: Integer]: THPDFTableRowTilgår en række via indeks
THPDFTable.X: Single og THPDFTable.Y: SingleTabellens origo på siden i aktuelle sideenheder
THPDFTable.HeaderBgColor: TColorBaggrundsfarve, der tegnes bag hovedrækker
THPDFTable.AlternatingBg: TColorZebra-stribet baggrund, der anvendes på skiftende rækker, som ikke er hoveder
THPDFTable.BorderColor: TColor og THPDFTable.BorderWidth: SingleFarve og bredde på gitterlinjer til cellekanter
THPDFTable.DefaultFontName: AnsiString, THPDFTable.DefaultFontSize: Single, THPDFTable.DefaultAlign: THPDFCellAlignReserve-font og -justering for celler, som ikke tilsidesætter dem
THPDFTable.Padding: SingleIndre afstand mellem en celkekant og dens indhold
THPDFTable.BottomMargin: SinglePlads, der reserveres i sidens bund, før renderingen skifter til en ny side
THPDFTable.RepeatHeader: BooleanNår sand, gentages hovedbåndet øverst på hver fortsættelsesside
THPDFTable.TotalHeightRendered: SingleSamlet højde, som den sidste rendering brugte på tværs af alle sider

THPDFTableRow

THPDFTableRow rummer cellerne i én tabelrække plus de række-niveau flag, der bruges under måling og rendering

MedlemBeskrivelse
THPDFTableRow.Create(InitialColCount: Integer)Opretter rækken forudfyldt med det givne antal celler
THPDFTableRow.DestroyFrigiver rækken og dens celler
THPDFTableRow.AddCell: THPDFTableCellTilføjer én celle og returnerer den
THPDFTableRow.EnsureCells(Count: Integer): IntegerUdvider rækken til mindst det givne celleantal og returnerer det nye antal
THPDFTableRow.Cells[Index: Integer]: THPDFTableCellStandard array-property, der tilgår en celle via indeks
THPDFTableRow.Count: IntegerAntal celler, rækken aktuelt rummer
THPDFTableRow.IsHeader: BooleanMarkerer rækken som hovedrække, der tegnes med THPDFTable.HeaderBgColor og gentages, når THPDFTable.RepeatHeader er slået til
THPDFTableRow.MinHeight: SingleNedre grænse for den målte rækkehøjde

THPDFTableCell

THPDFTableCell bærer indholdet og de celle-specifikke tilsidesættelser, som lægges oven på tabelstandarderne

EgenskabBeskrivelse
THPDFTableCell.Text: WideStringCellens tekst; renderes gennem THPDFPage.TextOutHTML, når THPDFTableCell.IsHTML er sand, så inline-opmarkering for fed, farve, links og sub-/superscript overholdes
THPDFTableCell.Align: THPDFCellAlign og THPDFTableCell.VAlign: THPDFCellVAlignVandret og lodret indholdsjustering i cellen
THPDFTableCell.ColSpan: Integer og THPDFTableCell.RowSpan: IntegerVandret og lodret fletteantal, begge med standard 1
THPDFTableCell.BgColor: TColor og THPDFTableCell.HasBgColor: BooleanCelle-specifik tilsidesættelse af baggrundsfarve og dets tilstedsflag
THPDFTableCell.TextColor: TColor og THPDFTableCell.HasTextColor: BooleanCelle-specifik tilsidesættelse af tekstfarve og dets tilstedsflag
THPDFTableCell.FontName: AnsiString, THPDFTableCell.FontSize: Single, THPDFTableCell.FontStyle: TFontStyles, THPDFTableCell.HasFont: BooleanCelle-specifik font-tilsidesættelse og dets tilstedsflag
THPDFTableCell.WordWrap: BooleanOmbryder lang tekst over målte linjer inde i cellen, aktiveret som standard
THPDFTableCell.ImageIndex: IntegerVærdier på nul eller derover viser det billede, som er registreret med dette indeks gennem THotPDF.AddImage, i stedet for tekst; standard -1
THPDFTableCell.ImageAspect: SingleVisningsaspectratio for en billedcelle; billedet skaleres til cellebredden, og højden afledes af dette forhold; standard 1.0
THPDFTableCell.IsHTML: BooleanSender THPDFTableCell.Text gennem THPDFPage.TextOutHTML, så inline-opmarkering renderes

Justering-enums

THPDFCellAlign = (caLeft, caCenter, caRight) vælger vandret cellejustering, og THPDFCellVAlign = (cvaTop, cvaMiddle, cvaBottom) vælger lodret cellejustering

Layout og sideskift-adfærd

Rækkehøjder måles ud fra celleindholdet med ordombrydning og THPDFTableRow.MinHeight respekteret, spændende celler placeres på et internt gitter, så THPDFTableCell.ColSpan og THPDFTableCell.RowSpan fletter korrekt på tværs af rækker, og renderingen skifter til en ny side, når næste række ikke kan være over THPDFTable.BottomMargin

Når THPDFTable.RepeatHeader er sand, gentages hovedbåndet øverst på hver fortsættelsesside, før yderligere rækker tegnes

Billedceller, der kom til i v2.432.0, refererer til et billede registreret gennem THotPDF.AddImage via indeks, skaleres til cellebredden og afleder deres højde fra THPDFTableCell.ImageAspect, så billedet bevarer sit oprindelige aspektforhold

Se også