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

MetodBeskrivning
THPDFTable.Create(ADoc: THotPDF)Skapar tabellen bunden till dokumentet som tillhandahåller sidor, typsnitt och bilder
THPDFTable.DestroyFrigör tabellen tillsammans med alla rader och celler den äger
THPDFTable.AddColumn(Width: Single): IntegerLägger till en kolumn med angiven bredd i aktuella sideenheter och returnerar dess index
THPDFTable.AddRow: THPDFTableRowLä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.RenderMäter radhöjder, ritar bakgrunder, kantlinjer och cellinnehåll och fortsätter på nya sidor så länge rader återstår

Egenskaper

EgenskapBeskrivning
THPDFTable.Doc: THotPDFDet bundna dokumentet som skickades till konstruktorn
THPDFTable.ColCount: IntegerAntal kolumner som lagts till med THPDFTable.AddColumn
THPDFTable.RowCount: IntegerAntal rader som lagts till med THPDFTable.AddRow
THPDFTable.Rows[Index: Integer]: THPDFTableRowKommer åt en rad via index
THPDFTable.X: Single och THPDFTable.Y: SingleTabellens origo på sidan i aktuella sideenheter
THPDFTable.HeaderBgColor: TColorBakgrundsfärg som målas bakom rubrikrader
THPDFTable.AlternatingBg: TColorZebrabakgrund som tillämpas på varannan icke-rubrikrad
THPDFTable.BorderColor: TColor och THPDFTable.BorderWidth: SingleFärg och bredd för rutnätslinjer i cellkanter
THPDFTable.DefaultFontName: AnsiString, THPDFTable.DefaultFontSize: Single, THPDFTable.DefaultAlign: THPDFCellAlignReservtypsnitt och justering för celler som inte åsidosätter dem
THPDFTable.Padding: SingleInre mellanrum mellan en cellkant och dess innehåll
THPDFTable.BottomMargin: SingleUtrymme som reserveras i sidans nederdel innan renderingsrundan bryter till en ny sida
THPDFTable.RepeatHeader: BooleanSant betyder att rubrikbandet skrivs ut igen i toppen av varje fortsättningssida
THPDFTable.TotalHeightRendered: SingleTotal 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

MedlemBeskrivning
THPDFTableRow.Create(InitialColCount: Integer)Skapar raden förifylld med angivet antal celler
THPDFTableRow.DestroyFrigör raden och dess celler
THPDFTableRow.AddCell: THPDFTableCellLägger till en cell och returnerar den
THPDFTableRow.EnsureCells(Count: Integer): IntegerUtökar raden till minst angivet cellantal och returnerar det nya antalet
THPDFTableRow.Cells[Index: Integer]: THPDFTableCellStandard-arrayegenskap som kommer åt en cell via index
THPDFTableRow.Count: IntegerAntal celler som raden för närvarande håller
THPDFTableRow.IsHeader: BooleanMarkerar raden som en rubrikrad, målad med THPDFTable.HeaderBgColor och upprepad när THPDFTable.RepeatHeader är aktiverat
THPDFTableRow.MinHeight: SingleUndre 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

EgenskapBeskrivning
THPDFTableCell.Text: WideStringCelltext; 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: THPDFCellVAlignHorisontell och vertikal innehållsjustering i cellen
THPDFTableCell.ColSpan: Integer och THPDFTableCell.RowSpan: IntegerHorisontellt och vertikalt sammanslagningsantal, båda med standardvärde 1
THPDFTableCell.BgColor: TColor och THPDFTableCell.HasBgColor: BooleanPer-cell-åsidosättning av bakgrundsfärg och dess existensflagga
THPDFTableCell.TextColor: TColor och THPDFTableCell.HasTextColor: BooleanPer-cell-åsidosättning av textfärg och dess existensflagga
THPDFTableCell.FontName: AnsiString, THPDFTableCell.FontSize: Single, THPDFTableCell.FontStyle: TFontStyles, THPDFTableCell.HasFont: BooleanPer-cell-åsidosättning av typsnitt och dess existensflagga
THPDFTableCell.WordWrap: BooleanRadbryter lång text över uppmätta rader i cellen, aktiverat som standard
THPDFTableCell.ImageIndex: IntegerNoll 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: SingleSidefö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: BooleanSkickar 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

Se även