Pegar Tamanho Papel Impressora Padrão

29/03/2005

0

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á.


Anarquistaoi

Anarquistaoi

Responder

Posts

29/03/2005

Faelcavalcanti

Cara. Pegar desse exemplo aqui:

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.


Responder

29/03/2005

Anarquistaoi

Valeu Rafael, era isso que eu queria... :wink: :D


Responder

29/03/2005

Faelcavalcanti

Valeu Rafael, era isso que eu queria... :wink: :D


:wink: :wink: :wink:
Falow!!!


Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar