Les boîtes de Recherche et Recherche / Remplacement
Ce sont les boîtes les plus compliquées à utiliser. Tout d’abord, ce sont les seules pour lesquelles le comportement n’est pas modal et binaire :
En effet, elles restent ouvertes tant que l’utilisateur appuie sur le bouton « Suivant ». En outre elles n’ont pas de bouton « Ok », le seul moyen permettant de les fermer consiste à utiliser le bouton « Annuler ».
En outre, elles n’effectuent pas directement la recherche ! Elles ne permettent que de saisir le texte à rechercher (ou le texte de remplacement) et de sélectionner des options. Le corps de la recherche reste à la charge du programmeur.
Les options de ces boîtes de dialogue sont aisées à comprendre, elles conditionnent l’affichage des diverses possibilités et le résultat de la sélection de l’utilisateur.
Le résultat de la boîte comprend, entre autres : la recherche de mots complets (frWholeWord), la prise en compte de la casse (frMatchCase), le sens et la portée de la recherche (frDown, frHideUpDown, etc.) .
Par défaut, les boîtes s’affichent avec l’étendue totale de leurs possibilités. Toutefois, l’utilisateur peut les limiter en activant des options dont le nom comprend Hide ou Disable, par exemple frDisableMatchCase désactive la case permettant relative à la casse des mots recherchés.
Comme la recherche elle même, la prise en compte des options de recherche est entièrement à la charge du programmeur. On ne répètera jamais assez que ces boîtes ne sont que des outils de saisie des options !
La boîte de recherche simple fournit un événement nommé OnFind notifiant au programmeur l’appui sur la touche « Suivant » de la boîte. La boîte de remplacement lui ajoute un événement nommé OnReplace.
Un exemple d’utilisation consiste à utiliser ces événements en conjonction avec la méthode FindText d’un composant TRichEdit.
Exercice sur les boîtes de dialogue communes ( )
Enoncé
Nous vous proposons de tester l’utilisation des différentes boîtes de dialogue sur le texte contenu dans un composant TRichEdit. Ce composant est très proche de TMemo dans le sens où il reprend la plupart de ses fonctionnalités en ajoutant celle de lire un fichier .rtf et de le formater correctement. Malheureusement, il ne propose pas ni propriété ni méthode permettant d’accéder à la mise en forme de chaque caractère. En revanche, il est possible de formater globalement le texte.
Les fonctionnalités suivantes devront être accessibles à partir d’un menu :
Charger le texte du mémo (méthode LoadFromFile de la propriété Lines) à partir d’un fichier sélectionné à l’aide d’une boîte commune d’ouverture.
Les extensions possibles en lecture sont :
.obc (Fichier de type OBC – en fait du texte !) par défaut
Introduction à C++ Builder 25
.txt (Fichier de type texte)
.cpp, .h et .hpp (Fichiers de type C++ Builder)
Sauvegarder le texte du mémo (méthode SaveToFile de la propriété Lines) dans un fichier sélectionné à l’aide d’une boîte commune de sauvegarde. Seule l’extension .obc est disponible à la sauvegarde
Manipuler l’apparence visuelle du texte (propriété Font du mémo)
Changement de couleur (boîte de sélection de couleurs)
Changement de police (boîte de sélection de fonte)
Effectuer des recherches et des opérations de recherche / remplacement grâce aux boîtes idoines.
Quitter l’application !
Rien dans cet exercice n’est compliqué ! il y a juste beaucoup de code à écrire …