Impressora Padrão

Delphi

16/03/2004

Olá pessoal,
Estou querendo escolher a impressora que será impresso o relatório do RAVE.
Já tentei indexar o Printer, mas não deu certo, o relatório persiste em imprimir no driver principal da impressora.

fiz o seguinte código para listar dentro de um combobox , todas as impressoras instaladas na máquina, escolhe a impressora , só que na hora de imprimir ela enviar para impressora definida como padrão.
este código é para carregar as impressoras no combobox.

for I := 0 to Printer.printers.Count-1 do ComboBox1.Items.Add(Printer.Printers[I]);
ComboBox1.ItemIndex:=printer.PrinterIndex;


e depois indexei mas constinua a imprimir os relatórios na impressora padrão!

Printer.PrinterIndex:=ComboBox1.ItemIndex;



dm.Rave.ProjectFile:=´relatorio´;
dm.RaveSys.SystemSetups:=[];
dm.Rave.ExecuteReport(´Report1´);


Carlosceuma

Carlosceuma

Curtidas 0

Respostas

Vinicius2k

Vinicius2k

16/03/2004

Carlos,

É necessário forcar a instância de TPrinter a receber a impressora selecionada, veja o código...

[coide]procedure SetarImpressora;
var Device, Driver, Port : array[0..255] of char;
hDMode : THandle;
begin
try
Printer.GetPrinter(Device, Driver, Port, hDMode);
finally
GlobalUnlock(hDMode);
end;
end;

acredito que a chamada a esta procedure após a atribuição do índice irá resolver seu problema... eu trabalho desta forma diretamente com o TPrinter, chamo este código após o retorno true do método Execute do TPrintDialog, mas acredito que funcione da mesma forma...

espero ter ajudado...


GOSTEI 0
Carlosceuma

Carlosceuma

16/03/2004

Vinícius,

Valeu pela dica, servirá quando elaborar relatório simple e direto a impressora, mas por enquanto, estou utilizando o RAVE Report e já encontrei a solução. Utilizei o Componente RvNDRWriter1 que tem
como propriedade PrinterIndex.

Ficou ótimo:
a linha que utilizei foi esta:

RvNDRWriter1.PrinterIndex:=ComboBox1.ItemIndex;

após ter listados no combobox as impressoras disponíveis.

Ainda sim, agradeço de montão a sua ajuda, assim espero ajuda-lo.

Antonio Carlos
acf.slz@globo.com


GOSTEI 0
Vinicius2k

Vinicius2k

16/03/2004

:wink:
fica valendo como conhecimento adicional...
T+


GOSTEI 0
Emir Neto

Emir Neto

16/03/2004

Como listo em um combobox as impressoras locais e de rede????

Vinícius, Valeu pela dica, servirá quando elaborar relatório simple e direto a impressora, mas por enquanto, estou utilizando o RAVE Report e já encontrei a solução. Utilizei o Componente RvNDRWriter1 que tem como propriedade PrinterIndex. Ficou ótimo: a linha que utilizei foi esta: RvNDRWriter1.PrinterIndex:=ComboBox1.ItemIndex; após ter listados no combobox as impressoras disponíveis. Ainda sim, agradeço de montão a sua ajuda, assim espero ajuda-lo. Antonio Carlos acf.slz@globo.com



GOSTEI 0
Fabio.hc

Fabio.hc

16/03/2004

for I := 0 to Printer.printers.Count-1 do ComboBox1.Items.Add(Printer.Printers[I]); ComboBox1.ItemIndex:=printer.PrinterIndex;

declara a unit:

uses Printers


GOSTEI 0
POSTAR