{Coloque um ComboBox e um edit no Form onde você irá Chamar o Report com o seu relatório.
Abaixo, segue a codificação:}
procedure TNomeDoForm.FormShow(Sender: TObject); //configura o evento OnShow do form para definir // os itens do ComboBox var
Impressora :String;
SeuIni:TIniFile; //Seu arquivo.ini // Declara as variáveis Utilizadas. SeuIni é o Nome do // arquivo.ini do seu projeto begin
ComboBox1.Items:= Printer.Printers; //Define os itens do comboBox com as impressoras instaladas
SeuIni:= TIniFile.Create('SeuIni.ini'); //Cria seu arquivo.Ini if SeuIni.ReadString('Impressoras','NomeDoForm','')<>'' thenbegin//Verifica se existe uma impressora relacionada no seu arquivo Ini
impressora:=SeuIni.ReadString('Impressoras','NomeDoForm','');//se existe, inicia a variável Impressora com o Nome da impressora
ComboBox1.ItemIndex:=ComboBox1.Items.IndexOf(Impressora); //Define o itemIndex do ComboBox pelo nome da impressora
SeuIni.Free; // Libera o Ini da memória end; end;
{Isso fará com que a cada inicialização do seu formulário, o sistema busque
no arquivo ini uma impressora relacionada. Caso não encontre, você fará a seleção manualmente.
Agora, coloque um SpeedButton para imprimir o relatório, que você tem criado em outro Form. O seu código deve estar conforme o Exemplo abaixo:}
procedure TNomeDoform.SpeedButton3Click(Sender: TObject); Var
Copia:Integer; //declara a variável que definirá o número de cópias begin if edit1.text='' then//verifica se está em branco o campo de cópias, caso esteja, mostra a mensagem begin
ShowMessage('Especifique o número de cópias!');
Edit1.SetFocus; //volta o foco para o campo de cópias
exit; end; try
Copia:=StrToint(Edit1.Text); //caso contrário, Converte a String digitada em Integer except
on EConvertError do// em caso de erro ao converter begin
ShowMessage(Edit1.Text + ' não é um número de cópias válido!'); // Mostra a mensagem
Edit1.Clear; //Limpa o campo de cópias
edit1.SetFocus; //Volta o Foco novamente para alteração
exit; end; end;
Application.CreateForm(TSeuReFormComRelatorio, SeuReFormComRelatorio); // Cria na memória o Form Com O seu Relatório
SeuReFormComRelatorio.Quickrep1.PrinterSettings.PrinterIndex:=Combobox1.itemIndex;//Define a impressora do combo box como a padrão
SeuReFormComRelatorio.Quickrep1.PrinterSettings.Copies:=copia;//define o nímero de cópias digitado no edit
SeuReFormComRelatorio.quickrep1.print; //Imprime
SeuReFormComRelatorio.Free; //Libera o form da memória end;
{Agora, vamos deixar gravado a impressora utilizada para que na próxima vez que o sistema iniciar, a impressora esteja selecionada. Configuremos o evento OnClose do form:}
procedure TNomedoForm.FormClose(Sender: TObject; var Action: TCloseAction); Var
Seuini:Tinifile; //Declara novamente a Variável TInifile begin
Seuini:= TIniFile.Create('SeuArquivo.ini');
Seuini.WriteString('Impressoras','NomeDoForm',combobox1.Text); //Grava no arquivo o nome da impressora
Seuini.Free; //Libera o Arquivo ini da memória
Action:=Cafree;
NomeDoForm:=NIL; // Libera o form da memória end;
{espero que esta dica tenha ajudado alguém, pelo menos o pouco que eu sei, estou compartilhando. OBrigado!}