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 16-10-2015
krewer krewer is offline
Miembro
NULL
 
Registrado: feb 2012
Posts: 39
Poder: 0
krewer Va por buen camino
Imprimir letras de distintos colores con libreria printer

Buenas amigos

Primera vez que estoy incursionando en el tema de impresiones en delphi, estoy haciendo un reporte en el cual imprimo el horario de una persona el cual se identifica por letras

A
B
C...

al momento de querer imprimir el documento me gustaría que cada letra apareciera con un color distinto

espero puedan ayudarme

Muchas Gracias
Responder Con Cita
  #2  
Antiguo 16-10-2015
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.464
Poder: 21
newtron Va camino a la fama
Hola.

Si pusieras el código que estás usando ahora mismo te podríamos ayudar mejor.

Saludos
__________________
Be water my friend.
Responder Con Cita
  #3  
Antiguo 16-10-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola krewer.

Como bien te dice newtron, viendo el código vas a recibir respuestas mas concretas. Pero básicamente tenes que ajustar la propiedad Color de TFont.

Ejemplo:
Código Delphi [-]
...
const
  COLORS : array[0..2] of TColor = (clRed, clGreen, clBlue);
var
  prn : TPrinter;
  i   : Integer;
begin
  prn := TPrinter.Create;
  try
    prn.BeginDoc;
    for i := 0 to 2 do
    begin
      prn.Canvas.Font.Color := COLORS[i];
      prn.Canvas.TextOut(10, 10 + i * 150, Chr(Ord('A')+i));  // A, B, C
    end;
    prn.EndDoc;
  finally
    prn.Free;
  end;
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #4  
Antiguo 16-10-2015
krewer krewer is offline
Miembro
NULL
 
Registrado: feb 2012
Posts: 39
Poder: 0
krewer Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Hola krewer.

Como bien te dice newtron, viendo el código vas a recibir respuestas mas concretas. Pero básicamente tenes que ajustar la propiedad Color de TFont.

Ejemplo:
Código Delphi [-]
...
const
  COLORS : array[0..2] of TColor = (clRed, clGreen, clBlue);
var
  prn : TPrinter;
  i   : Integer;
begin
  prn := TPrinter.Create;
  try
    prn.BeginDoc;
    for i := 0 to 2 do
    begin
      prn.Canvas.Font.Color := COLORS[i];
      prn.Canvas.TextOut(10, 10 + i * 150, Chr(Ord('A')+i));  // A, B, C
    end;
    prn.EndDoc;
  finally
    prn.Free;
  end;
end;

