Rave: como fazer o rave obdecer a troca de impressora?
tenho o seguinte problema:
preciso que o rave imprima um relatório em determinada impressora(HP 1300) e outros relatórios em outra impressora, mas ao trocar de impressora via código simplesmente o rave não troca de impressora continua aparecendo na janela Output Options a outra impressora a mudança só ocorre mesmo quando fecho o programa e abro novamente.
Utilizo este código:
function GetCurrentPrinterHandle: THandle;
var
Device, Driver, Port: array[0..255] of Char;
Mode: THandle;
begin
Printer.GetPrinter(Device, Driver, Port, Mode);
if not OpenPrinter(@Device, Result, nil) then
RaiseLastWin32Error;
end;
procedure TFrmImpressao.Button1Click(Sender: TObject);
var
I: Integer;
Device : PChar;
Driver : Pchar;
Port : Pchar;
HdeviceMode: Thandle;
aPrinter : TPrinter;
begin
Button1.Enabled:=False;
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] = cmbPrinter.Text 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;
Button1.Enabled:=True;
end;
procedure TFrmImpressao.FormShow(Sender: TObject);
var
I: Integer;
X: Integer;
begin
X := Printer.PrinterIndex;
for I:= 0 to Printer.Printers.Count-1 do begin
Printer.PrinterIndex := I;
GetCurrentPrinterPort);
cmbPrinter.Items.Add(Printer.Printers[I]);
end;
Printer.PrinterIndex := X;
end;
Desde já agradeço a quem puder me ajudar.
preciso que o rave imprima um relatório em determinada impressora(HP 1300) e outros relatórios em outra impressora, mas ao trocar de impressora via código simplesmente o rave não troca de impressora continua aparecendo na janela Output Options a outra impressora a mudança só ocorre mesmo quando fecho o programa e abro novamente.
Utilizo este código:
function GetCurrentPrinterHandle: THandle;
var
Device, Driver, Port: array[0..255] of Char;
Mode: THandle;
begin
Printer.GetPrinter(Device, Driver, Port, Mode);
if not OpenPrinter(@Device, Result, nil) then
RaiseLastWin32Error;
end;
procedure TFrmImpressao.Button1Click(Sender: TObject);
var
I: Integer;
Device : PChar;
Driver : Pchar;
Port : Pchar;
HdeviceMode: Thandle;
aPrinter : TPrinter;
begin
Button1.Enabled:=False;
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] = cmbPrinter.Text 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;
Button1.Enabled:=True;
end;
procedure TFrmImpressao.FormShow(Sender: TObject);
var
I: Integer;
X: Integer;
begin
X := Printer.PrinterIndex;
for I:= 0 to Printer.Printers.Count-1 do begin
Printer.PrinterIndex := I;
GetCurrentPrinterPort);
cmbPrinter.Items.Add(Printer.Printers[I]);
end;
Printer.PrinterIndex := X;
end;
Desde já agradeço a quem puder me ajudar.
Exvasp
Curtidas 0
Respostas
Exvasp
08/01/2007
Mais uma explicação:
Tem como mudar a selected printer que aparece na janela output options do rave via código?
Desde já muito obrigado.
Tem como mudar a selected printer que aparece na janela output options do rave via código?
Desde já muito obrigado.
tenho o seguinte problema:
preciso que o rave imprima um relatório em determinada impressora(HP 1300) e outros relatórios em outra impressora, mas ao trocar de impressora via código simplesmente o rave não troca de impressora continua aparecendo na janela Output Options a outra impressora a mudança só ocorre mesmo quando fecho o programa e abro novamente.
Utilizo este código:
function GetCurrentPrinterHandle: THandle;
var
Device, Driver, Port: array[0..255] of Char;
Mode: THandle;
begin
Printer.GetPrinter(Device, Driver, Port, Mode);
if not OpenPrinter(@Device, Result, nil) then
RaiseLastWin32Error;
end;
procedure TFrmImpressao.Button1Click(Sender: TObject);
var
I: Integer;
Device : PChar;
Driver : Pchar;
Port : Pchar;
HdeviceMode: Thandle;
aPrinter : TPrinter;
begin
Button1.Enabled:=False;
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] = cmbPrinter.Text 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;
Button1.Enabled:=True;
end;
procedure TFrmImpressao.FormShow(Sender: TObject);
var
I: Integer;
X: Integer;
begin
X := Printer.PrinterIndex;
for I:= 0 to Printer.Printers.Count-1 do begin
Printer.PrinterIndex := I;
GetCurrentPrinterPort);
cmbPrinter.Items.Add(Printer.Printers[I]);
end;
Printer.PrinterIndex := X;
end;
Desde já agradeço a quem puder me ajudar.
GOSTEI 0