Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Imprimir un formulario (https://www.clubdelphi.com/foros/showthread.php?t=31118)

rafita 28-04-2006 12:09:15

Imprimir un formulario
 
Hola compañeros,

Voy a explicar mi problema. Pretendo imprimir el contenido de la ficha activa, para ello pongo un botón y utilizo el siguiente código:
Código:

procedure TFResumenAnual.BImprimirClick(Sender: TObject);
begin
  // se imprime en horizontal, directamente desde el formulario (pantalla)
  if PrinterSetUpDialog1.Execute then
    begin
      FResumenAnual.PrintScale:=poPrintToFit;
      FResumenAnual.Print;
    end;
end;

La utilización del PrinterSetUpDialog es para poder elegir la orientación vertical, más adecuada al tamaño del formulario.

El problema es el siguiente:
* Si el formulario es "disponible" da error de violación de memoria.
* Si el formulario se "crea automáticamente", entonces no da error, pero sólo imprime las partes creadas en diseño, no las que se crean o modifican en ejecución (simplemente asignar un valor a un Label).

El código lo he utilizado una vez pero el formulario en cuestión era el principal del proyecto, y en esa ocasión funcionaba perfectamente, imprimiento el contenido exacto de la pantalla.

¿Alguien tiene alguna idea?

Gracias, y hasta luego

DarKraZY 28-04-2006 14:03:20

Hola Rafa,

Según el código fuente haces referencia al formulario mediante el objeto (o variable) "FResumenAnual". Ya que deduzco que el código fuente está en la misma clase de la cual forma parte este objeto, su referencia no es necesaria.

Me explico con un ejemplo visual ;)

Código Delphi [-]
procedure TFResumenAnual.BImprimirClick(Sender: TObject);
begin
  // se imprime en horizontal, directamente desde el formulario (pantalla)
  if PrinterSetUpDialog1.Execute then
     begin
       PrintScale:=poPrintToFit;
       Print;
     end;
end;

De esta forma debería de funcionar bien en ambos casos.

rafita 02-05-2006 10:46:04

Buenas DarKraZY, y compañía,

En primer lugar darte las gracias por la respuesta. La ví el viérnes, pero he preferido volver al trabajo y comprobar su funcionamiento antes de contestarte.

Funciona sólamente cuando el formulario es "autocreado", pero para mí es suficiente.

Muchas gracias.


La franja horaria es GMT +2. Ahora son las 01:05:07.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi