Diseño y renderizado de tablas THPDFTable

THPDFTable es el engine liviano de diseño y renderizado de tablas introducido en v2.429.0 y expuesto por la unidad HPDFTable

Antes de v2.429.0 quienes producían PDF tenían que dibujar las celdas a mano con Rectangle más TextOut y coordenadas X de columnas codificadas en duro, gestionando alturas de fila, rayado cebra y saltos de página manualmente; THPDFTable maneja las primitivas de dibujo existentes de THPDFPage de modo que las tablas se rendericen con alturas de fila medidas, celdas combinadas y continuación automática en 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 es dueño del layout de columnas, de la colección de filas y de la pasada de render; 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): IntegerAgrega una columna con el ancho dado en las unidades actuales de página y devuelve su índice
THPDFTable.AddRow: THPDFTableRowAgrega una fila dimensionada a la cantidad actual de columnas y la devuelve
THPDFTable.SetBounds(AX, AY: Single)Posiciona 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: IntegerCantidad de columnas agregadas con THPDFTable.AddColumn
THPDFTable.RowCount: IntegerCantidad de filas agregadas 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 actuales de página
THPDFTable.HeaderBgColor: TColorColor de fondo pintado detrás de las filas de encabezado
THPDFTable.AlternatingBg: TColorFondo de rayado cebra aplicado a las filas alternas que no son de encabezado
THPDFTable.BorderColor: TColor y THPDFTable.BorderWidth: SingleColor y ancho de las líneas de la grilla usados para los bordes de celdas
THPDFTable.DefaultFontName: AnsiString, THPDFTable.DefaultFontSize: Single, THPDFTable.DefaultAlign: THPDFCellAlignFuente y alineación de respaldo para las celdas que no las 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 la pasada de render salte a una página nueva
THPDFTable.RepeatHeader: BooleanCuando es true, la banda de encabezado se vuelve a emitir al inicio de cada página de continuación
THPDFTable.TotalHeightRendered: SingleAltura total consumida por la última pasada de render a través de todas las páginas

THPDFTableRow

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

MiembroDescripción
THPDFTableRow.Create(InitialColCount: Integer)Crea la fila prellenada con la cantidad dada de celdas
THPDFTableRow.DestroyLibera la fila y sus celdas
THPDFTableRow.AddCell: THPDFTableCellAgrega una celda y la devuelve
THPDFTableRow.EnsureCells(Count: Integer): IntegerHace crecer la fila hasta al menos la cantidad dada de celdas y devuelve el nuevo conteo
THPDFTableRow.Cells[Index: Integer]: THPDFTableCellPropiedad de arreglo por defecto que accede a una celda por índice
THPDFTableRow.Count: IntegerCantidad de celdas que la fila contiene actualmente
THPDFTableRow.IsHeader: BooleanMarca la fila como fila de encabezado pintada con THPDFTable.HeaderBgColor y repetida cuando THPDFTable.RepeatHeader está habilitado
THPDFTableRow.MinHeight: SingleLímite inferior aplicado a la altura medida de la fila

THPDFTableCell

THPDFTableCell lleva 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 el markup en línea de negrita, color, links y sub-sup se honra
THPDFTableCell.Align: THPDFCellAlign y THPDFTableCell.VAlign: THPDFCellVAlignAlineación horizontal y vertical del contenido dentro de la celda
THPDFTableCell.ColSpan: Integer y THPDFTableCell.RowSpan: IntegerConteos de combinación horizontal y vertical, ambos con 1 por defecto
THPDFTableCell.BgColor: TColor y THPDFTableCell.HasBgColor: BooleanSobrescritura del color de fondo por celda y su flag de presencia
THPDFTableCell.TextColor: TColor y THPDFTableCell.HasTextColor: BooleanSobrescritura del color de texto por celda y su flag de presencia
THPDFTableCell.FontName: AnsiString, THPDFTableCell.FontSize: Single, THPDFTableCell.FontStyle: TFontStyles, THPDFTableCell.HasFont: BooleanSobrescritura de fuente por celda y su flag de presencia
THPDFTableCell.WordWrap: BooleanDivide 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 a través de THotPDF.AddImage en lugar de texto, por defecto -1
THPDFTableCell.ImageAspect: SingleRelación de aspecto de visualización para una celda de imagen; la imagen se escala al ancho de la celda y su altura se deriva de esta relación, por defecto 1.0
THPDFTableCell.IsHTML: BooleanEnruta THPDFTableCell.Text por THPDFPage.TextOutHTML de modo que el markup en línea se renderice

Enums 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 de la celda

Layout y comportamiento de saltos de página

Las alturas de fila se miden a partir del contenido de las celdas honrando el word wrap y THPDFTableRow.MinHeight, las celdas con span se colocan en una grilla interna de modo que THPDFTableCell.ColSpan y THPDFTableCell.RowSpan se combinen correctamente a través de filas, y la pasada de render 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 encabezado se vuelve a emitir al inicio de cada página de continuación antes de dibujar más filas

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

Véase también