rgstuamigo
04-08-2008, 17:07:09
Hola amigos tengo un problema al imprimir el contenido de varios QRRichText
La verdad el problema surgio cuando queria imprimir el contenido de un StringGrid de 5 columnas y 19 filas (una fila para los titulos)y no sabia como, entoces descubri que se pòdia con QuickReport pero no sabia usar QR, pero se me ocurrio una idea.Crie un form para el StringGrid donde el usuario encribe los datos y tengo un menu de opciones(imprimir, guardar,nuevo,previsualizar,etc.).Tambien dos edit para el total de la suma de las dos ultimas columnas del stringGrid que estan ubicados abajito de ellas pues el usuario quiere esta suma;osea la la penultima y la ultima culumna del stringGrid son datos numericos;
Aparte de eso tengo otros componentes que no interesan al caso.
Crie otro form llamado "Report" para el QuickReport(QR) donde puse 5 QRRichText dentro del QR teniendo en cuenta que cada QRRichText representa una columna del stringGrid ,es decir los QRRichText estan juntitos como como 5 columnas,Ademas 2 QRLabel para el total (osea que tambien estan abajito del penultimo QRRichText y el ultimo).Cuando el usuario le clickea la opcion previsualizar o imprimir, lo que hago internamente es copiar toda la columna i del StringGrid al QRRichText(i)correspondiente y asi sucesivamente y luego lo previsualizo o lo imprimo de acuerdo a la opcion clickeada, aqui tienen el metodo que lo he llamado CopiarTodo;
procedure TPrincipal.copiarTodo;
VAR i:byte;
begin
i:=1;
//c1,c2,c3,c4,c5 son los nombres de los 5 QRRichText que utilizo
//en la unidad llamada Report
while (tabla.Cells[3,i]<>'') and (i<tabla.RowCount) do
begin
Report.Form1.c1.Lines.Add(tabla.Cells[0,i]);
Report.Form1.c2.Lines.Add(tabla.Cells[1,i]);
Report.Form1.c3.Lines.Add(tabla.Cells[2,i]);
Report.Form1.c4.Lines.Add(tabla.Cells[3,i]);
Report.Form1.c5.Lines.Add(tabla.Cells[4,i]);
i:=i+1;
if((tabla.Cells[3,i]<>'') and (i<tabla.RowCount))then
begin
//adiciono un un "enter" por conveniencia de impresion a cada
//QRRichText para que aya un espacio entre lineas
//esto no se ejecuta si es la ultima fila al copiar
Report.Form1.c1.Lines.Add(#13);
Report.Form1.c2.Lines.Add(#13);
Report.Form1.c3.Lines.Add(#13);
Report.Form1.c4.Lines.Add(#13);
Report.Form1.c5.Lines.Add(#13);
end;
end;
//Esztos son los QRLabel los para el total de la suma
// Edit3,Edit4 son los edit que tienen la suma
Report.Form1.QRLabel2.Caption:=Edit3.Text;
Report.Form1.QRLabel3.Caption:=Edit4.Text;
end;
OK el problema es que cuando lo previsualizo esta todo en orden ,pero cuando lo imprimo los datos de la suma que tienen los QRLabel2,QRLabel3, me aparecen mas abajo de lo que se previsualiza, pareciera que los QRRichText tubieran al final un "enter" demas.
Lo que pasa es estoy imprimiendo en un formulario que ya esta diseñado y solamente yo lo que hago es rellenar dicho formulario ,asi que por eso quiero que se imprima en el lugar exacto.
No se si pudieran Ayudarme o darme otra opcion pero mejor si me ayudan para no estar haciendo todo de nuevo.Solamente es este pequeño error.
La verdad el problema surgio cuando queria imprimir el contenido de un StringGrid de 5 columnas y 19 filas (una fila para los titulos)y no sabia como, entoces descubri que se pòdia con QuickReport pero no sabia usar QR, pero se me ocurrio una idea.Crie un form para el StringGrid donde el usuario encribe los datos y tengo un menu de opciones(imprimir, guardar,nuevo,previsualizar,etc.).Tambien dos edit para el total de la suma de las dos ultimas columnas del stringGrid que estan ubicados abajito de ellas pues el usuario quiere esta suma;osea la la penultima y la ultima culumna del stringGrid son datos numericos;
Aparte de eso tengo otros componentes que no interesan al caso.
Crie otro form llamado "Report" para el QuickReport(QR) donde puse 5 QRRichText dentro del QR teniendo en cuenta que cada QRRichText representa una columna del stringGrid ,es decir los QRRichText estan juntitos como como 5 columnas,Ademas 2 QRLabel para el total (osea que tambien estan abajito del penultimo QRRichText y el ultimo).Cuando el usuario le clickea la opcion previsualizar o imprimir, lo que hago internamente es copiar toda la columna i del StringGrid al QRRichText(i)correspondiente y asi sucesivamente y luego lo previsualizo o lo imprimo de acuerdo a la opcion clickeada, aqui tienen el metodo que lo he llamado CopiarTodo;
procedure TPrincipal.copiarTodo;
VAR i:byte;
begin
i:=1;
//c1,c2,c3,c4,c5 son los nombres de los 5 QRRichText que utilizo
//en la unidad llamada Report
while (tabla.Cells[3,i]<>'') and (i<tabla.RowCount) do
begin
Report.Form1.c1.Lines.Add(tabla.Cells[0,i]);
Report.Form1.c2.Lines.Add(tabla.Cells[1,i]);
Report.Form1.c3.Lines.Add(tabla.Cells[2,i]);
Report.Form1.c4.Lines.Add(tabla.Cells[3,i]);
Report.Form1.c5.Lines.Add(tabla.Cells[4,i]);
i:=i+1;
if((tabla.Cells[3,i]<>'') and (i<tabla.RowCount))then
begin
//adiciono un un "enter" por conveniencia de impresion a cada
//QRRichText para que aya un espacio entre lineas
//esto no se ejecuta si es la ultima fila al copiar
Report.Form1.c1.Lines.Add(#13);
Report.Form1.c2.Lines.Add(#13);
Report.Form1.c3.Lines.Add(#13);
Report.Form1.c4.Lines.Add(#13);
Report.Form1.c5.Lines.Add(#13);
end;
end;
//Esztos son los QRLabel los para el total de la suma
// Edit3,Edit4 son los edit que tienen la suma
Report.Form1.QRLabel2.Caption:=Edit3.Text;
Report.Form1.QRLabel3.Caption:=Edit4.Text;
end;
OK el problema es que cuando lo previsualizo esta todo en orden ,pero cuando lo imprimo los datos de la suma que tienen los QRLabel2,QRLabel3, me aparecen mas abajo de lo que se previsualiza, pareciera que los QRRichText tubieran al final un "enter" demas.
Lo que pasa es estoy imprimiendo en un formulario que ya esta diseñado y solamente yo lo que hago es rellenar dicho formulario ,asi que por eso quiero que se imprima en el lugar exacto.
No se si pudieran Ayudarme o darme otra opcion pero mejor si me ayudan para no estar haciendo todo de nuevo.Solamente es este pequeño error.