![]() |
| Forums | Contact | Newsletter | Plan du site | Accueil |
|
Rechercher er remplacer dans un RichEditDelphi 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.
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)
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;
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...
© Cédric MICHEL - conseil & création ( 2003 / 2008 ) - |