Fórum Como imprimir um contrato no Delphi #365180
17/10/2008
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
Curtir tópico
+ 0Posts
17/10/2008
Emarcolongo
- 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
17/10/2008
Emarcolongo
- 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
21/10/2008
Josenildo
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
22/10/2008
Educdc
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
06/11/2008
Emarcolongo
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
13/11/2008
N_informatica
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
02/07/2009
Gijunior28
Link
http://www.infoshop.eti.br/contrato.rar
Me ajudem por favor.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)