Fórum Buscar impressora automaticamente durante execução #400025
29/04/2011
0
eu uso Delphi 2010 e Rave Report para desenvolver os relatórios
Jeovanne Berger
Curtir tópico
+ 0Posts
29/04/2011
André Silveira
Criaria um cadastro de impressora por relatório do sistema, utilizando um combobox para pegar as impressora que estão instaladas na máquina, ao selecionar qual impressora ele quer para cada relatório, salvaria no banco e na impressão do relatório setaria essa impressora como padrão e depois voltaria a impressora que era padrão antes de imprimir.
Mais ou menos assim:
Laço de preenchimento do combo:
For i := 0 to Printer.Printers.Count - 1 do ComboBox.Items.Add(Printer.Printers[i]);/*Com esse laço pego todas impressora pelo nome*/
Criaria a procedure abaixo:
procedure SetDefaultPrinter(PrinterName: String);
var
I: Integer;
Device : PChar;
Driver : Pchar;
Port : Pchar;
HdeviceMode: Thandle;
aPrinter : TPrinter;
begin
Printer.PrinterIndex := -1;
getmem(Device, 255);
getmem(Driver, 255);
getmem(Port, 255);
aPrinter := TPrinter.create;
for I := 0 to
Printer.printers.Count-1 do
begin
if Printer.printers[i] = PrinterName then
begin
aprinter.printerindex := i;
aPrinter.getprinter
(device, driver, port, HdeviceMode);
StrCat(Device, ',');
StrCat(Device, Driver );
StrCat(Device, Port );
WriteProfileString('windows', 'device', Device);
StrCopy( Device, 'windows' );
SendMessage(HWND_BROADCAST, WM_WININICHANGE,
0, Longint(@Device));
end;
end;
Freemem(Device, 255);
Freemem(Driver, 255);
Freemem(Port, 255);
aPrinter.Free;
end; Antes de imprimir:var PrinterPad, PrinterSel : String;
PrinterPad :=Printer.Printers[Printer.PrinterIndex] /*Pegando a impressora padrão pelo nome*/PrinterSel := Query.Fields[0].AsString; /*Carregando a impressora selecionada para ser a padrão
SetDefaultPrinter(PrinterSel); /*Setando ela como padrão
Mando Imprimir; /*Imprimo o relatório
SetDefaultPrinter(PrinterPad); /*Volto a impressora padrão que tinha antes.
Gostei + 0
02/05/2011
Jeovanne Berger
Gostei + 0
18/04/2013
José
Gostei + 0
18/04/2013
André Silveira
Quanto a funcionar no rave, funciona sim, uma vez que mudará a impressora padrão do windows (tem que ter elas instaladas na máquina) antes de imprimir e depois volta para a impressora que era a padrão antes de imprimir.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)