Professional Documents
Culture Documents
documentos RTF
com TPageProducer
s para web? No! Vamos resolver
problemas com solues. Veja neste artigo
de Daniel Wildt. Acesso exclusivo para
Assinantes.
0
Gostei (0)
[fechar]
(0)
.
s para web? No! Vamos resolver problemas com
solues
O documento de teste
Veja na Figura 1 o documento que foi editado no WordPad e salvo em formato RTF.
Figura 1 Documento editado com o Wordpad. Veja as Tags transparentes no texto <#tag>
Iremos agora mostrar os passos para construir a aplicao de teste, que vai
manipular um documento RTF (modelo) e gerar um outro documento.
Componente
Propriedade
Valor
TForm
Name
FrmPrincipal
Caption
Name
EdTitulo
EditLabel.Caption
Ttulo
Name
EdUsuario
TLabeledEdit
TLabeledEdit
TLabeledEdit
TLabeledEdit
TLabeledEdit
TButton
TLabeledEdit
TButton
EditLabel.Caption
Usurio
Name
EdEMail
EditLabel.Caption
Name
EdDataContato
EditLabel.Caption
Data de Contato
Name
EdArquivoBase
EditLabel.Caption
Arquivo Base
Name
BtnProcurarArquivoBase
Caption
Procurar
Name
EdPastaSaida
EditLabel.Caption
Pasta Sada
Name
BtnProcurarPastaSaida
Caption
Procurar
TButton
TOpenDialog
TPageProducer
Name
BtnGerar
Caption
Gerar
Name
OpenDialog
Title
Filter
Name
PageProducer
Figura 2 Tela construda para testar a gerao de arquivo RTF via componente TPageProducer
Agora temos que escrever um pouco de cdigo. Vamos comear com o evento
OnCreate do Formulrio, disponvel na Listagem 1, para inicializar alguns
componentes da interface.
begin
EdArquivoBase.Text :=
ExtractFilePath(Application.ExeName)+'base\teste.rtf';
EdPastaSaida.Text :=
ExtractFilePath(Application.ExeName)+'saida\';
OpenDialog.InitialDir :=
ExtractFilePath(Application.ExeName)+'base\';
end;
Com isto os caminhos dos arquivos base para rodar a aplicao estaro prconfigurados, assim como o campo com a data de contato.
Caso o usurio queira selecionar outro arquivo de base para trocar as variveis,
vamos abrir um dilogo para permitir esta seleo. Veja isto na Listagem 2.
begin
if((OpenDialog.Execute)and
(FileExists(OpenDialog.FileName))) then
EdArquivoBase.Text := OpenDialog.FileName;
end;
Outra configurao que pode ser feita se refere pasta para sada do formulrio.
Veja o ccdogo para permitir a troca desta, na Listagem 3.
var
pasta : String;
begin
pasta := EdPastaSaida.Text;
if(SelectDirectory(pasta,
EdPastaSaida.Text := pasta;
end;
NomeArquivoSaida : String;
begin
PageProducer.HTMLFile := EdArquivoBase.Text;
TextoResultado := TStringList.Create;
NomeArquivoSaida := IncludeTrailingPathDelimiter(
EdPastaSaida.Text) +
FormatDateTime('yyyymmddhhnnsszzz',now) +
try
TextoResultado.Text := PageProducer.Content;
TextoResultado.SaveToFile(NomeArquivoSaida);
finally
TextoResultado.Free;
end;
end;
Este cdigo vai gerar um novo documento na pasta de sada, seguindo o padro
montado na varivel NomeArquivoSaida. Se voc mandar gerar um arquivo agora,
somente com o cdigo que fizemos at o momento, vai verificar que o arquivo est
igual ao arquivo base, mas tocas marcaes como por exemplo a <#usuario>, no
esto mais includas no arquivo. Isto porque o Delphi processou as tags, mas no
encontrou o cdigo para dar um novo valor a estas tags.
begin
ReplaceText := EdTitulo.Text;
ReplaceText := EdUsuario.Text;
ReplaceText := EdEMail.Text;
begin
ReplaceText := FormatDateTime(TagParams.Values['formato'],
StrToDateTime(EdDataContato.Text))
else
ReplaceText := EdDataContato.Text;
end;
end;
Feito isto o nosso aplicativo para gerar documentos RTFs usando o componente
TPageProducer est pronto. Voc pode agora montar aquele processo para gerao
de contratos usando este tipo de soluo, extremamente simples.