Fórum Substituindo palavras no texto RICHEDIT #181243
10/09/2003
0
Como faço para substituir palavras no texto ???
Imagine assim: Tenho no richedit um conteúdo (texto), quero substituir determinada palavra em tempo de execução, o que eu digitar no edit, ele le o conteúdo do richedit e substitui
Rogério
Roger_prog
Curtir tópico
+ 0Posts
10/09/2003
Marconi
susbstituo determinados trechos com valores de campos da tabela.
Colocar no uses ActiveX, ComObj, Excel97;
procedure TFormCliFor.BitBtn22Click(Sender: TObject);
var
WinWord, Docs, Doc: Variant; diretorio, dirbase,
arquivo, bairro, cod:string;
begin
diretorio:=dProcessos.directory;
gbModelos.visible:=false;
if Propostas.findkey([cbModelos.text]) // cbModelos é um combobox com a lista de modelos.
// Propostas é uma tabela com o nome dos modelos em um campo de index e outro campo com o path completo dos arquivos modelo.
then cod:=Propostas[´cod´] // código da Proposta (não uso mais).
ShowMessage(´Erro de Processamento´+#13+´Código do Modelo não encontrado´);
Modelos.close;
Propostas.close;
exit;
end;
Arquivo:=emptystr;
arquivo:=inputbox(´Geração conforme Modelo´,´O Nome do Arquivo a ser gerado´,arquivo);
VelhoWord:=AdiquiraOuCrieObjeto(´Word.Basic´);
NovoWord :=AdiquiraOuCrieObjeto(´Word.Application´);
// Tornar o word visivel
NovoWord.Visible := True;
// Abrir arquivo para edição
Doc:= NovoWord.Documents.Open(´s:\dados\documentos\propostas\´+cbModelos.text);
Doc.SaveAs(diretorio + ´\´ + arquivo+´.doc´);
Doc.Close;
Doc:= NovoWord.Documents.Open(diretorio + ´\´ + arquivo+´.doc´);
// Substituir itens do arquivo por texto escolhido
if edtbairro.text<>null then bairro:=´ - ´+ edtbairro.text else bairro:=emptystr;
Doc.Content.Find.Execute(FindText := ´MClienteM´ , ReplaceWith := EditRazao.text);
Doc.Content.Find.Execute(FindText := ´MCliente1M´ , ReplaceWith := EditRazao.text);
Doc.Content.Find.Execute(FindText := ´MCliente2M´ , ReplaceWith := EditRazao.text);
Doc.Content.Find.Execute(FindText := ´MCliente3M´ , ReplaceWith := EditRazao.text);
Doc.Content.Find.Execute(FindText := ´MEndereçoM´ , ReplaceWith := EditEndereco.text);
Doc.Content.Find.Execute(FindText := ´MEndereço1M´ , ReplaceWith := EditEndereco.text);
Doc.Content.Find.Execute(FindText := ´MBairroM´ , ReplaceWith := bairro);
Doc.Content.Find.Execute(FindText := ´MBairro1M´ , ReplaceWith := bairro);
Doc.Content.Find.Execute(FindText := ´MCidade1M´ , ReplaceWith := editCidade.text);
Doc.Content.Find.Execute(FindText := ´MCidadeM´ , ReplaceWith := editCidade.text);
Doc.Content.Find.Execute(FindText := ´MEstado1M´ , ReplaceWith := editEstado.text);
Doc.Content.Find.Execute(FindText := ´MEstadoM´ , ReplaceWith := editEstado.text);
Doc.Content.Find.Execute(FindText := ´MCEPM´ , ReplaceWith := editCEP.text);
Doc.Content.Find.Execute(FindText := ´MCEP1M´ , ReplaceWith := editCEP.text);
Doc.Content.Find.Execute(FindText := ´MContatoM´ , ReplaceWith := EditContato.text);
Doc.Content.Find.Execute(FindText := ´MPropostaM´ , ReplaceWith := Copy(pasta,1,12));
Doc.Content.Find.Execute(FindText := ´MProposta1M´ , ReplaceWith := Copy(pasta,1,12));
Doc.Content.Find.Execute(FindText := ´MProposta2M´ , ReplaceWith := Copy(pasta,1,12));
Doc.Content.Find.Execute(FindText := ´MCNPJM´ , ReplaceWith := EditCnpj.text);
Doc.Content.Find.Execute(FindText := ´MIEM´ , ReplaceWith := EditEstadual.text);
Doc.Content.Find.Execute(FindText := ´MDDDM´ , ReplaceWith := Editddd.text);
Doc.Content.Find.Execute(FindText := ´MDDD1M´ , ReplaceWith := Editddd.text);
Doc.Content.Find.Execute(FindText := ´MTelefoneM´ , ReplaceWith := Editfone.text);
Doc.Content.Find.Execute(FindText := ´MFaxM´ , ReplaceWith := Editfax.text);
if EditEmail.text<>null then bairro:=Emptystr else bairro:= ´Email: ´+EditEmail.text; {aproveitando a variavel bairro para email}
Doc.Content.Find.Execute(FindText := ´MEmailM´ , ReplaceWith := bairro);
end;
Doc.Save;
if Application.MessageBox(´Deseja Imprimir este documento?´,´Confirmação´,MB_ICONQUESTION+MB_YESNO)=MRYes then
Doc.PrintOut(false);
// Fechar
NovoWord.Quit;
end;
Note que ele busca MClienteM (que esta no modelo) e substitui pelo Nome do Cliente. Depois procura MCliente1 e faz a mesma coisa. No entando voce pode substituir apenas uma vez o cliente e se utilizar de links dinâmicos internos para copiar para as outras posilções.
Espero ter dado uma idéia.
Marconi
Gostei + 0
10/09/2003
Fhpita
Gostei + 0
10/09/2003
Joilson_gouveia
723 - Pesquisa de um string mudando o texto
--------------------------------------------------------------------------------
Coloque no OnChange do Edit1 o Código Abaixo
--------------------------------------------------------------------------------
var
i : integer;
aux: integer;
begin
aux:=1;
for i:=0 to Length(RichEdit1.Text) do
begin
if (Copy(RichEdit1.Text,i+1,length(Edit1.Text)) =
Edit1.Text) then
begin
RichEdit1.SelStart := aux;
RichEdit1.SelLength := i-aux+1;
RichEdit1.SelAttributes.Color := ClBlack;
RichEdit1.SelAttributes.Style := [];
RichEdit1.SelStart := i;
RichEdit1.SelLength := Length(Edit1.text);
RichEdit1.SelAttributes.Color := ClRed;
RichEdit1.SelAttributes.Style := [fsBold];
aux := i + length(Edit1.Text);
end;
end;
RichEdit1.SelStart := aux;
RichEdit1.SelLength := i-aux+1;
RichEdit1.SelAttributes.Color := ClBlack;
RichEdit1.SelAttributes.Style := [];
end;
--------------------------------------------------------------------------------
A dica acima foi enviada por Wendel Bezerra Silva
Para usar vc deve colocar um Edit e um Richedit num form
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)