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...