Maquetación y renderizado de tablas THPDFTable

THPDFTable es el motor ligero de maquetación y renderizado de tablas introducido en la v2.429.0 y expuesto por la unidad HPDFTable

Antes de la v2.429.0 los productores tenían que dibujar las celdas a mano con Rectangle más TextOut y coordenadas X de columna fijadas en el código, gestionando a mano alturas de fila, franjas cebra y saltos de página; THPDFTable maneja las primitivas de dibujo existentes de THPDFPage, de modo que las tablas se renderizan con alturas de fila medidas, celdas fusionadas y continuación automática en los saltos de página

Unidad

HPDFTable

Ejemplo de uso

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 posee la maquetación de columnas, la colección de filas y el pase de renderizado; dibuja a través del componente THotPDF pasado a THPDFTable.Create y usa solo miembros públicos de THPDFPage y THotPDF

Métodos

MétodoDescripción
THPDFTable.Create(ADoc: THotPDF)Crea la tabla ligada al documento que suministra páginas, fuentes e imágenes
THPDFTable.DestroyLibera la tabla junto con cada fila y celda de su propiedad
THPDFTable.AddColumn(Width: Single): IntegerAñade una columna con la anchura indicada en las unidades de página actuales y devuelve su índice
THPDFTable.AddRow: THPDFTableRowAñade una fila dimensionada al recuento de columnas actual y la devuelve
THPDFTable.SetBounds(AX, AY: Single)Sitúa el origen de la tabla en la página actual
THPDFTable.RenderMide las alturas de fila, dibuja fondos, bordes y contenido de celdas, y continúa en páginas nuevas mientras queden filas

Propiedades

PropiedadDescripción
THPDFTable.Doc: THotPDFEl documento ligado suministrado al constructor
THPDFTable.ColCount: IntegerNúmero de columnas añadidas con THPDFTable.AddColumn
THPDFTable.RowCount: IntegerNúmero de filas añadidas con THPDFTable.AddRow
THPDFTable.Rows[Index: Integer]: THPDFTableRowAccede a una fila por índice
THPDFTable.X: Single y THPDFTable.Y: SingleOrigen de la tabla en la página, en las unidades de página actuales
THPDFTable.HeaderBgColor: TColorColor de fondo pintado detrás de las filas de cabecera
THPDFTable.AlternatingBg: TColorFondo de franja cebra aplicado a las filas alternas que no son de cabecera
THPDFTable.BorderColor: TColor y THPDFTable.BorderWidth: SingleColor y anchura de las líneas de rejilla usados para los bordes de celda
THPDFTable.DefaultFontName: AnsiString, THPDFTable.DefaultFontSize: Single, THPDFTable.DefaultAlign: THPDFCellAlignFuente de reserva y alineación para las celdas que no los sobrescriben
THPDFTable.Padding: SingleEspaciado interior entre el borde de una celda y su contenido
THPDFTable.BottomMargin: SingleEspacio reservado en la parte inferior de una página antes de que el pase de renderizado salte a una página nueva
THPDFTable.RepeatHeader: BooleanCuando es true, la banda de cabecera se vuelve a emitir en la parte superior de cada página de continuación
THPDFTable.TotalHeightRendered: SingleAltura total consumida por el último pase de renderizado en todas las páginas

THPDFTableRow

THPDFTableRow contiene las celdas de una fila de tabla más los indicadores a nivel de fila usados durante la medición y el renderizado

MiembroDescripción
THPDFTableRow.Create(InitialColCount: Integer)Crea la fila rellena de antemano con el número de celdas indicado
THPDFTableRow.DestroyLibera la fila y sus celdas
THPDFTableRow.AddCell: THPDFTableCellAñade una celda y la devuelve
THPDFTableRow.EnsureCells(Count: Integer): IntegerHace crecer la fila hasta al menos el recuento de celdas indicado y devuelve el nuevo recuento
THPDFTableRow.Cells[Index: Integer]: THPDFTableCellPropiedad de array por defecto que accede a una celda por índice
THPDFTableRow.Count: IntegerNúmero de celdas que la fila contiene actualmente
THPDFTableRow.IsHeader: BooleanMarca la fila como fila de cabecera pintada con THPDFTable.HeaderBgColor y repetida cuando THPDFTable.RepeatHeader está habilitado
THPDFTableRow.MinHeight: SingleLímite inferior aplicado a la altura de fila medida

THPDFTableCell

THPDFTableCell transporta el contenido y las sobrescrituras por celda aplicadas sobre los valores por defecto de la tabla

PropiedadDescripción
THPDFTableCell.Text: WideStringTexto de la celda; se renderiza a través de THPDFPage.TextOutHTML cuando THPDFTableCell.IsHTML es true, de modo que se honra el marcado en línea de negrita, color, enlaces y sub-sup
THPDFTableCell.Align: THPDFCellAlign y THPDFTableCell.VAlign: THPDFCellVAlignAlineación horizontal y vertical del contenido dentro de la celda
THPDFTableCell.ColSpan: Integer y THPDFTableCell.RowSpan: IntegerRecuentos de fusión horizontal y vertical, ambos con 1 por defecto
THPDFTableCell.BgColor: TColor y THPDFTableCell.HasBgColor: BooleanSobrescritura del color de fondo por celda y su indicador de presencia
THPDFTableCell.TextColor: TColor y THPDFTableCell.HasTextColor: BooleanSobrescritura del color de texto por celda y su indicador de presencia
THPDFTableCell.FontName: AnsiString, THPDFTableCell.FontSize: Single, THPDFTableCell.FontStyle: TFontStyles, THPDFTableCell.HasFont: BooleanSobrescritura de fuente por celda y su indicador de presencia
THPDFTableCell.WordWrap: BooleanAjusta el texto largo en líneas medidas dentro de la celda, habilitado por defecto
THPDFTableCell.ImageIndex: IntegerCuando es cero o mayor, la celda muestra la imagen registrada con ese índice mediante THotPDF.AddImage en lugar de texto, con -1 por defecto
THPDFTableCell.ImageAspect: SingleRelación de aspecto de visualización para una celda de imagen; la imagen se escala a la anchura de la celda y su altura se deriva de esta relación, con 1.0 por defecto
THPDFTableCell.IsHTML: BooleanEncamina THPDFTableCell.Text a través de THPDFPage.TextOutHTML para que el marcado en línea se renderice

Enumerados de alineación

THPDFCellAlign = (caLeft, caCenter, caRight) selecciona la alineación horizontal de la celda y THPDFCellVAlign = (cvaTop, cvaMiddle, cvaBottom) selecciona la alineación vertical

Maquetación y comportamiento de salto de página

Las alturas de fila se miden a partir del contenido de las celdas respetando el ajuste de línea y THPDFTableRow.MinHeight, las celdas expandidas se colocan en una rejilla interna para que THPDFTableCell.ColSpan y THPDFTableCell.RowSpan se fusionen correctamente entre filas, y el pase de renderizado salta a una página nueva cuando la siguiente fila no cabe por encima de THPDFTable.BottomMargin

Cuando THPDFTable.RepeatHeader es true, la banda de cabecera se vuelve a emitir en la parte superior de cada página de continuación antes de dibujar más filas

Las celdas de imagen introducidas en la v2.432.0 referencian por índice una imagen registrada mediante THotPDF.AddImage, se escalan a la anchura de la celda y derivan su altura de THPDFTableCell.ImageAspect, de modo que la imagen mantiene su relación de aspecto de origen

Véase también