Pegar Tamanho Papel Impressora Padrão
Eu sei que tem alguns tópicos com este mesmo assunto, mas eu não consegui um que resolvesse meu problema, que é: [b:676feab369]Pegar o tamanho de papel[/b:676feab369] da impressora padrão do micro, independente do seu sistema operacional(Windows 95, 98, ME, 2000, XP). Tem como?? Alguem pode me ajudar??
Agradeço desde já.
Agradeço desde já.
Anarquistaoi
Curtidas 0
Respostas
Faelcavalcanti
29/03/2005
Cara. Pegar desse exemplo aqui:
Agora assim, eu tava tentando fazer um exemplo bem simples, mas vi uma parte de código já pronto aqui. Espero que com este conteúdo você poderá fazer um bom proveito para o seu uso, mas tipow, se liga que terás que declarar para o Objeto [b:09612ba00f]Printers[/b:09612ba00f] do Canvas, e se liga nas constantes, são elas que têm um valor literal encapsulado com o valor das medidas exatas de um determinado papel.
Agora para saber a impressora tu poderia usar tipow:
Qualquer coisa dá um response aqui, que agente te dá uma força!
:wink:
Espero ter ajudado.
procedure TForm1.MostraTamPapel; var ADevice, ADriver, APort: array[0..255] of char; DeviceMode: THandle; M: PDevMode; s: string; begin // Força o uso de Printer. Se esta linha for removida, a primeira // invocação falha. Bug da VCL S := Printer.Printers[Printer.PrinterIndex]; // Pega dados da impressora atual Printer.GetPrinter(ADevice, ADriver, APort, DeviceMode); // Pega um ponteiro para DEVMODE M := GlobalLock(DeviceMode); if M <> nil then MostraDevMode(M^); end; function TForm1.PegaTamanhoPapel(dmPaperSize: word): string; begin Result := ´Desconhecido´; // Verifica ALGUNS TAMANHOS POSSÍVEIS. Existem outros, veja DEVMODE case dmPaperSize of DMPAPER_USER: Result := ´Definido pelo usuário´; DMPAPER_LETTER: Result := ´Letter, 8 1/2- by 11-inches´; DMPAPER_LEGAL: Result := ´Legal, 8 1/2- by 14-inches´; DMPAPER_A4: Result := ´A4 Sheet, 210- by 297-millimeters´; end; end; procedure TForm1.MostraDevMode(const M: TDevMode); begin // Mostra o valor de alguns campos with M do begin // Mostra nome da impressora Memo1.Lines.Add(´Nome:´ + dmDeviceName); // Verifica se campo tamanho do papel esta preenchido e mostra if dmFields and DM_PAPERSIZE <> 0 then Memo1.Lines.Add(PegaTamanhoPapel(dmPaperSize)); if dmFields and DM_PAPERLENGTH <> 0 then Memo1.Lines.Add(Format(´Altura:¬d´, [dmPaperLength])); if dmFields and DM_PAPERWIDTH <> 0 then Memo1.Lines.Add(Format(´Comprimento:¬d´, [dmPaperWidth])); end; end;
Agora assim, eu tava tentando fazer um exemplo bem simples, mas vi uma parte de código já pronto aqui. Espero que com este conteúdo você poderá fazer um bom proveito para o seu uso, mas tipow, se liga que terás que declarar para o Objeto [b:09612ba00f]Printers[/b:09612ba00f] do Canvas, e se liga nas constantes, são elas que têm um valor literal encapsulado com o valor das medidas exatas de um determinado papel.
Agora para saber a impressora tu poderia usar tipow:
function ImpressoraCorrente: string; begin Result := Printer.Printers[Printer.PrinterIndex]; end;
Qualquer coisa dá um response aqui, que agente te dá uma força!
:wink:
Espero ter ajudado.
GOSTEI 0
Anarquistaoi
29/03/2005
Valeu Rafael, era isso que eu queria... :wink: :D
GOSTEI 0
Faelcavalcanti
29/03/2005
Valeu Rafael, era isso que eu queria... :wink: :D
:wink: :wink: :wink:
Falow!!!
GOSTEI 0