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
| Metode | Beskrivelse |
|---|---|
THPDFTable.Create(ADoc: THotPDF) | Opretter tabellen bundet til det dokument, der leverer sider, fonts og billeder |
THPDFTable.Destroy | Frigiver tabellen sammen med hver række og celle, den ejer |
THPDFTable.AddColumn(Width: Single): Integer | Tilføjer en kolonne med den givne bredde i aktuelle sideenheder og returnerer dens indeks |
THPDFTable.AddRow: THPDFTableRow | Tilfø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.Render | Måler rækkehøjder, tegner baggrunde, kanter og celleindhold og fortsætter på nye sider, mens der er rækker tilbage |
Egenskaber
| Egenskab | Beskrivelse |
|---|---|
THPDFTable.Doc: THotPDF | Det bundne dokument, som sendes til konstruktoren |
THPDFTable.ColCount: Integer | Antal kolonner tilføjet med THPDFTable.AddColumn |
THPDFTable.RowCount: Integer | Antal rækker tilføjet med THPDFTable.AddRow |
THPDFTable.Rows[Index: Integer]: THPDFTableRow | Tilgår en række via indeks |
THPDFTable.X: Single og THPDFTable.Y: Single | Tabellens origo på siden i aktuelle sideenheder |
THPDFTable.HeaderBgColor: TColor | Baggrundsfarve, der tegnes bag hovedrækker |
THPDFTable.AlternatingBg: TColor | Zebra-stribet baggrund, der anvendes på skiftende rækker, som ikke er hoveder |
THPDFTable.BorderColor: TColor og THPDFTable.BorderWidth: Single | Farve og bredde på gitterlinjer til cellekanter |
THPDFTable.DefaultFontName: AnsiString, THPDFTable.DefaultFontSize: Single, THPDFTable.DefaultAlign: THPDFCellAlign | Reserve-font og -justering for celler, som ikke tilsidesætter dem |
THPDFTable.Padding: Single | Indre afstand mellem en celkekant og dens indhold |
THPDFTable.BottomMargin: Single | Plads, der reserveres i sidens bund, før renderingen skifter til en ny side |
THPDFTable.RepeatHeader: Boolean | Når sand, gentages hovedbåndet øverst på hver fortsættelsesside |
THPDFTable.TotalHeightRendered: Single | Samlet 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
| Medlem | Beskrivelse |
|---|---|
THPDFTableRow.Create(InitialColCount: Integer) | Opretter rækken forudfyldt med det givne antal celler |
THPDFTableRow.Destroy | Frigiver rækken og dens celler |
THPDFTableRow.AddCell: THPDFTableCell | Tilføjer én celle og returnerer den |
THPDFTableRow.EnsureCells(Count: Integer): Integer | Udvider rækken til mindst det givne celleantal og returnerer det nye antal |
THPDFTableRow.Cells[Index: Integer]: THPDFTableCell | Standard array-property, der tilgår en celle via indeks |
THPDFTableRow.Count: Integer | Antal celler, rækken aktuelt rummer |
THPDFTableRow.IsHeader: Boolean | Markerer rækken som hovedrække, der tegnes med THPDFTable.HeaderBgColor og gentages, når THPDFTable.RepeatHeader er slået til |
THPDFTableRow.MinHeight: Single | Nedre 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
| Egenskab | Beskrivelse |
|---|---|
THPDFTableCell.Text: WideString | Cellens 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: THPDFCellVAlign | Vandret og lodret indholdsjustering i cellen |
THPDFTableCell.ColSpan: Integer og THPDFTableCell.RowSpan: Integer | Vandret og lodret fletteantal, begge med standard 1 |
THPDFTableCell.BgColor: TColor og THPDFTableCell.HasBgColor: Boolean | Celle-specifik tilsidesættelse af baggrundsfarve og dets tilstedsflag |
THPDFTableCell.TextColor: TColor og THPDFTableCell.HasTextColor: Boolean | Celle-specifik tilsidesættelse af tekstfarve og dets tilstedsflag |
THPDFTableCell.FontName: AnsiString, THPDFTableCell.FontSize: Single, THPDFTableCell.FontStyle: TFontStyles, THPDFTableCell.HasFont: Boolean | Celle-specifik font-tilsidesættelse og dets tilstedsflag |
THPDFTableCell.WordWrap: Boolean | Ombryder lang tekst over målte linjer inde i cellen, aktiveret som standard |
THPDFTableCell.ImageIndex: Integer | Væ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: Single | Visningsaspectratio for en billedcelle; billedet skaleres til cellebredden, og højden afledes af dette forhold; standard 1.0 |
THPDFTableCell.IsHTML: Boolean | Sender 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