Un programme a parfois besoin d'accéder à des fichiers en lecture et en écriture (comme un traitement de texte par exemple). On peut pour faire cela, soit utiliser les commandes des contrôles de Visual Basic, soit programmer un enregisrement de fichier soi-même, ayant une extension propre au programme (comme .doc pour MSWord).
Fichiers texte :
Vous disposez de deux outils différents pour programmer un logiciel basé sur le traitement de texte : pour le traitement de texte de base, utilisez le contrôle textbox, en lui attribuant la valeur True à la propriété Multiline. Pour du traitement avancé, polices, taille, style, marges, exposant... préférez le contrôle RichText de microsoft.
TextBox :
Il n'y a pas de commande toute prête pour charger un fichier texte. De plus, la taille de celui-ci ne doit pas excéder 65000 caractères, sinon le contrôle génère une erreur. On doit donc utiliser une procédure, placée dans un menu par exemple, telle que :Placez sur une feuille nommée Form1 un contrôle Text1 multilignes ainsi qu'un contrôle Microsoft Common Dialog Control (disponible dans les composants (Ctrl+T)) que vous appelerez cd. Vous pouvez aussi ajouter un bouton de commande et lui associer ce code à sa procédure Click.
On Error Resume Next 'Si erreur, passer à la commande suivante.
Dim FileName As String 'Déclaration de la variable contenant le nom du fichier
Form1.cd.Filename = "" 'Boite de dialogue commune : remise à zéro du nom de fichier
Form1.cd.ShowOpen 'Affichage d'une boîte "Ouvrir"
If Err <> 32755 Then ' L'utilisateur a cliqué sur Annuler. Donc :
Exit Sub 'Terminer la procédure
End If
FileName = cd.Filename 'Enregistrement de la variable Filename
' Si le fichier dépasse 65 Ko, il est trop gros. Annuler l'opération.
If FileLen(FileName) > 65000 Then
MsgBox " Le fichier est trop grand pour être ouvert."
Exit Sub 'Sortir de la procédure
End If
Open Filename For Input As #1 'Ouvre le fichier
If Err Then
MsgBox "Impossible d'ouvrir le fichier: " + Filename
Exit Sub
End If
Screen.MousePointer = 11 'Pointeur de la souris en sablier.
Text1.Text = Input(LOF(1), 1) 'Chargement du contenu du fichier
Close #1 'Fermeture du fichier.
'Réinitialise le pointeur de la souris. Le Chargement est terminé...
Screen.MousePointer = 0RichText :
Beaucoup plus simple d'enregistrer un fichier avec un tel contrôle puisq'une commande est disponible pour cela. C'est pourquoi je le préconise même pour les petits programmes (qui peut le plus peut le moins) sauf si vous visez la taille minimale. Voici la commande d'un contrôle RichTextBox nommé rtb, pour ouvrir :CommonDialog.filename = ""
CommonDialog.ShowOpen
rtb.filename = CommonDialog.filenameAttention, à partir de Windows 2000, la commande est différente : il faut utiliser LoadFile :
rtb.LoadFile = CommonDialog.filename, rtfText
Voici la procédure d'enregistrement du document : on utilise SaveFile :
On Error Resume Next 'Pour gérer l'erreur en cas de clic sur Annuler
fMainForm.dlgCommonDialog.CancelError = True 'Génère une erreur si on clique sur annuler
fMainForm.dlgCommonDialog.Flags = &H208002 'Propriétés de la boîte de dialogue :
' nom long = &H200000
' style de l'explorateur = &H80000
' message pour ecraser un fichier existant = &H2
' On additionne les propriétés si on en veut plusieurs...
fMainForm.dlgCommonDialog.Filter = "Document texte riche (*.rtf)|*.rtf"
'Filtre de document, n'affiche que ceux d'extension .rtf
fMainForm.dlgCommonDialog.filename = "Fichier.rtf" 'nom par défaut'
fMainForm.dlgCommonDialog.ShowSave 'affiche la boîte de dialogue enregistrer sous
sFile = fMainForm.dlgCommonDialog.filename
'enregistre le nom de fichier complet dans sFile (ex : "C:\doc.rtf")
frmMain.ActiveForm.rtb.SaveFile (sFile) 'Enregistre le fichier grâce à SaveFile.Cette procédure est beaucoup plus simple que celle du contrôle textbox. De plus, la taille des fichiers n'est pas limitée à 65 Ko.
Fichiers images :
Vous pouvez faire du traitement d'image dans un contrôle PictureBox. Il possède des fonctions permettant l'ouverture et l'enregistrement de fichiers. Ainsi, utilisez la commande LoadPicture :
Picture1.Picture = LoadPicture([stringexpression])
Cet exemple charge dans le contrôle picture1 l'image dont le chemin est spécifié entre parenthèses :
Picture1.Picture = LoadPicture("C:\Windows\Clouds.bmp")
Vous pouvez ensuite utiliser le contrôle PictureBox, pour modifier l'image, ceci sera étudié plus tard, dans une leçon spéciale.
Pour enregistrer l'image du contrôle PictureBox, procédez comme suit :
SavePicture Picture1.Picture, "C:\Windows\Clouds.bmp"
Ainsi j'enregistre dans le fichier clouds.bmp l'image contenue dans le contrôle picture1, à l'aide d'une commande de visual basic.