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étodo | Descripción |
|---|---|
THPDFTable.Create(ADoc: THotPDF) | Crea la tabla ligada al documento que suministra páginas, fuentes e imágenes |
THPDFTable.Destroy | Libera la tabla junto con cada fila y celda de su propiedad |
THPDFTable.AddColumn(Width: Single): Integer | Añade una columna con la anchura indicada en las unidades de página actuales y devuelve su índice |
THPDFTable.AddRow: THPDFTableRow | Añ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.Render | Mide las alturas de fila, dibuja fondos, bordes y contenido de celdas, y continúa en páginas nuevas mientras queden filas |
Propiedades
| Propiedad | Descripción |
|---|---|
THPDFTable.Doc: THotPDF | El documento ligado suministrado al constructor |
THPDFTable.ColCount: Integer | Número de columnas añadidas con THPDFTable.AddColumn |
THPDFTable.RowCount: Integer | Número de filas añadidas con THPDFTable.AddRow |
THPDFTable.Rows[Index: Integer]: THPDFTableRow | Accede a una fila por índice |
THPDFTable.X: Single y THPDFTable.Y: Single | Origen de la tabla en la página, en las unidades de página actuales |
THPDFTable.HeaderBgColor: TColor | Color de fondo pintado detrás de las filas de cabecera |
THPDFTable.AlternatingBg: TColor | Fondo de franja cebra aplicado a las filas alternas que no son de cabecera |
THPDFTable.BorderColor: TColor y THPDFTable.BorderWidth: Single | Color y anchura de las líneas de rejilla usados para los bordes de celda |
THPDFTable.DefaultFontName: AnsiString, THPDFTable.DefaultFontSize: Single, THPDFTable.DefaultAlign: THPDFCellAlign | Fuente de reserva y alineación para las celdas que no los sobrescriben |
THPDFTable.Padding: Single | Espaciado interior entre el borde de una celda y su contenido |
THPDFTable.BottomMargin: Single | Espacio reservado en la parte inferior de una página antes de que el pase de renderizado salte a una página nueva |
THPDFTable.RepeatHeader: Boolean | Cuando es true, la banda de cabecera se vuelve a emitir en la parte superior de cada página de continuación |
THPDFTable.TotalHeightRendered: Single | Altura 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
| Miembro | Descripción |
|---|---|
THPDFTableRow.Create(InitialColCount: Integer) | Crea la fila rellena de antemano con el número de celdas indicado |
THPDFTableRow.Destroy | Libera la fila y sus celdas |
THPDFTableRow.AddCell: THPDFTableCell | Añade una celda y la devuelve |
THPDFTableRow.EnsureCells(Count: Integer): Integer | Hace crecer la fila hasta al menos el recuento de celdas indicado y devuelve el nuevo recuento |
THPDFTableRow.Cells[Index: Integer]: THPDFTableCell | Propiedad de array por defecto que accede a una celda por índice |
THPDFTableRow.Count: Integer | Número de celdas que la fila contiene actualmente |
THPDFTableRow.IsHeader: Boolean | Marca la fila como fila de cabecera pintada con THPDFTable.HeaderBgColor y repetida cuando THPDFTable.RepeatHeader está habilitado |
THPDFTableRow.MinHeight: Single | Lí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
| Propiedad | Descripción |
|---|---|
THPDFTableCell.Text: WideString | Texto 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: THPDFCellVAlign | Alineación horizontal y vertical del contenido dentro de la celda |
THPDFTableCell.ColSpan: Integer y THPDFTableCell.RowSpan: Integer | Recuentos de fusión horizontal y vertical, ambos con 1 por defecto |
THPDFTableCell.BgColor: TColor y THPDFTableCell.HasBgColor: Boolean | Sobrescritura del color de fondo por celda y su indicador de presencia |
THPDFTableCell.TextColor: TColor y THPDFTableCell.HasTextColor: Boolean | Sobrescritura del color de texto por celda y su indicador de presencia |
THPDFTableCell.FontName: AnsiString, THPDFTableCell.FontSize: Single, THPDFTableCell.FontStyle: TFontStyles, THPDFTableCell.HasFont: Boolean | Sobrescritura de fuente por celda y su indicador de presencia |
THPDFTableCell.WordWrap: Boolean | Ajusta el texto largo en líneas medidas dentro de la celda, habilitado por defecto |
THPDFTableCell.ImageIndex: Integer | Cuando 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: Single | Relació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: Boolean | Encamina 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