 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
s-mac Invitado
|
Publicado: Vie 26 Mar, 2004 9:15 am Asunto: Quickrep |
|
|
Hola
Tengo en mi proyecto un QuickReport. Cuando en el menu hago click en ver reporte entonces lo llamo mediante esta linea
Form2->QuickRep1->Preview();
Pero las dimensiones de este reporte me ocupa toda la pantalla.
Ahora como le hago para que cuando se llame el metodo preview, el reporte me ocupe solo la ubicacion y dimensiones que yo le especifique.
Gracias |
|
| Volver arriba |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Vie 26 Mar, 2004 10:41 am Asunto: |
|
|
debes generar una vista a la mediad, en la web, del Ian Marteens, o en el libro de la cara oculta de builder viene el siguiente codigo..
que pertecene a la pagina 663, espero poder ponerlo...
| Cita: |
Previsualización a la medida
Las versiones anteriores de QuickReport solamente permitían la vista preliminar en
forma no modal. En la versión que acompaña a C++ Builder 4 existen tres métodos
para este propósito:
Método Resultados
Preview Vista modal; impresión en el hilo principal del programa.
PreviewModal Vista modal; impresión en hilo paralelo.
PreviewModeless Vista no modal; impresión en hilo paralelo.
Me estoy ajustando a la escasa documentación de QuickReport para describir las
diferencias entre los tres métodos anteriores. Algunos programadores han encontrado
pérdidas de memoria cuando utilizan métodos de previsualización distintos
de PreviewModal.
El programador puede también crear un diálogo o ventana de previsualización a la
medida. La base de esta técnica es el componente TQRPreview. El diseño de una
ventana de previsualización a la medida comienza por crear un formulario, al cual llamaremos Visualizador, e incluir en su interior un componente TQRPreview. A este
formulario básico pueden añadírsele entonces componentes para controlar el grado
de acercamiento, el número de página, la impresión, etc. Digamos, para precisar, que
el formulario que contiene el informe se llama Informe. Para garantizar la liberación de
los recursos asignados al formulario de previsualización, debemos interceptar su
evento OnClose:
void __fastcall TVisualizador::FormClose(TObject *Sender,
TCloseAction &Action)
{
QRPreview1->QRPrinter = NULL;
Action = caFree;
}
Después hay que regresar al formulario del informe para interceptar el evento OnPreview
del componente QuickRep1 de la siguiente manera:
void __fastcall TInforme::QuickRep1Preview(TObject *Sender)
{
Visualizador = new TVisualizador(NULL);
Visualizador->QRPreview1->QRPrinter = (TQRPrinter*) Sender;
Visualizador->ShowModal();
delete Visualizador;
// O también: Visualizador->Show(), sin destruir el objeto,
// si queremos una previsualización no modal.
}
El parámetro Sender del evento apunta al objeto de impresora que se va a utilizar con
el informe. Recuerde que QuickReport permite la impresión en paralelo, por lo cual
cada informe define un objeto de tipo TQRPrinter, diferente del objeto QRPrinter global.
Si queremos navegar por la páginas de la vista preliminar, podemos traer botones o
comandos de menú al formulario y crear un manejador de eventos como el siguiente:
void __fastcall TVisualizador::Navigate(TObject *Sender)
{
// Utilizaré Tag para distinguir entre acciones
switch (((TComponent*)Sender)->Tag)
{
case 0:
QRPreview1->PageNumber = 1;
break;
case 1:
QRPreview1->PageNumber -= 1;
break;
case 2:
QRPreview1->PageNumber += 1;
break;
Impresión de informes con QuickReport 665
case 3:
QRPreview1->PageNumber = QRPreview1->QRPrinter->PageCount;
break;
}
}
Para imprimir hace falta el siguiente método:
void __fastcall TVisualizador::Navigate(TObject *Sender)
{
QRPreview1->QRPrinter->Print();
}
Existen innumerables variaciones sobre este tema. Si usted va a imprimir un documento
con un procesador de texto, puede optar por ver una presentación preliminar
y luego imprimir. Pero también puede entrar a saco en el diálogo de impresión, elegir
un rango de páginas e imprimir directamente. Para obtener este comportamiento de
QuickReport, necesitamos algo parecido a esto:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Form2->QuickRep1->PrinterSetup();
if (Form2->QuickRep1->Tag == 0)
Form2->QuickRep1->Print();
}
Observe que el método PrinterSetup del informe es un procedimiento, no una función.
Para saber si ha terminado correctamente, o si el usuario ha cancelado el diálogo,
hay que revisar el contenido de la propiedad Tag del propio informe; si ésta vale
cero, todo ha ido bien. Sinceramente, cuando veo cochinadas como éstas en los productos
de mi fabricante de software favorito, que además no están correctamente
documentadas, siento vergüenza ajena.
|
Sacado de la cara oculta de builder, trae algo en imagenes, pero si es posible que te lo bajes de la pagina del Administrador del foro,
www.arrakis.es/~rporcar
saludos.. _________________
 |
|
| Volver arriba |
|
 |
s-mac Invitado
|
Publicado: Vie 26 Mar, 2004 5:20 pm Asunto: Re: Quickrep |
|
|
| Gracias por la colaboracion. ahora mismo voy a probarlo. |
|
| Volver arriba |
|
 |
|
|
No puedes publicar temas nuevos en este foro No puedes responder a temas en este foro No puedes editar tus mensajes en este foro No puedes borrar tus mensajes en este foro No puedes votar en las encuestas de este foro
|
© 2002–2026 Club Builder · Funciona con phpBB.
|