Saludos
Código Delphi [-]
Printer.Orientation := poLandscape;
  Printer.BeginDoc;

  Printer.Canvas.Pen.Width := 5;
  Printer.Canvas.Font.Name := 'Times New Roman';
  Printer.Canvas.Font.Size := 12;

  Linha := 20;
  Coluna:= 20;
  Tamanho := Printer.Canvas.TextWidth('a');
  Fdata.Query_print.First;
  while not fdata.Query_print.Eof do
  begin
    if Linha = 20 then
    begin
      Coluna := 20;
      Printer.Canvas.TextOut(20,Linha,'Horario');
      Linha := Linha - Printer.Canvas.Font.Height + 25 ;
      Printer.Canvas.TextOut(Coluna,Linha,'Nombre');
      Coluna:= Coluna + (Tamanho * 30 );
      Printer.Canvas.TextOut(Coluna,Linha,'RUT');
      Coluna:= Coluna + (Tamanho * 20);

      Printer.Canvas.TextOut(Coluna,Linha,'1');
      Coluna:= Coluna + (Tamanho * 3);
      Printer.Canvas.TextOut(Coluna,Linha,'2');
      Coluna:= Coluna + (Tamanho * 3);
      Printer.Canvas.TextOut(Coluna,Linha,'2');
      Coluna:= Coluna + (Tamanho * 3);
      Printer.Canvas.TextOut(Coluna,Linha,'3');
      Coluna:= Coluna + (Tamanho * 3);
      Printer.Canvas.TextOut(Coluna,Linha,'4');
      Coluna:= Coluna + (Tamanho * 3);
      Printer.Canvas.TextOut(Coluna,Linha,'5');
      Coluna:= Coluna + (Tamanho * 3);
      Printer.Canvas.TextOut(Coluna,Linha,'6');
      Coluna:= Coluna + (Tamanho * 3);
      Printer.Canvas.TextOut(Coluna,Linha,'7');
      Coluna:= Coluna + (Tamanho * 3);
      Printer.Canvas.TextOut(Coluna,Linha,'8');
      Coluna:= Coluna + (Tamanho * 3);
      Printer.Canvas.TextOut(Coluna,Linha,'9');
      Coluna:= Coluna + (Tamanho * 3);
      Printer.Canvas.TextOut(Coluna,Linha,'10');
      Coluna:= Coluna + (Tamanho * 3);
      Printer.Canvas.TextOut(Coluna,Linha,'11');
      Coluna:= Coluna + (Tamanho * 3);
      Printer.Canvas.TextOut(Coluna,Linha,'12');
      Coluna:= Coluna + (Tamanho * 3);
      Printer.Canvas.TextOut(Coluna,Linha,'13');
      Coluna:= Coluna + (Tamanho * 3);
      Printer.Canvas.TextOut(Coluna,Linha,'14');
      Coluna:= Coluna + (Tamanho * 3);
      Printer.Canvas.TextOut(Coluna,Linha,'15');
      Coluna:= Coluna + (Tamanho * 3);
      Printer.Canvas.TextOut(Coluna,Linha,'16');
      Coluna:= Coluna + (Tamanho * 3);
      Printer.Canvas.TextOut(Coluna,Linha,'17');
      Coluna:= Coluna + (Tamanho * 3);
      Printer.Canvas.TextOut(Coluna,Linha,'18');
      Coluna:= Coluna + (Tamanho * 3);
      Printer.Canvas.TextOut(Coluna,Linha,'19');
      Coluna:= Coluna + (Tamanho * 3);
      Printer.Canvas.TextOut(Coluna,Linha,'20');
      Coluna:= Coluna + (Tamanho * 3);
      Printer.Canvas.TextOut(Coluna,Linha,'21');
      Coluna:= Coluna + (Tamanho * 3);
      Printer.Canvas.TextOut(Coluna,Linha,'22');
      Coluna:= Coluna + (Tamanho * 3);
      Printer.Canvas.TextOut(Coluna,Linha,'23');
      Coluna:= Coluna + (Tamanho * 3);
      Printer.Canvas.TextOut(Coluna,Linha,'24');
      Coluna:= Coluna + (Tamanho * 3);
      Printer.Canvas.TextOut(Coluna,Linha,'25');
      Coluna:= Coluna + (Tamanho * 3);
      Printer.Canvas.TextOut(Coluna,Linha,'26');
      Coluna:= Coluna + (Tamanho * 3);
      Printer.Canvas.TextOut(Coluna,Linha,'27');
      Coluna:= Coluna + (Tamanho * 3);
      Printer.Canvas.TextOut(Coluna,Linha,'28');
      Coluna:= Coluna + (Tamanho * 3);
      Printer.Canvas.TextOut(Coluna,Linha,'29');
      Coluna:= Coluna + (Tamanho * 3);
      Printer.Canvas.TextOut(Coluna,Linha,'30');
      Coluna:= Coluna + (Tamanho * 3);
      Printer.Canvas.TextOut(Coluna,Linha,'31');
      Coluna:= Coluna + (Tamanho * 3);


      Linha := Linha - Printer.Canvas.Font.Height + 30 ;
    end;
    Coluna := 20 ;



    Printer.Canvas.TextOut(Coluna,Linha,Fdata.Query_print.FieldByName('nombre').AsString);
    Coluna:= Coluna + (Tamanho * 30 );
    Printer.Canvas.TextOut(Coluna,Linha,Fdata.Query_print.FieldByName('rut_t').AsString);
    Coluna:= Coluna + (Tamanho * 20);

    Printer.Canvas.TextOut(Coluna,Linha,Fdata.Query_print.FieldByName('d1').AsString);
    Coluna:= Coluna + (Tamanho * 3);

    Printer.Canvas.TextOut(Coluna,Linha,Fdata.Query_print.FieldByName('d2').AsString);
    Coluna:= Coluna + (Tamanho * 3);

    Printer.Canvas.TextOut(Coluna,Linha,Fdata.Query_print.FieldByName('d3').AsString);
    Coluna:= Coluna + (Tamanho * 3);
    Printer.Canvas.TextOut(Coluna,Linha,Fdata.Query_print.FieldByName('d4').AsString);
    Coluna:= Coluna + (Tamanho * 3);
    Printer.Canvas.TextOut(Coluna,Linha,Fdata.Query_print.FieldByName('d5').AsString);
    Coluna:= Coluna + (Tamanho * 3);
    Printer.Canvas.TextOut(Coluna,Linha,Fdata.Query_print.FieldByName('d6').AsString);
    Coluna:= Coluna + (Tamanho * 3);
    Printer.Canvas.TextOut(Coluna,Linha,Fdata.Query_print.FieldByName('d7').AsString);
    Coluna:= Coluna + (Tamanho * 3);
    Printer.Canvas.TextOut(Coluna,Linha,Fdata.Query_print.FieldByName('d8').AsString);
    Coluna:= Coluna + (Tamanho * 3);
    Printer.Canvas.TextOut(Coluna,Linha,Fdata.Query_print.FieldByName('d9').AsString);
    Coluna:= Coluna + (Tamanho * 3);
    Printer.Canvas.TextOut(Coluna,Linha,Fdata.Query_print.FieldByName('d10').AsString);
    Coluna:= Coluna + (Tamanho * 3);
    Printer.Canvas.TextOut(Coluna,Linha,Fdata.Query_print.FieldByName('d11').AsString);
    Coluna:= Coluna + (Tamanho * 3);
    Printer.Canvas.TextOut(Coluna,Linha,Fdata.Query_print.FieldByName('d12').AsString);
    Coluna:= Coluna + (Tamanho * 3);
    Printer.Canvas.TextOut(Coluna,Linha,Fdata.Query_print.FieldByName('d13').AsString);
    Coluna:= Coluna + (Tamanho * 3);
    Printer.Canvas.TextOut(Coluna,Linha,Fdata.Query_print.FieldByName('d14').AsString);
    Coluna:= Coluna + (Tamanho * 3);
    Printer.Canvas.TextOut(Coluna,Linha,Fdata.Query_print.FieldByName('d15').AsString);
    Coluna:= Coluna + (Tamanho * 3);
    Printer.Canvas.TextOut(Coluna,Linha,Fdata.Query_print.FieldByName('d16').AsString);
    Coluna:= Coluna + (Tamanho * 3);
    Printer.Canvas.TextOut(Coluna,Linha,Fdata.Query_print.FieldByName('d17').AsString);
    Coluna:= Coluna + (Tamanho * 3);
    Printer.Canvas.TextOut(Coluna,Linha,Fdata.Query_print.FieldByName('d18').AsString);
    Coluna:= Coluna + (Tamanho * 3);
    Printer.Canvas.TextOut(Coluna,Linha,Fdata.Query_print.FieldByName('d19').AsString);
    Coluna:= Coluna + (Tamanho * 3);
    Printer.Canvas.TextOut(Coluna,Linha,Fdata.Query_print.FieldByName('d20').AsString);
    Coluna:= Coluna + (Tamanho * 3);
    Printer.Canvas.TextOut(Coluna,Linha,Fdata.Query_print.FieldByName('d21').AsString);
    Coluna:= Coluna + (Tamanho * 3);
    Printer.Canvas.TextOut(Coluna,Linha,Fdata.Query_print.FieldByName('d22').AsString);
    Coluna:= Coluna + (Tamanho * 3);
    Printer.Canvas.TextOut(Coluna,Linha,Fdata.Query_print.FieldByName('d23').AsString);
    Coluna:= Coluna + (Tamanho * 3);
    Printer.Canvas.TextOut(Coluna,Linha,Fdata.Query_print.FieldByName('d24').AsString);
    Coluna:= Coluna + (Tamanho * 3);
    Printer.Canvas.TextOut(Coluna,Linha,Fdata.Query_print.FieldByName('d25').AsString);
    Coluna:= Coluna + (Tamanho * 3);
    Printer.Canvas.TextOut(Coluna,Linha,Fdata.Query_print.FieldByName('d26').AsString);
    Coluna:= Coluna + (Tamanho * 3);
    Printer.Canvas.TextOut(Coluna,Linha,Fdata.Query_print.FieldByName('d27').AsString);
    Coluna:= Coluna + (Tamanho * 3);
    Printer.Canvas.TextOut(Coluna,Linha,Fdata.Query_print.FieldByName('d28').AsString);
    Coluna:= Coluna + (Tamanho * 3);
    Printer.Canvas.TextOut(Coluna,Linha,Fdata.Query_print.FieldByName('d29').AsString);
    Coluna:= Coluna + (Tamanho * 3);
    Printer.Canvas.TextOut(Coluna,Linha,Fdata.Query_print.FieldByName('d30').AsString);
    Coluna:= Coluna + (Tamanho * 3);
    Printer.Canvas.TextOut(Coluna,Linha,Fdata.Query_print.FieldByName('d31').AsString);
    Coluna:= Coluna + (Tamanho * 3);




    Linha := Linha - Printer.Canvas.Font.Height + 5 ;
    Fdata.Query_print.Next;
    if Linha > Printer.PageHeight-20 then
    Begin
      Printer.NewPage;
      Linha := 20;
    end;
