Bố cục và kết xuất bảng THPDFTable
THPDFTable là engine bố cục và kết xuất bảng nhẹ được giới thiệu từ v2.429.0 và cung cấp qua unit HPDFTable
Trước v2.429.0, người dùng phải tự vẽ từng ô bằng Rectangle cộng TextOut với tọa độ X của cột ghi cứng, tự lo chiều cao dòng, kẻ sọc zebra, và ngắt trang; THPDFTable điều khiển các primitive vẽ hiện có của THPDFPage nên bảng được kết xuất với chiều cao dòng đo được, ô gộp, và tự động sang trang tiếp theo
Unit
HPDFTable
Ví dụ sử dụng
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 sở hữu bố cục cột, tập hợp dòng, và lượt kết xuất; nó vẽ qua component THotPDF truyền vào THPDFTable.Create và chỉ dùng các thành viên công khai của THPDFPage cùng THotPDF
Phương thức
| Phương thức | Mô tả |
|---|---|
THPDFTable.Create(ADoc: THotPDF) | Tạo bảng gắn với tài liệu cung cấp trang, font, và ảnh |
THPDFTable.Destroy | Giải phóng bảng cùng mọi dòng và ô mà nó sở hữu |
THPDFTable.AddColumn(Width: Single): Integer | Thêm một cột với chiều rộng cho trước theo đơn vị trang hiện hành và trả về chỉ số của nó |
THPDFTable.AddRow: THPDFTableRow | Thêm một dòng với kích thước theo số cột hiện có và trả về dòng đó |
THPDFTable.SetBounds(AX, AY: Single) | Đặt gốc tọa độ của bảng trên trang hiện hành |
THPDFTable.Render | Đo chiều cao dòng, vẽ nền, viền, và nội dung ô, rồi tiếp tục trên các trang mới khi còn dòng |
Thuộc tính
| Thuộc tính | Mô tả |
|---|---|
THPDFTable.Doc: THotPDF | Tài liệu được gắn, truyền cho constructor |
THPDFTable.ColCount: Integer | Số cột đã thêm bằng THPDFTable.AddColumn |
THPDFTable.RowCount: Integer | Số dòng đã thêm bằng THPDFTable.AddRow |
THPDFTable.Rows[Index: Integer]: THPDFTableRow | Truy cập một dòng theo chỉ số |
THPDFTable.X: Single và THPDFTable.Y: Single | Gốc tọa độ của bảng trên trang, theo đơn vị trang hiện hành |
THPDFTable.HeaderBgColor: TColor | Màu nền tô phía sau các dòng header |
THPDFTable.AlternatingBg: TColor | Màu nền sọc zebra áp cho các dòng thường xen kẽ |
THPDFTable.BorderColor: TColor và THPDFTable.BorderWidth: Single | Màu và độ rộng đường kẻ lưới dùng cho viền ô |
THPDFTable.DefaultFontName: AnsiString, THPDFTable.DefaultFontSize: Single, THPDFTable.DefaultAlign: THPDFCellAlign | Font và căn lề dự phòng cho các ô không tự ghi đè |
THPDFTable.Padding: Single | Khoảng đệm bên trong giữa viền ô và nội dung của ô |
THPDFTable.BottomMargin: Single | Khoảng trống dành sẵn ở đáy trang trước khi lượt kết xuất sang trang mới |
THPDFTable.RepeatHeader: Boolean | Khi bật, dải header được phát lại ở đầu mọi trang tiếp diễn |
THPDFTable.TotalHeightRendered: Single | Tổng chiều cao mà lượt kết xuất gần nhất tiêu tốn trên mọi trang |
THPDFTableRow
THPDFTableRow giữ các ô của một dòng bảng cùng các cờ cấp dòng dùng khi đo đạc và kết xuất
| Thành viên | Mô tả |
|---|---|
THPDFTableRow.Create(InitialColCount: Integer) | Tạo dòng với số ô cho trước được tạo sẵn |
THPDFTableRow.Destroy | Giải phóng dòng và các ô của nó |
THPDFTableRow.AddCell: THPDFTableCell | Thêm một ô và trả về ô đó |
THPDFTableRow.EnsureCells(Count: Integer): Integer | Mở rộng dòng lên ít nhất số ô cho trước và trả về số mới |
THPDFTableRow.Cells[Index: Integer]: THPDFTableCell | Array property mặc định truy cập một ô theo chỉ số |
THPDFTableRow.Count: Integer | Số ô mà dòng đang giữ |
THPDFTableRow.IsHeader: Boolean | Đánh dấu dòng là dòng header, được tô bằng THPDFTable.HeaderBgColor và lặp lại khi THPDFTable.RepeatHeader bật |
THPDFTableRow.MinHeight: Single | Chặn dưới áp lên chiều cao dòng đo được |
THPDFTableCell
THPDFTableCell mang nội dung và các ghi đè cấp ô áp lên giá trị mặc định của bảng
| Thuộc tính | Mô tả |
|---|---|
THPDFTableCell.Text: WideString | Văn bản ô; được kết xuất qua THPDFPage.TextOutHTML khi THPDFTableCell.IsHTML bật, nhờ markup inline cho in đậm, màu, liên kết, và sub-sup được xử lý đúng |
THPDFTableCell.Align: THPDFCellAlign và THPDFTableCell.VAlign: THPDFCellVAlign | Căn lề ngang và dọc của nội dung trong ô |
THPDFTableCell.ColSpan: Integer và THPDFTableCell.RowSpan: Integer | Số cột và số dòng gộp theo chiều ngang, dọc, cả hai mặc định là 1 |
THPDFTableCell.BgColor: TColor và THPDFTableCell.HasBgColor: Boolean | Ghi đè màu nền cấp ô và cờ hiện diện của nó |
THPDFTableCell.TextColor: TColor và THPDFTableCell.HasTextColor: Boolean | Ghi đè màu chữ cấp ô và cờ hiện diện của nó |
THPDFTableCell.FontName: AnsiString, THPDFTableCell.FontSize: Single, THPDFTableCell.FontStyle: TFontStyles, THPDFTableCell.HasFont: Boolean | Ghi đè font cấp ô và cờ hiện diện của nó |
THPDFTableCell.WordWrap: Boolean | Ngắt dòng văn bản dài thành các dòng đo được bên trong ô, bật theo mặc định |
THPDFTableCell.ImageIndex: Integer | Khi có giá trị từ 0 trở lên, ô hiển thị ảnh đã đăng ký với chỉ số đó qua THotPDF.AddImage thay cho văn bản, mặc định -1 |
THPDFTableCell.ImageAspect: Single | Tỉ lệ khung hình hiển thị cho ô ảnh; ảnh được scale theo chiều rộng ô và chiều cao suy từ tỉ lệ này, mặc định 1.0 |
THPDFTableCell.IsHTML: Boolean | Đưa THPDFTableCell.Text qua THPDFPage.TextOutHTML để markup inline được kết xuất |
Enum căn lề
THPDFCellAlign = (caLeft, caCenter, caRight) chọn căn lề ngang của ô và THPDFCellVAlign = (cvaTop, cvaMiddle, cvaBottom) chọn căn lề dọc của ô
Hành vi bố cục và ngắt trang
Chiều cao dòng được đo từ nội dung ô có tính word wrap và tôn trọng THPDFTableRow.MinHeight, các ô gộp được đặt trên một lưới nội bộ để THPDFTableCell.ColSpan và THPDFTableCell.RowSpan gộp đúng qua nhiều dòng, còn lượt kết xuất sẽ sang trang mới khi dòng kế tiếp không vừa phía trên THPDFTable.BottomMargin
Khi THPDFTable.RepeatHeader bật, dải header được phát lại ở đầu mọi trang tiếp diễn trước khi các dòng sau được vẽ
Ô ảnh được giới thiệu từ v2.432.0 tham chiếu ảnh đã đăng ký qua THotPDF.AddImage theo chỉ số, scale theo chiều rộng ô, và suy chiều cao từ THPDFTableCell.ImageAspect để ảnh giữ nguyên tỉ lệ gốc