PDA

Ver la Versión Completa : Imprimir letras de distintos colores con libreria printer


krewer
16-10-2015, 14:20:10
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

newtron
16-10-2015, 17:28:06
Hola.

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

Saludos

ecfisa
16-10-2015, 18:16:17
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:

...
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 :)

krewer
16-10-2015, 21:59:06
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:

...
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 :)

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;

ecfisa
16-10-2015, 22:35:45
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:
Printer.Canvas.TextOut(20,Linha,'Horario');
Basta con que hagas:

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:

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 :)

krewer
17-10-2015, 15:20:21
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:
Printer.Canvas.TextOut(20,Linha,'Horario');
Basta con que hagas:

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:

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


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


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

krewer
17-10-2015, 15:27:04
Muchas gracias

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


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


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 :D:D:D:D:D:D