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ứcMô 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.DestroyGiải phóng bảng cùng mọi dòng và ô mà nó sở hữu
THPDFTable.AddColumn(Width: Single): IntegerThê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: THPDFTableRowThê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ínhMô tả
THPDFTable.Doc: THotPDFTài liệu được gắn, truyền cho constructor
THPDFTable.ColCount: IntegerSố cột đã thêm bằng THPDFTable.AddColumn
THPDFTable.RowCount: IntegerSố dòng đã thêm bằng THPDFTable.AddRow
THPDFTable.Rows[Index: Integer]: THPDFTableRowTruy cập một dòng theo chỉ số
THPDFTable.X: Single và THPDFTable.Y: SingleGốc tọa độ của bảng trên trang, theo đơn vị trang hiện hành
THPDFTable.HeaderBgColor: TColorMàu nền tô phía sau các dòng header
THPDFTable.AlternatingBg: TColorMàu nền sọc zebra áp cho các dòng thường xen kẽ
THPDFTable.BorderColor: TColor và THPDFTable.BorderWidth: SingleMàu và độ rộng đường kẻ lưới dùng cho viền ô
THPDFTable.DefaultFontName: AnsiString, THPDFTable.DefaultFontSize: Single, THPDFTable.DefaultAlign: THPDFCellAlignFont và căn lề dự phòng cho các ô không tự ghi đè
THPDFTable.Padding: SingleKhoảng đệm bên trong giữa viền ô và nội dung của ô
THPDFTable.BottomMargin: SingleKhoảng trống dành sẵn ở đáy trang trước khi lượt kết xuất sang trang mới
THPDFTable.RepeatHeader: BooleanKhi bật, dải header được phát lại ở đầu mọi trang tiếp diễn
THPDFTable.TotalHeightRendered: SingleTổ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ênMô tả
THPDFTableRow.Create(InitialColCount: Integer)Tạo dòng với số ô cho trước được tạo sẵn
THPDFTableRow.DestroyGiải phóng dòng và các ô của nó
THPDFTableRow.AddCell: THPDFTableCellThêm một ô và trả về ô đó
THPDFTableRow.EnsureCells(Count: Integer): IntegerMở rộng dòng lên ít nhất số ô cho trước và trả về số mới
THPDFTableRow.Cells[Index: Integer]: THPDFTableCellArray property mặc định truy cập một ô theo chỉ số
THPDFTableRow.Count: IntegerSố ô 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: SingleChặ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ínhMô tả
THPDFTableCell.Text: WideStringVă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: THPDFCellVAlignCăn lề ngang và dọc của nội dung trong ô
THPDFTableCell.ColSpan: Integer và THPDFTableCell.RowSpan: IntegerSố 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: BooleanGhi đè màu nền cấp ô và cờ hiện diện của nó
THPDFTableCell.TextColor: TColor và THPDFTableCell.HasTextColor: BooleanGhi đè 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: BooleanGhi đè font cấp ô và cờ hiện diện của nó
THPDFTableCell.WordWrap: BooleanNgắ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: IntegerKhi 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: SingleTỉ 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

Xem thêm