No he comentado una cosa importante, Tampoco necesitas un TQuickREport
, al menos en diseño:
Código Delphi
[-]
var q:TQuickReport;
begin
q := TquickReport.Create(nil);
....
Freeandnil(q);
Igual que creamos un TStringList, podemos crear cualquier componente de delphi.
Para personalizar, yo lo haría desde el Grid que tengas, ocultando o mostrando las columnas, y despues guardar las columnas visibles en la BBDD.
Para guardar el ancho de los listados, bien podrías usar una tabla especial, yo la llamo "frases":
Código:
codigo (varchar(50)) Valor (varchar(300))
--------------------------------------------------
ListA-Listado Uno idCliente_150;Nombrecliente_200;NAlbaran_80;
ListA-Listado Dos idCliente_150;Fecha_90;NAlbaran_80;
ListF-Listado Dos idCliente_150;Fecha_90;NAlbaran_80;
ListFontA-Listado Dos Times New Roman,0,16711680,16,7
"ListA-" es un prefijo que se usa, en este caso para Listados de Albaranes.
"ListF-" para listados predefinidos de Facturas.
"ListFontA-" para saber la fuente que se usará en ese listado.
El resto del campo Código (39 caracteres) es el título del listado predefinido, así de paso limitamos la longitud del título para que quepa siempre en el folio.
Con una consulta del tipo
Código SQL
[-]
select * from frases where codigo like 'ListA%'
Obtendrías todos los listados predefinidos de Albaranes. En ejecución, recorres esta query y añades cada listado a un TPopupMenu (por ejemplo).
Al cargar un listado predefinido, haces visibles las columnas del grid que estan guardadas en el campo "Valor" de ese listado
El campo Valor, lo cargas en la propiedad DelimitedText de un Stringlist con Delimiterchar := ';', y despues por cada item del Stringlist, buscas la posición del caracter guión bajo "_", a la izquierda tienes el nombre del campo, y a la derecha el ancho que tendrá en Grid.
Sin duda te hará falta
FontTostr
para guardar la fuente del Grid y despues recuperarla.
No dudo que otra gente lo haga de una manera mejor. Estaremos a la expectativa
.
Un saludo