Como imprimir um contrato no Delphi
Senhores,
- Preciso imprimir um contrato de 8 páginas no Delphi assim que eu cadastro o cliente, ou seja, quando eu incluir um novo cliente que eu clicar em salvar automaticamente imprimir um relatório ´contrato´ que possui 8 páginas.
-Alguém pode me ajudar ?
Uso Delphi 7 e Firebird 2.0
- Preciso imprimir um contrato de 8 páginas no Delphi assim que eu cadastro o cliente, ou seja, quando eu incluir um novo cliente que eu clicar em salvar automaticamente imprimir um relatório ´contrato´ que possui 8 páginas.
-Alguém pode me ajudar ?
Uso Delphi 7 e Firebird 2.0
Josenildo
Curtidas 0
Respostas
Emarcolongo
17/10/2008
Vc poderia fazer assim:
- Crie seu contrato no Word com alguns campos com caracteres especiais, depois no Delphi vc coloca uma rotina que abra este doc e altere os caracteres especiais para os dados do BD. Com o Word aberto seu usuário
poderia imprimir qtas copias quiser. Além de poder alterar qq clausula que achar necessário.
Tive que fazer uma vez isto em minha aplicação e o usuário gostou bastante.
O parametro sdoc é o nome do arquivo do word. exemplo: contrato.doc
[/code]
- Crie seu contrato no Word com alguns campos com caracteres especiais, depois no Delphi vc coloca uma rotina que abra este doc e altere os caracteres especiais para os dados do BD. Com o Word aberto seu usuário
poderia imprimir qtas copias quiser. Além de poder alterar qq clausula que achar necessário.
Tive que fazer uma vez isto em minha aplicação e o usuário gostou bastante.
O parametro sdoc é o nome do arquivo do word. exemplo: contrato.doc
procedure Tfcontrato.gerar_contrato(sdoc: string); type twordreplaceflags = set of (wrfreplaceall, wrfmatchcase, wrfmatchwildcards); const wdfindcontinue = 1; wdreplaceone = 1; wdreplaceall = 2; wddonotsavechanges = 0; var wordapp: olevariant; begin if not fileexists(extractfiledir(application.exename)+´\´+sdoc) then raise exception.create(´Arquivo não encontrato:´ + extractfiledir(application.exename)+´\´+sdoc); try wordapp := createoleobject(´word.application´); except messagedlg (´Microsoft Word não encontrato.´, mterror, [mbok], 0); end; wordapp.visible := true; wordapp.documents.open(extractfiledir(application.exename)+´\´+sdoc); wordapp.selection.find.clearformatting; wordapp.selection.find.forward := true; wordapp.selection.find.wrap := wdfindcontinue; wordapp.selection.find.format := false; wordapp.selection.find.matchwholeword := true; wordapp.selection.find.matchsoundslike := false; wordapp.selection.find.matchallwordforms := false; //registro do cliente wordapp.selection.find.text := ´codigo´; wordapp.selection.find.replacement.text := edit1.text; wordapp.selection.find.execute(replace := wdreplaceall); wordapp.selection.find.text := ´#scliente´; wordapp.selection.find.replacement.text := combobox1.text; wordapp.selection.find.execute(replace := wdreplaceall); wordapp.selection.find.text := ´sendereco´; wordapp.selection.find.replacement.text := dmdados.sdsauxiliar.fieldbyname(´endereco´).text; wordapp.selection.find.execute(replace := wdreplaceall); wordapp.selection.find.text := ´snumero´; wordapp.selection.find.replacement.text := dmdados.sdsauxiliar.fieldbyname(´numero´).text; wordapp.selection.find.execute(replace := wdreplaceall); wordapp.selection.find.text := ´sbairro´; wordapp.selection.find.replacement.text := dmdados.sdsauxiliar.fieldbyname(´bairro´).text; wordapp.selection.find.execute(replace := wdreplaceall); wordapp.selection.find.text := ´scidade´; wordapp.selection.find.replacement.text := dmdados.sdsauxiliar.fieldbyname(´cidade´).text; wordapp.selection.find.execute(replace := wdreplaceall); wordapp.selection.find.text := ´#scep´; wordapp.selection.find.replacement.text := dmdados.sdsauxiliar.fieldbyname(´cep´).text; wordapp.selection.find.execute(replace := wdreplaceall); wordapp.selection.find.text := ´suf´; wordapp.selection.find.replacement.text := dmdados.sdsauxiliar.fieldbyname(´uf´).text; wordapp.selection.find.execute(replace := wdreplaceall); wordapp.selection.find.text := ´scnpj´; wordapp.selection.find.replacement.text := dmdados.sdsauxiliar.fieldbyname(´cnpj´).text; wordapp.selection.find.execute(replace := wdreplaceall); wordapp.selection.find.text := ´snome´; wordapp.selection.find.replacement.text := edit2.text; wordapp.selection.find.execute(replace := wdreplaceall); wordapp.selection.find.text := ´scargo´; wordapp.selection.find.replacement.text := edit3.text; wordapp.selection.find.execute(replace := wdreplaceall); wordapp.selection.find.text := ´#snacionalidade´; wordapp.selection.find.replacement.text := edit4.text; wordapp.selection.find.execute(replace := wdreplaceall); wordapp.selection.find.text := ´scivil´; wordapp.selection.find.replacement.text := edit5.text; wordapp.selection.find.execute(replace := wdreplaceall); wordapp.selection.find.text := ´scpf´; wordapp.selection.find.replacement.text := edit6.text; wordapp.selection.find.execute(replace := wdreplaceall); wordapp.selection.find.text := ´slocal´; wordapp.selection.find.replacement.text := ´São Paulo, ´+ formatdatetime(´dd´,date)+´ de ´+ formatdatetime(´mmmm´,date)+´ de ´+ formatdatetime(´yyyy´,date); wordapp.selection.find.execute(replace := wdreplaceall); wordapp.selection.find.text := ´#stest1´; wordapp.selection.find.replacement.text := edit7.text; wordapp.selection.find.execute(replace := wdreplaceall); wordapp.selection.find.text := ´srg1´; wordapp.selection.find.replacement.text := edit8.text; wordapp.selection.find.execute(replace := wdreplaceall); wordapp.selection.find.text := ´stest2´; wordapp.selection.find.replacement.text := edit9.text; wordapp.selection.find.execute(replace := wdreplaceall); wordapp.selection.find.text := ´srg2´; wordapp.selection.find.replacement.text := edit10.text; wordapp.selection.find.execute(replace := wdreplaceall); //wordapp.activedocument.printout; //wordapp.activedocument.close(wddonotsavechanges); //wordapp.quit; wordapp := unassigned; end;
GOSTEI 0
Emarcolongo
17/10/2008
So mais uma observação.
- Veja que algumas linhas no final estão comentadas, vc pode usar a do print para abrir já o assistente de impressão.
Tomara que te ajude.
- Veja que algumas linhas no final estão comentadas, vc pode usar a do print para abrir já o assistente de impressão.
Tomara que te ajude.
GOSTEI 0
Josenildo
17/10/2008
So mais uma observação.
- Veja que algumas linhas no final estão comentadas, vc pode usar a do print para abrir já o assistente de impressão.
Tomara que te ajude.
Vlw irmão claro que vai ajudar, qualquer coisa me ajuda nessa altura do compeonato, só fiquei com dúvidas na parte dos caracteres especiais. Poderia me explicar melhor fazendo favor .´
me passa seu email.
GOSTEI 0
Educdc
17/10/2008
Ae... Aproveitando o tópico, a minha dúvida é a mesma!
Tenho q imprimir um contrato pelo Delphi tb...
:arrow: Mas não entendi a questão dos caracteres especiais, poderia ser mais claro?
Vlws!
Abraços
Tenho q imprimir um contrato pelo Delphi tb...
:arrow: Mas não entendi a questão dos caracteres especiais, poderia ser mais claro?
Vlws!
Abraços
GOSTEI 0
Emarcolongo
17/10/2008
Desculpe a demora.
O que eu quis dizer com caracteres especiais é começar a palavra que vc vai substituir por um caracter diferente para que o sistema não troque uma palavra que vc não queira, por exemplo eu usei # mas poderia ser ¬, antes de cada palavra que vou substituir. Tento colocar algo que o usuário não escreveria em um texto comum.
O que eu quis dizer com caracteres especiais é começar a palavra que vc vai substituir por um caracter diferente para que o sistema não troque uma palavra que vc não queira, por exemplo eu usei # mas poderia ser ¬, antes de cada palavra que vou substituir. Tento colocar algo que o usuário não escreveria em um texto comum.
GOSTEI 0
N_informatica
17/10/2008
Amigos uso uma rotina bem parecida com essa porém na hora da impressão ele vai direto para impressora padrão e não abre para mim a janela para seleção de impressora.
o comando para impressão que estou usando é o seguinte Doc.PrindOut(False);
Já utilisei true no lugar de false e a unica coisa q muda é q ele abre o word e me mostra o documento que esta sendo impresso e oq preciso é a janela onde eu possa selecionar para qual impressora eu estarei enviando.
Atenciosamente,
Tadeu.
o comando para impressão que estou usando é o seguinte Doc.PrindOut(False);
Já utilisei true no lugar de false e a unica coisa q muda é q ele abre o word e me mostra o documento que esta sendo impresso e oq preciso é a janela onde eu possa selecionar para qual impressora eu estarei enviando.
Atenciosamente,
Tadeu.
GOSTEI 0
Gijunior28
17/10/2008
Boa noite segue em anexo um arquivo no excel onde quero que este tipo de sistema eu utilize no delphi e imprima no excel ou word. conforme contrato no excel.
Link
http://www.infoshop.eti.br/contrato.rar
Me ajudem por favor.
Link
http://www.infoshop.eti.br/contrato.rar
Me ajudem por favor.
GOSTEI 0