Le premier site francophone dédié au développement Pocket PC

Calpin, votre premier programme en VB.NET (partie 3)
Auteur
Stéphane Sibué
Date 19 décembre 2002
 
   


Partie 1
Partie 2
Partie 3
Partie 4

Continuons ensemble cette visite du code de Calpin.

Standardisons l'affichage des erreurs

Pour gagner du temps, nous allons nous écrire une petite méthode qui affiche un message d'erreur avec le détail de l'exception :

Private Sub DisplayError(ByVal wMessage As String, ByVal ex As Exception)             
 Dim wMsg As String
 wMsg = wMessage & vbCrLf & vbCrLf
 wMsg = wMsg & "Description: " & ex.Message
 MsgBox(wMsg, MsgBoxStyle.Critical, "Calpin")
End Sub

Enregistrer un fichier

Bon, le moment est venu d'enregistrer ce qui à été tapé dans la zone de saisie.

Le principe est simple. Nous devons enregistrer le contenu de la zone de saisie dans le fichier dont le chemin est stocké dans la variabe globale "FichierEnCours". Si cette variable est vide c'est que nous sommes parti de rien et que nous devons avant toute chose choisir un nom pour notre contenu.

Nous allons pour commencer créer une méthode qui enregistre le contenu de la zone de saisie dans un fichier passé en paramètre :

Private Sub EnregistrerFichier(ByVal wFichier As String)               
 Dim file As System.IO.StreamWriter
 Try
  file = New System.IO.StreamWriter(wFichier)
 Catch ex As Exception
  DisplayError("Impossible d'ouvrir le fichier !", ex)
 Finally
  If Not file Is Nothing Then
   Try
    file.WriteLine(TXT_Texte.Text)
   Catch ex As Exception
    DisplayError("Impossible d'écrire dans le fichier !", ex)
   Finally
    file.Close()
    FichierEnCours = wFichier
   End Try
  End If
 End Try

End Sub

Dans cette méthode, nous utilisons cette fois ci un objet de type "System.IO.StreamWriter". La structure générale de cette méthode est la même que celle qui permet le chargement d'un fichier. Nous utilisons aussi une gestion des erreurs de type "Try... Catch... Finaly".

Nous avons maintenant de quoi écrire la méthode "EnregistrerSous" qui va demander à l'utilisateur de choisir un nom au fichier que nous allons enregistrer. Nous allons mettre en oeuvre le contrôle que nous avons appelé "SaveDialog" :

Private Sub EnregistrerSous()               
 Dim wRetval As DialogResult
 With SaveDialog
  .Filter = "Fichiers texte|*.txt|Fichiers HTML|*.htm|Tous les fichiers|*.*"
  .FileName = FichierEnCours
  wRetval = .ShowDialog()
 End With

 If wRetval = DialogResult.OK Then EnregistrerFichier(SaveDialog.FileName)
End Sub

Maintenant que nous avons les pièces du lego pour "Enregistrer" et "Enregistre sous" un fichier nous pouvons renseigner les entrées du menu de l'application.

On renseigne les menus

Nous allons maintenant taper le code concernant les menus "Enregistrer" et "Enregistrer sous" :

Private Sub MEN_EnregistrerSous_Click(ByVal sender As System.Object, _ 
  ByVal e As System.EventArgs) Handles MEN_EnregistrerSous.Click                
  EnregistrerSous()
End Sub
Private Sub MEN_Enregistrer_Click(ByVal sender As System.Object, _
  ByVal e As System.EventArgs) Handles MEN_Enregistrer.Click
 If FichierEnCours = "" Then
  EnregistrerSous()
 Else
  EnregistrerFichier(FichierEnCours)
 End If

End Sub

Conclusion de cette troisième partie

Et voilà, nous savons charger et enregistrer notre zone de texte et mettre en oeuvre le contrôle de dialogue standard d'enregistrement de fichier.

Dans la 4ème et dernière partie nous allons nous appliquer à gérer le SIP la taille de l'écran par rapport au fonctionnement du SIP, et aussi charger dans le fond d'une fenêtre une image (pour créer un splash screen au démarrage), nous en profiterons pour découvrir une astuce qui permettra de récupérer le chemin du programme (l'équivalent du App.Path de eVB qui n'existe pas en VB.NET).

N'oubliez pas qu'en cas de problème, ou si vous avez des questions, le forum .NET de CodePPC est à votre disposition.

Stéphane Sibué

 

 
   

Copyright 2001-2004 - Tous droits réservés
Toutes les autres marques et produits présents dans ces pages sont la propriété exclusive de leurs sociétés respectives.