THPDFTable – rozvržení a vykreslování tabulek
THPDFTable je lehkovážné rozvržení a vykreslovací engine pro tabulky představený ve verzi v2.429.0 a zpřístupněný unitou HPDFTable
Před verzí v2.429.0 museli producenti buňky kreslit ručně přes Rectangle plus TextOut s natvrdo zapsanými X souřadnicemi sloupců a výšky řádků, zebra pruhování a zalomení stránek řešit ručně; THPDFTable řídí stávající kreslicí primitivy THPDFPage, takže se tabulky vykreslí s změřenými výškami řádků, slučovanými buňkami a automatickým pokračováním na dalších stránkách
Unit
HPDFTable
Příklad použití
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 vlastní rozvržení sloupců, kolekci řádků a průchod vykreslení; kreslí přes komponentu THotPDF předanou do THPDFTable.Create a používá jen veřejné členy THPDFPage a THotPDF
Metody
| Metoda | Popis |
|---|---|
THPDFTable.Create(ADoc: THotPDF) | Vytvoří tabulku vázanou na dokument, který dodává stránky, fonty a obrázky |
THPDFTable.Destroy | Uvolní tabulku spolu se všemi řádky a buňkami, které vlastní |
THPDFTable.AddColumn(Width: Single): Integer | Přidá sloupec se zadanou šířkou v aktuálních jednotkách stránky a vrátí jeho index |
THPDFTable.AddRow: THPDFTableRow | Přidá řádek dimenzovaný na aktuální počet sloupců a vrátí ho |
THPDFTable.SetBounds(AX, AY: Single) | Umístí počátek tabulky na aktuální stránku |
THPDFTable.Render | Změří výšky řádků, nakreslí pozadí, ohraničení a obsah buněk a pokračuje na nových stránkách, dokud zbývají řádky |
Vlastnosti
| Vlastnost | Popis |
|---|---|
THPDFTable.Doc: THotPDF | Vázaný dokument předaný konstruktoru |
THPDFTable.ColCount: Integer | Počet sloupců přidaných přes THPDFTable.AddColumn |
THPDFTable.RowCount: Integer | Počet řádků přidaných přes THPDFTable.AddRow |
THPDFTable.Rows[Index: Integer]: THPDFTableRow | Přístup k řádku podle indexu |
THPDFTable.X: Single a THPDFTable.Y: Single | Počátek tabulky na stránce v aktuálních jednotkách stránky |
THPDFTable.HeaderBgColor: TColor | Barva pozadí kreslená za řádky hlavičky |
THPDFTable.AlternatingBg: TColor | Zebra pruhované pozadí aplikované na střídavé nehlavičkové řádky |
THPDFTable.BorderColor: TColor a THPDFTable.BorderWidth: Single | Barva a šířka čar mřížky používané pro ohraničení buněk |
THPDFTable.DefaultFontName: AnsiString, THPDFTable.DefaultFontSize: Single, THPDFTable.DefaultAlign: THPDFCellAlign | Záložní font a zarovnání pro buňky, které je nepřepíší |
THPDFTable.Padding: Single | Vnitřní odsazení mezi ohraničením buňky a jejím obsahem |
THPDFTable.BottomMargin: Single | Prostor rezervovaný ve spodní části stránky, než průchod vykreslení přejde na novou stránku |
THPDFTable.RepeatHeader: Boolean | Při true se pásmo hlavičky znovu vygeneruje v horní části každé pokračující stránky |
THPDFTable.TotalHeightRendered: Single | Celková výška spotřebovaná posledním průchodem vykreslení napříč všemi stránkami |
THPDFTableRow
THPDFTableRow drží buňky jednoho řádku tabulky plus příznaky na úrovni řádku používané při měření a vykreslování
| Člen | Popis |
|---|---|
THPDFTableRow.Create(InitialColCount: Integer) | Vytvoří řádek předvyplněný zadaným počtem buněk |
THPDFTableRow.Destroy | Uvolní řádek a jeho buňky |
THPDFTableRow.AddCell: THPDFTableCell | Přidá jednu buňku a vrátí ji |
THPDFTableRow.EnsureCells(Count: Integer): Integer | Zvětší řádek alespoň na zadaný počet buněk a vrátí nový počet |
THPDFTableRow.Cells[Index: Integer]: THPDFTableCell | Výchozí array property pro přístup k buňce podle indexu |
THPDFTableRow.Count: Integer | Počet buněk, které řádek aktuálně drží |
THPDFTableRow.IsHeader: Boolean | Označí řádek jako hlavičku kreslenou barvou THPDFTable.HeaderBgColor a opakovanou, když je zapnuto THPDFTable.RepeatHeader |
THPDFTableRow.MinHeight: Single | Dolní mez aplikovaná na změřenou výšku řádku |
THPDFTableCell
THPDFTableCell nese obsah a přepisy jednotlivých buněk aplikované nad výchozími hodnotami tabulky
| Vlastnost | Popis |
|---|---|
THPDFTableCell.Text: WideString | Text buňky; při THPDFTableCell.IsHTML true se vykresluje přes THPDFPage.TextOutHTML, takže se dodrží inline markup pro bold, barvu, odkazy a sub-sup |
THPDFTableCell.Align: THPDFCellAlign a THPDFTableCell.VAlign: THPDFCellVAlign | Horizontální a vertikální zarovnání obsahu uvnitř buňky |
THPDFTableCell.ColSpan: Integer a THPDFTableCell.RowSpan: Integer | Horizontální a vertikální počet slučování, oba defaultně 1 |
THPDFTableCell.BgColor: TColor a THPDFTableCell.HasBgColor: Boolean | Přepis barvy pozadí jednotlivé buňky a jeho příznak přítomnosti |
THPDFTableCell.TextColor: TColor a THPDFTableCell.HasTextColor: Boolean | Přepis barvy textu jednotlivé buňky a jeho příznak přítomnosti |
THPDFTableCell.FontName: AnsiString, THPDFTableCell.FontSize: Single, THPDFTableCell.FontStyle: TFontStyles, THPDFTableCell.HasFont: Boolean | Přepis fontu jednotlivé buňky a jeho příznak přítomnosti |
THPDFTableCell.WordWrap: Boolean | Zalamuje dlouhý text přes změřené řádky uvnitř buňky, defaultně zapnuté |
THPDFTableCell.ImageIndex: Integer | Při nule nebo více buňka místo textu zobrazí obrázek zaregistrovaný pod tímto indexem přes THotPDF.AddImage, default -1 |
THPDFTableCell.ImageAspect: Single | Poměr stran zobrazení pro buňku s obrázkem; obrázek se škáluje na šířku buňky a výška se odvozuje z tohoto poměru, default 1.0 |
THPDFTableCell.IsHTML: Boolean | Směruje THPDFTableCell.Text přes THPDFPage.TextOutHTML, takže se vykreslí inline markup |
Výčty zarovnání
THPDFCellAlign = (caLeft, caCenter, caRight) vybírá horizontální zarovnání buňky a THPDFCellVAlign = (cvaTop, cvaMiddle, cvaBottom) vertikální zarovnání buňky
Chování rozvržení a zalomení stránek
Výšky řádků se měří z obsahu buněk se zachováním word wrap a THPDFTableRow.MinHeight, slučované buňky se umísťují na interní mřížku, takže THPDFTableCell.ColSpan a THPDFTableCell.RowSpan správně sloučí napříč řádky, a průchod vykreslení přejde na novou stránku, když se další řádek nevejde nad THPDFTable.BottomMargin
Když je THPDFTable.RepeatHeader true, pásmo hlavičky se znovu vygeneruje v horní části každé pokračující stránky, než se nakreslí další řádky
Buňky s obrázky představené ve verzi v2.432.0 odkazují podle indexu na obrázek zaregistrovaný přes THotPDF.AddImage, škálují se na šířku buňky a výšku odvozují z THPDFTableCell.ImageAspect, takže obrázek si zachová poměr stran zdroje