Responder Con Cita
  #5  
Antiguo 16-10-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola krewer.

No se a que partes de la salida de tu código deseas agregarle colores, pero supongamos que deseas poner en color rojo la siguiente línea:
Código Delphi [-]
Printer.Canvas.TextOut(20,Linha,'Horario');
Basta con que hagas:
Código Delphi [-]
   Printer.Canvas.Font.Color := clRed;
   Printer.Canvas.TextOut(20, Linha, 'Horario');
Otro ejemplo, si deseas la letra 'H' en color rojo y el resto ('orario') en color azul, harías:
Código Delphi [-]
  Printer.Canvas.Font.Color:= clRed;
  Printer.Canvas.TextOut(20, Linha, 'H');
  Printer.Canvas.Font.Color := clBlue;
  Printer.Canvas.TextOut(20 + Printer.Canvas.TextWidth('H'), Linha, 'orario');

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 17-10-2015 a las 14:33:42. Razón: sintáxis
Responder Con Cita
  #6  
Antiguo 17-10-2015
krewer krewer is offline
Miembro
NULL
 
Registrado: feb 2012
Posts: 39
Poder: 0
krewer Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Hola krewer.

No se a que partes de la salida de tu código deseas agregarle colores, pero supongamos que deseas poner en color rojo la siguiente línea:
Código Delphi [-]
Printer.Canvas.TextOut(20,Linha,'Horario');
Basta con que hagas:
Código Delphi [-]
   Printer.Canvas.Font.Color := clRed;
   Printer.Canvas.TextOut(20, Linha, 'Horario');
