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ódus | Leí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.Destroy | Felszabadítja a táblát a tulajdonában lévő összes soral és cellával együtt |
THPDFTable.AddColumn(Width: Single): Integer | Hozzáfűz egy oszlopot a megadott szélességgel az aktuális oldal-egységekben, és visszaadja annak indexét |
THPDFTable.AddRow: THPDFTableRow | Hozzá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.Render | Megméri a sormagasságokat, kirajzolja a háttereket, a kereteket és a cellatartalmat, majd új oldalakon folytatja, amíg sorok maradnak |
Tulajdonságok
| Tulajdonság | Leírás |
|---|---|
THPDFTable.Doc: THotPDF | A konstruktor által kapott, bekötött dokumentum |
THPDFTable.ColCount: Integer | A THPDFTable.AddColumn hívásokkal hozzáadott oszlopok száma |
THPDFTable.RowCount: Integer | A THPDFTable.AddRow hívásokkal hozzáadott sorok száma |
THPDFTable.Rows[Index: Integer]: THPDFTableRow | Sor elérése index alapján |
THPDFTable.X: Single és THPDFTable.Y: Single | A tábla origója az oldalon, aktuális oldal-egységekben |
THPDFTable.HeaderBgColor: TColor | A fejlécsorok mögé festett háttérszín |
THPDFTable.AlternatingBg: TColor | A váltakozó, nem fejléc jellegű sorokra alkalmazott zebracsíkos háttér |
THPDFTable.BorderColor: TColor és THPDFTable.BorderWidth: Single | A cellakeretekhez használt rácsvonal-szín és -szélesség |
THPDFTable.DefaultFontName: AnsiString, THPDFTable.DefaultFontSize: Single, THPDFTable.DefaultAlign: THPDFCellAlign | Tartalék font és igazítás azokhoz a cellákhoz, amelyek nem írják felül őket |
THPDFTable.Padding: Single | Belső térköz a cellakerete és a tartalma között |
THPDFTable.BottomMargin: Single | Hely, amelyet az oldal alján fenntartanak, mielőtt a renderelési menet új oldaltörést hajt végre |
THPDFTable.RepeatHeader: Boolean | Ha igaz, a fejlécsáv minden folytatólagos oldal tetején újrakerül kiadásra |
THPDFTable.TotalHeightRendered: Single | Az 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
| Tag | Leírás |
|---|---|
THPDFTableRow.Create(InitialColCount: Integer) | Létrehozza a sort a megadott számú cellával előre feltöltve |
THPDFTableRow.Destroy | Felszabadítja a sort és a celláit |
THPDFTableRow.AddCell: THPDFTableCell | Hozzáfűz egy cellát, és visszaadja azt |
THPDFTableRow.EnsureCells(Count: Integer): Integer | A sort legalább a megadott cellaszámra bővíti, és visszaadja az új számot |
THPDFTableRow.Cells[Index: Integer]: THPDFTableCell | Alapértelmezett tömbtulajdonság, amellyel cella érhető el index alapján |
THPDFTableRow.Count: Integer | A sor által jelenleg tárolt cellák száma |
THPDFTableRow.IsHeader: Boolean | Fejlé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: Single | Alsó 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ág | Leírás |
|---|---|
THPDFTableCell.Text: WideString | Cellaszö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: THPDFCellVAlign | Vízszintes és függőleges tartalomigazítás a cellán belül |
THPDFTableCell.ColSpan: Integer és THPDFTableCell.RowSpan: Integer | Vízszintes és függőleges egyesítési darabszám, mindkettő alapértelmezése 1 |
THPDFTableCell.BgColor: TColor és THPDFTableCell.HasBgColor: Boolean | Cellánkénti háttérszín-felülírás és annak meglétét jelző flag |
THPDFTableCell.TextColor: TColor és THPDFTableCell.HasTextColor: Boolean | Cellá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: Boolean | Cellánkénti font-felülírás és annak meglétét jelző flag |
THPDFTableCell.WordWrap: Boolean | A hosszú szöveget a cellán belül mért sorokra töri, alapértelmezésben engedélyezett |
THPDFTableCell.ImageIndex: Integer | Ha 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: Single | Megjelení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: Boolean | A 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