Impressao - impressora padrao

Top  Previous  Next

procedure Form1.SetImpressoraPadrao;

var

  Res         : DWORD;

  Device      : array[0..255of char;

  Driver      : array[0..255of char;

  Port        : array[0..255of char;

  WindowsStr  : array[0..255of char;

  hDeviceMode : THandle;

begin

  // Pega dados da impressora atual

  Printer.GetPrinter(Device, Driver, Port, hDeviceMode);

  // Monta string exigida pela API do Windows

  StrCat( Device, ',');

  StrCat( Device, Driver );

  StrCat( Device, ',');

  StrCat( Device, Port );

  StrPCopy(WindowsStr, 'windows');

  // Torna a impressora a atual;

  WriteProfileString(WindowsStr, 'device', Device);

  SendMessageTimeout(HWND_BROADCAST, WM_WININICHANGE, 0, DWORD(@WindowsStr), SMTO_NORMAL, 1000, Res);

end;

 

procedure Form1.Button1;

begin

  // Pega lista de impressoras

  ListBox1.Items := Printer.Printers;

 

  // Seta a segunda como padrao

  Printer.PrinterIndex := 1;

  SetImpressoraPadrao

end;

 

// Com o PrintDialog: =================================================================

// Funcao  Select_default -> Seleciona impressora Default

//        Select_impress -> Seleciona impressora do componente de impressora do Delphi.

// Ex:

 

   If PrintDialog1.Execute then  // componente printdialog

   begin

       Select_Impress;

       if rCalibracao=nil then Application.CreateForm(TrCalibracao, rCallibracao);

       rCalibracao.Print;

       Select_Default;

   end;