Tata Letak dan Rendering Tabel THPDFTable
THPDFTable adalah engine tata letak dan rendering tabel ringan yang diperkenalkan di v2.429.0 dan diekspos oleh unit HPDFTable
Sebelum v2.429.0, pemanggil harus menggambar sel secara manual dengan Rectangle plus TextOut dan koordinat X kolom yang di-hardcode, sambil mengatur tinggi baris, zebra striping, dan page break sendiri; THPDFTable menggerakkan primitif gambar THPDFPage yang sudah ada sehingga tabel terrender dengan tinggi baris terukur, sel gabungan, dan kelanjutan page break otomatis
Unit
HPDFTable
Contoh penggunaan
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 memiliki tata letak kolom, koleksi baris, dan pass render; ia menggambar melalui komponen THotPDF yang diberikan ke THPDFTable.Create dan hanya memakai member publik THPDFPage dan THotPDF
Metode
| Metode | Deskripsi |
|---|---|
THPDFTable.Create(ADoc: THotPDF) | Membuat tabel yang terikat ke dokumen yang menyuplai halaman, font, dan gambar |
THPDFTable.Destroy | Membebaskan tabel bersama setiap baris dan sel miliknya |
THPDFTable.AddColumn(Width: Single): Integer | Menambahkan kolom dengan lebar yang diberikan dalam unit halaman saat ini dan mengembalikan indeksnya |
THPDFTable.AddRow: THPDFTableRow | Menambahkan baris berukuran jumlah kolom saat ini dan mengembalikannya |
THPDFTable.SetBounds(AX, AY: Single) | Memposisikan titik asal tabel di halaman saat ini |
THPDFTable.Render | Mengukur tinggi baris, menggambar latar, border, dan konten sel, lalu melanjutkan ke halaman baru selama masih ada baris tersisa |
Properti
| Properti | Deskripsi |
|---|---|
THPDFTable.Doc: THotPDF | Dokumen terikat yang diberikan ke konstruktor |
THPDFTable.ColCount: Integer | Jumlah kolom yang ditambahkan dengan THPDFTable.AddColumn |
THPDFTable.RowCount: Integer | Jumlah baris yang ditambahkan dengan THPDFTable.AddRow |
THPDFTable.Rows[Index: Integer]: THPDFTableRow | Mengakses baris berdasarkan indeks |
THPDFTable.X: Single dan THPDFTable.Y: Single | Titik asal tabel di halaman dalam unit halaman saat ini |
THPDFTable.HeaderBgColor: TColor | Warna latar yang dicat di belakang baris header |
THPDFTable.AlternatingBg: TColor | Warna zebra yang diterapkan pada baris bukan-header yang berselang-seling |
THPDFTable.BorderColor: TColor dan THPDFTable.BorderWidth: Single | Warna dan lebar garis grid untuk border sel |
THPDFTable.DefaultFontName: AnsiString, THPDFTable.DefaultFontSize: Single, THPDFTable.DefaultAlign: THPDFCellAlign | Font dan perataan fallback untuk sel yang tidak menimpanya |
THPDFTable.Padding: Single | Jarak dalam antara border sel dan kontennya |
THPDFTable.BottomMargin: Single | Ruang yang disiapkan di dasar halaman sebelum pass render pindah ke halaman baru |
THPDFTable.RepeatHeader: Boolean | Bila true, pita header diterbitkan ulang di bagian atas setiap halaman kelanjutan |
THPDFTable.TotalHeightRendered: Single | Total tinggi yang dikonsumsi pass render terakhir di semua halaman |
THPDFTableRow
THPDFTableRow menyimpan sel-sel satu baris tabel plus flag level baris yang dipakai saat pengukuran dan rendering
| Member | Deskripsi |
|---|---|
THPDFTableRow.Create(InitialColCount: Integer) | Membuat baris yang sudah terisi sebanyak jumlah sel yang diberikan |
THPDFTableRow.Destroy | Membebaskan baris dan sel-selnya |
THPDFTableRow.AddCell: THPDFTableCell | Menambahkan satu sel dan mengembalikannya |
THPDFTableRow.EnsureCells(Count: Integer): Integer | Menumbuhkan baris hingga minimal jumlah sel yang diberikan dan mengembalikan jumlah barunya |
THPDFTableRow.Cells[Index: Integer]: THPDFTableCell | Properti array default yang mengakses sel berdasarkan indeks |
THPDFTableRow.Count: Integer | Jumlah sel yang sedang dipegang baris |
THPDFTableRow.IsHeader: Boolean | Menandai baris sebagai baris header yang dicat dengan THPDFTable.HeaderBgColor dan diulang saat THPDFTable.RepeatHeader diaktifkan |
THPDFTableRow.MinHeight: Single | Batas bawah yang diterapkan pada tinggi baris terukur |
THPDFTableCell
THPDFTableCell membawa konten dan penimpaan per-sel yang diterapkan di atas default tabel
| Properti | Deskripsi |
|---|---|
THPDFTableCell.Text: WideString | Teks sel; dirender melalui THPDFPage.TextOutHTML saat THPDFTableCell.IsHTML true sehingga markup inline untuk bold, warna, link, dan sub-sup dihormati |
THPDFTableCell.Align: THPDFCellAlign dan THPDFTableCell.VAlign: THPDFCellVAlign | Perataan konten horizontal dan vertikal di dalam sel |
THPDFTableCell.ColSpan: Integer dan THPDFTableCell.RowSpan: Integer | Jumlah penggabungan horizontal dan vertikal, keduanya default 1 |
THPDFTableCell.BgColor: TColor dan THPDFTableCell.HasBgColor: Boolean | Penimpaan warna latar per-sel dan flag keberadaannya |
THPDFTableCell.TextColor: TColor dan THPDFTableCell.HasTextColor: Boolean | Penimpaan warna teks per-sel dan flag keberadaannya |
THPDFTableCell.FontName: AnsiString, THPDFTableCell.FontSize: Single, THPDFTableCell.FontStyle: TFontStyles, THPDFTableCell.HasFont: Boolean | Penimpaan font per-sel dan flag keberadaannya |
THPDFTableCell.WordWrap: Boolean | Membungkus teks panjang lintas baris terukur di dalam sel, aktif secara default |
THPDFTableCell.ImageIndex: Integer | Saat nol atau lebih, sel menampilkan gambar yang terdaftar dengan indeks itu melalui THotPDF.AddImage alih-alih teks, default -1 |
THPDFTableCell.ImageAspect: Single | Rasio aspek tampilan untuk sel gambar; gambar diskalakan ke lebar sel dan tingginya diturunkan dari rasio ini, default 1.0 |
THPDFTableCell.IsHTML: Boolean | Menjalankan THPDFTableCell.Text melalui THPDFPage.TextOutHTML agar markup inline terrender |
Enum perataan
THPDFCellAlign = (caLeft, caCenter, caRight) memilih perataan horizontal sel dan THPDFCellVAlign = (cvaTop, cvaMiddle, cvaBottom) memilih perataan vertikal sel
Perilaku tata letak dan page break
Tinggi baris diukur dari konten sel dengan word wrap dan THPDFTableRow.MinHeight dihormati, sel yang menyebar ditempatkan di grid internal sehingga THPDFTableCell.ColSpan dan THPDFTableCell.RowSpan bergabung dengan benar lintas baris, dan pass render pindah ke halaman baru saat baris berikutnya tidak muat di atas THPDFTable.BottomMargin
Saat THPDFTable.RepeatHeader true, pita header diterbitkan ulang di bagian atas setiap halaman kelanjutan sebelum baris-baris berikutnya digambar
Sel gambar yang diperkenalkan di v2.432.0 mereferensikan gambar yang terdaftar melalui THotPDF.AddImage berdasarkan indeks, diskalakan ke lebar sel, dan menurunkan tingginya dari THPDFTableCell.ImageAspect sehingga gambar mempertahankan rasio aspek sumbernya