merge no delphi.docx

Embed Size (px)

Citation preview

  • 7/23/2019 merge no delphi.docx

    1/12

    Gerandodocumentos RTFcom TPageProducer s para web? No! Vamos resolver

    problemas com solues Ve"a neste art#gode $an#el %#ldt &cesso e'clus#vo para

    &ss#nantes

    0

    Gostei (0) (0)[fechar]

    Voc no gostou da qualidadedeste contedo?

    (opcional) Voc poderia comentar o que no lhe agradou?

    Confirmo meu voto negativo

    .

    s para web? No! Vamos resolver problemas com

    solues

    617

    http://www.devmedia.com.br/gerando-documentos-rtf-com-tpageproducer/617http://www.devmedia.com.br/gerando-documentos-rtf-com-tpageproducer/617http://www.devmedia.com.br/gerando-documentos-rtf-com-tpageproducer/617http://www.devmedia.com.br/gerando-documentos-rtf-com-tpageproducer/617http://www.devmedia.com.br/gerando-documentos-rtf-com-tpageproducer/617http://www.devmedia.com.br/gerando-documentos-rtf-com-tpageproducer/617http://www.devmedia.com.br/gerando-documentos-rtf-com-tpageproducer/617http://www.devmedia.com.br/gerando-documentos-rtf-com-tpageproducer/617
  • 7/23/2019 merge no delphi.docx

    2/12

    Estes dias respondi em um frum uma pergunta de um participante, indicando

    problemas para gerar um relatrio no QuickReport uando o relatrio tem mais de

    uma p!gina" #ote ue possi$elmente o te%to do relatrio estar! inclu&do dentro do

    seu e%ecut!$el" 'sto muito ruim para processos de manuten*o" + solu*o para a

    pergunta acima pode ser usando o componente para imprimir mais de um relatrio

    no QuickReport (QRmpositeReport), mas isto assunto para outra coluna" -ou

    mostrar como resol$er este tipo de problema usando o componente .age.roducer"

    TPageProducer est na aba eb. No s para apl"caes web?

    + resposta n*o" / .age.roducer um componente e%tremamente simples, mas

    e%tremamente til para ualuer processo de troca de marca1es em arui$os em

    formato e%to" 2m arui$o R3 (Rich e%t 3ormat) baseado em uma linguagem

    de marca*o, como ocorre com o 456,por e%emplo"

    / ob7eti$o deste artigo mostrar como usar o .age.roducer para modificar o

    contedo de um documento R3 ue possui marca1es, como as ue colocamos em

    nossas p!ginas de internet"

    # documento de teste

    -e7a na 3igura 8 o documento ue foi editado no 9ord.ad e sal$o em formato R3"

    Figura 1 Documento editado com o Wordpad. Veja as Tags transparentes no texto

  • 7/23/2019 merge no delphi.docx

    3/12

    :om o componente .age.roducer, podemos indicar tags dentro do documento"

    Estas tags iniciam com ; e s*o seguidas de uma identifica*o, ue o nome da

    tag" ?*o terminadas com o caractere ;@>" E%emploA

  • 7/23/2019 merge no delphi.docx

    4/12

    %dit#a$el&Caption surio

    T#a$eled%dit Name %d%*ail

    %dit#a$el&Caption %+*ail

    T#a$eled%dit Name %d,ataContato

    %dit#a$el&Caption ,ata de Contato

    T#a$eled%dit Name %d-rquivo.ase

    %dit#a$el&Caption -rquivo .ase

    T.utton Name .tnrocurar-rquivo.ase

    Caption rocurar

    T#a$eled%dit Name %dasta/aida

    %dit#a$el&Caption asta /a'da

    T.utton Name .tnrocurarasta/aida

    Caption rocurar

  • 7/23/2019 merge no delphi.docx

    5/12

    T.utton Name .tn!erar

    Caption !erar

    T0pen,ialog Name 0pen,ialog

    Title %scolha arquivo "TF

    Filter -rquivos "TF (1&rtf)21&rtf

    Tageroducer Name ageroducer

  • 7/23/2019 merge no delphi.docx

    6/12

    Figura 2 Tela construda para testar a gerao de ar!ui"o TF "ia componente T$age$roducer

    +gora temos ue escre$er um pouco de cdigo" -amos comear com o e$ento

    /n:reate do 3ormul!rio, dispon&$el na 6istagem 8, para inicialiCar alguns

    componentes da interface"

    %istagem 1& '"ento (n)reate do *ormul+rio

  • 7/23/2019 merge no delphi.docx

    7/12

    procedureTFrmPrincipal.FormCreate(Sender: TObject);

    begin

    EdArquivoa!e.Te"t :#

    E"tractFilePat$(Application.E"e%ame)&'ba!ete!te.rt';

    EdPa!taSaida.Te"t :#

    E"tractFilePat$(Application.E"e%ame)&'!aida';

    Open*ialo+.,nitial*ir :#

    E"tractFilePat$(Application.E"e%ame)&'ba!e';

    Ed*ataContato.Te"t :# Format*ateTime('dd-mm- $$:nn'/ no0);

    end;

    :om isto os caminhos dos arui$os base para rodar a aplica*o estar*o prF

    configurados, assim como o campo com a data de contato"

    :aso o usu!rio ueira selecionar outro arui$o de base para trocar as $ari!$eis,

    $amos abrir um di!logo para permitir esta sele*o" -e7a isto na 6istagem "

    %istagem 2& '"ento (n)lic, do -oto tn$rocurar/r!ui"oase

    procedureTFrmPrincipal.tnProcurarArquivoa!eClic1(Sender: TObject);

  • 7/23/2019 merge no delphi.docx

    8/12

    begin

    if((Open*ialo+.E"ecute)and

    (FileE"i!t!(Open*ialo+.File%ame))) then

    EdArquivoa!e.Te"t :# Open*ialo+.File%ame;

    end;

    /utra configura*o ue pode ser feita se refere pasta para sa&da do formul!rio"

    -e7a o ccdogo para permitir a troca desta, na 6istagem H"

    %istagem 0& '"ento (n)lic, do -oto tn$rocurar$astaaida

    procedureTFrmPrincipal.tnProcurarPa!taSaidaClic1(Sender: TObject);

    var

    pa!ta : String;

    begin

    pa!ta :# EdPa!taSaida.Te"t;

    if(Select*irector(pa!ta/

    2!dAllo0Create/ !dPerormCreate/ !dPrompt3/4555)) then

  • 7/23/2019 merge no delphi.docx

    9/12

    EdPa!taSaida.Te"t :# pa!ta;

    end;

    Vamos ao %ue "nteressa! &erao do documento!

    -amos ao cdigo referente ao bot*o de gera*o e depois o cdigo mais importante,

    referente ao .age.roducer, ue far! a troca das informa1es configuradas no

    documento R3"

    -e7a o cdigo ue $ai controlar a gera*o do no$o arui$o na 6istagem I"

    %istagem & '"ento (n)lic, do -oto tn3erar

    procedureTFrmPrincipal.tn6erarClic1(Sender: TObject);

    varTe"to7e!ultado : TStrin+8i!t;

    %omeArquivoSaida : Strin+;

    begin

    Pa+eProducer.9T8File :# EdArquivoa!e.Te"t;

    Te"to7e!ultado :# TStrin+8i!t.Create;

    %omeArquivoSaida :# ,ncludeTrailin+Pat$*elimiter(

    EdPa!taSaida.Te"t) &

    Format*ateTime('mmdd$$nn!!'/no0) &

  • 7/23/2019 merge no delphi.docx

    10/12

    '

  • 7/23/2019 merge no delphi.docx

    11/12

    %istagem 4& '"ento (n5T6%Tag do componente $age$roducer

    procedureTFrmPrincipal.Pa+eProducer9T8Ta+(Sender: TObject; Ta+:

    TTa+;

    constTa+Strin+: Strin+; Ta+Param!: TStrin+!; var7eplaceTe"t:

    Strin+);

    begin

    if(Ta+Strin+ # 'titulo') then

    7eplaceTe"t :# EdTitulo.Te"t;

    if(Ta+Strin+ # 'u!uario') then

    7eplaceTe"t :# Ed=!uario.Te"t;

    if(Ta+Strin+ # 'email') then

    7eplaceTe"t :# EdEail.Te"t;

    if(Ta+Strin+ # 'data') then

    begin

    if(Ta+Param!.>alue!2'ormato'3 ?@ '') then

    7eplaceTe"t :# Format*ateTime(Ta+Param!.>alue!2'ormato'3/

    StrTo*ateTime(Ed*ataContato.Te"t))

    else

  • 7/23/2019 merge no delphi.docx

    12/12

    7eplaceTe"t :# Ed*ataContato.Te"t;

    end;

    end;

    3eito isto o nosso aplicati$o para gerar documentos R3s usando o componente

    .age.roducer est! pronto" -ocJ pode agora montar auele processo para gera*o

    de contratos usando este tipo de solu*o, e%tremamente simples"

    Lai%e o cdigo fonte com esta aplica*o pronta para uso"

    #eia mais em3 !erando documentos "TF com Tageroducer

    http344555&devmedia&com&$r4gerando+documentos+rtf+com+

    tpageproducer46789i:;;6c

    http://www.devmedia.com.br/gerando-documentos-rtf-com-tpageproducer/617#ixzz3nWd06XUchttp://www.devmedia.com.br/gerando-documentos-rtf-com-tpageproducer/617#ixzz3nWd06XUchttp://www.devmedia.com.br/gerando-documentos-rtf-com-tpageproducer/617#ixzz3nWd06XUchttp://www.devmedia.com.br/gerando-documentos-rtf-com-tpageproducer/617#ixzz3nWd06XUchttp://www.devmedia.com.br/gerando-documentos-rtf-com-tpageproducer/617#ixzz3nWd06XUchttp://www.devmedia.com.br/gerando-documentos-rtf-com-tpageproducer/617#ixzz3nWd06XUc