Fórum Como imprimir um contrato no Delphi #365180

17/10/2008

0

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


Josenildo

Josenildo

Responder

Posts

17/10/2008

Emarcolongo

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

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;
[/code]


Responder

Gostei + 0

17/10/2008

Emarcolongo

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.


Responder

Gostei + 0

21/10/2008

Josenildo

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.


Responder

Gostei + 0

22/10/2008

Educdc

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


Responder

Gostei + 0

06/11/2008

Emarcolongo

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.


Responder

Gostei + 0

13/11/2008

N_informatica

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.


Responder

Gostei + 0

02/07/2009

Gijunior28

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.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar