THPDFTable táblaelrendezés és renderelés

A THPDFTable a v2.429.0-ban bevezetett, könnyűsúlyú táblaelrendezési és renderelő engine, amelyet a HPDFTable unit tesz elérhetővé

A v2.429.0 előtt a cellákat kézzel kellett rajzolni a Rectangle és a TextOut kombinációjával, beégetett oszlop-X koordinátákkal, miközben a sormagasságokat, a zebracsíkozást és az oldaltöréseket manuálisan kezelték; a THPDFTable a meglévő THPDFPage rajzprimitíveket hajtja meg, így a táblák mért sormagasságokkal, egyesített cellákkal és automatikus oldaltörés-folytatással renderelődnek

Unit

HPDFTable

Példa a használatra

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

A THPDFTable birtokolja az oszlopelrendezést, a sorok gyűjteményét és a renderelési menetet; a THPDFTable.Create-nek átadott THotPDF komponensen keresztül rajzol, és kizárólag publikus THPDFPage és THotPDF tagokat használ

Metódusok

MetódusLeírás
THPDFTable.Create(ADoc: THotPDF)Létrehozza a táblát, amelyet az oldalakat, fontokat és képeket szolgáltató dokumentumhoz köt
THPDFTable.DestroyFelszabadítja a táblát a tulajdonában lévő összes soral és cellával együtt
THPDFTable.AddColumn(Width: Single): IntegerHozzáfűz egy oszlopot a megadott szélességgel az aktuális oldal-egységekben, és visszaadja annak indexét
THPDFTable.AddRow: THPDFTableRowHozzáfűz az aktuális oszlopszámhoz igazított sort, és visszaadja azt
THPDFTable.SetBounds(AX, AY: Single)Beállítja a tábla origóját az aktuális oldalon
THPDFTable.RenderMegméri a sormagasságokat, kirajzolja a háttereket, a kereteket és a cellatartalmat, majd új oldalakon folytatja, amíg sorok maradnak

Tulajdonságok

TulajdonságLeírás
THPDFTable.Doc: THotPDFA konstruktor által kapott, bekötött dokumentum
THPDFTable.ColCount: IntegerA THPDFTable.AddColumn hívásokkal hozzáadott oszlopok száma
THPDFTable.RowCount: IntegerA THPDFTable.AddRow hívásokkal hozzáadott sorok száma
THPDFTable.Rows[Index: Integer]: THPDFTableRowSor elérése index alapján
THPDFTable.X: Single és THPDFTable.Y: SingleA tábla origója az oldalon, aktuális oldal-egységekben
THPDFTable.HeaderBgColor: TColorA fejlécsorok mögé festett háttérszín
THPDFTable.AlternatingBg: TColorA váltakozó, nem fejléc jellegű sorokra alkalmazott zebracsíkos háttér
THPDFTable.BorderColor: TColor és THPDFTable.BorderWidth: SingleA cellakeretekhez használt rácsvonal-szín és -szélesség
THPDFTable.DefaultFontName: AnsiString, THPDFTable.DefaultFontSize: Single, THPDFTable.DefaultAlign: THPDFCellAlignTartalék font és igazítás azokhoz a cellákhoz, amelyek nem írják felül őket
THPDFTable.Padding: SingleBelső térköz a cellakerete és a tartalma között
THPDFTable.BottomMargin: SingleHely, amelyet az oldal alján fenntartanak, mielőtt a renderelési menet új oldaltörést hajt végre
THPDFTable.RepeatHeader: BooleanHa igaz, a fejlécsáv minden folytatólagos oldal tetején újrakerül kiadásra
THPDFTable.TotalHeightRendered: SingleAz utolsó renderelési menet által az összes oldalon elfogyasztott teljes magasság

THPDFTableRow

A THPDFTableRow egy táblasor celláit, valamint a mérés és a renderelés során használt sorszintű jelzőket tartja

