[firebase-br] off topic: mala direta
Eduardo Bahiense
eduardo em icontroller.com.br
Dom Set 30 16:47:27 -03 2007
[...]
> texto de forma padrão: ex:
> &nome&
> &endereço&
> ou
> <<nome>>
> <<endereço>>
>
> mandar sua aplicação ler o texto rtf para uma variável de texto, ou ums
> stringlist e usar as funções do próprio Delphi (o help é rico nelas).
No caso de Rtf tem que fazer via FindText.
A procedure abaixo demonstra como fazer se você passar uma lista do tipo
ReplaceList.Add('Nome=José Antônio da Silva');
ReplaceList.Add('Endereco=Rua x, No Tal');
ou ainda
ReplaceList.Values['Nome'] := 'José Antônio da Silva'
ReplaceList.Values['Endereco'] := 'Rua x, No Tal'
No caso, ela procura <Nome> e substitui por José Antônio da Silva e
assim sucessivamente
procedure DoReplaceRichFields(RichEdit: TRichEdit; ReplaceList:TStrings);
var FoundAt, i, StartPos, EndPos, nSize:integer;
ToSearch, ToReplace:String;
begin
EndPos := RichEdit.GetTextLen;
for i := 0 to ReplaceList.Count-1 do
begin
StartPos := 0;
FoundAt := 0;
while FoundAt >= 0 do
begin
ToSearch := '<'+ReplaceList.Names[i]+'>';
ToReplace := ReplaceList.ValueFromIndex[i];
nSize := Length(ToSearch);
FoundAt := RichEdit.FindText(ToSearch,
StartPos, EndPos, [stMatchCase]);
if FoundAt >= 0 then
begin
RichEdit.SelStart := FoundAt;
RichEdit.SelLength := nSize;
RichEdit.SelText := ToReplace;
StartPos := FoundAt+nSize;
end;
end;
end;
end;
[]s Eduardo
Mais detalhes sobre a lista de discussão lista