Fórum Delphi X Word #170126
18/07/2003
0
Estou desenvolvendo um aplicativo em Delphi e preciso que ele imprima uma carta que tenha como modelo um documento do word com campos variáveis que devem ser preenchidos pelo meu aplicativo. Alguém poderia me ajudar como fazer isso? Acredito que devo criar um documento no word como template e inserir campos no documento para que o aplicativo possa enxergar estes campos e substituir como os valores adequados..
Mas como?
[]s
Mas como?
[]s
Elt_souza
Curtir tópico
+ 0
Responder
Posts
18/07/2003
Ilanocf
Olá elt_souza,
Bem, eu não tenho aqui a solução de seu problema, mas como nossos objetivos são bem parecidos, estou fazendo o seguinte:
1º) Coloquei os seguintes componentes da paleta Servers em meu form:
- WordApplication1
- WordDocument1
- WordFont1
- WordParagraphFormat1
2º) No evento OnClick do botão, coloquei o código:
procedure TForm1.SpeedButton1Click(Sender: TObject);
Var
Texto:WideString;
//Dialogo:WideString;
begin
WordApplication1.Connect;
WordApplication1.Visible:=True;
//WordDocument1.NewInstance; //Cria um novo documento - não será necessário
WordFont1.ConnectTo(WordDocument1.Content.Font);
WordFont1.Bold:=0; //Não aplica o negrito o texto
//WordFont1.Bold:=1; //Aplica o negrito
WordFont1.Italic:=0; //Não aplica o itálico no texto
//WordFont1.Italic:=1; //Aplica o itálico
WordFont1.Size:=12; //Aplica o tamanho da fonte para 12
WordParagraphFormat1.ConnectTo(WordDocument1.Content.Get_ParagraphFormat);
Texto:=´Certifico que, ´ + Table1NomeDoAluno.Text + ´filho(a) de ´ + Table1NomeDoPai.Text + ´ e ´ + Table1NomeDaMae.Text + ´, nascido(a) em ´ + Table1DataDeNascimento.Text + ´ na cidade de ´ + Table1Cidade.Text;
WordDocument1.Content.InsertAfter(Texto);// Insere o texto da tabela.
Application.Minimize; // Minimiza sua aplicação.
end;
Faz direitinho, o único problema é q eu preciso fazer isso num documento q já existe e isso ele não está fazendo.
Postei isso aqui na esperança de q vc consiga algo e possa me repassar. Vou postar novamente no Clube com outro Assunto, se vc descobrir mais alguma coisa, por favor, me envia, ok?
Grato,
Ilano.
Bem, eu não tenho aqui a solução de seu problema, mas como nossos objetivos são bem parecidos, estou fazendo o seguinte:
1º) Coloquei os seguintes componentes da paleta Servers em meu form:
- WordApplication1
- WordDocument1
- WordFont1
- WordParagraphFormat1
2º) No evento OnClick do botão, coloquei o código:
procedure TForm1.SpeedButton1Click(Sender: TObject);
Var
Texto:WideString;
//Dialogo:WideString;
begin
WordApplication1.Connect;
WordApplication1.Visible:=True;
//WordDocument1.NewInstance; //Cria um novo documento - não será necessário
WordFont1.ConnectTo(WordDocument1.Content.Font);
WordFont1.Bold:=0; //Não aplica o negrito o texto
//WordFont1.Bold:=1; //Aplica o negrito
WordFont1.Italic:=0; //Não aplica o itálico no texto
//WordFont1.Italic:=1; //Aplica o itálico
WordFont1.Size:=12; //Aplica o tamanho da fonte para 12
WordParagraphFormat1.ConnectTo(WordDocument1.Content.Get_ParagraphFormat);
Texto:=´Certifico que, ´ + Table1NomeDoAluno.Text + ´filho(a) de ´ + Table1NomeDoPai.Text + ´ e ´ + Table1NomeDaMae.Text + ´, nascido(a) em ´ + Table1DataDeNascimento.Text + ´ na cidade de ´ + Table1Cidade.Text;
WordDocument1.Content.InsertAfter(Texto);// Insere o texto da tabela.
Application.Minimize; // Minimiza sua aplicação.
end;
Faz direitinho, o único problema é q eu preciso fazer isso num documento q já existe e isso ele não está fazendo.
Postei isso aqui na esperança de q vc consiga algo e possa me repassar. Vou postar novamente no Clube com outro Assunto, se vc descobrir mais alguma coisa, por favor, me envia, ok?
Grato,
Ilano.
Responder
Gostei + 0
18/07/2003
Sireda
Olá amigo !
Eu não utilizo o Word. O 602pro é free e o resultado é o mesmo, basta se acostumar com este Office.
Crio o texto no Editor 602Text (similar ao Word) associando os campos do arquivo ao documento, em seguida.
No Evento Onclick do botão:
var Editor : PChar;
var Comando : String;
begin
.... salvo todos os dados que desejo imprimir num arquivo qualquer (o mesmo q está associado ao documento)
ao final de tudo, qdo já tiver gravado todos os dados e estiver pronto para imprimir é só
Comando := ´C:\Arquivos de programas\Software602\602Pro PC SUITE\602Text\exec\602Text.exe C:\Texto.DOC´;
Editor := PChar(Comando);
winexec(Editor, sw_normal);
Prontinho...
P.S.: Inclusive tem um comandinho pra se colocar no final da linha e ele imprime direto sem abrir o Editor de Texto. Fica muito lindo... parece feito via sistema e com um detalhe legal... Qq pessoa pode alterar o documento sem ter q mexer no programa (desde que não elimine os campos)
Qq dúvida estou à disposição e se puder me ajudar tb..... desde já agradeço !
Sinésio Dalevedo
sireda@hotmail.com
Marília - SP
Eu não utilizo o Word. O 602pro é free e o resultado é o mesmo, basta se acostumar com este Office.
Crio o texto no Editor 602Text (similar ao Word) associando os campos do arquivo ao documento, em seguida.
No Evento Onclick do botão:
var Editor : PChar;
var Comando : String;
begin
.... salvo todos os dados que desejo imprimir num arquivo qualquer (o mesmo q está associado ao documento)
ao final de tudo, qdo já tiver gravado todos os dados e estiver pronto para imprimir é só
Comando := ´C:\Arquivos de programas\Software602\602Pro PC SUITE\602Text\exec\602Text.exe C:\Texto.DOC´;
Editor := PChar(Comando);
winexec(Editor, sw_normal);
Prontinho...
P.S.: Inclusive tem um comandinho pra se colocar no final da linha e ele imprime direto sem abrir o Editor de Texto. Fica muito lindo... parece feito via sistema e com um detalhe legal... Qq pessoa pode alterar o documento sem ter q mexer no programa (desde que não elimine os campos)
Qq dúvida estou à disposição e se puder me ajudar tb..... desde já agradeço !
Sinésio Dalevedo
sireda@hotmail.com
Marília - SP
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)