![]() |
![]() |
|
|
|||||||
|
Partie 1
Partie 2
| Lecture d'un fichier texte |
La lecture d'un fichier texte est extrêmement simple. Nous allons utiliser un "StreamReader" pour ouvrir le fichier et le lire entièrement.
Nous allons donc créer la fonction "ChargerFichier", privée à "FormMain", qui prendra un nom de fichier en paramètre et qui nous retournera True si l'opération a fonctionné ou False dans le cas contraire. Cette fonction mettra à jour la zone de saisie du programme, stockera le nom du fichier en cours d'édition, et l'affichera dans la zone de statut.
Code de la fonction de chargement de fichier texte :

Si le fichier ne peut être ouvert, ou si la lecture des données provoque une erreur, une boîte de dialogue est affichée, expliquant l'erreur, et la fonction retourne False.
Si le fichier est correctement lu, la zone de texte est mise à jour avec son contenu, et la fonction retourne True.
| Sélection d'un fichier |
La tradition veut que sous Pocket PC les fichiers que l'on peut sélectionner se trouvent dans le dossier spécial "\My Documents". Ceci fait partie des spécifications du standard Pocket PC.
Le Compact Framework propose un dialogue de sélection de fichiers. Comme le CF suit la tradition à la lettre, ce dialogue ne permet que de sélectionner des fichiers dans le dossier "\My Document" et ne permet pas d'en sortir. Nous verrons plus tard comment contourner cette "limitation". Pour le moment nous allons nous aussi suivre la règle.
![]() |
Le contrôle permettant de choisir un fichier est "OpenFileDialog", vous pouvez le trouver dans la toolbox. Instanciation automatique ou manuelle ? Lorsque vous utilisez le designer de form pour créer votre interface, vous "posez" des contrôles sur des fenêtres. Le designer de son coté s'occupe d'instancer et de placer tous les objets que vous avez placés. C'est l'instanciation automatique. |
Pour la plupart des contrôles c'est très pratique (c'est certain), par contre pour d'autres, il semble plus simple de les instancier à la main au moment où on en a besoin. C'est ce que nous allons faire avec le dialogue de sélection de fichier.
Avant toute chose, nous allons créer deux variables privées à "FormMain". L'une pour stocker le nom du fichier en cours d'édition et l'autre pour mémoriser le fait qu'une modification a été effectuée sur le texte depuis son chargement :
| Private pFichierEnCours As String Private pFlagModification As Boolean |
Puis nous allons créer la méthode "OuvrirFichier" qui permettra à l'utilisateur de sélectionner un fichier, puis le chargera :

Le dialogue de sélection est instancié puis sa propriété "Filter" est mise à jour. Le dialogue de sélection affichera par défaut les fichiers dont l'extension sera ".txt" ou alors tous les fichiers.
Le dialogue de sélection est ensuite affiché (ShowDialog). La valeur retournée par cette méthode indique l'opération effectuée par l'utilisateur. Si la valeur retournée est "OK" (Windows.Forms.DialogResult.OK) c'est que l'utilisateur a choisi un fichier, sinon c'est qu'il a abandonné l'opération. On n'effectue donc le chargement que si "OK" est retourné.
On utilise alors notre superbe fonction "ChargerFichier" a qui on passe en paramètre le fichier choisi par l'utilisateur (propriété "Filename" du dialogue de sélection). Si cette fonction réussi, on garde la trace du nom du fichier en cours d'édition dans la variable "pFichierEnCours", on initialise le flag de modification "pFlagModification" (on vient de charger le fichier, donc rien n'a encore été modifé), et on affiche dans la zone de statut le nom du fichier, juste le nom sans le chemin complet.
A la fin, la méthode "Dispose" du dialogue de sélection est invoquée, afin de libérer les ressources système. Si vous oubliez de faire vous allez vous retrouver avec une belle fuite de mémoire.
Il faut maintenant appeler cette méthode lorsque le menu "Ouvrir" est activé par l'utilisateur. Pour ce faire, il faut répondre à l'événement "Click" du menu "MEN_Ouvrir" de "FormMain".
Pour répondre à l'événement "Click" il faut demander à Visual Studio de créer la méthode qui sera invoquée lorsque qu'il sera déclenché. Pour ça il faut utiliser la fenêtre des propriétés. Faites apparaître le designer de "FormMain" et sélectionnez la. Faites ensuite apparaître la fenêtre des propriétés qui de ce fait affiche les propriétés de "FormMain".
Dans la fenêtre des propriétés, selectionnez le menu "MEN_Ouvrir" :

Puis activez la sélection des événements de "MEN_Ouvrir" en cliquant sur l'icône suivante :

Ce qui permet de lister tous les événements de cet objet. Il suffit ensuite de double cliquer sur l'événement "Click" pour que Visual Studio nous crée automatiquement la méthode liée à cet événement. Dans le code il suffit maintenant d'appeller notre méthode "OuvrirFichier" :
A partir de maintenant, lorsque l'utilisateur choisi le menu "Ouvrir", le programme lui permettra de sélectionner (dans le dossier \My Documents) le fichier à charger, et le chargera :

| Ecriture d'un fichier texte |
La fonction inverse du chargement de fichier est l'enregistrement. Nous allons tout de suite implémenter cette fonctionnalité, pendant qu'on est dans les fichiers. Nous allons donc créer la fonction "Enregistrer" qui fonctionnera sur le même principe que "ChargerFichier". On lui passe en paramètre le nom du fichier à enregistrer et elle nous retourne True si tout se passe bien et False dans le cas contraire. C'est le contenu de la zone d'édition qui est enregistré dans le fichier.
On utilise un objet de type "StreamWriter" pour effectuer l'enregistrement, avec une réaction aux différents problèmes qui peuvent survenir :

| Enregistrer et enregistrer sous... |
Lors de l'enregistrement deux cas de figures peuvent survenir. Le premier est que le fichier n'a pas encore de nom, auquel cas, c'est une opération "Enregistrer sous..." qui doit être effectuée car l'utilisateur devra choisir un nom pour le nouveau fichier, ou éventuellement, le nom d'un fichier déjà existant qui sera remplacé. Si le fichier à enregistré est déjà identifié l'enregistrement direct peut être réalisé.
Il faut donc créer aussi la méthode "EnregistrerSous" qui permettra à l'utilisateur de choisir le nom du nouveau fichier. Voici son code :

Cette méthode retourne True si tout c'est bien passé (nom du fichier choisi par l'utilisateur et enregistrement correctement effectué), et False dans le cas contraire (toujours le même principe). Je vous laisse analyser le code de cette fonction qui en soit n'est pas très compliqué.
Nous avons maintenant toutes les pièces pour répondre aux menus "Enregistrer" et "Enregistrer sous..." de l'application. Voici le code de l'événement "Click" de ces deux menus :

C'est terminé pour cette seconde partie.
Dans la 3ème partie nous verrons comment utiliser le presse papier pour copier/couper/coller du texte.
|
|