vichovi
17-08-2004, 19:26:18
Hola a todos
Estoy intentando imprimir un reporte con varias columnas (en concreto 5), en principio lo he intentado dando el valor 5 a la propiedad Page.Columns del objeto TQuickRep, pero con esto me sale a 5 columnas la banda de titulo (TQRBand.BandType:=rbTitle), la banda de grupo (TQRGroup), la banda de detalles, y la banda de sumario; y yo solamente quiero que vaya a 5 columnas la banda de detalle (si la propiedad Page.Columns fuera a nivel de banda :-)).
Puesto que esta opción no me es válida (a menos que alguien me demuestre lo contario, lo cual agradeceria pues es la mas facil), me decidi por la implimentacion mediante codigo para lo cual en la banda de detalles introduje 4 TQRLabel mas, y el siguiente código en el BEFOREPRINT de la banda:
var
origen:string;
n,posicion:integer;
lEti:TComponent;
begin
n:=1;
//Como la expresion del grupo es el origen lo guardo
origen:=dmdatos.msqAlbaranes['origen'];
//Voy imprimiendo los albaranes
while (n<=5) and (not dmdatos.msqAlbaranes.EOF) and (origen=dmdatos.msqAlbaranes['origen']) do
begin
lEti:=self.FindComponent('lAlbaran'+inttostr(n));
TQRLabel(lEti).Caption:=dmdatos.msqAlbaranes['numalbaran'];
dmdatos.msqAlbaranes.Next;
n:=n+1;
end;
//Si he salido del bucle porque no hay mas datos (EOF)
//o el origen a cambiado limpio los TQRLabel que no han sido impresos
if n<5 then
begin
for posicion:=n+1 to 5 do
begin
lEti:=self.FindComponent('lAlbaran'+inttostr(posicion));
TQRLabel(lEti).Caption:=' ';
end;
end;
//Pero si el origen a cambiado vuelvo al registro anterior
if origen<>dmdatos.msqAlbaranes['origen'] then
begin
//Esto lo hago para que la banda de grupo se imprima al cambiar
//el origen, y esto no funciona, la banda en cuestion no se imprime
dmdatos.msqAlbaranes.Prior;
end;
end;
Bueno pues con esto llevo atascado 4 dias haciendo pruebas y mas pruebas, he mirado en los foros antiguos y no vi nada.
Espero que alguien me pueda echar una mano.
Gracias a tod@s de antemano.
Un saludo.
Estoy intentando imprimir un reporte con varias columnas (en concreto 5), en principio lo he intentado dando el valor 5 a la propiedad Page.Columns del objeto TQuickRep, pero con esto me sale a 5 columnas la banda de titulo (TQRBand.BandType:=rbTitle), la banda de grupo (TQRGroup), la banda de detalles, y la banda de sumario; y yo solamente quiero que vaya a 5 columnas la banda de detalle (si la propiedad Page.Columns fuera a nivel de banda :-)).
Puesto que esta opción no me es válida (a menos que alguien me demuestre lo contario, lo cual agradeceria pues es la mas facil), me decidi por la implimentacion mediante codigo para lo cual en la banda de detalles introduje 4 TQRLabel mas, y el siguiente código en el BEFOREPRINT de la banda:
var
origen:string;
n,posicion:integer;
lEti:TComponent;
begin
n:=1;
//Como la expresion del grupo es el origen lo guardo
origen:=dmdatos.msqAlbaranes['origen'];
//Voy imprimiendo los albaranes
while (n<=5) and (not dmdatos.msqAlbaranes.EOF) and (origen=dmdatos.msqAlbaranes['origen']) do
begin
lEti:=self.FindComponent('lAlbaran'+inttostr(n));
TQRLabel(lEti).Caption:=dmdatos.msqAlbaranes['numalbaran'];
dmdatos.msqAlbaranes.Next;
n:=n+1;
end;
//Si he salido del bucle porque no hay mas datos (EOF)
//o el origen a cambiado limpio los TQRLabel que no han sido impresos
if n<5 then
begin
for posicion:=n+1 to 5 do
begin
lEti:=self.FindComponent('lAlbaran'+inttostr(posicion));
TQRLabel(lEti).Caption:=' ';
end;
end;
//Pero si el origen a cambiado vuelvo al registro anterior
if origen<>dmdatos.msqAlbaranes['origen'] then
begin
//Esto lo hago para que la banda de grupo se imprima al cambiar
//el origen, y esto no funciona, la banda en cuestion no se imprime
dmdatos.msqAlbaranes.Prior;
end;
end;
Bueno pues con esto llevo atascado 4 dias haciendo pruebas y mas pruebas, he mirado en los foros antiguos y no vi nada.
Espero que alguien me pueda echar una mano.
Gracias a tod@s de antemano.
Un saludo.