THPDFTable-tabellayout och rendering
THPDFTable är den lättviktiga tabellayout- och renderingsmotorn som introducerades i v2.429.0 och exponeras av enheten HPDFTable
Före v2.429.0 fick man rita celler för hand med Rectangle plus TextOut och hårdkodade X-koordinater för kolumner, och sköta radhöjder, zebrarandning och sidbrytningar manuellt; THPDFTable driver de befintliga THPDFPage-ritprimitiverna så att tabeller renderas med uppmätta radhöjder, sammanslagna celler och automatisk fortsättning över sidbrytningar
Enhet
HPDFTable
Användningsexempel
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 äger kolumnlayouten, radsamlingen och renderingsrundan; den ritar genom THotPDF-komponenten som skickas till THPDFTable.Create och använder bara publika medlemmar i THPDFPage och THotPDF
Metoder
| Metod | Beskrivning |
|---|---|
THPDFTable.Create(ADoc: THotPDF) | Skapar tabellen bunden till dokumentet som tillhandahåller sidor, typsnitt och bilder |
THPDFTable.Destroy | Frigör tabellen tillsammans med alla rader och celler den äger |
THPDFTable.AddColumn(Width: Single): Integer | Lägger till en kolumn med angiven bredd i aktuella sideenheter och returnerar dess index |
THPDFTable.AddRow: THPDFTableRow | Lägger till en rad med storlek efter aktuellt kolumnantal och returnerar den |
THPDFTable.SetBounds(AX, AY: Single) | Positionerar tabellens origo på den aktuella sidan |
THPDFTable.Render | Mäter radhöjder, ritar bakgrunder, kantlinjer och cellinnehåll och fortsätter på nya sidor så länge rader återstår |
Egenskaper
| Egenskap | Beskrivning |
|---|---|
THPDFTable.Doc: THotPDF | Det bundna dokumentet som skickades till konstruktorn |
THPDFTable.ColCount: Integer | Antal kolumner som lagts till med THPDFTable.AddColumn |
THPDFTable.RowCount: Integer | Antal rader som lagts till med THPDFTable.AddRow |
THPDFTable.Rows[Index: Integer]: THPDFTableRow | Kommer åt en rad via index |
THPDFTable.X: Single och THPDFTable.Y: Single | Tabellens origo på sidan i aktuella sideenheter |
THPDFTable.HeaderBgColor: TColor | Bakgrundsfärg som målas bakom rubrikrader |
THPDFTable.AlternatingBg: TColor | Zebrabakgrund som tillämpas på varannan icke-rubrikrad |
THPDFTable.BorderColor: TColor och THPDFTable.BorderWidth: Single | Färg och bredd för rutnätslinjer i cellkanter |
THPDFTable.DefaultFontName: AnsiString, THPDFTable.DefaultFontSize: Single, THPDFTable.DefaultAlign: THPDFCellAlign | Reservtypsnitt och justering för celler som inte åsidosätter dem |
THPDFTable.Padding: Single | Inre mellanrum mellan en cellkant och dess innehåll |
THPDFTable.BottomMargin: Single | Utrymme som reserveras i sidans nederdel innan renderingsrundan bryter till en ny sida |
THPDFTable.RepeatHeader: Boolean | Sant betyder att rubrikbandet skrivs ut igen i toppen av varje fortsättningssida |
THPDFTable.TotalHeightRendered: Single | Total höjd som den senaste renderingsrundan förbrukade över alla sidor |
THPDFTableRow
THPDFTableRow håller cellerna i en tabellrad plus radnivåflaggorna som används vid mätning och rendering
| Medlem | Beskrivning |
|---|---|
THPDFTableRow.Create(InitialColCount: Integer) | Skapar raden förifylld med angivet antal celler |
THPDFTableRow.Destroy | Frigör raden och dess celler |
THPDFTableRow.AddCell: THPDFTableCell | Lägger till en cell och returnerar den |
THPDFTableRow.EnsureCells(Count: Integer): Integer | Utökar raden till minst angivet cellantal och returnerar det nya antalet |
THPDFTableRow.Cells[Index: Integer]: THPDFTableCell | Standard-arrayegenskap som kommer åt en cell via index |
THPDFTableRow.Count: Integer | Antal celler som raden för närvarande håller |
THPDFTableRow.IsHeader: Boolean | Markerar raden som en rubrikrad, målad med THPDFTable.HeaderBgColor och upprepad när THPDFTable.RepeatHeader är aktiverat |
THPDFTableRow.MinHeight: Single | Undre gräns som tillämpas på den uppmätta radhöjden |
THPDFTableCell
THPDFTableCell bär innehållet och per-cell-åsidosättningarna som läggs ovanpå tabellens standardvärden
| Egenskap | Beskrivning |
|---|---|
THPDFTableCell.Text: WideString | Celltext; renderas genom THPDFPage.TextOutHTML när THPDFTableCell.IsHTML är sant, så att inline-markup för fetstil, färg, länkar och sub/sup respekteras |
THPDFTableCell.Align: THPDFCellAlign och THPDFTableCell.VAlign: THPDFCellVAlign | Horisontell och vertikal innehållsjustering i cellen |
THPDFTableCell.ColSpan: Integer och THPDFTableCell.RowSpan: Integer | Horisontellt och vertikalt sammanslagningsantal, båda med standardvärde 1 |
THPDFTableCell.BgColor: TColor och THPDFTableCell.HasBgColor: Boolean | Per-cell-åsidosättning av bakgrundsfärg och dess existensflagga |
THPDFTableCell.TextColor: TColor och THPDFTableCell.HasTextColor: Boolean | Per-cell-åsidosättning av textfärg och dess existensflagga |
THPDFTableCell.FontName: AnsiString, THPDFTableCell.FontSize: Single, THPDFTableCell.FontStyle: TFontStyles, THPDFTableCell.HasFont: Boolean | Per-cell-åsidosättning av typsnitt och dess existensflagga |
THPDFTableCell.WordWrap: Boolean | Radbryter lång text över uppmätta rader i cellen, aktiverat som standard |
THPDFTableCell.ImageIndex: Integer | Noll eller högre betyder att cellen visar bilden som registrerats under det indexet genom THotPDF.AddImage i stället för text, standard -1 |
THPDFTableCell.ImageAspect: Single | Sideförhållande för visning av en bildcell; bilden skalas till cellbredden och dess höjd härleds från detta förhållande, standard 1.0 |
THPDFTableCell.IsHTML: Boolean | Skickar THPDFTableCell.Text genom THPDFPage.TextOutHTML så att inline-markup renderas |
Uppräkningar för justering
THPDFCellAlign = (caLeft, caCenter, caRight) väljer horisontell celljustering och THPDFCellVAlign = (cvaTop, cvaMiddle, cvaBottom) väljer vertikal celljustering
Layout och sidbrytningsbeteende
Radhöjder mäts från cellinnehållet med radbrytning och THPDFTableRow.MinHeight respekterade, celler med spänn placeras på ett internt rutnät så att THPDFTableCell.ColSpan och THPDFTableCell.RowSpan slås ihop korrekt över rader, och renderingsrundan bryter till en ny sida när nästa rad inte ryms ovanför THPDFTable.BottomMargin
När THPDFTable.RepeatHeader är sant skrivs rubrikbandet ut igen i toppen av varje fortsättningssida innan fler rader ritas
Bildceller som introducerades i v2.432.0 refererar en bild som registrerats genom THotPDF.AddImage via index, skalas till cellbredden och härleder sin höjd från THPDFTableCell.ImageAspect så att bilden behåller sitt ursprungliga sideförhållande