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

MethodeOmschrijving
THPDFTable.Create(ADoc: THotPDF)Maakt de tabel aan, gebonden aan het document dat pagina's, fonts en afbeeldingen levert
THPDFTable.DestroyGeeft de tabel vrij samen met elke rij en cel in zijn bezit
THPDFTable.AddColumn(Width: Single): IntegerVoegt een kolom toe met de gegeven breedte in de huidige pagina-eenheden en geeft diens index terug
THPDFTable.AddRow: THPDFTableRowVoegt 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.RenderMeet rijhoogten, tekent achtergronden, randen en celinhoud en gaat door op nieuwe pagina's zolang er rijen over zijn

Eigenschappen

EigenschapOmschrijving
THPDFTable.Doc: THotPDFHet gebonden document dat aan de constructor is doorgegeven
THPDFTable.ColCount: IntegerAantal kolommen dat met THPDFTable.AddColumn is toegevoegd
THPDFTable.RowCount: IntegerAantal rijen dat met THPDFTable.AddRow is toegevoegd
THPDFTable.Rows[Index: Integer]: THPDFTableRowGeeft toegang tot een rij via de index
THPDFTable.X: Single en THPDFTable.Y: SingleOorsprong van de tabel op de pagina, in de huidige pagina-eenheden
THPDFTable.HeaderBgColor: TColorAchtergrondkleur die achter kopregels wordt geschilderd
THPDFTable.AlternatingBg: TColorZebrastreep-achtergrond voor afwisselende niet-kopregels
THPDFTable.BorderColor: TColor en THPDFTable.BorderWidth: SingleKleur en breedte van de rasterlijnen voor celranden
THPDFTable.DefaultFontName: AnsiString, THPDFTable.DefaultFontSize: Single, THPDFTable.DefaultAlign: THPDFCellAlignTerugvalfont en -uitlijning voor cellen die die niet zelf overschrijven
THPDFTable.Padding: SingleBinnenafstand tussen een celrand en diens inhoud
THPDFTable.BottomMargin: SingleRuimte die onderaan een pagina wordt gereserveerd voordat de renderpas naar een nieuwe pagina breekt
THPDFTable.RepeatHeader: BooleanBij true wordt de kopband bovenaan elke vervolgpagina opnieuw uitgegeven
THPDFTable.TotalHeightRendered: SingleTotale 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

MemberOmschrijving
THPDFTableRow.Create(InitialColCount: Integer)Maakt de rij aan, vooraf gevuld met het gegeven aantal cellen
THPDFTableRow.DestroyGeeft de rij en diens cellen vrij
THPDFTableRow.AddCell: THPDFTableCellVoegt één cel toe en geeft die terug
THPDFTableRow.EnsureCells(Count: Integer): IntegerGroeit de rij naar minstens het gegeven aantal cellen en geeft het nieuwe aantal terug
THPDFTableRow.Cells[Index: Integer]: THPDFTableCellDefault array-property die een cel via de index benadert
THPDFTableRow.Count: IntegerAantal cellen dat de rij momenteel bevat
THPDFTableRow.IsHeader: BooleanMarkeert de rij als kopregel, geschilderd met THPDFTable.HeaderBgColor en herhaald wanneer THPDFTable.RepeatHeader aanstaat
THPDFTableRow.MinHeight: SingleOndergrens voor de gemeten rijhoogte

THPDFTableCell

THPDFTableCell draagt de inhoud en de overrides per cel die bovenop de tabeldefaults worden toegepast

EigenschapOmschrijving
THPDFTableCell.Text: WideStringCeltekst; 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: THPDFCellVAlignHorizontale en verticale uitlijning van de inhoud in de cel
THPDFTableCell.ColSpan: Integer en THPDFTableCell.RowSpan: IntegerAantal samenvoegingen horizontaal en verticaal, beide default 1
THPDFTableCell.BgColor: TColor en THPDFTableCell.HasBgColor: BooleanAchtergrondkleuroverride per cel plus de bijbehorende aanwezigheidsvlag
THPDFTableCell.TextColor: TColor en THPDFTableCell.HasTextColor: BooleanTekstkleuroverride per cel plus de bijbehorende aanwezigheidsvlag
THPDFTableCell.FontName: AnsiString, THPDFTableCell.FontSize: Single, THPDFTableCell.FontStyle: TFontStyles, THPDFTableCell.HasFont: BooleanFontoverride per cel plus de bijbehorende aanwezigheidsvlag
THPDFTableCell.WordWrap: BooleanBreekt lange tekst over gemeten regels in de cel af; default aan
THPDFTableCell.ImageIndex: IntegerVanaf nul toont de cel in plaats van tekst de afbeelding die via THotPDF.AddImage onder die index is geregistreerd, default -1
THPDFTableCell.ImageAspect: SingleWeergave-aspect ratio voor een afbeeldingscel; de afbeelding wordt geschaald naar de celbreedte en diens hoogte volgt uit deze ratio, default 1.0
THPDFTableCell.IsHTML: BooleanLeidt 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

Zie ook