Delphi vous permet de créer facilement un éditeur de texte grâce à son composant RichEdit. Il est néanmoins nécessaire de créer les procédures qui permettront à l'utilisateur d'effectuer des opérations (voir procédures pour un composant RichEdit).
Après avoir étudié les propriétés utiles pour la suite, nous verrons ici comment Rechercher / Rechercher et remplacer du texte dans le composant.
| Les propriétés utiles du composant |  | 
Le composant RichEdit dispose d'une fonction très utile à la recherche dans le texte qu'il contient. Il s'agit de la fonction Findtext pour laquelle il faudra indiquer certains paramètres...
Findtext(SearchStr, StartPos, Length, Options)
| Menu rechercher |  | 
procedure TForm1.Bouton1Click(Sender: TObject) ;
Var pos:integer;
begin
// Effectue une recherche de texte dans tout le composant
pos := RichEdit1.FindText('texte',0,length(RichEdit1.Text),[])
// Idem mais tient compte de la casse (ne retourne pas Texte)
pos := RichEdit1.FindText('texte',0,length(RichEdit1.Text),[stMatchCase])
// Effectue une recherche de texte dans la sélection
pos := RichEdit1.FindText('texte',RichEdit1.SelStart,RichEdit1.SelLength,[])
// Idem mais on cherche le mot texte entier (ne retourne pas contexte)
pos := RichEdit1.FindText('texte',RichEdit1.SelStart,RichEdit1.SelLength,[stWholeWord])
// Si une occurrence a été trouvée, pos nous donnera sa position
// On peut donc maintenant sélectionner le texte trouvé dans le document :
if (pos<>-1) then begin // Vérifie si un texte a été trouvé
  RichEdit1.SelStart := pos; // Début de la sélection
  RichEdit1.SelLength := Length('texte'); // étendue de la sélection
end;
end;
| Menu rechercher et remplacer |  | 
Puisqu'il n'existe pas une telle fonction par défaut, on va utiliser la fonction de recherche et remplacer le(s) occurrence(s) trouvé(es). Nous allons donc créer une procédure spécifique que l'on va d'abord déclarer (parcourez le début du fichier, les déclarations de procédure se font juste avant « private » ). Ajouter :
procedure remplacer (cherche, remplace: string);
La procédure est déclarée, nous allons maintenant l'ajouter (sous « implementation » )
procedure TForm1.remplacer (cherche, remplace: string);
var debut, fin : integer; oldCursor : TCursor;
begin
  oldCursor := Screen.Cursor; // On enregistre le curseur utilisé
  Screen.Cursor := crHourglass; // On le remplace par le sablier
  with RichEdit1 do begin // On utilise le composant RichEdit
    debut := 0; // On commence la recherche du début
    fin := length(Text); // On la termine à la fin du texte
    debut := FindText(cherche, debut, fin, []); // Premier terme
    while debut <> -1 do begin // Boucle, jusqu'à la fin
	  SetFocus; // On donne la focalisation au composant
	  SelStart := debut; // On sélectionne le premier terme trouvé
	  SelLength := length(cherche) ; // Fin de la sélection
	  SelText := remplace; // On remplace le terme trouvé
	  debut := FindText(cherche, debut + length(remplace), fin, []);
      // ici on relance la recherche pour les autres termes
	end;
  end;
  Screen.Cursor := oldCursor; // Terminé. On remet le curseur.
end;
Ensuite il ne vous reste plus qu'à utiliser la procédure (ici lors d'un clic sur Bouton1)
procedure TForm1.Bouton1Click(Sender: TObject) ;
begin
remplacer('cherche', 'remplace');
end;
Des questions ? Rejoignez nous sur le forum...