FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
¿Como imprimir con el canvas ?
Hola como imprimir con el canvas un componente que tengo es el
TPlannerCalendarGroup de TMS, tiene los procedimientos: Código:
PaintTo(Canvas:TCanvas;X:integer;Y:integer); |
#2
|
|||
|
|||
Hola
pues acabo de hacer esta prueba y me ha funcionado Código:
procedure TForm1.Button1Click(Sender: TObject); begin Printer.BeginDoc; // INICIO UN NUEVO DOCUMENTO With Printer.canvas do //CON EL OBJETO PRINTER.CANVAS HAGO LO SIGUIENTE Begin //TITULO QUE APARECE EN LA COLA DE IMPRESION Printer.Title := 'El titulo del documento que quiero'; Font.Name := 'MS Sans Serif'; //ASIGNO UN TIPO DE LETRA Font.Color := ClBlack; //LE ASIGNO UN COLOR A LA LETRA Pen.Color := ClBlack; //COLOR DE LA LINE DE LOS RECUADROS Font.Size := 12; //TAMAÑO DE LA LETRA Font.Name := 'Times New Roman'; Font.Size := 12; PlannerCalendarGroup1.PaintTo(printer.Canvas, 10, 10); // imprimimos ListView end; Printer.EndDoc; end; Última edición por __cadetill fecha: 14-05-2003 a las 16:44:56. |
#3
|
||||
|
||||
Hola,
El código de kdtill es totalmente correcto, y ocurre lo que él ya comenta, sale muy pequeño. A mi se me ha ocurrido otra cosilla que puede solucionarte el problema. En lugar de pintar sobre el canvas de la impresora, pon un objeto TImage en tu formulario y hazlo invisible o bien crealo en tiempo de ejecución y cuando le den al botón pinta sobre el canvas del TImage, algo así: PlannerCalendarGroup1.PaintTo(Image1.Canvas,0,0); Luego te creas un QuickReport, pones una banda Title y en ella un control TQRImage con el tamaño que quieras que salga por la impresora y la propiedad Stretch a True, en el click de tu botón imprimir calendario el código quedaría más o menos de la siguiente forma: begin PlannerCalendarGroup1.PaintTo(Image1.Canvas,0,0); FQuickReport1.QrImage1.Picture.Assign (Image1.Picture); FQuickReport1.QuickRep1.Preview; // O .Print como prefieras end De esta forma te aseguras que sale del tamaño que tú quieras. Un saludo.
__________________
Todos somos aficionados. La vida es tan corta que no da para más. Guia de Estilos |
#4
|
|||
|
|||
Gracias a los dos por responder.
Cadetill: la impresión se me realiza bien, pero vamos necesito microscopio para verlo . Si conoces alguna forma de hacerlo más grande me lo dices Ok. Snake: Con tu forma creo el QuickReport y lo visualizo correctamente. Pero a la hora de imprimirlo, donde deberia estar el calendario sale todo negro,negro, pero muy negro |
#5
|
||||
|
||||
Hola,
Pues es extraño que te salga todo negro, yo lo he probado y me funciona perfectamente, comprueba que lo has hecho todo bien, puedes hacer una prueba a ver si se te está copiando bien en el control TImage poniendo visible a True temporalmente, luego haz un .Preview del QuickReport a ver si se ve bien en el preliminar. En caso de que se vea correctamente en los dos sitios debes tener un problema al imprimir gráficos. No se me ocurre otra cosa. Un saludo.
__________________
Todos somos aficionados. La vida es tan corta que no da para más. Guia de Estilos |
#6
|
|||
|
|||
Pues en el TImage no se me visualiza, pero en el QReport, si. Porque puede ser?
|
#7
|
||||
|
||||
Ahora, si que me has descolocado... eso si que no lo comprendo, ¿seguro que estás pintando el PlannerCalendarGroup sobre el canvas del TImage y no sobre el canvas del TQRImage y luego haciendo el Assign?, de todas formas si en la previsualización del report ves la imagen correctamente al darle a imprimir el report desde el preview se debería imprimir correctamente.
Un saludo.
__________________
Todos somos aficionados. La vida es tan corta que no da para más. Guia de Estilos |
#8
|
||||
|
||||
escalar impresion
El problema de la letra chiquita esta q cuando empiezan lo q quieren imprimir no declaran el sistema de medicion q van a usar, osea que en algunas impresoras van a imprimir chiquito como en otras pueden imprimir en cualquiier lado.
Código:
SetMapMode(Printer.Handle,MM_LOMETRIC); begindoc; //lo que se imprime enddoc; |
|
|
|