TagLeírás
THPDFTableRow.Create(InitialColCount: Integer)Létrehozza a sort a megadott számú cellával előre feltöltve
THPDFTableRow.DestroyFelszabadítja a sort és a celláit
THPDFTableRow.AddCell: THPDFTableCellHozzáfűz egy cellát, és visszaadja azt
THPDFTableRow.EnsureCells(Count: Integer): IntegerA sort legalább a megadott cellaszámra bővíti, és visszaadja az új számot
THPDFTableRow.Cells[Index: Integer]: THPDFTableCellAlapértelmezett tömbtulajdonság, amellyel cella érhető el index alapján
THPDFTableRow.Count: IntegerA sor által jelenleg tárolt cellák száma
THPDFTableRow.IsHeader: BooleanFejlécsorként jelöli a sort, amelyet THPDFTable.HeaderBgColor színnel festenek, és amely THPDFTable.RepeatHeader engedélyezésekor ismétlésre kerül
THPDFTableRow.MinHeight: SingleAlsó korlát, amelyet a mért sormagasságra alkalmaznak

THPDFTableCell

A THPDFTableCell hordozza a tartalmat és a tábla-alapértékekre épülő, cellánkénti felülírásokat

TulajdonságLeírás
THPDFTableCell.Text: WideStringCellaszöveg; ha a THPDFTableCell.IsHTML igaz, a THPDFPage.TextOutHTML útján renderelődik, így a félkövér, a szín, a linkek és az alsó-felső index inline jelölései is érvényesülnek
THPDFTableCell.Align: THPDFCellAlign és THPDFTableCell.VAlign: THPDFCellVAlignVízszintes és függőleges tartalomigazítás a cellán belül
THPDFTableCell.ColSpan: Integer és THPDFTableCell.RowSpan: IntegerVízszintes és függőleges egyesítési darabszám, mindkettő alapértelmezése 1
THPDFTableCell.BgColor: TColor és THPDFTableCell.HasBgColor: BooleanCellánkénti háttérszín-felülírás és annak meglétét jelző flag
THPDFTableCell.TextColor: TColor és THPDFTableCell.HasTextColor: BooleanCellánkénti szövegszín-felülírás és annak meglétét jelző flag
THPDFTableCell.FontName: AnsiString, THPDFTableCell.FontSize: Single, THPDFTableCell.FontStyle: TFontStyles, THPDFTableCell.HasFont: BooleanCellánkénti font-felülírás és annak meglétét jelző flag
THPDFTableCell.WordWrap: BooleanA hosszú szöveget a cellán belül mért sorokra töri, alapértelmezésben engedélyezett
THPDFTableCell.ImageIndex: IntegerHa nulla vagy nagyobb, a cella a szöveg helyett az adott indexen, a THotPDF.AddImage útján regisztrált képet jeleníti meg, alapértelmezés -1
THPDFTableCell.ImageAspect: SingleMegjelenítési képarány képcella esetén; a kép a cellaszélességre skálázódik, a magassága ebből az arányból adódik, alapértelmezés 1.0
THPDFTableCell.IsHTML: BooleanA THPDFTableCell.Text tartalmat a THPDFPage.TextOutHTML útjára tereli, hogy az inline jelölés renderelődjön

Igazítási enumok

A THPDFCellAlign = (caLeft, caCenter, caRight) a cella vízszintes igazítását választja ki, a THPDFCellVAlign = (cvaTop, cvaMiddle, cvaBottom) pedig a függőlegeset

Elrendezés és oldaltörési viselkedés

A sormagasságokat a cellatartalomból mérik, a szótörés és a THPDFTableRow.MinHeight figyelembevételével; az átnyúló cellák egy belső rácsra kerülnek, így a THPDFTableCell.ColSpan és a THPDFTableCell.RowSpan sorok között is helyesen egyesít, a renderelési menet pedig akkor törik új oldalra, ha a következő sor már nem fér el a THPDFTable.BottomMargin felett

Ha a THPDFTable.RepeatHeader igaz, a fejlécsáv minden folytatólagos oldal tetejére újrakerül, mielőtt további sorok kerülnének rajzolásra

A v2.432.0-ban bevezetett képcellák index alapján hivatkoznak a THotPDF.AddImage útján regisztrált képre, a cellaszélességre skálázódnak, magasságukat pedig a THPDFTableCell.ImageAspect-ből veszik, így a kép megőrzi a forrás képarányát

Lásd még