Otro ejemplo, si deseas la letra 'H' en color rojo y el resto ('orario') en color azul, harías:
Código Delphi [-]
  Printer.Canvas.Font.Color:= clRed;
  Printer.Canvas.TextOut(20, Linha, 'H');
  Printer.Canvas.Font.Color := clBlue;
  Printer.Canvas.TextOut(20 + Printer.Canvas.TextWidth('H'), Linha, 'orario');

Saludos
Muchas gracias

Pero en si a la parte del codigo que quiero colocarle colores independiente es a esta

Código Delphi [-]
Printer.Canvas.TextOut(Coluna,Linha,Fdata.Query_print.FieldByName('d1').AsString);
Coluna:= Coluna + (Tamanho * 3);

Hice como me indicaste, pero por ejemplo si coloco esto asi

Código Delphi [-]
printer.Canvas.Font.Color:=clRed;
Printer.Canvas.TextOut(Coluna,Linha,Fdata.Query_print.FieldByName('d1').AsString);
Coluna:= Coluna + (Tamanho * 3);

Me cambia todas las letras a rojo y no solo esa
Responder Con Cita
  #7  
Antiguo 17-10-2015
krewer krewer is offline
Miembro
NULL
 
Registrado: feb 2012
Posts: 39
Poder: 0
krewer Va por buen camino
Cita:
Empezado por krewer Ver Mensaje
Muchas gracias

Pero en si a la parte del codigo que quiero colocarle colores independiente es a esta

Código Delphi [-]
Printer.Canvas.TextOut(Coluna,Linha,Fdata.Query_print.FieldByName('d1').AsString);
Coluna:= Coluna + (Tamanho * 3);

Hice como me indicaste, pero por ejemplo si coloco esto asi

Código Delphi [-]
printer.Canvas.Font.Color:=clRed;
Printer.Canvas.TextOut(Coluna,Linha,Fdata.Query_print.FieldByName('d1').AsString);
Coluna:= Coluna + (Tamanho * 3);

Me cambia todas las letras a rojo y no solo esa
ecfisa, ya lo solucione, estaba confundido, muchas gracias me sirvio bastante tu ayuda
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
como cambiar los colores de las letras julyus Varios 2 01-02-2008 22:20:39
Pintar serie de distintos colores en un tdbchart richy08 HTML, Javascript y otros 0 28-07-2007 20:52:02
Filas de distintos colores en un dbgrip. G.A.R.S Varios 2 21-05-2005 17:40:29
palabras con distintos colores en listbox Renees Varios 13 06-04-2005 20:48:55
Pintar de distintos colores los renglones de un TsDbGrid Ricsato Varios 3 01-02-2005 22:19:07


La franja horaria es GMT +2. Ahora son las 22:42:32.


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