Rechercher et marquer du texte dans un Richedit

function SearchForText_AndSelect(RichEdit: TRichEdit; SearchText: string): boolean;
var
startpos, position, endpos: integer;

begin
startpos := 0;
with RichEdit do
begin
endpos := Length(RichEdit.Text);
Lines.BeginUpdate;
while FindText(SearchText, startpos, endpos, [stMatchCase])<>-1 do
begin
endpos := Length(RichEdit.Text) - startpos;
position := FindText(SearchText, startpos, endpos, [stMatchCase]);
Inc(startpos, Length(SearchText));
SetFocus;
SelStart := position;
SelLength := Length(SearchText);
end;
Lines.EndUpdate;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
SearchForText_AndSelect(richedit1,'Some Text');
end;
Commentaire des internautes
avatar
Roger HENRI le 18/10/2008
Je ne suis pas sûr que cette procédure marche toujours parfaitement à cause du mot
"selstart" qui, chez moi au moins, paraît ętre capricieux.

Quand je veux lire sa valeur, je me suis aperçu qu\'au lieu d'écrire:
s:=selstart
j'étais obligé d'écrire:
s:=selstart + caretpos.y

Sur la 1ère ligne, on ne voit pas la différence mais plus on descend dans l'éditeur,
plus les choses s'aggravent.

Mais c'est peut-ętre dû au fait que j'ai voulu faire un éditeur Unicode avec Delphi 7
qui n'est pas fait pour ça. Les choses iront peut-ętre mieux avec Delphi 2009.
Ajouter un commentaire
Pseudo
Adresse email
Site internet (optionnel)
Votre commentaire
Fiche de l'article
Mise a jour18/10/2008
VisualisationVu 1491 fois
PublicInternaute zz
CategorieDelphi - Trucs et astuces - Objet
Auteur de l'article
SwissDelphiCenter SwissDelphiCenter
connecté le 02/11/2011
329 articles dans la section
Contacter l'auteur