Fórum Impressão de etiquetas com TPrinter #291312
10/08/2005
0
Será que alguém poderia me ajudar. Eu tenho que imprimir etiquetas na impressora matricial e estou tendo dificuldades quanto ao tamanho do papel (altura). Abaixo o código que estou utilizando
procedure TEtiqueta.ConfiguraImpressora;
var
ADevice, ADriver, APort: Array[0..255] of Char;
DeviceMode: THandle;
M: PDevMode;
S: String;
begin
Printer.PrinterIndex := FImpressoraPadrao;
S := Printer.Printers[Printer.PrinterIndex];
Printer.GetPrinter(ADevice, ADriver, APort, DeviceMode);
M := GlobalLock(DeviceMode);
if M <> nil then
begin
M^.dmFields := M^.dmFields or DM_PAPERSIZE;
M^.dmPaperSize := 256;
M^.dmFields := M^.dmFields or DM_PAPERLENGTH;
M^.dmPaperLength := ( 256 * TOTAL_REGISTROS ) );
M^.dmFields := M^.dmFields or DM_PAPERWIDTH;
M^.dmPaperWidth := 3500;
Printer.SetPrinter(ADevice, ADriver, APort, DeviceMode);
GlobalUnLock(DeviceMode);
end;
// -> Detalhes de impressão
Printer.Title := ´Impressão de etiquetas´;
// -> Seta fonte
Printer.Canvas.Font.Name := ´Draft 17cpi´;
Printer.Canvas.Font.Size := 8;
end;
Essa variável TOTAL_REGISTROS no M^.dmPaperLength é o total da minha tabela.
Interessante que quando vou imprimir 30 ou 40 registros, ela funciona. MAS PARA GRANDES QUANTIDADES ela não vai.
Muito obrigado
Israel Bispo
Israel Bispo
Curtir tópico
+ 0Posts
10/08/2005
Edilcimar
Gostei + 0
10/08/2005
Israel Bispo
Será que vc poderia me apresentar o seu exemplo que funciona?
Gostei + 0
11/08/2005
Israel Bispo
Gostei + 0
12/08/2005
Israel Bispo
Gostei + 0
13/08/2005
Edilcimar
procedure TForm98.Button1Click(Sender: TObject);
var
Linha, Cont : Integer;
Nome1, Rua1, Numero1, Apartamento1, Cep1, Bairro1 : String;
Cidade1, Estado1, Endereco1 : String;
Nome2, Rua2, Numero2, Apartamento2, Cep2, Bairro2 : String;
Cidade2, Estado2, Endereco2 : String;
Indice1, Indice2 : Real;
begin
Indice1 := Printer.PageHeight;
Indice2 := Printer.PageWidth;
Cursor := crHourGlass;
Printer.BeginDoc;
Printer.Canvas.Font.Name := ´Arial´;
Printer.Canvas.Font.Size := 6;
Linha := 0;
Cont := 1;
With Table1 do
Begin
First;
While not eof do
Begin
Nome1 := FieldByName(´CLIENTE´).AsString;
Rua1 := Copy(FieldByName(´RUA´).AsString, 1,25);
Numero1 := FieldByName(´NUMERO´).AsString;
Apartamento1 := FieldByName(´APARTAMENTO´).AsString;
Cep1 := FieldByName(´CEP´).AsString;
Bairro1 := FieldByName(´BAIRRO´).AsString;
Cidade1 := FieldByName(´CIDADE´).AsString;
Estado1 := FieldByName(´ESTADO´).AsString;
Apartamento1 := Trim(Apartamento1);
Endereco1 := Trim(Rua1) + ´, ´ + Numero1;
If Length(Apartamento1) > 0 then
Endereco1 := Endereco1 + ´ Ap.´ + Apartamento1;
Next;
Nome2 := FieldByName(´CLIENTE´).AsString;
Rua2 := Copy(FieldByName(´RUA´).AsString, 1,25);
Numero2 := FieldByName(´NUMERO´).AsString;
Apartamento2 := FieldByName(´APARTAMENTO´).AsString;
Cep2 := FieldByName(´CEP´).AsString;
Bairro2 := FieldByName(´BAIRRO´).AsString;
Cidade2 := FieldByName(´CIDADE´).AsString;
Estado2 := FieldByName(´ESTADO´).AsString;
Apartamento2 := Trim(Apartamento2);
Endereco2 := Trim(Rua2) + ´, ´ + Numero2;
Printer.Canvas.TextOut(000, Linha, Nome1);
Printer.Canvas.TextOut(StrToInt(FloatToStr(Int(Indice2 * 350))), Linha, Nome2);
Linha := Linha + StrToInt(FloatToStr(Int(Indice1 * 21)));
Printer.Canvas.TextOut(000, Linha, Endereco1);
Printer.Canvas.TextOut(StrToInt(FloatToStr(Int(Indice2 * 350))), Linha, Endereco2);
Linha := Linha + StrToInt(FloatToStr(Int(Indice1 * 21)));
Printer.Canvas.TextOut(000, Linha, Cep1 + ´ - ´ + Bairro1);
Printer.Canvas.TextOut(StrToInt(FloatToStr(Int(Indice2 * 350))), Linha, Cep2 + ´ - ´ + Bairro2);
Linha := Linha + StrToInt(FloatToStr(Int(Indice1 * 21)));
Printer.Canvas.TextOut(000, Linha, Cidade1 + ´ - ´ + Estado1);
Printer.Canvas.TextOut(StrToInt(FloatToStr(Int(Indice2 * 350))), Linha, Cidade2 + ´ - ´ + Estado2);
Cont := Cont + 1;
If Cont = 5 then
Begin
Cont := 1;
Linha := Linha + StrToInt(FloatToStr(Int(Indice1 * 103)));
End
Else
Linha := Linha + StrToInt(FloatToStr(Int(Indice1 * 102)));
Next;
End;
End;
Printer.EndDoc;
Cursor := crDefault;
end;
Gostei + 0
15/08/2005
Israel Bispo
Gostei + 0
30/08/2005
Israel Bispo
(ainda não consegui uma solução - quero agradecer ao meu amigo Edilcilmar pelo apoio).
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)