THPDFTable-tabellayout en -rendering
THPDFTable is de lichtgewicht engine voor tabellayout en -rendering die in v2.429.0 werd geïntroduceerd en door de unit HPDFTable wordt aangeboden
Vóór v2.429.0 moesten producers cellen met de hand tekenen met Rectangle plus TextOut en uitgeharde X-coördinaten voor kolommen, met handmatig beheer van rijhoogten, zebrastrepen en paginabreuken; THPDFTable stuurt de bestaande THPDFPage-tekenprimitieven aan, zodat tabellen worden gerenderd met gemeten rijhoogten, samengevoegde cellen en automatische vervolg op nieuwe pagina's
Unit
HPDFTable
Voorbeeld van gebruik
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 is eigenaar van de kolomlayout, de rijcollectie en de renderpas; hij tekent via de THotPDF-component die aan THPDFTable.Create wordt doorgegeven en gebruikt alleen openbare members van THPDFPage en THotPDF
Methoden
| Methode | Omschrijving |
|---|---|
THPDFTable.Create(ADoc: THotPDF) | Maakt de tabel aan, gebonden aan het document dat pagina's, fonts en afbeeldingen levert |
THPDFTable.Destroy | Geeft de tabel vrij samen met elke rij en cel in zijn bezit |
THPDFTable.AddColumn(Width: Single): Integer | Voegt een kolom toe met de gegeven breedte in de huidige pagina-eenheden en geeft diens index terug |
THPDFTable.AddRow: THPDFTableRow | Voegt een rij toe op maat van het huidige kolomaantal en geeft die terug |
THPDFTable.SetBounds(AX, AY: Single) | Positioneert de oorsprong van de tabel op de huidige pagina |
THPDFTable.Render | Meet rijhoogten, tekent achtergronden, randen en celinhoud en gaat door op nieuwe pagina's zolang er rijen over zijn |
Eigenschappen
| Eigenschap | Omschrijving |
|---|---|
THPDFTable.Doc: THotPDF | Het gebonden document dat aan de constructor is doorgegeven |
THPDFTable.ColCount: Integer | Aantal kolommen dat met THPDFTable.AddColumn is toegevoegd |
THPDFTable.RowCount: Integer | Aantal rijen dat met THPDFTable.AddRow is toegevoegd |
THPDFTable.Rows[Index: Integer]: THPDFTableRow | Geeft toegang tot een rij via de index |
THPDFTable.X: Single en THPDFTable.Y: Single | Oorsprong van de tabel op de pagina, in de huidige pagina-eenheden |
THPDFTable.HeaderBgColor: TColor | Achtergrondkleur die achter kopregels wordt geschilderd |
THPDFTable.AlternatingBg: TColor | Zebrastreep-achtergrond voor afwisselende niet-kopregels |
THPDFTable.BorderColor: TColor en THPDFTable.BorderWidth: Single | Kleur en breedte van de rasterlijnen voor celranden |
THPDFTable.DefaultFontName: AnsiString, THPDFTable.DefaultFontSize: Single, THPDFTable.DefaultAlign: THPDFCellAlign | Terugvalfont en -uitlijning voor cellen die die niet zelf overschrijven |
THPDFTable.Padding: Single | Binnenafstand tussen een celrand en diens inhoud |
THPDFTable.BottomMargin: Single | Ruimte die onderaan een pagina wordt gereserveerd voordat de renderpas naar een nieuwe pagina breekt |
THPDFTable.RepeatHeader: Boolean | Bij true wordt de kopband bovenaan elke vervolgpagina opnieuw uitgegeven |
THPDFTable.TotalHeightRendered: Single | Totale hoogte die de laatste renderpas over alle pagina's heeft verbruikt |
THPDFTableRow
THPDFTableRow bevat de cellen van één tabelrij plus de vlaggen op rijniveau die tijdens meting en rendering worden gebruikt
| Member | Omschrijving |
|---|---|
THPDFTableRow.Create(InitialColCount: Integer) | Maakt de rij aan, vooraf gevuld met het gegeven aantal cellen |
THPDFTableRow.Destroy | Geeft de rij en diens cellen vrij |
THPDFTableRow.AddCell: THPDFTableCell | Voegt één cel toe en geeft die terug |
THPDFTableRow.EnsureCells(Count: Integer): Integer | Groeit de rij naar minstens het gegeven aantal cellen en geeft het nieuwe aantal terug |
THPDFTableRow.Cells[Index: Integer]: THPDFTableCell | Default array-property die een cel via de index benadert |
THPDFTableRow.Count: Integer | Aantal cellen dat de rij momenteel bevat |
THPDFTableRow.IsHeader: Boolean | Markeert de rij als kopregel, geschilderd met THPDFTable.HeaderBgColor en herhaald wanneer THPDFTable.RepeatHeader aanstaat |
THPDFTableRow.MinHeight: Single | Ondergrens voor de gemeten rijhoogte |
THPDFTableCell
THPDFTableCell draagt de inhoud en de overrides per cel die bovenop de tabeldefaults worden toegepast
| Eigenschap | Omschrijving |
|---|---|
THPDFTableCell.Text: WideString | Celtekst; wordt via THPDFPage.TextOutHTML gerenderd wanneer THPDFTableCell.IsHTML true is, zodat inline-opmaak voor vet, kleur, links en sub/sup wordt gehonoreerd |
THPDFTableCell.Align: THPDFCellAlign en THPDFTableCell.VAlign: THPDFCellVAlign | Horizontale en verticale uitlijning van de inhoud in de cel |
THPDFTableCell.ColSpan: Integer en THPDFTableCell.RowSpan: Integer | Aantal samenvoegingen horizontaal en verticaal, beide default 1 |
THPDFTableCell.BgColor: TColor en THPDFTableCell.HasBgColor: Boolean | Achtergrondkleuroverride per cel plus de bijbehorende aanwezigheidsvlag |
THPDFTableCell.TextColor: TColor en THPDFTableCell.HasTextColor: Boolean | Tekstkleuroverride per cel plus de bijbehorende aanwezigheidsvlag |
THPDFTableCell.FontName: AnsiString, THPDFTableCell.FontSize: Single, THPDFTableCell.FontStyle: TFontStyles, THPDFTableCell.HasFont: Boolean | Fontoverride per cel plus de bijbehorende aanwezigheidsvlag |
THPDFTableCell.WordWrap: Boolean | Breekt lange tekst over gemeten regels in de cel af; default aan |
THPDFTableCell.ImageIndex: Integer | Vanaf nul toont de cel in plaats van tekst de afbeelding die via THotPDF.AddImage onder die index is geregistreerd, default -1 |
THPDFTableCell.ImageAspect: Single | Weergave-aspect ratio voor een afbeeldingscel; de afbeelding wordt geschaald naar de celbreedte en diens hoogte volgt uit deze ratio, default 1.0 |
THPDFTableCell.IsHTML: Boolean | Leidt THPDFTableCell.Text om via THPDFPage.TextOutHTML zodat inline-opmaak wordt gerenderd |
Uitlijning-enums
THPDFCellAlign = (caLeft, caCenter, caRight) kiest de horizontale celuitlijning en THPDFCellVAlign = (cvaTop, cvaMiddle, cvaBottom) de verticale celuitlijning
Layout- en paginabreekgedrag
Rijhoogten worden gemeten vanuit de celinhoud met respect voor word wrap en THPDFTableRow.MinHeight, cellen met span worden op een intern raster geplaatst zodat THPDFTableCell.ColSpan en THPDFTableCell.RowSpan correct samenvoegen over rijen heen, en de renderpas breekt naar een nieuwe pagina wanneer de volgende rij niet boven THPDFTable.BottomMargin past
Als THPDFTable.RepeatHeader true is, wordt de kopband bovenaan elke vervolgpagina opnieuw uitgegeven voordat verdere rijen worden getekend
Afbeeldingscellen, geïntroduceerd in v2.432.0, verwijzen via een index naar een afbeelding die via THotPDF.AddImage is geregistreerd, schalen naar de celbreedte en leiden hun hoogte af uit THPDFTableCell.ImageAspect, zodat de afbeelding zijn oorspronkelijke aspect ratio houdt