Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Impresión
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-10-2016
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 547
Poder: 17
jhonalone Va por buen camino
Problema con TPrinterWin

Hola compañeros de fatigas.
Digo de fatigas, porque yo estoy muy fatigado ya, vosotros quizás no.
Os cuento.
Tengo un procedimiento hecho en .... no sé, Delphi7, Delphi10...
Intento reutilizarlo para un nuevo programa multiplataforma en FMX.
Pero nunca he imprimido nada con FMX, y me está resultando imposible. Por éso os pido ayuda.
El procedimiento es este:

Código Delphi [-]
function IH(N:integer):integer;
var
   I:real;
begin
I:=GetDeviceCaps(Printer.Handle,Physicalwidth)/2481;

IH:=Round(i*N);

end;

function IV(N:integer):integer;
var
   I:real;
begin
I:=GetDeviceCaps(Printer.Handle,PhysicalHeight)/3507;

IV:=Round(i*N);

end;
procedure THojaDeRes.EditaHojaResp;
VAR
   XX,xy,pagina,linea,lon_1parte_contidio,lon_1parte_observa:INTEGER;
   p:PRegistro;

PROCEDURE  CABECERA;
BEGIN
pagina:=pagina+1;
with Printer.canvas
do begin
   rectangle(IH(0),IV(300),ih(Printer.PageWidth-15),iv(2700));
   MoveTo(ih(0),iv(400));
   LineTo(ih(Printer.PageWidth-15),iv(400));
   MOveTo(ih(120),iv(300));
   LineTo(ih(120),iv(2700));
   MOveTo(ih(240),iv(300));
   LineTo(ih(240),iv(2700));
   MOveTo(ih(360),iv(300));
   LineTo(ih(360),iv(2700));
   MOveTo(ih(580),iv(300));
   LineTo(ih(580),iv(2700));
   MOveTo(ih(975),iv(300));
   LineTo(ih(975),iv(2700));
   MOveTo(ih(1505),iv(300));
   LineTo(ih(1505),iv(2700));
   MOveTo(ih(1595),iv(300));
   LineTo(ih(1595),iv(2700));
   MOveTo(ih(1685),iv(300));
   LineTo(ih(1685),iv(2700));
   MOveTo(ih(1805),iv(300));
   LineTo(ih(1805),iv(2700));
   Font:=Pica.Font;
   TextOut(ih(390),iv(0),'Nombre:                                        Clave: '{+clave});
   Font:=Doble.Font;
   TextOut(ih(750),iv(130),'Hoja de Respuestas');
   Font:=Picanegra.Font;
   TextOut(ih(38),iv(325),'NL');
   TextOut(ih(133),iv(325),'T.R.');
   TextOut(ih(245),iv(325),'Nº P');
   TextOut(ih(365),iv(325),'Local+CE');
   TextOut(ih(585),iv(325),'Determ+CF   Par');
   TextOut(ih(980),iv(325),'Contenidos+C.Idiogr.');
   TextOut(ih(1513),iv(325),'Pop');
   TextOut(ih(1627),iv(325),'Z');
   TextOut(ih(1705),iv(325),'PNF');
   TextOut(ih(1810),iv(325),'Punt. Espec.+Observ.');

   Font:=Pica.Font;
   TextOut(ih(2200),iv(2750),'Pág:'+inttostr(pagina));
   end;
linea:=9;
END;

Estoy teniendo todos los problemas del mundo para adaptarlo.

Primero con GetDeviceCaps, pero esto está resuelto con la unidad WinApi.Windows

Después con el rectángulo, que creo que está resuelto con este código, pero no lo he podido probar todavía:

Código Delphi [-]
PROCEDURE  CABECERA;
var
MyRect:TrectF;
BEGIN
pagina:=pagina+1;


with Printer.canvas
do begin

   MyRect.Create(IH(0),IV(300),ih(Printer.PageWidth-15),iv(2700));
   DrawRect(MyRect, 0, 0, AllCorners, 100);
   //MoveTo(ih(0),iv(400));

Después creo que no se puede utilizar la función //MoveTo(ih(0),iv(400));

Y ya me he quedado atascado al intentar cambiar el Canvas.Font. Pues el compilador me dice que el Canvas.Font de TPrinterWin es una variable "read-only" y no se le puede asignar un valor.

¡Ah! Se me olvidaba comentaros que tampoco reconoce la función TextOut(ih(38),iv(325),'NL');

Llevo dos días enteros buscando y probando y no consigo resolverlo.

Agradezco cualquier información. Seguro que necesito aprender mucho todavía. Pero esto me corre un poco de prisa y no tengo tiempo.

Gracias de antemano.
Responder Con Cita
  #2  
Antiguo 29-10-2016
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 547
Poder: 17
jhonalone Va por buen camino
Bueno.
¡Un Pasito más!

El tema de los font es que no se pueden asignar de golpe, o sea .....font := .....font.
Hay que hacerlo detalladamente, así (no he probado, pero lo compila):
Código Delphi [-]
   Font.Size := Form1.Pica.Font.Size;
   Font.Family := Form1.Pica.Font.Family;
   Font.Style := Form1.Pica.Font.Style;

Sigo investigando mientras espero vuestra ayuda.
Saludos.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 10:49:04.


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
Copyright 1996-2007 Club Delphi