Visual Basic

154
L' environnement de développement L' environnement de développement intégré de Visual Basic (IDE, Integred Development Environment) peut être personnalisé, pour ce qui concerne sa présentation et son mode de fonctionnement. Il est toutefois préférable avant de commencer votre premier projet, d' effectuer quelques réglages. 1)- Dans la barre de menu, cliquez sur l' étiquette "Outils", puis sur "Options", dans l' onglet "Editions" vous cochez toutes les cases à l' exception de "Affichage du module complet" et dans la largeur de la tabulation vous saisissez la valeur "2". 2)- Sélectionnez l' onglet "Général", vous modifiez les valeurs des unités de la grille à "30" Sélectionnez l' onglet "Ancrage" et désactivez toutes les coches des cases à cocher. Lorsque vous serez plus à l' aise avec votre environnement de travail, vous pourrez ajuster les options pour les personnaliser à votre goût. Nous verrons plus tard d' autres réglages intéressants. Votre premier projet VISUAL BASIC Etape1 : Création de l' interface La plupart des applications réalisées avec Visual Basic comportent au moins une feuille. Les feuilles (Forums en Anglais) constituent les éléments de base de l’interface utilisateur. Elles forment les conteneurs (containers) recevant des

description

Cours de visual Basic en francais.

Transcript of Visual Basic

Page 1: Visual Basic

L' environnement de développementL' environnement de développement intégré de Visual Basic (IDE, Integred Development Environment) peut être personnalisé, pour ce qui concerne sa présentation et son mode de fonctionnement.Il est toutefois préférable avant de commencer votre premier projet, d' effectuer quelques réglages.1)- Dans la barre de menu, cliquez sur l' étiquette "Outils", puis sur "Options", dans l' onglet "Editions" vous cochez toutes les cases à l' exception de "Affichage du module complet" et dans la largeur de la tabulation vous saisissez la valeur "2".2)- Sélectionnez l' onglet "Général", vous modifiez les valeurs des unités de la grille à "30"

Sélectionnez l' onglet "Ancrage" et désactivez toutes les coches des cases à cocher.Lorsque vous serez plus à l' aise avec votre environnement de travail, vous pourrez ajuster les options pour les personnaliser à votre goût. Nous verrons plus tard d' autres réglages intéressants.

Votre premier projet VISUAL BASICEtape1 : Création de l' interfaceLa plupart des applications réalisées avec Visual Basic comportent au moins une feuille. Les feuilles (Forums en Anglais) constituent les éléments de base de l’interface utilisateur.Elles forment les conteneurs (containers) recevant des contrôles, comme des boutons, des zones de textes, des cases à cocher, etc...Qui peuvent être adaptés en fonction de vos aptitudes créatrices.Lorsque vous avez démarré Visual Basic, la fenêtre de l' éditeur de feuille présente une feuille vide nommée Form1(Nom que vous retrouvez dans la barre de titre).

Définir la taille de la feuilleIl y a plusieurs façons de créer notre feuille, la plus facile est de réaliser une image et de l’incorporer à la feuille, l’autre façon est de composer pièce par pièce notre présentation et c' est cette option qui retiendra notre faveur. Le résultat est le même à la différence prêt que la solution avec l'image nous consommera un peu plus de mémoire. La taille de la feuille sera fonction des éléments que nous allons y insérer et nous allons lui donner une taille approximative tout en sachant que nous pourrons éventuellement la

Page 2: Visual Basic

modifier.En regardant la feuille (Form1) vous constatez des petits carrés noirs situés au centre de chaque coté de la feuille. C’est ce que l’on appelle des poignées qui vous permettent en les étirant de modifier les dimensions respectives de chaque côté de la feuille.Vous avez les possibilités de contrôler à tout moment les dimensions que vous accordez à votre feuille par l’intermédiaire du compteur situé dans la barre d’outils.Nous lui donnerons comme valeur les dimensions de : 6195 x 3840.Pour modifier la taille de cette fenêtre, utilisez le pointeur de la souris.Placez-le sur le coin inférieur droit de la fenêtre (ce qui a pour effet de le transformer en une double flèche oblique), appuyez sur le bouton gauche de la souris, déplacez le pointeur jusqu'à ce que la fenêtre atteigne les dimensions souhaitées, puis relâchez la souris et contrôlez les dimensions affichées.

Nous venons de modifier les valeurs initiales de la feuille manuellement, nous aurions pu le faire également par l’intermédiaire de la fenêtre de propriétés.

Ca se complique, qu’est ce que les propriétés ?Chaque objet en Visual Basic dispose d’un jeu de caractéristiques, appelées propriétés, qui lui sont associées. Ces propriétés, listées dans la fenêtre Propriétés, contrôlent l’apparence et le comportement de l’objet.

Visual Basic attribue une valeur par défaut aux propriétés de chaque objet. Ces valeurs peuvent être modifiées pendant la conception du programme ou en mode actif de l' application par programmation.Nous ne nous intéresserons pour l' instant qu' aux propriétés que nous allons utiliser.Je vous conseille néanmoins de faire des essais pour vous familiariser avec toutes les propriétés de chaque objet. 

Pour afficher la fenêtre de propriétés, cliquez depuis la barre d' outils sur l' icône qui représente une main qui tient un fichier(le 2ème à partir de la gauche) ou appuyez sur la touche de fonction F4 de votre clavier.

Ouvrons la feuille de propriétés :

Page 3: Visual Basic

Dans le champ de saisie en haut de la feuille vous lisez le nom de la feuille auxquelles se rapportent les propriétés. Il s’agit dans cet exemple de la feuille Form1.Si j’insiste sur ce point c’est que tout simplement lorsque vous aurez un programme qui contiendra une dizaine de feuilles, il faudra afficher précisément la feuille dont les propriétés sont à modifier. Ne pas se tromper de feuille!Nous garderons l'option représentée par l’onglet "Alphabétique"La première propriété à modifier est le nom 

Name :     Form1 sera remplacée par : frmAbout(Nom de la feuille)Backcolor : en cliquant sur le carré grisé nous ouvrons la palette et nous choisissons la couleur de fond souhaitée. (Noire)BorderStyle : 2 - Sizable c’est à dire modifiable par l’utilisateur sera remplacée par : 1 - fixe l’utilisateur ne pourra pas modifier les dimensions de la feuille.Caption : Form1 sera remplacé par : "A propos de... ". Ce champ de saisie correspond à l’écriture qui se trouve dans la barre de titre de votre feuille.Icon : (Icon) permet d’insérer une icône, n'importe quelle icône fera l’affaire pourvu qu’elle ait une extension "*.ico"Icône : Fichier Image qui comporte une extension ico.Height : 3840 - Dimensions en hauteur de la feuilleWidth : 6195 - Dimensions en largeur de la feuilleUne nouveauté par rapport aux premières versions de VB le champ de saisie en bas de la feuille de propriétés qui vous indique les caractéristiques de la propriété sélectionnée.Sur cet exemple nous avons l’explication de la propriété captionChaque propriété à une valeur attribuée par défaut et qui est modifiable au choix du programmeur.Cette modification peut se faire en cours de programmation comme nous le verrons plus loin.

La propriété Caption vous permet d'affecter une touche d'accès rapide à un contrôle. Dans la légende, tapez le signe & juste avant le caractère que vous souhaitez désigner comme touche d'accès rapide. Ce caractère apparaîtra souligné. Il vous suffira d'appuyer sur la touche ALT et sur le caractère souligné pour placer le focus sur ce contrôle. (nous reparlerons du focus en temps utile)

Page 4: Visual Basic

    La boîte à outils

Pour sélectionner un objet de la boîte à outils, déplacez le curseur de la souris sur l’élément que vous voulez choisir, une info bulle apparaît et vous indique le nom de l’objet sur lequel vous pointez la souris.

Nous allons positionner sur la feuille les autres objets nécessaires à la présentation de notre feuille, à savoir :Un objet Label(Label1) qui nous servira de titre, un objet Image(Image1) pour insérer votre logo sous forme d' icône, un second objet Label(Label2) qui indiquera la version du programme, un autre Label(Label3) qui indiquera l' usage du programme, une autre image(Image2) pour insérer le logo sous forme d' image de notre structure, un trait récupéré dans la boîte à outils, un Label(Label4) devant nous donner le nom du programme ainsi que son copyright, deux boutons(CommandButton1 et 2) un autre Label(Label4) qui servira d' étiquette, et un dernier Label(Label5) qui contiendra notre numéro de série. 

Nous allons positionner sur l’interface de travail les objets nécessaires à la présentation de notre feuille, à savoir :Label1 positionné en haut à gauche de la feuille, propriétés :Height :390  Width : 4630 Caption : Help System Restorer ou le nom de votre choixBackColor : Choisir la couleur NoireForeColor : Choisir la couleur RougeCes deux dernières propriétés seront identiques à tous les objet positionnés dans cette feuille.

Label2 positionné juste en dessous de la première étiquette comprendra dans sa propriété :Caption : Version 1.0Je vous laisse le soin de lui donner les dimensions adéquates

Label3 sera placé en dessous de Label2 et aura comme propriété :Caption : Description de l' applicationSuivi de Label4 avec comme propriété :Caption : Programme de sauvegarde de la base de registre, ou descriptif selon votre choix.

L’objet Image1 sera placé juste à coté de Label1 et dans son prolongement.Les propriétés dimensionnelles s' ajusteront aux dimensions de l' imageNous insérerons le fichier Image en cliquant sur la propriété Picture qui a pour effet d' ouvrir une boîte de dialogue de Windows qui vous permet de charger l'image de votre choix au format Bmp, Gif ou wmf.

Si vous n' avez pas de "Logos" sous la main téléchargez les images et l' exemple de l'application ici 

Page 5: Visual Basic

Nous insérerons un objet  Line (trait) en dessous de l’objet Image1, sans commentaires

Label5 positionné en dessous du trait aura comme propriété :Caption : Help System Restorer[Savereg] Copyright © 2001 Tous droits réservés Gilbert Miralles 30980 Langlade FranceNdl : Il est bien entendu que vous pouvez modifier cette saisie en la remplaçant par vos propres coordonnées.Le sigle Copyright "©" s’obtient en appuyant sur les touches Alt du clavier alphanumérique + 0169 du clavier numérique.Il ne nous reste plus qu’à positionner les deux derniers "Label" qui restent, à savoir :

Label6 qui est une étiquette qui aura comme propriété :Caption :Sérial N° :

Label7 qui sera juxtaposé à l' étiquette Label6 devant recevoir la valeur du numéro de série de votre réalisation.

Pour terminer, nous positionnons les deux boutons qui auront comme propriété :CommandButton1Caption : OKCommandButton2Caption : Infos Systeme...Vous leur donnez comme dimensions une valeur en rapport avec la présentation de votre feuille.

Vous pouvez agrémenter la présentation en modifiant la propriété "color" de certains textes.La prochaine leçon sera réservée à l’écriture du code. 

Page 6: Visual Basic

L'environnement de programmation de   Visual Basic

  Faisons connaissance avec le langage de programmation objet 

Visual Basic, est en parfaite harmonie avec Windows. Le développement d'une application passe par les étapes suivantes : Dessin de l'interface d'utilisation, c'est à dire les fenêtres et leur constituants, à l'aide d'un outil interactif de dessin, "l'environnement Visual Basic".  Valorisation initiale des propriétés qui sont des attributs ou caractéristiques de chaque élément de l'interface.

Ecriture du code BASIC La programmation des applications Visual Basic est dite événementielle, par opposition à la programmation linéaire traditionnelle. Ainsi, une application Visual Basic est constituée d'un ensemble de procédures indépendantes les unes des autres.

Les procédures Une procédure comprend des instructions écrites à l'aide du langage BASIC. Elle est associée à un objet, c'est à dire à un des éléments d'une feuille, la feuille elle même, ou bien un bouton, une liste, un champs de saisie etc... La procédure est appelée par Visual Basic lorsqu'il se produit un événement pour l'objet correspondant. Si vous n'avez pas écrit de code dans une procédure chargée de traiter un type d'événement pour un objet donné, il ne se passe rien de particulier lorsque l'événement est généré. Pour écrire le code d'une application, il convient donc de déterminer les événements auxquels on souhaite réagir, et pour quels objets. Cela détermine les procédures dans lesquelles le code est écrit.

La fenêtre principale   ( Interface graphique de conception )

La fenêtre principale comprend trois barres horizontales : la barre de titre, comme toute application Windows, la barre de menu, permettant la saisie des commandes, et

la barre d'outils donnant un accès rapide aux principales commandes  

La boite à outils, est une fenêtre qui comprend initialement tous les icônes visualisant des contrôles personnalisés (application complémentaire dont certains contrôles sont en option selon la version que vous possédez) pour la version standard 20 icônes.

Elle n'est accessible qu'en phase de conception (Mode Arrêt)

Page 7: Visual Basic

La fenêtre de projet comprend la liste des divers fichiers constituant une application.          (Pour l' instant nous n' avons qu' un seule fichier "Form1")

La fenêtre de propriétés comprend la liste des propriétés de l'objet sélectionné dans la feuille courante (feuille) ou contrôle) ainsi que leurs valeurs.

La procédure est appelée par Visual Basic lorsqu'il se produit un événement pour l'objet correspondant.

A ce stade de l' application, nous n' avons créée qu' une seule fenêtre, c' est donc la fenêtre principale.La fenêtre principale que j' appelle l' interface d' accueil est la feuille que l' utilisateur voit en premier lorsque le programme est lancé.Nous pouvons construire autant de feuilles que l' on veut et déterminer par la suite qu' elle est la feuille qui deviendra l' interface d' accueil.Cette possibilité s' obtient par le paramétrage de l' environnement de travail de Visual Basic.

Cliquez dans la barre de menus sur l' étiquette "Projet", puis sur "Propriétés de projet1", sélectionnez "Objet de démarrage".Si le champs de saisie comprend la valeur "Sub main", modifiez et écrivez "Form1" qui est le nom de la feuille que nous avons créée et sur laquelle nous sommes en train de travailler.Par la suite nous modifierons la valeur de l' étiquette pour saisir le nom de la feuille que nous souhaitons lancer au démarrage du programme. 

Avant de nous lancer dans la super production qui va nous tenir en haleine pendant quelques heures, je me dois de vous instruire de quelques notions qui me paraissent indispensable pour la bonne compréhension de la suite du programme.

Un tout petit peu de Théorie

Méthodes Sous Visual Basic, certaines fonctions ne sont accessibles que combinéesavec des objets. Ces instructions sont dénommées méthodes. Par exemple la méthodeShow charge et affiche une fenêtre définie par l'utilisateur (vous en l'occurrence) (se référeraux sources pour les autres méthodes)  

Programmation événementielle Les programmes Visual Basic sont commandés par les événements générés par les objets

de l'interface utilisateur. Par exemple, le chargement d'une feuille est un événement auquel certaines instructions

peuvent être rattachées., comme par exemple l'effacement d'une feuille dans la mémoire.L'événement sera causé par un clic de souris, dans le cas d'un bouton, ou par unemodification du contenu d'une zone de texte.

 

 

Domaine de validité des variables et des procédures

Page 8: Visual Basic

Comme tout langage moderne, Visual Basic connaît les variables globales, locales etstatiques.

Les variables globales sont accessibles depuis le programme entier mais les variableslocales ne sont connues que dans leur procédure. Les variables statiques conservent leurvaleur à la sortie de la procédure, ce qui les distingue des variables locales.

 

Compilation - Quand un projet a été compilé, son extension devient EXE, et il n'est plus possible de

le"démonter" : tous les fichiers qui le composent sont désormais intimement associés.

Les images installées dans un contrôle sont elles aussi intégrées à l'exécutable. Seuls lesfichiers OCX ou TXT restent autonomes, et devront être livrés à l'utilisateur. Les fichiers DLL devront également être fournis avec l'application.

 

Les types de données

Suffixe    Type de données    Taille                          Limites d'utilisation

%            Integer                     2 oct                        de -32.768 à 32767

&             Long                         4 oct                        de -2.147.483.648 à                                                                                         2.147.483.647

!              Simple précision       4 oct

#             Double       "             8 oct

@            Currency                   8 oct

$             String                       1oct  par caractère

rien         Variant                     nombre requis  

Quelques précisions

Page 9: Visual Basic

De ce tableau on retient que si l'on doit déclarer une variable alphanumérique (caractèrestextes) on choisira une variable de type String

Pour une opération avec des chiffres ou des opérations de comptage simples, on choisiraune variable numérique de type Integer, ou long  pour des opérations importantes(voir limites).

Pour les calculs monétaires, on choisira la variable de type Currency.

Le type par défaut d'une variable est VARIANT.Ce type indique à Visual Basic que ladonnée est susceptible de contenir divers types de données.

Je déconseille d' utiliser la variable de type Variant, sauf cas de force majeure. 

Qu'est ce qu'une variable ? Les instructions sont constituées de verbes qui agissent sur des variables. Une variable peut être considérée comme une case mémoire. Elle possède un nom et une

valeur. Le nom est constitué de lettres, de chiffres et de caractères < _ > ( le souligné), le premier

caractère est obligatoirement une lettre et il ne peut y avoir plus de 40 caractères dans unnom de variable.entraîner des résultats étonnants.

Déclarations de variables La déclaration d'une variable se fait de plusieurs façons , à savoir : Dim <nom de la variable> As <type de la variable> Ex : pour déclarer une variable de type String (alphanumérique), que vous avez nommée

<Bazile>, vous écrirez Dim Bazile As String     représentée dans le programme par <Bazile$> Si la même variable est de type Integer (numérique), vous écrirez : Dim Bazile As Integer    représentée dans le programme par <Bazile%>

Exemple d'un champs de saisie comportant une étiquette ayant comme propriété Caption : Name, et comme propriété Name : Label1.Ne pas confondre la propriété Name qui est le nom par défaut de l'objet, et la propriété Caption qui peut avoir n'importe quel nom et qui dans la cas présent est le Nom de l'utilisateur à saisir.          Vous mettrez un certain temps à vous y faire, mais, vous comprendrez avec un peu d'expérience.La propriété Name est le nom que vous donnez à l'objet dans la phase de développement. Cette propriété n'est pas visible par l'utilisateur. Par contre la propriété Caption est le nom que vous donnez à la valeur de l'étiquette, ici dans l'exemple c'est Nom : , mais cela aurait pu être <Adresse> ou <Ville> etc...et cette propriété est visible par l'utilisateur, mais au contraire de la TextBox celle-ci n'est pas modifiable.

Page 10: Visual Basic

Nous allons essayer de mettre en pratique les formules précédemment acquises. Lorsque vous travaillez sur l' interface de travail vous vous trouvez en mode développement.Vous pouvez contrôler le bon déroulement des instructions ou fonctions écrites dans les pages de code en passant en mode exécution.Nous allons écrire notre première ligne de code et visualiser le fonctionnement en mode exécution.Ecrire dans la propriété Caption de bouton de commande "Command1" &Quitter.Nous allons nous servir à titre de démonstration de ce bouton pour quitter notre application.

En effectuant un "DoubleClick" sur le bouton, nous ouvrons une feuille qui est la feuille de code de l' objet qui vient d' être sélectionné.

Vu de la feuille de code correspondante au bouton de commande "Command1"

Cette feuille se présente avec une "ComboBox"(Command1) qui vous permet en cliquant sur le petit bouton de droite de dérouler une liste qui comprend tous les noms d' objets utilisés dans cette feuille(Form1).La "ComboBox de droite(Click) liste toutes les propriétés disponibles pour l'objet sélectionné.Nous devons générer un événement lorsque l' utilisateur appuiera sur le bouton, et lorsqu'il générera un clic avec le curseur de la souris.Nous sélectionnerons donc l' événement "Click".Ecriture du code dans la feuille de code du bouton de commande "Command1" avec l' événement "Click"Nous écrivons notre premiè

e procédure en  saisissant:

Private Sub Command1_Click ( )     'Sortie du programme     EndEnd Sub

Vous avez vu que j' ai mis une apostrophe devant la ligne de texte "'Sortie du programme"Ces lignes commençant par une apostrophe sont nommées "lignes de commentaires.  Il est conseillé en effet d' indiquer sous forme de texte l' explication de l' événement que l' on a voulu effectuer.Cela sera très utile surtout lorsque notre programme sera composé de plusieurs dizaines de procédures.Ne pas s' en priver d' autant que le compilateur ignore complètement les lignes de commentaires.  Si vous êtes un peu curieux(Il faut l' être en programmation) et que vous avez cliqué sur "Général" dans la feuille de code vous constatez que l' interface comprend une instruction "Option Explicite".Cette instruction force le développeur à déclarer toutes les variables à utiliser dans son programme.Si vous oubliez de déclarer une variable en phase de conception, le programme vous rappellera à l' ordre et vous indiquera une erreur.

Puisque nous venons de créer notre première procédure, essayons de la lancer pour visualiser ce qu' il se passe.

Dans la barre d' outils, cliquez sur le bouton exécuter formé d' un petit triangle.La feuille doit s' afficher, et lorsque vous cliquez sur le bouton "Quitter", l' application doit se fermer.

Visual Basic écrit sous la couleur bleue tous les mots dits "Réservés", vous ne pouvez pas les utiliser en dehors de la fonction établie par l' environnement de programmation.

La prochaine leçon sera réservée à la création de tableaux.

Page 11: Visual Basic

Les tableaux Un tableau, c'est dans le cas d'une réalisation graphique, la déclaration de l'espace écran sous forme d'emplacement graphique.je m'explique, si nous prenons un écran de configuration graphique de 800x600, cela veut dire que l'écran comprend 800 pixels sur une ligne, et 600 pixels sur une colonne. Un pixel représentant un point sur l'écran. Ex : Un pixel = ceci [ . ] Chaque partie de l'écran étant représentée, si nous voulons animer un graphique, nous devons déclarer dans le programme, c'est à dire à Visual Basic,  la configuration d'écran que nous allons utiliser. Dans l' une des applications que j' ai déjà développé ("Patman"), j'ai décidé que le tableau comprendrait 456 cases, comment j'ai fait pour trouver ce chiffre ? J'ai dessiné  plusieurs éléments graphiques devant représenter l'interface de travail,

pour l'exemple, je vous reproduis un de ces éléments  ,( le voilà), il mesure 23x23 pixels. pour construire l'interface graphique dans l'espace écran dont je disposais, j'ai calculé que je pouvais mettre dans la longueur de l'écran 19 éléments, et dans la largeur de l'écran 24 éléments. Le calcul est simple 19 que multiplie 24 égale 456. Ces chiffres peuvent être modifiés en fonction de la configuration d'écran et des dimensions des éléments que vous avez dessinés. Comment allons nous déclarer ce tableau ? Principe : Dim <nom du tableau><liste de paramètres> As <type du tableau> Généralement nous déclarons, Ex : Dim Mon_tableau(1 To 12) As Integer Dans le cas de l' exemple précité, nous déclarerons notre tableau avec les instructions suivantes : Global Const NB_CASES = 456 Global Const NB_LIGNES = 19 Global Const NB_COLONNES = 24 Si nous nous référons aux explications précédentes, nous en concluons que nous venons de déclarer un tableau qui comprend 19 lignes, 24 colonnes, 456 cases, qui sont des constantes donc qui ont des valeurs fixes et qui sont déclarées globalement dans tous le programme, donc qui sera pris en compte par toutes les feuilles de travail s' il y en a plusieurs.Nous déclarerons ces informations dans un module que nous nommerons par exemple : "Global.bas"  

Les affectations ou traitements conditionnels    -    Nous terminerons ces exercices par les traitements conditionnels, étudions le " IF Then Else "<nom_de_la_variable>=<fonction><nom_de_la_variable><valeur><opération> Explication : Si(If) inclure une condition Alors(Then) donner instructions pour appliquer la condition                    si la condition ne peut - être exécutée, Else(nouvelle condition) donner de nouvelles 

Page 12: Visual Basic

                    instructions pour exécuter une nouvelle condition si la première n' est pas exécutée.                    End If Fin du traitement conditionnel. If <condition> Then <instruction> Else <instruction> Ex : If tableau(ligne, colonne) = Patman Then            'Traduction = si le tableau représenté par les lignes et les colonnes est égal à patman(objet) alors,            'Lire les Instructions suivantes            ligne Patman = Patman                  'la ligne du patman devient le patman(objet)            colonne Patman = Patman              'la colonne du patman devient le patman(objet)             Else             'Instructions(si la première condition n'est pas remplie)            'Donner de nouvelles instructions        End ifPrenez note que lorsque la condition n' est pas remplie,  le pointeur de Visual Basic ignore les instructions et saute à l' instruction suivante. Nous pouvons utiliser également le terme ElseIf (ou bien)qui vous permet d'utiliser une autre instruction si celle utilisée précédemment n'est pas exécutée! Vous constatez que devant le mot Instruction, j'ai mis une apostrophe, en effet Visual Basic considère que toute écriture précédée d'une apostrophe n'est pas pris en compte par le compilateur. Donc toutes les lignes de commentaires sont précédées d'une abréviation et servent au développeur à expliquer la forme et l'idée de son texte. Je vous conseille de mettre le plus de commentaires possibles.

Les compteurs de bouclesQu' est ce qu'une boucle ?On peut comparer une boucle à un point qui circule dans un cercle et qui tourne sans fin.On peut lui adjoindre un compteur qui incrémentera(ajouter1) le nombre de tours chaque fois quecelui-ci passera devant la case départ.On peut également le faire sortir de la boucle au bout d'un certain nombres de tours.

Exemple :

1 - Démarrage du point2 - exécuter un tour3 - Contrôle du nombre de tours4 - Si la valeur compteur est égale ou supérieure à 3, alors le point sort de la boucle5 - Si la valeur compteur est inférieure  à 3

Page 13: Visual Basic

6 - Ajouter 1 à la valeur du compteur et retourner à la case départ

Etudions la boucle For NextFor<compteur>=<debut><To<fin><Step><pas>

<bloc d'instructions>Exit For <bloc d'instructions> Next<compteur>Exemple d'utilisation : On veut comptabiliser les mois de l'année dans une boucle, on écrira :For  Mois = 12 To 1 Step -1      'Instructions      Total = Total + Montant(Mois) Next MoisDans cet exemple on décrémente(Comptage négatif) de 12 à 1 la variable Step indique le pas de décrémentation, et dans ce cas nous souhaitons décrémenter de 1(mois) si nous avions souhaité effectuer des calculs basés sur un trimestre nous aurions mis comme "valeur de pas" le chiffre 3 ( Step - 3)La ligne instruction exécute le programme demandé et le Next est la variable de fin de procédure.Si vous souhaitez comprendre au mieux l'opération de comptage avec les boucles, cliquez sur le lien qui vous ouvre le  fichier [EXERCICE1]

     Les opérateurs arithmétiques et de comparaison (les

principaux)

                    Opérateur                 Signification                   Exemple                           +   Ajoute deux nombres                     a + b

                           - Soustrait deux nombres ou rend    négatif un nombre

        a - b   ou   -92

                          * Multiplie deux nombres                    a *  b

                          \ Divise deux nombres                    a \ b

                                                            Opérateurs de comparaison                        < Inférieur a < b (a plus petit que b)

                        <= Inférieur ou égal a <=

                         > Supérieur a > b

                        >= Supérieur ou égal a >= b

                        = Egal a = b

Page 14: Visual Basic

                       <> Différent a <> b

                        & Retourne une chaîne de caractère qui est la concaténation des deux autres

Bonjour & messieurs, retourne           "Bonjour messieurs"

D'autres traitements conditionnels seront étudiés en cours de programmation

Création des menus(contrôle)

Un contrôle Menu affiche un menu personnalisé pour votre application. Un menu peut inclure des commandes, des titres de sous-menus et des barres de séparation. Vous pouvez créer des menus dans lesquels figurent jusqu'à quatre niveaux de sous-menus.

Pour créer un contrôle Menu, utilisez le Créateur de menus. Entrez le nom du Menu dans la zone Caption. Pour créer une barre de séparation, tapez simplement un trait d'union (-) dans la zone Caption. Pour afficher une coche à gauche du nom d'un élément de menu, activez la case à cocher Checked.

Créateur de menus, boîte de dialogue   

Bien que certaines propriétés des contrôles Menu puissent être définies dans le Créateur de menus, toutes les propriétés de ces contrôles sont disponibles dans la fenêtre Propriétés. Pour afficher les propriétés d'un contrôle de Menu, sélectionnez son nom dans la zone Objet de la partie supérieure de la fenêtre Propriétés.

Lorsque vous créez une application MDI, la barre de menus de la feuille MDI fille remplace celle de l'objet MDIForm quand la feuille fille est activée.

Options de la boîte de dialogue

Page 15: Visual Basic

CaptionVous permet d'entrer les noms de menu ou de commande qui apparaîtront sur votre barre de menus ou dans un menu.

Si vous voulez créer une barre séparatrice dans votre menu, tapez un simple trait d'union (-) dans la zone Caption.

Pour permettre à l'utilisateur d'accéder au menu par l'intermédiaire du clavier, insérez un caractère (&) avant une lettre. Au moment de l'exécution, cette lettre apparaît soulignée (le caractère & reste invisible), et l'utilisateur peut accéder au menu ou à la commande en appuyant sur ALT et la lettre. Si vous souhaitez qu'un caractère & apparaisse dans le menu, tapez deux caractères & consécutifs dans la légende.

NameVous permet d'entrer un nom de contrôle pour l'élément de menu. Ce nom est un identificateur utilisé uniquement pour accéder à l'élément de menu dans le code. Il n'apparaît pas dans le menu.

IndexVous permet d'affecter une valeur numérique qui détermine la position du contrôle à l'intérieur d'un groupe de contrôles. Cette position n'a aucun rapport avec la position à l'écran.

ShortCutVous permet de sélectionner un raccourci clavier pour chaque commande.

HelpContextIDVous permet d'affecter une valeur numérique unique pour l'identificateur de contexte. Cette valeur est utilisée pour trouver la rubrique appropriée dans le fichier d'aide identifié par la propriété HelpFile.

NegotiatePositionVous permet de sélectionner la propriété NegotiatePosition du menu. Cette propriété détermine si le menu apparaît dans une feuille conteneur, et, si oui, à quel emplacement.

CheckedVous permet d'ajouter une coche à la gauche d'un élément de menu. Celle-ci est généralement utilisée pour signaler si une option à bascule est validée ou non.

EnabledVous permet de décider si l'élément de menu doit répondre à des événements, ou doit être grisé si vous voulez qu'il soit indisponible.

VisibleVous permet de rendre l'élément visible dans le menu.

WindowListDétermine si le contrôle Menu contient une liste des feuilles MDI fille ouvertes dans une application MDI.

Page 16: Visual Basic

   Flèche vers la droite

Déplace le menu sélectionné d'un niveau vers le bas lorsque vous cliquez dessus. Vous pouvez créer jusqu'à quatre niveaux de sous-menus.

   Flèche vers la gauche

Déplace le menu sélectionné d'un niveau vers le haut lorsque vous cliquez dessus. Vous pouvez créer jusqu'à quatre niveaux de sous-menus.

   Flèche vers le haut

Déplace l'élément de menu sélectionné d'une position vers le haut à l'intérieur d'un même niveau de menu à chaque fois que vous cliquez dessus.

   Flèche vers le bas

Déplace l'élément de menu sélectionné d'une position vers le bas à l'intérieur d'un même niveau de menu à chaque fois que vous cliquez dessus.

Zone de liste du menu

Zone de liste qui affiche une liste hiérarchique des éléments de menu. Les éléments de sous-menus sont indentés pour indiquer leur position ou leur niveau hiérarchique.

SuivanteDéplace la sélection vers la ligne suivante.

InsérerInsère une ligne dans la liste, au-dessus de la ligne actuellement sélectionnée.

SupprimerSupprime la ligne actuellement sélectionnée.

OKFerme le Créateur de menus et applique toutes les modifications à la dernière feuille sélectionnée. Le menu est disponible au moment de la création ; toutefois le fait de sélectionner un menu à la création ouvre la fenêtre Code pour l'événement Click de ce menu, sans exécuter aucun code d'événement.

AnnulerFerme le Créateur de menus et annule toutes les modifications.

Apprenons à réaliser des barres de menu dans notre interface. Donnons le "Focus" à notre feuille de travail en la sélectionnant tout simplement, la barre de titre s'affiche avec la couleur bleu que vous connaissez bien.

Page 17: Visual Basic

Cliquez dans la barre de menu de V.B sur l'étiquette "Fenêtre" puis sur l'étiquette "Création de menus".Ou bien,Dans la barre d' outils de l' interface de VB, cliquez sur l' icône qui représente un

fichier le troisième en partant de la gauche. (Il est nécessaire qu' une feuille soit affichée)Vous visualisez le créateur de menu. La fenêtre de création de menus s'ouvre. 1ére étiquette - l'étiquette intitulée "Fichier" ( Etiquette Parent ) Dans la propriété "Caption" Ecrire :  [&Fichier]    (sans les [ ] )  puis appuyez sur la touche tabulation ( Tab) de votre clavier votre curseur se positionne dans le champs de saisie intitulé "Name" Ecrire : [mnu_Fichier], dans la propriété "Name", appuyez sur Tab(bouton clavier)    1ére sous étiquette - l'étiquette "Imprimer" ( Etiquette Fille ) Appuyez sur le bouton " Suivant" pour ouvrir une nouvelle fenêtre de saisie. Ecrire : [&Imprimer] dans la propriété "Caption"  appuyez sur Tab, puis, Ecrire : [mnu_Print], dans la propriété "Name", appuyez sur Tab,

ensuite cliquez sur le bouton flèche droite  pour créer une étiquette fille qui sera logée dans l'étiquette (Parent) intitulée "Fichier"2éme sous étiquette - l'étiquette intitulée "Exécuter" ( Etiquette Fille )Appuyez sur le bouton " Suivant" pour ouvrir une nouvelle fenêtre de saisie.Ecrire : [&Exécuter]  dans la propriété "Caption" appuyez sur la Tab puis,Ecrire : [mnu_Execut, dans la propriété "Name", appuyez sur TabSi les quatre petits points avant la commande &Executer ne sont pas représentés alors, cliquez sur le bouton flèche droite pour créer une étiquette fille qui sera logée dans l'étiquette (Parent) intitulée "Fichier" sinon,

Insérer une ligne de séparation ( Etiquette Fille ) Appuyez sur le bouton " Suivant" pour ouvrir une nouvelle fenêtre de saisie. (les 4 petits points s'inscrivent automatiquement)

Page 18: Visual Basic

Ecrire : [-]  (tiret de séparation situé sur la touche "6" de votre clavier) dans la propriété " Caption ", appuyez sur "Tab" Ecrire : [mnu_Sep1, dans la propriété "Name", appuyez sur Tab 3éme sous étiquette - l'étiquette intitulée "Quitter" ( Etiquette Fille ) Appuyez sur le bouton " Suivant" pour ouvrir une nouvelle fenêtre de saisie. Ecrire : [&Quitter]  dans la propriété "Caption" appuyez sur la Tab puis, Ecrire : [mnu_Quitter, dans la propriété "Name", appuyez sur Tab 2éme étiquette - l'étiquette intitulée "?" ( Etiquette Parent ) Appuyez sur le bouton " Suivant" pour ouvrir une nouvelle fenêtre de saisie. Ecrire : [?]  dans la propriété "Caption" appuyez sur la Tab puis, Ecrire : [mnu_About_Titre, dans la propriété "Name", appuyez sur Tab( observez que devant le caractère " ? " nous n'avons pas les 4 petits points ( étiquette Parent ) 1ére sous étiquette - l'étiquette intitulée "A propos de..." ( Etiquette Fille ) Appuyez sur le bouton " Suivant" pour ouvrir une nouvelle fenêtre de saisie. Ecrire : [&A propos de...]  dans la propriété "Caption" appuyez sur la Tab puis, Ecrire : [mnu_About, dans la propriété "Name", appuyez sur Tabensuite cliquez sur le bouton flèche droite pour créer une étiquette fille qui sera logée dans l'étiquette (Parent)   Appuyer sur le bouton "OK" ,contrôlez votre travail et sauvegardez le..Vous avez écrit votre première " barre de menus"

 Prochain tutoriel : Un environnement basé sur l' objet

Un environnement basé sur l' objet

Vous avez dit objet ? Mais... de quel objet parlez-vous?En déplaçant le curseur de votre souris, sur les différents objets insérés dans la boîte à outils, un petit rectangle de couleur apparaît et vous indique le nom de l' objet.

Les différents objets de la boîte à outils.

Dans cet exemple nous avons survolé avec la souris la dernière icône de la dernière rangée de droite, ce qui a provoqué l' apparition de la bulle qui nous indique que cet icône correspond à un contrôle "Data".

       Etudions les différents contrôles de la boîte à outils.

  Nom du contrôle

Description

Page 19: Visual Basic

PictureBoxC'est un conteneur d' autres objets. Vous pouvez insérer une image ou par exemple un groupe d' objets en une seule opération

LabelOn utilise ce contrôle pour placer du texte comme affichage simple ou comme étiquette.(L' utilisateur ne peut pas modifier le texte saisi dans ce contrôle)

TextBoxC' est le seul objet qui vous permet de saisir du texte, des nombres ou des dates. 

Frame

Ce contrôle sert à enjoliver votre présentation. Un autre contrôle remplit le même rôle mais n' est pas livré en standard, c 'est le contrôle Sheridan 3D Controls qui est généré par le fichier Threed32.ocx.(A posséder impérativement)

CommandButtonC'est un bouton poussoir qui enclenchera une action par l' intermédiaire d' une procédure événementielle.

CheckBox C'est une case à cocher

OptionButton C'est un bouton radio(Option)

ComboBoxIl s' agit d' une liste modifiable qui permet de choisir un seul élément dans une liste mais aussi de taper une valeur qui n' est pas affichée

ListBoxC'est une liste dans laquelle vous pouvez choisir un ou plusieurs éléments, sans pouvoir saisir de nouvelle valeur.

HScrollBar C'est un ascenseur horizontal

VScrollBar C'est un ascenseur vertical

TimerC'est une minuterie, genre chronomètre qui vous permet d' enclencher une action toutes les n milli-secondes

DriveListBoxCe contrôle permet d' afficher la liste de tous les lecteurs disponibles surl' ordinateur

DirListBoxCe contrôle permet d' afficher la liste de tous les répertoires d' un lecteur sélectionné

FileListBoxCe contrôle permet d' afficher la liste de tous les fichiers d' un répertoire sélectionné

Shape Permet de dessiner des formes, rectangles, cercles

Line Permet de dessiner des lignes

Image Sert à insérer des images, nous le préférerons à l' objet PictureBox

Data Ce contrôle permet de programmer l' accès aux bases de données

OLE Il permet de placer des applications OLE(Object Link and Embedding)

        Avant de programmer avec Visual Basic, vous devez vous familiariser avec son environnement graphique, ses menus, ses barres d' outils ainsi que les fenêtres qui permettent de programmer et de paramétrer les différents objets.

Si vous possédez la version "Pro", vous pouvez aller chercher des contrôles supplémentaires comme celui que j' ai cité dans le paragraphe précédent.

Dans la barre de menus, cliquez sur l' étiquette "Projets", "Composants"   

Page 20: Visual Basic

En cliquant sur le bouton "Parcourir", vous ouvrez une boîte de dialogue de Windows.Il ne vous reste plus qu' à aller chercher le fichier qui vous intéresse, en l'occurrence "Threed32.ocx" qui se trouve dans le répertoire de c:\Windows\system

Vous pouvez également visualiser tous les fichiers avec extension *.ocx pour connaître les contrôles que vous avez à disposition. 

  Nous essayerons à titre pédagogique de réaliser quelques petites applications qui englobent les contrôles "Treed32.ocx" "et "Spin32.ocx" cela nous permettra de constater l' évolution esthétique de nos présentations.                  

 Prochain tutoriel : Etude des principales propriétés d' une feuille Form1

Etude des principales propriétés d' une feuille Form1

 Pour modifier une propriété, sélectionnez l' objet désiré(Form1), cliquez sur la ligne de la propriété que vous voulez modifier et utilisez la flèche dirigée vers le bas pour afficher les différentes valeurs comme

indiqué sur la figure ci-contre.Modification des valeurs des propriétés en double cliquant sur le nom de la propriété ou en utilisant la flèche dirigée vers le bas.

Appel de la fenêtre des propriétésSi la fenêtre des propriétés n' apparaît pas, appuyez sur la touche de fonction F4 ou sélectionnez dans le menu Affichage/Fenêtre des propriétés.

Tableau 1.2 : Propriétés d' une feuille FORM1 (les principales)

Page 21: Visual Basic

Propriétés Signification

BackColor Définit la couleur d' arrière plan

BorderStyle Définit le style de la bordure d' un objet

Caption Définit le texte dans la barre de titre de la feuille

ControlBoxDétermine si les boutons du menu système en haut à droite dans la barre de titre de la feuille sont affichés.

EnabledDétermine si l' objet peut répondre aux événements, c'est à dire s'il est utilisable.

Font Définit une police, un style et une taille de caractère

ForeColor Définit la couleur de premier plan

Height Définit la hauteur de l' objet à partir du haut 

Icon Indique l' icône qui est affichée quand la feuille est réduite

Left Indique la position horizontale gauche à l' exécution de la feuille

MaxButton Définit si une feuille contient un bouton "Agrandissement"

MidiChild Définit si une feuille est considérée comme feuille enfant MIDI

MinButton Définit si une feuille contient un bouton "Réduction"

MouseIcon Définit une icône de souris personnalisée

MousePointer Définit le type de pointeur de souris

Picture Définit un graphisme à utiliser

tag Permet de stocker des informations supplémentaires

Top Détermine la position verticale de l' objet à exécution

Width Indique la largeur de l' objet

WindowState définit l' état visuel d' une feuille au moment de l' exécution

Vous pouvez tester toutes ces propriétés en vous positionnant en mode Exécution. Par contre pour modifier un paramètre, vous devrez vous placer en mode conception.

LE MODE CONCEPTIONVous réalisez votre interface, mise en place des objets, des propriétés, et écriture du code devant générer les événements souhaités.Vous modifiez tous les paramètres qui vous semblent utiles au fonctionnement de votre réalisation.Lorsque vous désirez visualiser le résultat de votre travail, vous devrez passer en mode exécution.

LE MODE EXECUTION   Vous exécutez la feuille par la commande du menu Exécution/Exécuter ou bien en appuyant sur la touche "F5" de votre clavier

Dans la barre de menus, cliquez sur l' étiquette Exécution, puis sur Exécuter.

Page 22: Visual Basic

Vous pouvez également exécuter votre application en mode pas à pas, c' est à dire en suivant ligne par ligne, procédure par procédure le cheminement de la lecture de votre code.Pour ce faire, appuyez sur la touche "F7" de votre barre de fonctions de votre clavier.En exécutant cette manœuvre, vous avez exécuté votre programme qui se trouve positionné sur votre bureau derrière la feuille de procédure que vous avez visualisé.Il faut faire un peu d' acrobatie pour déplacer la feuille de procédure pour rendre visible l' application que l' on veut exécuter afin de contrôler le cheminement des instructions et des fonctions du code. C'est la procédure habituelle que vous emploierez pour débuguer votre programme en phase finale de réalisation.La compilation complète permet à votre application de compiler tout le code nécessaire dans l' environnement de développement. Quand vous choisissez Exécution/Exécuter ou bien quand vous appuyez sur la touche" F5 "de votre clavier, seul le code nécessaire au démarrage de l' application est compilé.

Comment placer des objets sur la feuille ? Placer un contrôle

Double-cliquez sur l' objet. Celui-ci se place au centre de la feuille.Cliquez une fois sur l' objet et dessinez le sur la feuille avec la souris. Quand vous relâchez le bouton de la souris, le contrôle est placé.

Sélectionner un ou plusieurs contrôlesCliquez sur le contrôle. Des poignées s' affichent tout autour du contrôle.Cliquez sur un contrôle, maintenez la touche "Maj" du clavier, puis cliquez sur un autre contrôle.Dessinez un cadre fictif avec la souris tout autour des contrôles à sélectionner.

Déplacer un ou plusieurs contrôlesSélectionnez les contrôles comme expliqué ci-dessus, puis déplacez en un. Vous constaterez qu'ils se déplacent tous.

Cadrer un groupe de contrôlesSélectionnez les contrôle à cadrer. Utilisez la commande du menu "Format/Aligner" et choisissez l' option que vous désirez.

Supprimer un contrôleSélectionnez le contrôle que vous voulez supprimer puis appuyez sur la touche "Suppr" du clavier ou cliquez sur le bouton "Couper" dans la barre d' outils.

NDL'A-Je vous conseille d' utiliser les procédures que je viens de décrire pour dessiner des tableaux importantsdevant comprendre 2, 3 voire 400 objets sur la feuille.La marche à suivre est de réaliser manuellement la première ligne de votre tableau, de la sélectionner, puis de faire un copier coller de la ligne sélectionnée qui viendra se placer au dessous, et ainsi de suite jusqu' à la ligne finale.Ex pour réaliser un tableau devant contenir 456 objets images de dimensions 32x32, on réalise la première ligne, on la sélectionne, puis on la colle en dessous de la première.(Procédure Copier/Coller)Les objets devront être indexés et "Vb" incrémentera automatiquement les objets.

Page 23: Visual Basic

Contrôler néanmoins le résultat. Le premier objet devant avoir l' index "0", et pour une grille de 256 objets, le dernier devra avoir l' index "255".Visual Basic 6 est assez précis dans ce domaine contrairement à certaines versions précédentes ou le contrôle était vraiment nécessaire.

Prochain tutoriel : Utilisation primaire des contrôles

Utilisation primaire des contrôles Dans les pages qui vont suivre nous allons apprendre à utiliser les contrôles avec pour chacun leur code correspondant afin de les rendre opérationnels.Certains contrôles sont faciles à programmer, d' autres le sont moins surtout pour les débutants  aussi nous accompagnerons les explications de ces modules avec des exemples à télécharger. Libre à vous d 'utiliser cette option.

Les contrôles Visual basic sont des outils graphiques qui servent à construire l' interface utilisateur d' un programme. Ils sont regroupés dans la boîte à outils de l' environnement de programmation.Il suffit de quelques clics et de déplacement de souris pour créer des objets sur une feuille.Vous apprendrez dans les prochaines leçons à afficher des informations dans une zone de texte, à parcourir les lecteurs et dossiers présents sur votre système, à traiter les données utilisateurs, à démarrer des applications Windows et à visualiser des enregistrements de bases de données.Les exercices vous aideront à concevoir vos propres applications  et vous feront étudier en détail les objets, propriétés et codes de programme.

Utilisation de l' objet "TextBox"Dans cet exercice nous utiliserons deux contrôles, le contrôle "TextBox" (zone de texte) et le contrôle "CommandButton" (bouton de commande), ils sont tout deux présents dans la boîte à outils.

1. Démarrez Visual Basic et créez une nouvelle application "EXE standard".2. Positionnez sur la feuille(Form1) nouvellement créée un contrôle TextBox

Placez le pointeur de la souris au milieu de la feuille(il se transforme en croix), et tracez une zone de texte similaire au cliché ci-après.

3. Positionnez sur la feuille un contrôle "CommandButton".

Une zone de texte sert à afficher du texte sur une feuille ou de traiter les saisies de l' utilisateur pendant l' exécution d' un programme.L' utilisateur peut modifier le contenu de la saisie.

4. A la conception du programme ou en cours d' utilisation l' on peut modifier les propriétés de l' objet soit par la fenêtre de propriétés, soit en programmant les lignes de codes nécessaires à 

Page 24: Visual Basic

l' application de nouvelles instructions.Dans notre exemple,  l' objet zone de textes sera utilisé pour afficher un message lorsquel' utilisateur appuiera sur le bouton de commande.

Utilisation de l' objet "CommandButton"Un bouton de commande permet de traiter l' événement utilisateur le plus courant.Comme dans la vie courante lorsque vous appuyez sur un interrupteur dans votre salon, le lampadaire s' allume. Vous avez provoqué un événement, vous attendiez une réponse à celui-ci, en l' occurrence que le lampadaire s' allume.En programmation objet sous Visual Basic, il en va de même, l' utilisateur provoque un événement (lorsqu'il appuie sur le bouton) et attend en réponse l' exécution immédiate d' une action spécifique.

Le comportement du bouton doit répondre aux attentes de l' utilisateur.Vous pouvez comme pour la feuille Form1 étudiée précédemment, modifier les caractéristiques des boutons de commande(comme celles de tous les objets) à l' aide des propriétés du contrôle utilisé. Vérifiez les possibilités offertes dans la feuille de propriétés.Lorsque l' on a positionné les objets sur la feuille comme indiqué sur la figure ci-dessus, on va apporter les modifications souhaitées, à savoir :

Contrôle Propriété Paramètre

Text1 Text Vide(rien)

Command1 Caption &Ok

Une particularité de la version 6.0 de Visual basic qui n' est pas à négliger pour les débutants, c'est la zone de liste qui affiche toutes les propriétés valides pour l' objet que vous utilisez.(Le caractère(perluette) écrit devant le "O" de "OK" sert simplement à souligner le premier caractère de chaque mot afin de créer un lien devant lancer la procédure par l' appui de ce caractère depuis le clavier.)

Cette zone de liste s' affiche lorsque vous saisissez dans la feuille de code  le nom de l' objet, suivi du point. Dans le cas présent il s' agit du contrôle "TextBox" qui, lorsque l' on écrira Text1 suivi du point(Text1.) déroulera la zone de liste.Celle-ci vous indique toutes les propriétés disponibles valides pour ce contrôle.

Ecriture du code devant générer l' événement souhaité :Effectuez un double-clic sur le bouton de commande "OK".Une fenêtre s' ouvre, c'est la feuille des procédures (écriture du code) qui correspond à l' objet à traiter.Dans cette feuille nous trouvons déjà les instructions par défaut de l' objet.Private Sub Command1_Click( )' End SubSi vous n' écrivez rien, il ne se passe rien.Comme nous souhaitons générer un événement, nous allons écrire : Votre prénom suivi de votre nom!Ce qui donne :Private Sub Command1_Click( )

Page 25: Visual Basic

'Commentaires (écrire ici l' idée de l' événement à générer) je mettrais par Ex : 'Ecrire dans la TextBoxText1.Text = "Gaston Lagaffe"End Sub

Explications :Private sub est le début de la procédure "Command1_Click"Suivi par les commentaires (je précise que ceux-ci ne sont pas pris en compte par le compilateur ,donc ne vous en privez pas) qui doivent obligatoirement commencer par une apostrophe.Viennent ensuite les instructions qui doivent être prises en compte et exécutées par le programme.Je traduirais cette instruction plus simplement pour les néophytes par : Dans l' objet intitulé Text1 et particulièrement dans la procédure Text, écrit la chaîne de caractères suivante "Gaston Lagaffe" (qui s' écrira obligatoirement entre guillemets).Et End Sub qui indique que la procédure est terminée.Vous pouvez également pour donner du cachet à votre réalisation créer un second bouton qui effacera le texte déjà écrit dans la TextBox comme par exemple :

Contrôle Propriété Paramètre

Command2 Caption Reset

Private Sub Command2_Click( )'Effacer la zone de texteText1.Text = ""End Sub

Nous pouvons également à titre pédagogique utiliser le contrôle "Label" Nous l' utiliserons particulièrement pour créer des étiquettes car contrairement au contrôle TextBox, le "Label" ne peut pas être modifié par l ' utilisateur.Exemple : Vous placez un "Label"(étiquette) au dessus de la "TextBox" et vous écrivez dans la propriété "Caption" de celui-ci : "Veuillez entrer votre nom "Ce qui modifiera la présentation de notre réalisation par la figure suivante.

Nous terminons notre réalisation en lui apportant les modifications décrites en aparté de la figure jointe et nous procédons aux essais en passant du mode "Conception" au mode "Exécution" comme expliqué dans les leçons précédentes. 

Vous pouvez si vous le souhaitez répondre à votre premier QCM (questions à choix multiples) réalisé àl' intention de ceux qui suivent ces tutoriels. QCM1 - Visual Basic 6.0

Prochain Tutoriel : Utiliser des objets systèmes de fichiers

Utiliser des objets systèmes de fichiers

Visual Basic propose trois objets très utiles permettant d' accéder au système de fichiers. Il s' agit des contrôles  "DriveListBox"(liste de lecteurs), "DirListBox"(liste de répertoires), et "FileListBox"(liste de fichiers).

La liste de lecteur permet de parcourir les lecteurs valides de votre système. 

Page 26: Visual Basic

La liste de répertoires permet de naviguer parmi les dossiers d' un lecteur particulier.

La liste de fichiers permet de sélectionner un fichier spécifique dans un dossier.

Vous pourrez télécharger en option le fichier compressé de l' application "Explorateur" qui reprend les contrôles que nous venons d' évoquer.

Notre objectif dans cet exercice sera de réaliser un programme "Explorateur". Vous aurez besoin pour celui-ci d' utiliser les trois contrôles déjà cités, ainsi qu' un objet "image" qui nous servira d' exemple d' utilisation de l' application proposée dans ce Tutoriel.Dessinons le programmeDans le menu Fichier, sélectionnez Nouveau Projet, choisissez "EXE Standard puis cliquez sur "OK".Une feuille vierge intitulée "Form1" s 'affiche.Sélectionnez dans la boîte à outils les trois contrôles qui nous intéressent, DriveListBox, DirListBox, et FileListBox puis, positionnez les sur la feuille.Ajoutez y un contrôle "Image"

Voici le prototype de l' application "Explorer"Les dimensions n' ont pas grande importances, à vous d' ajuster les paramètres en fonction de vos aptitudes créatrices.

Vous pouvez passer en mode Exécution pour voir ce qui se passe ?

Un objet "FileListBox"(liste de fichiers) permet à l' utilisateur de sélectionner un fichier spécifique dans le système de fichier.Visual basic insère alors le nom du fichier sélectionné dans la propriété "FileName" de l' objet.Les sélections appropriées effectuées par l' utilisateur sont récupérées également à l' identique par les objets :DriveListBox qui sera inséré dans la propriété "Drive" de l' objet et, DirListBox  sera  insérré dans la propriété "Path" de l' objet.Nous utiliserons  ces trois propriétés dans le programme Explorateur.L' utilisateur change le paramètre d' un objet durant l' exécution d' un programme, cette modification engendre un événement qui est traité par Visual Basic dans le code du programme.Nota - Les propriétés "Drive", "Path" et "FileName" ne sont accessibles qu' en phase d' exécution. Il est impossible de les définir à l' aide de la fenêtre de propriétés.

Nous allons définir les propriétés suivantes en utilisant la fenêtre "Propriétés"

Objets Propriétés Paramètres

File1 Pattern *.bmp ; *.* ; *.wmf ; *.ico

Image1 Stretch True

Page 27: Visual Basic

Image1 BorderStyle 1 - Fixed Single

Si nous n' avions pas utilisé la propriété "Pattern" la  "FileListBox" aurait affichée tous les types de fichiers contenus dans un dossier avec le risque que l' utilisateur sélectionne un fichier qui n' est pas supporté par Visual Basic. Ce qui aurait pour effet de provoquer une erreur.Il est préférable dans la mesure du possible d 'essayer d' éviter tout risque d' erreurs, tout au moins celles qui sont prévisibles.

Nous allons ajouter quelques lignes de code aux procédures qui sont associées aux objets.Ces procédures sont appelées "Procédures d' événement"car elles sont engendrées par un événement, par exemple un clic de souris. On affiche par un double clic sur l' objet "DriveListBox"  la fenêtre de code de l' objet (Drive1) et particulièrement dans la procédure "Change" on écrit :Private Sub Drive1_Change ( )'L' utilisateur à cliqué sur l' objetDir1.Path = Drive1.DriveEnd SubCette instruction actualise la propriété "Path" dans la liste de lecteurs lorsque l' utilisateur sélectionne un lecteur de disque dans la zoneAvec cette simple ligne de code nous constatons que nous pouvons changer de lecteur et lire dans le contrôle DirListBox les répertoires se trouvant dans le lecteur sélectionné.Essayez de passer en mode Exécution pour visualiser le fonctionnement.

Nous allons effectuer la même opération avec la "DirListBox"Private Sub Dir1_Change ( )'L' utilisateur à cliqué sur l' objetFile1.Path = Dir1.PathEnd SubCette instruction lie la liste des fichiers à celle des répertoires de manière à ce que les fichiers présentés correspondent à ceux du dossier sélectionné.

Nous allons effectuer la même opération avec la "FileListBox" et ajouter le code suivant :Private Sub File1_Click()Dim SelectedFile As String'L'utilisateur a sélectionné l' objetSelectedFile = File1.Path & "\" & File1.FileName ' (&) Voir opérateurs Image1.Picture = LoadPicture(SelectedFile)End Sub

Nous avons déclaré la variable SelectedFile, concaténé les instructions afférentes au fichier sélectionné puis rajouté l' anti-slach pour le cas ou ? et avons donné au programme le chemin du fichier qui nous intéresse en l' occurrence celui que l' utilisateur a sélectionné dans la liste des fichiers validesLe paramètre 1(Fixed Single) de la  propriété BorderStyle de l' objet "Image" nous permet de cadrer l' image sélectionnée en fonction de ces propres dimensions(pour l' esthétique).Exécutons le programme en procédant comme d' habitude.Lorsque le programme se trouve en mode Exécution, sélectionnez le contrôle "Drive1" et

Page 28: Visual Basic

choisissez le lecteur "A:", vous constatez que le programme(VB) génère une erreur d' exécution en ouvrant et affichant une fenêtre du style :

 Fig1 : Voici la fenêtre affichée par Visual Basic lorsque vous générez l' erreur d' exécution n° 68 qui stipule que le périphérique est non disponible.

Pour ceux qui possèdent le programme Visual basic d' origine Microsoft, vous pouvez cliquer sur le bouton d' aide, ce qui vous permet de savoir que vous disposez d' une aide en ligne bien ficelée qui vous aidera dans bien des cas à trouver la procédure ou l' instruction recherchée.Cliquez sur le bouton d' aide et vous devez voir apparaître la fenêtre suivante:

Périphérique non disponible (erreur 68)

PARTICULARITES

Causes et solutions de cette erreur :

Le périphérique auquel vous tentez d'accéder est hors ligne ou n'existe pas.

Vérifiez que le périphérique est sous tension et que les câbles le raccordant à votre ordinateur sont bien branchés. Si vous tentez d'accéder à une imprimante via un réseau, vérifiez l'existence d'une connexion logique entre l'ordinateur et l'imprimante, par exemple, une connexion associant LPT1 à l'identificateur de l'imprimante réseau.

Votre connexion réseau a peut-être été rompue.

Reconnectez-vous au réseau et recommencez l'opération.

Pour plus d'informations, sélectionnez l'élément en question et appuyez sur F1.

 Il est possible de générer d' autres erreurs avec ce programme, aussi sachez que pour résoudre ces problèmes, il faut utiliser des instructions qui contournent la cause de l' erreur, ou créer des routines spéciales nommées "Gestionnaires d' erreurs" qui vous permettrons de contourner les problèmes rencontrés par cette application qui demande à être débuguée.Nous apprendrons plus tard à écrire un gestionnaire d' erreurs et à rechercher les erreurs éventuelles.Le programme "Explorer" est terminé, nous affichons le résultat de notre réalisation.

Page 29: Visual Basic

Le programme en lui même est très simple, mais si vous le souhaitez, vous pouvez télécharger les sources ici

Ndl'A- L'image affichée par le programme Visual Basic est un Logo de la firme Real.Com

Sauvegardez votre réalisation.Dans le menu, cliquez sur l' étiquette "Enregistrez le projet sous" : vous pouvez modifier le nom de la feuille "Form1" par "Explorer" qui prendra aussitôt l' extension "Explorer.frm" et le projet que nous venons de réaliser "Projet1.vbp" sera sauvegardé sous le nom de "Explorer.vbp"Vous pouvez également créer votre première application exécutable

Dans la barre de menu cliquez sur l' étiquette "Fichier" vous devez avoir dans la fenêtre qui vient de s' ouvrir une étiquette comportant la saisie : "Créer Projet1.exe"En cliquant sur cette étiquette vous ouvrez une fenêtre de dialogue de Windows qui comporte dans le champs de saisie le nom de votre projet.Vous le renommez en lui donnant le nom de votre choix.Dans l' exemple que je viens d' évoquer, je l' ai appelé "Explorat.exe"Vous avez pu constater que dans le libellé du nom, je n' ai saisi que 8 caractères.Cela évite qu' il puisse être renommé par "Dos" (Si je l' avais affublé d' un nom Long")pour le cas ou un utilisateur le lancerait depuis cette plate forme.

Prochain Tutoriel : La case à cocher et la zone de liste

La case à cocher, le bouton d' options et la zone de listeLa plupart des applications laissent une certaine marge de choix à l' utilisateur.

Le contrôle "CheckBox"(case à cocher) permet d' affecter à une option ou un paramètre une valeur qui peut être Vrai ou Faux (True ou False)Les cases à cocher peuvent être rassemblées en groupe, chaque case étant activable individuellement et sans incidence pour les autres cases du même groupe.Vous pouvez utiliser la propriété "ToolTyp" qui permet d' adjoindre au contrôle un court texte explicatif sous forme d' une Info-bulle lorsque le pointeur de la souris survole le contrôle un court instant.Une nouveauté dans la version 6.0 de Visual Basic qui propose un contrôle "CheckBox" graphique.Utilisez pour cela la propriété "Picture" pour affecter à la case à cocher une icône pour l' état "non enfoncé, puis de la propriété "DownPicture" pour l' état "enfoncé" vous pouvez utiliser également la propriété "DisabledPicture" pour l' état désactivé. Contrairement aux contrôles d' options boutons, la case à cocher est dotée de 3 états, l' état désactivé qui correspond à la valeur "0", l' état activé = 1 et l' état grisé = 2.

Page 30: Visual Basic

C'est la raison pour laquelle,  nous ne pourrons pas utiliser des valeurs booléennes pour coder ce contrôle, nous utiliserons les valeurs cités précédemment.Déterminer l' état de la case à cocherLe code à utiliser est :If CheckBox1.Value = 0 Then    'Instructions    Beep                          'Emet un son sur le haut parleur du PC lorsque le "Beep" est activéElse    'Instructions    BeepEnd If

                                           Les états possibles des contrôles Cas à cocher

Valeur Description Constante

0 Désactivée(par défaut) vbUnchecked

1 Activée vbChecked

2 Etat intermédiaire vbGrayed

En règle générale, et si vous ne savez pas quelle instruction écrire ou dans le cas d' un traitement conditionnel, ou si vous ne savez pas quelle direction va prendre votre pointeur(surtout si vous utilisez "Else" dans votre procédure), saisissez l' instruction "Beep" qui n' aura aucune influence sur votre programme mais qui vous indiquera exactement ou se dirige votre pointeur, puis, si vous lancez l' application et que vous entendez le Beep, vous aurez la confirmation que  l' instruction aura été prise en compte.Vous n' aurez plus qu' à remplacer "Beep" par les instructions définitives.Si vous voulez fixer en interne l' état d' une case à cocher comme étant "non cochée", c 'est à dire en écrivant du code, vous écrirez l' instruction suivante :CheckBox1.Value = 0Pour quelle soit cochée, vous écrirez :CheckBox1.Value = 1Pour quelle apparaisse en grisé, vous écrirez :CheckBox1.Value = 2Le texte affiché à coté de la case à cocher  est déterminé par la propriété "Caption".Vous pouvez modifier l' alignement du texte à droite ou à gauche avec la propriété "Alignment"

Page 31: Visual Basic

Tous nos Tutoriels sont accompagnés d' exemples que vous pouvez télécharger sur notre site.L' interactivité du module vous permet de comprendre aisément le fonctionnement des exemples fournis ici

Le contrôle "OptionButton" accepte deux états pour l'option Vrai ou Faux(True ou False).

Ces "OptionsButtons" ou boutons d' options peuvent être rassemblés en groupes de contrôles dans une "Frame" ce type de contrôle bénéficie d' une sélection exclusive.Vous pouvez également comme le contrôle décrit précédemment bénéficier de l' option graphique avec la propriété "Picture" en insérant une image en position bouton sélectionné et d' une autre image en position bouton désactivée.Déterminer l' état du bouton d' optionLes boutons d' options connaissent deux états, l' état cochée qui correspond à la valeur booléenne "True" et l' état non cochée qui correspond à la valeur booléenne "False".Dans un groupe de contrôle seul un bouton peut être coché.Exploitation d' un événement utilisateur avec 2 boutons d' option :Sub Option1_Click ( )    If Option1.Value = True Then        'Instructions si l' option1 est activée    Else        'Instructions si l' option2 est activée    End IfEnd SubExploitation d' un événement utilisateur avec 3 boutons d' option :Sub Option1_Click ( )    If Option1.Value = True Then        'Instructions si l' option1 est activée    ElseIf        'Instructions si l' option2 est activée    ElseIf        'Instructions si l' option3 est activée    End IfEnd SubVous pouvez également comme le bouton précédent utiliser l' option "InfoBulle" avec la propriété "ToolTyp".On peut également affecter une valeur par l' intermédiaire du code, comme par exemple :

Page 32: Visual Basic

Option1.Value = 1ou dans l' hypothèse d' affecter une valeur dans une zone de liste de fichiers pour sélectionner une extension de fichier bien déterminée nous utiliserons le masque de recherche:Sub Option1_Click ( )    Fichier1.Pattern = "*.exe"End Sub

La zone de liste et zone modifiableLe contrôle zone de liste affiche une liste contenant des entrées dont l' utilisateur peut

sélectionner un ou plusieurs éléments.Si le nombre d' éléments contenus dans la liste dépasse celui qui peut être affiché, une barre de déplacement(ascenseur) s' affiche automatiquement.

Vous pouvez télécharger le module FileList qui explique le fonctionnement des zones de liste. Téléchargez le module et saisissez un certain nombre d' entrées pour voir apparaître la barre de déplacement.

 Une zone de liste peut être créée en mode "Conception" comme décrit dans l' exemple exo2, dans ce cas le remplissage de la zone de liste est réalisé par la procédure événementielle "Load" qui est appelée lors du chargement de la feuille.En mode "Exécution" nous utiliserons la méthode "AddItem".Objet.AddItem  "Element"

L' argument "Objet" désigne le nom du contrôle, c 'est à dire celui de la zone de liste.L' argument "Element" est l' entrée qui doit être ajoutée.Ex : lstZonedeliste.AddItem "Help System Restorer"

L' application décrite montre l' utilisation d' une zone de liste.Elle comprend une "TextBox", une zone de liste, deux "Label", 4 boutons poussoirs.

Nous avons utilisé dans ce module les "Méthodes" "RemoveItem" et "Clear"La méthode "RemoveItem" nous permet après avoir sélectionné la ligne qui nous intéresse de pouvoir sélectivement la supprimer.La méthode "Clear" quant à elle efface complètement le contenu de la liste.

Nous avons également utilisé la propriétés "ListCount"La propriété "List" est liée à la propriété "ListCount, qui renvoie le nombre d' entrées de la liste.

Page 33: Visual Basic

Dans l' exercice Exo2 la propriété "ListCount" renvoie le nombre d' entrée que vous saisissez et rectifie le nombre indiqué lorsque vous effacez une ou plusieurs entrées.

Vous pourrez étudier tous les autres contrôles dans les cours que nous diffusons sur notre site.

MsgBox - Instruction ou fonction ?

Cette instruction très utilisée dans Visual Basic permet de poser une question à l' utilisateur au travers d' une boîte de dialogue.Celle-ci peut être paramétrée en définissant le nombre de boutons poussoir, l' icône de la boîte et le bouton par défaut, c' est à dire celui qui sera enfoncé quant vous appuyez sur la touche "Entrée".La syntaxe de l' instruction MsgBox est la suivante :Variable = MsgBox("Message", Type, "Titre de la fenêtre")      * Variable : Variable de type Entier(Integer) recevant la valeur du bouton.      * Message : Chaîne de caractères affichée comme message dans la boîte de dialogue.      * Type : Expression numérique qui contrôle les boutons et les icônes à afficher.      * Titre : Expression chaîne affichée dans la barre de titre de la boîte de dialogue.Le paramètre Type représente l' addition de plusieurs constantes intégrées de Visual Basic.Pour répondre à la question posée, MsgBox est utilisée en Instruction lorsque la syntaxe utilisée n' attend pas une réponse du système par exemple : 

Instruction :MsgBox Message$, 16 Titre$Dans ce cas nous avons utilisé une instruction de VB.

Fonction :Dans le cas d' une fonction, (qui attend une réponse du système) nous écrirons :T$ = "Attention"      'Titre du messageM$ = "Désirez-vous vraiment quitter le programme ?"      'Message à affichersi votre message à afficher est plus long, vous pouvez utiliser la concaténation suivante,M$ = M$ + " suite du message" (vous pouvez aussi utiliser le caractère "&" à la place du caractère "+")Reponse% = MsgBox(M$, 4 + 32, T$)et voici la réponse que vous pouvez éventuellement utiliser :If Reponse% = 6 Then End      'Sortie du programme

J' utilise depuis Vb 3.0 la fonction précédente qui fonctionne sous toutes les versions connues à ce jour.Nous allons les étudier en détail avec les tableaux suivants.

Les constantes pour les boutons

Constante ChiffreDescriptionvbOKOnly  0 Affiche le bouton OK uniquementvbOKCancel 1 Affiche les boutons Ok et Annuler

Page 34: Visual Basic

vbCancelRetryIgnore2 Affiche les boutons Abandonner, Répéter et IgnorervbYesNoCancel 2 Affiche les boutons Oui, Non et AnnulervbYesNo 4 Affiche les boutons Oui et NonvbRetryCancel 5 Affiche les boutons Répéter et Annuler

Les constantes pour les icônes

Constante Chiffre DescriptionvbCritical 16 Affiche l'icône message critiquevbQuestion 32 Affiche l' icône requête d' avertissementvbExclamation 48 Affiche l'icône message d' avertissementvbInformation 64 Affiche l'icône message d' information

Les constantes pour le bouton par défaut

Constante Chiffre DescriptionvbDefaultButton 10 Le premier bouton est le bouton par défautvbDefaultButton 256 Le deuxième bouton est le bouton par défautvbDefaultButton 512 Le troisième bouton est le bouton par défaut

Chaque bouton lorsqu'il est activé, renvoie une valeur que l' on pourra interpréter au travers de la variable.Si vous ne mettez pas le paramètre "Type" l' instruction MsgBox n' affichera que le bouton "OK"

Les constantes renvoyées par MsgBox

Constante Chiffre DescriptionvbOk 1 OKvbCancel 2 AnnulervbAbort 3 AbandonnervbRetry 4 RéessayervbIgnore 5 IgnorervbYes 6 OuivbNo 7 Non

Le code suivant montre un exemple de paramétrage de boîte de dialogue MsgBox avec retour de valeur d' une variablePrivate Sub Button_Supprime_Click ( )Dim SupSup = MsgBox("Veuillez confirmer la suppression du fichier", vbCritical + vbYesNo + 256, "Attention")If Sup = vbYes Then      MsgBox "Suppression confirmée"End IfEnd Sub

Nous aurions pu écrire :Sup = MsgBox("Veuillez confirmer la suppression du fichier", 16 + 4 + 256, "Attention")

Page 35: Visual Basic

Faites des essais avec toutes les combinaisons possibles ou bien téléchargez le module d' exemples qui vous permettra de constater de visu toutes les combinaisons possibles de MsgBox [ici]

Voici les fenêtres que vous devez obtenir :

   

 

 

 

Prochain tutoriel : La boîte de dialogue InputBox

La boîte de dialogue "InputBox"

Comme pour les messages, Visual Basic propose une fonction simple permettant de créer une boîte de dialogue InputBox. Elle est activée par l' appel suivant:Variable$ = InputBox$(Prompt$, Titre$, Defaut$, X%, Y%)

Le paramètre Prompt$ est le texte saisi par l' utilisateur.Vous pouvez utiliser les caractères Chr$(13) + Chr$(10) pour forcer une ligne.(comme dans MsgBox)Le paramètre Titre$ contient éventuellement le titre de la boîte de dialogue.Le texte Defaut$ est proposé au moment de l' ouverture de la boîte de dialogue.X% et Y% permettent de positionner la boîte, en l' absence de ces valeurs, la boîte de dialogue est centrée.-

Un exemple de boîte de dialogue InputBox Le message est passé dans le paramètre "Message$", le titre dans "Titre$". Tous les paramètres sont définis librement à l'exception de "Message$" Si vous définissez une chaîne de caractère "Texteinplicite$", ce texte sera affiché dans la zone de texte dès l'ouverture de la fenêtre.Les variables numériques "x%" et "y%" permettent de positionner l'angle supérieur gauche de la fenêtre dans des coordonnées exprimés en "Twips" à partir de l'angle supérieur gauche de l'écran.

Page 36: Visual Basic

Une application envisageable de "InputBox" est la saisie d'un mot de passe. Titre$ = "Saisie du mot de passe" Message$="Tapez quelque chose pour accéder au programme" MotDpass$=InputBox$(Message$, Titre$)    'La boite de dialogue s'ouvre, inscrit la valeur de, Message$ et de Titre$ à  l'emplacement prévu par VBIf MotDpass$ = MotDpass$  Then               'Explication du traitement conditionnel : si la donnée saisie par l'utilisateur est égale à la donnée enregistrée par le concepteur, alors....         'Instructions (autoriser l'accès) Else        'Instructions (refuser l'accès et quitter le programme)  'Fin de la procédure       End If                                                            Téléchargez l' exemple de "InputBox"

Les boîtes de dialogues de windowsVos applications doivent présenter les mêmes menus et les mêmes boîtes de dialogue que les applications Windows standards.

Exemple de boîte de dialogue (Ouvrir, Enregistrer, Couleur, Polices, Imprimer) Ce sont des applications de Windows, et oui j'ai bien dit Windows, qui peuvent être utilisées par Visual Basic pour le choix d'un nom de fichier, d'une couleur ou d'une police de caractères.Cela permet aux diverses applications d'avoir une apparence homogène, et simplifie la tâche du programmeur.La boîte à outils ne contient pas tous les contrôles disponibles, pour pouvoir l' utiliser, vous devez aller le chercher et l' ajouter dans la boîte à outils.Pour utiliser le contrôle "Common Dialog" cliquez dans la barre de menus sur la commande du menu intitulée Projet, puis Composants

Cliquez sur le bouton parcourir et rechercher le fichier intitulé :Comdlg32.ocxvous devez voir apparaître lasaisie que vous apercevez en surbrillance dans le cliché ci-contre. Cochez la case et cliquez sur OK Le contrôle se trouvera dans la boîte à outils.

 Le contrôle se trouvant positionné maintenant dans votre boîte à outils, vous le copiez dans votre interface de travail avec le principe du glisser, poser, n' importe où puisque'  il n' est pas visible en mode "Exécution".

Page 37: Visual Basic

Il ne vous reste plus qu' à codifier les instructions nécessaires à l' exécution des différents paramètres que vous souhaitez utiliser.

Exemples de la commande d' affichage des Boîtes de dialogues de WINDOWS :

                                                    ShowOpen pour la boîte  "Ouvrir"                                                     ShowSave pour la boîte   "Enregistrer"                                                     ShowColor pour la boîte  "Couleurs"                                                     ShowFont pour la boîte    "Polices""                                                     ShowPrinter pour la boîte "Imprimer"                                                     ShowHelp pour la boîte    "Aide Windows"                                                 

Comme vous le voyez, un seul contrôle Common Dialog suffit pour afficher divers types de boîtes de dialogues.Toutefois, avant de déclencher le contrôle par une méthode, il est indispensable de définir quelques propriétés.L' utilisation de ses propriétés est largement expliquée dans nos cours en ligne.

Vous pouvez télécharger les routines d'exemples de boîtes de dialogues en cliquant ci après : Téléchargement de "CmDialog.zip"

                    

 

 

Prochain tutoriel : Les structures de contrôles 

Les structures de contrôles

Il est nécessaire de pouvoir contrôler le bon déroulement des instructions dans le code et de tester les variables. Visual Basic propose plusieurs instructions de contrôle qui permettent de déterminer ce que le programme doit réaliser par la suite.

La construction IF - THENLa construction SELECT CASELa construction IFFLa boucle FOR - NEXTLa boucle WHILELa boucle DO WHILE UNTIL

L' étude de toutes ces structures ne rentrent pas dans le cadre de ce programme, je vous recommande pour de plus amples conseils les cours que nous diffusons au sein de notre centre de formation. Visiter...

La construction IF THEN  

Page 38: Visual Basic

L' instruction la plus utilisée en programmation est la construction If - Then Cette instruction courante est à sens unique et permet des prises de décision. La syntaxe de base de la construction If Then  est la suivante :If Condition logique Then     'Instructions si la condition est vraieElse     'Instruction si la condition est fausseEnd If     'Fin de l' instruction

La construction If Then est employée pour exécuter une ou plusieurs instructions conditionnelles. Le mot Else est facultatif, si celui-ci est inclus dans la construction c' est qu'il permet d' exécuter une ou plusieurs instructions quand la condition que vous testez est fausse.Une autre construction If Then Else permet d' effectuer de multiples conditions à l' intérieur de la structure If Then.Voici la syntaxe :If Condition1 Then     'Instructions si la condition est vraieElseIf Condition2 Then     'Instructions si la condition est vraieElseIf Condition3 Then     'Instructions si la condition est vraieElse     'Instructions si la condition est fausseEnd If

Exemples :If AgeFrederic > 30 Then     'Instructions si la condition est vraie     msg = "Frédéric a plus de 30 ans"     MsgBox msgElseIf AgeFrederic >25 Then     'Instructions si la condition est vraie     msg = "Frédéric a plus de 25 ans"     MsgBox msgElseIf AgeFrederic >20 Then     'Instructions si la condition est vraie     msg = "Frédéric a plus de 20 ans"     MsgBox msgElseIf AgeFrederic > 15 Then     'Instructions si la condition est vraie     msg = "Frédéric a plus de 15 ans"     MsgBox msgElse     'Instructions si la condition est fausse     msg = "Frédéric a 15 ans ou moins de 15 ans"     MsgBox msgEnd IfTéléchargeons le programme d' exemple : AgeFreddy.zipNous n' avons pas voulu dans cet exemple indiquer exactement l' age de Frédéric, mais connaissant le principe vous pouvez maintenant à votre tour, déterminer exactement 

Page 39: Visual Basic

l' age qui est indiqué dans le champs de saisie. A vous de jouer!

Il est préférable lorsque vous avez  de nombreuses structures imbriquées d' utiliser la construction SELECT CASE que vous pourrez étudier dans nos cours.

Une des structures les plus employées en programmation est la boucle FOR NEXTUne boucle est un processus de répétition d' un bloc d' instructions.Vous utiliserez For...Next lorsque vous voulez répéter des instructions dans la boucle un nombre précis de fois.Vous pouvez forcer un arrêt des répétitions avec l' instruction Exit For.La syntaxe est la suivante :For pointeur = ValeurDepart To ValeurFin Step Pas      'InstructionsNextVous pouvez utiliser le mot clé STEP pour changer la valeur du compteur qui s' incrémente(²) ou pour indiquer que le compteur va dans une direction négative.Par exemple le code suivant compte de 5 à 100 par pas de 5 en montrant les valeurs du compteur.²(Incrémenter, augmenter la valeur initiale d' un compteur de x points)Vous incrémentez de 5                   Vous décrémentez de 5Dim A As Integer                              Dim A As IntegerFor A = 5 To 100 Step 5                   For A = 100 To 5 Step -5     MsgBox (A)                                       MsgBox (A)Next A                                              Next AVous pouvez modifier le pas à votre convenance.Sans le sigle STEP l' incrémentation aura comme valeur 1 point.Un très bon exercice à réaliser est la fameuse calculette de conversions Francs/Euros vous trouverez sur notre site de nombreux exemples à développer.

De l' intelligence dans les objets

Je souhaitais continuer ces Tutoriels avec une approche du processus de l' intelligence artificielle qui est contrairement aux idées reçues relativement simple.Sans rentrer dans les algorithmes compliqués, on peut développer des jeux simples comme Le bandit Manchot" ou bien un jeu de "Morpions".

Historiquement l' Intelligence artificielle est aussi vieille que le concept de jeu vidéoQuand les amateurs commencent à écrire leurs propres programmes, beaucoup rêvent du jour où ils seront capables de programmer un jeu d' échecs ?Mais l' écriture d' un jeu d' échecs tourne parfois à l' obsession, même parmi les programmeurs les plus érudits et même familiarisés avec les échecs.Il convient de ne pas perdre de vue que ces jeux n' ont que peu de choses à voir avec les jeux d' arcades, d' aventures ou de simulations, qui tous demandent des techniques différentes de programmation et de l' imagination dans les procédures d' adresses.Nous commencerons cette analyse des jeux "Intelligents" avec un exemple que d' aucuns trouverons un peu simpliste, mais qui a l' avantage de recouvrir la plupart des principes d' écriture de ces jeux.Si vous avez étudié les fonctions aléatoires, vous avez appris que générer une séquence réellement aléatoire est une tache impossible pour les êtres humain et pour les ordinateurs,

Page 40: Visual Basic

bien que ces derniers arrivent à faire une meilleure approximation.Dans une longue série de coups, le joueur humain choisit invariablement un objet plus souvent que les autres. On peut donc inscrire dans le programme un sous programme qui garde en mémoire les choix du joueur en utilisant un tableau à trois éléments que l' on pourrait appeler :Choix1, Choix2, Choix3.L' ordinateur peut alors calculer quel objet est le plus souvent joué, et ensuite jouer l' objet qui l' emporte sur celui-ci.Le plus grave inconvénient de cet algorithme apparaît au moment où le joueur réussit à percer la stratégie de l'ordinateur.Les êtres humains sont incapables de prendre une décision totalement irrationnelle ou aléatoire. Il s' ensuit que chaque choix dépend des choix précédents.Si l' ordinateur réussit à élaborer une approximation sur ces choix, alors il devrait pouvoir gagner assez régulièrementLe programme doit être écrit de telle façon qu'il puisse interpréter la formule pendant le déroulement de la partie.Les programmes qui sont capables d' apprendre de cette façon s' appellent :Des programmes "Heuristiques"

Un programme heuristique permet à l' ordinateur de détecter des changements dans la stratégie de son adversaire et de modifier son algorithme en conséquence.Il applique une technique statistique appelée "Corrélation"Nous allons faire abstraction de toutes ces techniques rébarbatives pour nous consacrer à l' étude simpliste d' un jeu de morpions, tout en sachant que nous aurons par la suite la possibilité d' améliorer ses performances en suivant les techniques décrites précédemment.

Une évaluation correcte des positions est fondamentale à tout programme de jeu même si ce jeu est aussi simple que le morpion. Sur ce tableau 3x3 les zéros du joueur sont représentés par le chiffre1, les croix de l' ordinateur par le chiiffre4. A l' aide de ces chiffres, on peut évaluer n' importe quelle situation de jeu.Il suffit de faire les totaux pour chaque rangée, colonne, diagonale. Un total de 12 indique que l' ordinateur peut donc gagner, et un total de 3 que c' est le joueur qui est sur le point de conclure. Les valeurs 1 et 4 sont utilisés parce qu' elles fournissent des totaux différents pour chaque combinaison de coup. Dans le cas de cette figure, c' est celui qui va jouer le premier qui va gagner puisqu'il va aligner (12) ou (3).

Il est souhaitable de  faire simple dans un premier temps, mais il m' apparaît indispensable d' utiliser un générateur aléatoire pour générer le carré de départ lorsque c' est à l' ordinateur de jouer. Cela désoriente le joueur(un certain temps) qui ne sait pas ou le computer va positionner son pion.

Page 41: Visual Basic

On pourrait choisir un algorithme compliqué de façon que l' on ne tombe pas sur des chiffres déjà utilisés tout au moins dans la limite des 9 disponibles.Mais faisons simple , et l' on pourrait coder le générateur sous la forme de :

Private Sub Form_Load( )'Centrage des feuillesCenterForm Me                   'Utiliser dans un module la procédure de centrage des feuillesForm1!ctlQuiJoue.Caption = "Appuyez sur le bouton [Start]"Randomize                          'Commande du générateur aléatoireEnd Sub

Sub Ordi_A_Jouer ( )'Déterminer aléatoirement la sélection d'une caseValeur% = Int(Rnd * 9)  'Formule simple pour générer un chiffre aléatoirement dans la limite de 9 nombres.'Ecrit la valeur dans l'étiquetteForm1!Label10.Caption = Valeur%'le programme a sélectionné une case, contrôler si la case Index est vide puis, affichons la case choisie.(²)If Form1!ctlControlEtat(Index).Caption = "0" Then     'Instructions, la case est vide, alors affichons notre pion     Form1!Image1(Valeur%).Picture = Form2!Image_X.Picture     'Mise à jour du compteur de sélection     Form1!ctlControlSelect.Caption = Valeur%     'Mise à jours des compteurs individuels     Iteration_Compteur_OrdiExit SubElse     'La case est occupée, alors allons voir ailleurs     Control_ResultatEnd IfEnd Sub

(²)Il est évident que la première fois, la case est vide, nous aurions pu créer un traitement conditionnel pour aiguiller sur les instructions adéquates uniquement pour le premier mouvement du jeu, ou bien nous aurions pu créer un procédure supplémentaire.

Vous trouverez le listing complet de cette application en suivant nos cours disponibles sur notre site.

Vous pouvez télécharger l' application "Morpionus"

La gestion des erreurs, le débogage

Quel est le programmeur qui n' a jamais fait d' erreurs ?L' erreur est le seul moyen de progresser, Visual Basic offre plusieurs dispositifs de gestion des erreurs, afin d' analyser, de trouver et de résoudre les problèmes d' écriture du code.

Page 42: Visual Basic

Points d' arrêt :Placez des points d' arrêt sur les lignes contenant des variables dont vous désirez connaître ou modifier la valeur à cet endroit.Les points d' arrêt permettent d' interrompre l' exécution d' un programme dans un segment que l' on suspecte contenir une erreur. Vous pouvez utiliser l' instruction " Stop"

Fenêtre espions : Vous pouvez établir des espions qui permettent de visualiser des variables ou des expressions et suspendre l' exécution sous certaines conditions.

Fenêtre exécution : Vous pouvez utiliser cette fenêtre pour examiner les variables, les valeurs des propriétés et pour assigner de nouvelles valeurs aux variables.

Fenêtre Variable Locale : Vous pouvez utiliser cette fenêtre pour montrer les valeurs de toutes les variables locales d' une procédure.

Exécution pas à pas : Vous pouvez réaliser du pas à pas pour suivre le déroulement du code, ligne par ligne, en étudiant le comportement du programme.

Visualiser la variable : Lorsque vous êtes en mode débogage, Visual Basic montre la valeur courante de toute variable ou constante quand vous maintenez le pointeur de la souris au dessus du nom de la variable ou de la constante dans la fenêtre.

Le gestionnaire d' erreur permet d' afficher le numéro de l' erreur et sa description.(prochainement)

Vous pouvez également consulter les programmes qu'il vous est possible de réaliser en suivant nos cours. Voir un aperçu de nos réalisations

Ecrire un gestionnaire d' erreurs

Erreur d'exécutionErreur survenant lors de l'exécution du code. Une erreur d'exécution se produit lorsqu'une instruction tente d'accomplir une opération non valide.

Nous avons tous utilisé dans notre activité de développement l' instruction :On Error Resume NextC'est en effet une instruction intéressante car si une erreur se produit, le programme ignore l' erreur et passe à la ligne suivante.Mais, à mon avis c 'est une instruction que l' on doit insérer dans son programmes que lorsque l' on a débugué son application et pour prévenir l' erreur imparable que l' on n'avait pas prévue lors des divers contrôles des lignes de code.

Le gestionnaire d' erreurs sert à fournir à l' utilisateur les possibilités de récupérer proprement les erreurs d' exécutions du programme.

Vous utilisez généralement l'instruction Resume lorsque le gestionnaire d'erreurs peut corriger une erreur et l'instruction Resume Next dans le cas contraire. Vous pouvez cependant écrire

Page 43: Visual Basic

un gestionnaire d'erreurs qui ne révèle pas à l'utilisateur l'existence d'une erreur d'exécution ou qui affiche des messages d'erreur tout en permettant à l'utilisateur de saisir des corrections.

La base de votre gestionnaire d' erreurs est l' instruction On Error :

On Error GoTo SortieDiscrete (L' étiquette qui suit le mot clé On Error GoTo est laissée libre à votre  discrétion)

On Error Resume Next

On Error GoTo 0

Quand Visual Basic traite l' instruction On Error, il initialise un traitement d' événements qui vérifie continuellement les conditions d' erreurs pendant que le code s' exécute.

Quand une erreur se produit, le chemin précis du déroulement du programme dépend de l' utilisation de l' instruction On Error. La liste suivante montre les différentes expressions de cette instruction

On Error GoTo suivi de l' étiquette que vous avez déclarée, en l' ocurence dans cet exemple, nous emploierons :On Error GoTo SortieDiscrete : le contrôle passe à la première ligne exécutable du code qui suit l' étiquette indiquée par SortieDiscrete.

Exemple :Private Sub Form_Load()On Error GoTo Sortiediscrete'lignes de code du programme'''Tout s' est bien passé, nous sortons de la procédureExit Sub'Voici l' étiquette du gestionnaire d' erreursSortieDiscrete:'On peut mettre un message du genre(Voir en fonction de l' erreur détectée)msg = "Une erreur involontaire s' est produite"msg + msg = " veuillez relancer le programme!"MsgBox msg

End Sub

Explications :Vous avez indiqué au programme que, s' il rencontre une erreur, qu'il veuille bien se diriger vers l' étiquette réservée à cet effet.

1er cas, il y a effectivement dans le listing du code une erreur inconnue provoquée par le programme ou par le système, dés que l' erreur est détectée, le contrôle est dirigé automatiquement vers l' étiquette Label, dans notre cas, c' est l' étiquette "Sortie discrète". Il l' ignore mais lit les lignes de codes qui suivent immédiatement celle-ci.Si vous n' avez pas de message, le programme suit son cours, si vous avez un message, il le

Page 44: Visual Basic

lit, ferme la page en cours, termine son cycle et attend les instructions suivantes.

Deuxième cas, il n' y a pas d' erreurs, le contrôle lit les lignes de code, arrive à l' instruction Exit Sub, ferme normalement la page en cours, sort de la procédure et attend de nouvelles instructions.Si nous n' avions pas mis l' instruction Exit Sub le contrôle aurait continué à lire les instructions suivantes et aurait affiché les les lignes de code qui se trouvent après l' étiquette Label ce qui vous aurait induit en erreur.

Vous avez constaté que j' ai mis juste après l' étiquette le double point ":", c'est tout simplement la caractère qui indique à VB que j' ai utilisé une étiquette de renvoi.

On Error Resume Next : Le contrôle passe à la ligne qui suit celle qui a provoquée l'erreur

On Errot GoTo 0 : L'erreur est neutralisée et le gestionnaire d' erreurs est contourné dans la procédure.

Le code suivant montre l' utilisation d' un gestionnaire simple pour contrôler la suppression d' un fichier LANGLADE.TXT sur le lecteur de disquette.

Sub Main( )On Error GoTo InformeMoiKill "A:\LANGLADE.TXT"'Si tout s'est passé normalement nous sortons de la procédureExit SubInformeMoi:MsgBox "Erreur de lecture de disquette"End sub

Faites l' essai la première fois sans disquette et la deuxième fois avec une disquette dans laquelle vous aurez renommé un fichier existant en "Langlade.txt"Vérifiez les attributs du fichier de façon qu'il puisse être effaçable.Attention, ce fichier va être effacé par votre réalisation.

Les propriétés de l' objet ERRUne fois que l' exécution du programme a été transmise à votre routine de gestion d' erreurs, votre code peut déterminer l' erreur qui s' est produite en affichant son numéro et sa description.Quand une erreur se produit, les informations la concernant sont stockées dans l' objet ERR.Vous pouvez utiliser deux propriétés de cet objet, la propriété Number et la propriété Description.Dans les vieilles versions du Basic, les instructions Error et Error() étaient utilisées.Err.Number : indique le numéro de l' erreurErr.DEscription : indique la description de l' erreurLe code qui suit montre un exemple de code qui vérifie l' existance d' un fichier dans un répertoire particulier.En cas d' erreur, le programme affiche le numéro de l' erreur ainsi que sa description.

Sub Main ( )On Error GoTo ErreurFatale

Page 45: Visual Basic

If Dir  ("C:\Gilou\Langlade.txt") = False Then               MsgBox "Ce fichier n' existe pas"End IfExit SubErreurFatale:MsgBox "N° erreur:"&Err.Number & vbLf & Err.DEscriptionEnd Sub

La figure qui suit montre le résultat obtenu issu de la capture de l' erreur par le gestionnaire.

Le gestionnaire d' erreur permet d' afficher le numéro de l' erreur et sa description.

Vous pouvez utiliser toutes les valeurs disponibles en consultant l' aide en ligne de visual Basic en appuyant sur la touche F1 de votre clavier.

Technique pour réaliser un Password pour Windows

Je vous propose d'étudier la réalisation d'un "Password" pour protéger l'accès à votre ordinateur. Nous allons partir du principe que vous connaissez l' environnement de Visual Basic, aussi nous allons sauter les étapes subsidiaires communes aux débutants en programmation.Nous lançons Visual Basic, nous ouvrons un nouveau projet que nous allons de suite renommer en "xwcdsth.vbp".Nous avons besoin de deux feuilles "Form" ainsi que d' un module.Nous les créons en leur laissant leur nom d' origine.Dans la première "Form" nous insérons grâce à l' objet PictureBox une image qui aura comme dimension celle de la configuration de votre écran(640x480) ou (800x600)L' image importe peu choisissez votre fond d' écran habituel.Si vous n' en avez pas sous la main, télécharger sur mon site les fichiers images. 

Téléchargement de :  ImgPassword1    ImgPassword2

Dans la feuille form2, insérez un objet PictureBox dans lequel vous insérez l' image intitulée "imgpassword" ce qui doit donner ceci : 

Page 46: Visual Basic

Il ne vous reste plus qu' à insérer deux "TextBox"la Text1 pour sélectionner le nom de l' utilisateur, et la Text2 pour insérer le mot de passe.N'oubliez pas de centrer la feuille "Form2" pour quelle se positionne au milieu de la feuille "Form1"Si vous voulez gagner de l' espace mémoire, coller l' image "ImgPassword" au centre sur votre fond d' écran.Si vous voulez utiliser les fichiers téléchargeables, les images ont étés optimisées au mieux des possibilités, à vous de choisir.Nous constatons que nous allons utiliser une image, deux "TextBox" Text1 et Text2, ainsi que deux boutons Command1 et Command2 que nous positionnons sur la feuille. Nous utilisons également deux "Label", "Label1" pour Sélectionner un nom d' utilisateur et Label2 pour Mot de passe.

                                                Dans la propriété "Ico" insérer votre logos sous forme d' icône.Nous passons en mode exécution et nous contrôlons si nos images s'affichent parfaîtement.Il ne nous reste plus qu' à insérer le code pour bloquer l' accès de notre machine aux indésirables.Si nous avons choisi l' option avec deux images nous écrivons dans la propriété Form_Activate de la feuille Form1 : (a supprimer si vous utilisez une feuille avec les deux images)Private Sub Form_Activate( )     Form2.ShowEnd SubDans la feuille Form2 et dans la propriété Form_Activate, nous écrivons :Private Sub Form_Activate()'Donner le focus à Text1Text1.SetFocusEnd SubDans la feuille Form2 et dans la propriété "Form_Load,  nous écrivons :Private Sub Form_Load()'Centrage de la feuille - (si vous ne connaissez pas cette procédure, chargez la sur le site)     CenterForm MeEnd SubNous écrivons le code du bouton "Annuler"Private Sub Command2_Click( )'Nous effaçons le contenu des TextBox          Text1.Text = ""     Text2.Text = ""     'Nous donnons le Focus au contrôle Text1

Page 47: Visual Basic

     Text1.SetFocusEnd Sub

'Nous écrivons le code du bouton "OK"Private Sub Command1_Click()Dim t As StringDim M As StringDim C As StringDim MP As String

'Choisir un nom d' utilisateurC$ = "Marina"                                              'ou le nom de votre choix'Choisir un mot de passeMP$ ="sesame"                                           'ou le nom de votre choix'Contrôler si le nom de l' utilisateur est correctIf Text1.Text <> C$ Then GoTo Sortir       ' Si erreur renvoyer vers l' étiquette Sortir     'Sélectionner le mot de passe     If Text2.Text = "" Then                          'si l'utilisateur n' a rien saisie, alors... erreur et sortie     t$ = "Attention!"     M$ = "Vous devez saisir un mot de passe!"     Reponse% = MsgBox(M$, 0 + 32, t$)     Text2.SetFocus     Exit SubEnd If'If Text2.Text <> MP$ Then                  'Si le mot de passe n 'est pas correct, alors...     t$ = "Attention!"     M$ = "Vous n' êtes pas autorisé(e) à utiliser cet appareil!"     Reponse% = MsgBox(M$, 0 + 16, t$)     Text1.Text = ""     Text2.Text = ""     Text1.SetFocusElse     t$ = "Félicitations!"     M$ = "Vous êtes autorisé(e) à utiliser cet appareil!"     Reponse% = MsgBox(M$, 0 + 64, t$)     Unload Form2     Unload Form1     Exit SubEnd IfExit Sub'Etiquette de renvoieSortir:     Text1.Text = ""     t$ = "Attention!"     M$ = "Code utilisateur incorrect! désolé !"     Reponse% = MsgBox(M$, 0 + 32, t$)     Text1.SetFocus     Text1.Text = ""

Page 48: Visual Basic

     Text2.Text = ""End Sub

Vous compilez le programme en lui donnant l'extension EXE et vous l' insérez dans le répertoire de démarrage de Windows.

Ce programme tel que je vous le donne, fonctionne, mais n' importe quel petit malin qui touche un peu en informatique peut franchir cet obstacle. Vous trouverez dans nos cours le programme complet qui devient infranchissable avec quelques lignes de codes supplémentaires.

Télécharger l' application compilée : xwcdsth.exe(écrite pour une configuration d' écran de 640x480)

Attention, si vous téléchargez cette application, vous avez besoin des codes qui sont :Identifiant : MairiePassword : soleil

Une extension de cette application est en construction devant permettre de modifier à sa guise l' identifiant ainsi que le mot de passe.

Utiliser le contrôle Threed32.ocx et Spin32.ocx dans ses applications

Il m' est difficile d' être catégorique dans mes affirmations car possédant toutes les versions de Visual Basic, je possède en effet les contrôles "Threed" et "Spin", mais je crois que toutes les versions de VB ne fournissent pas ce type d' objet, à me confirmer! Par contre si vous ne possédez pas en standard l' objet en question, vous ne pourrez pas l' incorporer à votre projet, car ne possédant pas de droits acquis légalement, celui-ci refusera de fonctionner avec votre application.

Visual Basic 4.0 version professionnelle fournissait en standard ce type d' objet, et si vous possédez cette version dans un tiroir, réinstallez la, ce qui vous permettra de pouvoir utiliser ces contrôles dans vos futures applications.

Le contrôle "Threed" issu du fichier "Threed32.ocx" que vous pouvez récupérer depuis le répertoire de "Windows/system" avec la méthode apprise précédemment c' est à dire depuis la barre de menu et en sélectionnant "Projet", "Composants" et parcourir, ce qui vous permet d' afficher la boîte de dialogue "Ajouter un contrôle ActiveX".

Page 49: Visual Basic

Nous venons de sélectionner le contrôle "Threed32.ocx" de la firme "Sheridan" 

Il ne nous reste plus qu' à cliquer sur le bouton "Appliquer" et lancer l' insertion du contrôle en appuyant sur le bouton "OK"                            

                                                A quoi peut nous servir ce contrôle ?Il peut en effet nous servir à beaucoup de choses néanmoins pour ceux qui ne le possèdent pas, laissez moi vous dire qu'il n 'est pas nécessaire et que l' on peut s' en passer avec un peu d' ingéniosité.

Voyons d' abord comment ce présentent ces nouveaux objets dans la boîte à outils.(de haut en bas)La petite croix en haut et à gauche qui porte le nom de "SSCheck1" est une "CheckBox".       

Le carré qui porte intérieurement le caractère "F" est une "Frame" et porte le nom de SSFrame1L'objet de droite est un bouton de commande qui se nomme "SSCommand1"Dans la ligne du bas, nous avons l' objet "SSPanel1" qui est une sorte de "Panneau conteneur d' objets", vous pouvez y insérer pratiquement tous les objets de votre boîte à outils.Au centre nous avons un bouton d' options nommé "SSOPtion1"Et sur la droite un bouton de commande qui se nomme "SSRibbon1"

Tous ces objets ont la particularité de pouvoir écrire en caractère 3D, en plus le bouton "SSCommand" peut afficher une image en couleur.Les panels peuvent avoir un affichage graphique différent, j' ai représenté dans la Form1 deux panels identiques , mais représentés graphiquement de façon différente.Tous ces objets ont leur homologues qui sont livrés en

  

Page 50: Visual Basic

standard par Visual Basic et ne sont donc pas indispensables pour réaliser une interface graphique.L' avantage si vous les possédez, est que vous allez pouvoir enjoliver votre présentation par une approche plus esthétique de la présentation graphique de votre page d' accueil..L' inconvénient est que vous allez être obligé de livrer dans votre application le fichier "Threed.ocx" Mais... pourquoi pas ?

Le Contrôle "SPIN32.OCX" double bouton poussoir(supérieur et inférieur

Ce contrôle est très intéressant car il permet de créer toute sorte d' applications qui offrent la possibilité de faire modifier une valeur par l' utilisateur.Prenons par exemple la réalisation d' un chronomètre dont le pas d' incrémentation doit pouvoir être modifié par l' utilisateur.

Dans cet exemple le bouton "Spin" sert à régler la durée de la temporisation qui est fixé à 8 secondes, elle peut-être modifiée en plus ou en moins par l' utilisateur.

Nous allons voir comment écrire le code nous permettant d' utiliser ce contrôle dans nos applications.

Nous voulons réaliser un calendrier avec un compteur qui compte les jours de 1 à 31 jours.L'objet "SPIN" est un double bouton poussoir qui comprend deux procédures qui génèrent chacune d' entre-elles un événement lorsque vous appuyez sur un des deux boutons.Le premier événement se produit lorsque vous appuyez sur le bouton supérieur pour incrémenter la valeur par défaut (incrémenter veut simplement dire ajouter 1 à la valeur initiale)Le deuxième événement se produit lorsque vous appuyez sur le bouton inférieur pour décrémenter la valeur par défaut (décrémenter veut simplement dire retirer 1 à la valeur initiale) (La valeur 1 est un exemple et peut varier selon le vouloir du développeur)

Création des lignes de codes afférentes à cette procédure, nous écrivons :

Private Sub SpinButton1_SpinDown( )'Jours débutent à 1Dim Jour1 As Integer                        ' Jour1 est le nom de la variable qui va stocker                                                         ' la valeur affichée dans une case mémoire     Jour1% = Val(ctlJour1.Text)         'ctlJour1 est la Propriété Name de la TextBox          If Jour1% >1 Then

Page 51: Visual Basic

               'Décrémenter               ctlJour1.Text = Trim$(Str$(Jour1% - 1))          End IfEnd Sub

Private Sub SpinButton1_SpinUp()'Jours terminent à 31Dim Jour1 As Integer                        ' Jour1 est le nom de la variable qui va stocker                                                         ' la valeur affichée dans une case mémoire     Jour1% = Val(ctlJour1.Text)         'ctlJour1 est la Propriété Name de la TextBox          If Jour1% < 31 Then               'Incrémenter               ctlJour1.Text = Trim$(Str$(Jour1% + 1))          End IfEnd Sub

L'application "Spin32" avec les sources de l' exemple décrites dans cette page.

  Télécharger l' application "Spin"                    Réalisation du 30 mai 2002  Télécharger l' application "AppSpin"

Accès aux bases de données "ADO" avec Visual Basic 6.0 

La gestion des fichiers a toujours été complexe. La multiplicité des formats qui sont apparus au gré des versions de Visual Basic ont rendu la tache des programmeurs de plus en plus difficile.Visual Basic donne accès aux fichiers à travers le moteur de données Microsoft Jet Engine, l' interface DAO (Data Acces Object) et l' ODBC(Open DataBase Connectivity).Les contrôles de données (DAO) se sont enrichis progressivement, après la version 3.0 d'une zone de liste et d'une boîte combo spécialisée base de données, ainsi que d'une grille de base de données.Ces contrôles spécialisés sont précédés d'un préfixe : dbList, dbCombo et dbGrid.

Les DAO (objets d'accès aux données) vous permettent d'utiliser un langage de programmation pour extraire et manipuler des données dans des bases de données locales ou distantes. Ils vous permettent également de gérer des bases de données, ainsi que les objets et la structure de ces dernières.

Les anciennes versions de VB utilisaient les moteurs "Jet" "DAO" et RDO", avec l' arrivée de VB6 un nouveau moteur de bases de données et né et a été baptisé :"ADO" 'ActiveX Data Objects), nous allons étudier sur ces nouvelles technologies pour réaliser dorénavant nos bases de données.

Dans les versions précédentes de Visual Basic, il était possible de lier les contrôles entre-eux uniquement sur une feuille. En revanche, la version 6.0 de Visual Basic permet de lier toute source de données à un utilisateur de données. Il est possible de définir la propriété

Page 52: Visual Basic

DataSource des contrôles au moment de la création pour établir une liaison dynamique avec les sources de données. Vous avez la possibilité de créer des classes qui se comporteront comme des sources et des utilisateurs de données et de les lier grâce au nouvel objet BindingsCollection. Il est également possible de produire des contrôles utilisateur qui sont des sources de données, similaires au contrôle de données ADO. Vous pouvez ainsi générer des contrôles utilisateur connectés par une liaison complexe , identiques au contrôle DataGrid.

Le nouveau moteur de BdD de type "ADO" est constitué de sept objets dont les relations structurelles sont décrite sur la figure ci-jointe.

L'accès à une source de données est réalisée par l' intermédiaire d' une nouvelle interface nommée OLE-DB

Nous disposons avec cet environnement d'une souplessede construction qui offre des performances plus élaborées que celles offertes par les versions précédentes.

Modèle d' objet "ADO"

Environnement des bases de donnéesLorsque vous ajoutez un Data Environnement (environnement de base de données) à un projet,  Visual Basic crée automatiquement un objet "Connection ADO", dont les propriétés, Nom, Type de base de données, droits d' accès, etc... peuvent être définis de manière similaire à celle d' un contrôle.Cette connexion est alors établie pour permettre de transférer des informations de structure à partir de la base de données.

Une des grandes nouveautés de Visual Basic 6.0 est la possibilité d' établir des relations entre les objets "Command" d' une connexion, de manière à constituer et à pouvoir appeler ainsi des dépendances hiérarchiques entre des données avec lesquelles des relations existent.

Nous allons travailler sur un exercice pour vous démontrer qu'il est possible d' accéder aux informations contenues dans une base de données sans écrire la moindre ligne de code.Nous allons récupérer dans les fichiers stockés dans l' environnement de Visual Basic un fichier intitulé "Biblio.mdb", si vous ne le possédez pas, je vous donne la possibilité de le télécharger sur mon site. Télécharger le fichier

Ce fichier sera stocké dans le répertoire de travail du projet que vous allez réaliser.

Page 53: Visual Basic

Lancez la procédure pour créer un nouveau projet.

Par la procédure décrite précédemment insérez dans la boîte à outils le contrôle MSADODC nécessaire à la réalisation de notre base de données ADO

Voici l' image de l'icône du contrôle "ADODC" que vous devez avoir inséré dans votre boîte à outils.

 

Réalisation de notre interface graphique devant nous servir d'exemple :

Par la méthode habituelle créez un nouveau projet, insérez dans ce projet le contrôle ADODC comme expliqué précédemment et réalisez l' interface graphique indiqué sur la figure ci-dessous.

Ce projet comprend :Trois étiquettes de Label1 à Label3Trois zones de texte de Text1 à Text3Un contrôle ADODC intitulé Adodc1

Vu des valeurs de propriétés disponibles dans la feuille "ConnectionString"

Page 54: Visual Basic

Les informations nécessaires pour réaliser l'interconnexion à la base de données sont stockées dans la propriété "ConnectionString" du contrôle ADODC.Dans la fenêtre de propriétés de ce contrôle sélectionnez l' option "Utiliser une chaîne de connexion"puis cliquez sur le bouton "Créer..."

Ce qui vous ouvre la boîte de dialogues "Propriétés des liaisons de données"

Nous sélectionnons l'étiquette intitulée "Microsoft Jet 3.51 OLE DB Provider" et cliquons ensuite sur le bouton marqué "Suivant" pour ouvrir la feuille des propriétés des liaisons de données qui va vous permettre de tester la connexion entre votre application et votre fichier de base de données.

Vous pouvez maintenant tester la connexion.Ce qui vous permet de vérifier que celle-ci peut être établie.

Page 55: Visual Basic

Vu de la boîte de dialogue "Propriétés des liaisons de données après la sélection du fichier "Biblio.mdb"Si tout se passe bien voici ce que vous devez obtenir...

Je pense que vous avez compris que vous devez indiquer le chemin de l' endroit ou vous avez stocké le projet qui contient aussi le fichier Biblio.mdb, mais j' exagère en vous le rappelant, désolé!

Il ne nous reste plus qu' à renseigner les valeurs des propriétés comme suit :

Propriétés du Contrôle ADODC :Name : adoBiblioCaption : AuteursCommandType : 2 - adCmdTableConnectionString : Provider=Microsoft Jet...       'Cliquez sur l' étiquette et sélectionnez...RecordSource : Authors

Propriétés de la zone de texte (Text1)Name : txtIDDataField : AU_IDDataSource : adoBiblio

Propriétés de la zone de texte (Text2)Name : txtNomDataField : AuthorDataSource : adoBiblio

Propriétés de la zone de texte (Text3)Name : txtAnnéeNDataField : Year BornDataSource : adoBiblio

Les noms des Label n' ont aucune influence sur le programme et je vous laisse le soin de les renommer conformément aux pratiques usuelles dans les pages et exercices divers que je diffuse sur Internet.

Page 56: Visual Basic

Une vue de l' application en fonctionnement

Cette application a été réalisée avec en annexe un fichier nommé "Biblio.mdb".Ce fichier est trop volumineux pour être téléchargé, mais si vous possédez Visual Basic 6.0, vous l'avez automatiquement dans le répertoire "Program Files/Microsoft Visual studio".

Faites une recherche avec, "Rechercher :" depuis le lecteur ou est installé "Visual Studio".Créez à la racine de votre disque dur ("C:\") un répertoire nommé :"Atelier Vbasic\Tutoriels\Exercice_ADO\Insérez dans ce répertoire le fichier "Biblio.mdb"Installez le fichier Exo_Ado.zip en le dézipant dans ce même répertoire, et cela doit fonctionner.Pour tout problème vous pouvez me contacter via le forum ou directement à mon adresses électronique qui se trouve sur le site.

Télécharger l' application Exo_Ado.zip (sans le fichier "Biblio.zip")

Télécharger l'application Exo_Ado1.zip (avec le fichier "Biblio.zip")

Il est en effet possible de convertir des programmes écrits sous une version inférieure de VB en programme pouvant être lancés avec la version de VB 6.0

Il est vrai que si vous ne prenez pas certaine précautions au préalable la conversion risque de ne pas fonctionner et laisser perplexe l' utilisateur néophyte en la matière.

Pour pouvoir réaliser la conversion, il est indispensable de posséder la version dans laquelle a été écrit le programme.Si nous devons convertir un programme écrit avec la version de VB 3.0, il est indispensable d' en posséder la version.

Partons du principe que VB6.0 ne veut pas récupérer les fichiers des versions inférieures tous simplement parce que écrits bien souvent sous une plate-forme 16 bits la plupart des fichiers ne peuvent être lus par VB6 car les applications générés sont exclusivement écrites pour du 32 bits, donc incompatibles avec les précédentes versions.

Certains programmes font également appels à des fichiers avec extensions  "*.vbX", ou bien des fichiers avec extensions "*.dll" et ne pourront pas  être lus par VB6.0

Je vous donne comme exemple, un programme qui a été écrit avec un fichier "Threed.vbx" ne pourra pas être lus par VB6

Un programme faisant appel à une "API" de Windows du genre "Kernel.dll" ne pourra pas

Page 57: Visual Basic

fonctionner sous VB6.

Vous allez me dire que tout cela est bien compliqué ? et bien non il suffit d' avoir le réflexe logique et partir du principe que nous allons éliminer tout ce qui nous gène et ne garder que l' indispensable.

L' indispensable c' est quoi ?

L' indispensable s' est tout simplement le code qui génère les événements nécessaires au fonctionnement de l' application.

Je crée un nouveau projet sous VB6.0, je retire tous les fichiers qui composent ce projet, je ne peux pas me tromper il n' yen a qu'un, c 'est le fichier "Form1", je le retire en sélectionnant la "Form" avec le bouton droit de ma souris, et en cliquant sur l' étiquette"Supprimer Form1".

Je lance le projet VB3.0 et je regarde dans la fenêtre de projets de l' application à transformer les contrôles qui sont affichés.Si je constate que celui-ci affiche par exemple le contrôle "Threed.vbx" je sais par avance que je vais générer un problème, aussi pour éviter de générer une erreur si je le transfère, je prend au préalable la précaution d' éliminer dans la feuille "Form" tous les objets qui font référence à ce contrôle.

Par exemple si les boutons sont des boutons 3D donc qui ont une relation avec ce contrôle, j' insère dans la feuille le nombre de boutons standards nécessaire au fonctionnement de l' application, et une fois positionnés sur la feuille, je transfère les lignes de codes, procédure par procédure, en utilisant le "Couper", "Coller" de mon clavier.J'ai bien dit Couper Coller, ceci pour éviter d' engendrer une erreur de VB qui pourrait se rendre compte qu'il y a deux procédures identiques, et qui vous le signalerait automatiquement.Lorsque le transfert est terminé, j' efface les boutons 3D.

Si notre application comprend des "Frames" 3D, VB6.0 ne les digérant pas, il faut également les éliminer en prenant la précaution de ne pas éliminer les éléments positionnés et qui sont indispensables. Ce n 'est pas facile, mais on y arrive avec un peu de patience et de dextérité. 

En ce qui concerne les modules, le système d' écriture étant différant d' une version à une autre il est impératif de récupérer les codes de chaque procédures et de les transférer directement dans le module de VB6.0

On n 'insère pas le module d' une version inférieure à VB6.0, on ne fait que transférer les lignes de code, donc, les procédures contenues dans le module.

Si votre application fait appel à une DLL, contrôler s' il existe une DLL équivalent écrite pour des applications 32 bits, si elle n' existe pas, alors chercher une autre application à convertir.

Attention, il arrive que parfois les instructions afférentes à une version différent dans une autre version, dans ce cas essayer de récupérer le fichier des "API" Windows qui est un fichier Texte donc à extension *.txt et rechercher la procédure qui vous intéresse afin d' appliquer les nouvelles instructions.

Page 58: Visual Basic

Lorsque Windows95 est passé dans un environnement 32 bits, les noms de fichiers des DLL standards ont été modifiés. Pour distinguer les nouveaux fichiers des anciens, Microsoft a ajouté 32 dans leur nom(par exemple, GDI32.DLL, SPIN32, etc...).

Si votre programme fait appel sous VB3.0 à une DLL qui s' appelle pour l'exemple, "Kernel.dl" regardez dans le répertoire de "Windows/System" si vous n' avez pas la "DLL" du nom de "Kernel32.dll" qui est la version identique, mais, pour des applications 32 bits.

Lorsque vous avez appliqué les directives indiquées, vous pouvez transférer les fichiers "Form", c' est à dire les feuilles qui composent votre application.

Téléchargez l' application "Econom16.zip" qui est un programme écrit sous Visual Basic 3.0, et procédez aux modifications indiquées pour le transformer en une application 32 bits.Dans le projet "Economis.mak" Vous devez avoir deux fichiers, la feuille "Economis.frm" et la feuille frmParams.

Lorsque tous les fichiers ont étés transférés selon les directives indiquée, et que l' application ne génère plus d' erreur, transformez la en fichier exécutable par la méthode habituelle.

Dans cette application nous générons une erreur au niveau de la procédure "GetPrivate ProfileString", alors que la procédure "WritePrivateProfileString" est reconnue par VB6.0Cette procédure devant servir à dialoguer avec un fichier "*.ini", nous pouvons nous en passer en créant un fichier à accès direct pour la mise en mémoire des informations nécessaires au fonctionnement de cette application.

je n'ai pas étudié la procédure défaillante, mais je pense qu' en faisant des recherches plus approfondies, on doit pouvoir modifier le code selon les nouvelles fonctions mises en place par Microsoft.Amusez-vous et découvrez le cobaye mis à votre disposition, disséquez le et si vous trouvez la solution, faites moi le savoir à titre d'informations d'autant que cela pourra servir à d'autres.

        

Page 59: Visual Basic

Ci dessus à gauche le fichier "Params" de l'application 16 bitsCi dessus à droite le fichier "Params" issus de la transformation en application 32 bits

Si vous rencontrez des erreurs lors de la compilation, rectifiez en conséquence jusqu' à ce que VB génère le fichier éxécutable.

Un des avantages de VB6.0 est qu'il est plus "pointu" que les versions précédentes au niveau de la procédure de compilation des applications générés.

Dans l'exemple cité précédemment, et en règle générale, nous constatons que le concepteur des fichiers "API" utilisent parfois des procédures différentes entre un fichier 16 bits et un fichier 32 bits.Rechercher la procédure adéquate dans les "API" correspondants pour rétablir(si possible) le fonctionnement de la procédure.

Visual Basic a révolutionné la programmation à deux niveaux.La principale révolution concerne la conception de l' interface utilisateur.Son développement était complexe et représentait jusqu' à 75% du code.L' approche graphique et "Visuelle" de Visual Basic permet désormais de concevoir une interface utilisateur simple et conviviale, en écrivant peu ou pas de code.

La seconde révolution est l' objet de ce Tutoriel.Visual Basic est un langage de programmation modulaire.Les modules qui composent son environnement sont présentés sous la forme de contrôles ou "VBX" pour les versions inférieures à VB4 et "OCX" qui sont apparues depuis le lancement de la version 32 bits de VB4.Certains de ces contrôles livrés selon les versions disponibles sur le marché sont réutilisables à l' infini et complètent l' ensemble des outils fournis en standard avec Visual Basic.

Les puristes prétendent que Visual Basic n' est pas réellement un langage de programmation objet.Pourtant, les principes majeurs de la POO (Programmation Orientée Objet), à savoir l' encapsulation, l'héritage et le polymorphisme, y sont présent.Ces principes rendent possible une réutilisation du code supérieure aux langages conventionnels.

L' utilisation des contrôles signifie pour le programmeur, moins de code à écrire, donc simplifie au préalable l' écriture des applications développées.

J' avais dans l' esprit de vous initier aux développements de contrôles documentés avec l' utilisation d' un contrôle de type animation de boutons et comme l' application que je vais vous soumettre utilise des fichiers de sons, je suis dans l' obligation de faire d' une pierre deux coups et donc de vous présenter également le contrôle "MCI32.ocx", mais vous n' allez pas vous en plaindre, n' est ce pas ?Le contrôle "MCI" est utilisé succinctement dans ce Tutoriel et au vu de ses nombreuses possibilités, il fera l'objet d' une étude plus approfondie ultérieurement.

 Le contrôle Animation Boutons était livré en standard dans la version 3.0 de Visual Basic et se nommait "Anibutton.vbx", nous le retrouvons sous une plate forme 32 bits avec l' appellation usuelle de "ANIBTN32.OCX"

Page 60: Visual Basic

Comment réaliser une animation sous VB sans écrire de code ?(ou si peu).

Réalisation des imagesLa qualité d' un bouton animé dépend de la qualité du graphisme employé pour la réalisation des images.Réaliser quatre images qui représentent les étapes en développé des actions qui doivent être entreprises lorsque l' utilisateur provoque un événement, à savoir le bouton au repos en phase1, le bouton enfoncé en phase4 et deux phases intermédiaires ce qui va se traduire par une certaine souplesse dans le développé de l' animation.Si vous ne vous sentez pas en mesure de réaliser les images, téléchargez les sur mon site.   Vous avez au préalable chargé dans votre boîte à outils le contrôle "OCX" ce qui a augmenté

votre boîte à outils d' une icône supplémentaire correspondant à cette figure graphique.Comment fonctionne ce contrôle ?Nous allons étudier le fonctionnement d' un objet tout en sachant qu'ils fonctionnent tous à l'identique.

Positionner un objet sur la feuille, il aura comme nom par défaut "AniPushButton1"Nous allons modifier ses propriétés en fonction des événements que nous souhaitons provoquer.

Name : AniPushButton1Caption : 1         'les boutons suivants auront la valeur de 2, puis 3, etc...Cycle : 0Height : 675Width : 495Picture : Aller chercher l' image1 (bouton au repos)TextPosition : 3- above        'Positionner le texte sur le haut du boutonSpeed : 80                           'Vitesse de transition entre les images (80 ou 100)Maintenant nous allons préparer l' animation du bouton en modifiant la propriété "Frame"que nous sélectionnons. Un double clic sur cette propriété ouvre la boîte de dialogue Select Frame.Cette dernière permet de construire la séquence d'animation.

Page 61: Visual Basic

Frame1 représente l' image1 que vous devez aller chercher par l'intermédiaire du bouton "Load"L'image chargée s' affiche comme visualisée sur ce document.En appuyant sur le bouton droite de l' ascenseur, vous incrémentez de un et passez à la frame2 et devez aller chercher l'image2 et ainsi de suite jusqu'à l'image4.Vous continuez à charger les images en décrémentant depuis l'image 4 jusqu'à l'image 1 ce qui vous fait 8 images à charger pour la beauté de l' animation.Lorsque toutes vos images sont chargées, vous refermez la fenêtre et l' animation doit fonctionner. Vous pouvez télécharger le module exemple de l'applicationTélécharger l'exo : Exo1.zip

Voici le prototype de terminé, vous pouvez faire des essais et appuyer sur les boutons pour voir se dérouler l'animation en téléchargeant l' exemple de cette démonstration.

Dans cet exemple, nous avons utilisé en plus du contrôle ANIBTN32.OCX, le contrôle MCI32.OCX pour diffuser la musique.(Ce contrôle fera l'objet d'un prochain tutoriel).

Cette image est un exemple de programme qui utilise des boutons animés pour simuler l'apparence et le fonctionnement d' une radio de voiture. La ligne de boutons poussoirs est faite de 8 Bitmaps insérés dans le contrôle cadre. Lorsque l' on appuie sur un bouton, celui-ci s'enfonce et sélectionne une station de radio, l' aiguille se déplace et la mélodie sélectionnée est difusée. La poussée des boutons est temporisée avec un décalage de 100 millisecondes d'intervalle, donnant l'illusion de mouvement de l'événement provoqué. Les boutons On/Off et Exit sont créés avec 2 Bitmaps dans le cadre du contrôle. 

Page 62: Visual Basic

Dans cet exemple il a été utilisé 5 contrôles AniPushButton pour les boutons poussoirs et 2 contrôles pour les boutons On/Off et Exit.Trois images PictureBox pour la façade des stations de radio, un objet "Line" pour simuler l'aiguille et une image pour afficher la marque de l' autoradio.Le boîtier de l' autoradio est simulé simplement avec des objets "Line", vous voyez que l'on peut se passer de "Frame" ou de contrôles similaires(Panel) qui utilisent de la mémoire et qui ne sont pas toujours indispensables, mais reconnaissons le, parfois tellement utiles.

Télécharger le programme AnimButton.zip

Le soucis de la plupart des programmeurs est de protéger ses réalisations. Je n'ai pas la prétention de connaître toutes les astuces liées à la protection des programmes et il serait fastidieux de les énumérer tous, aussi nous allons étudier une protection simple mais qui découragera la plupart des adeptes du tournevis et de la combine.Pour construire notre réalisation, nous avons besoin de données "référence" prise sur le computer du client qui va installer notre réalisation sur sa machine.Le meilleur moyen est de récupérer le nom de l'utilisateur et  le nom de la machine, or j'ai pu constater que certains appareils ne comportaient pas de nom, soit que l'utilisateur ne l'avait pas rentré ou qu'il avait pu être effacé malencontreusement.Aussi nous allons utiliser le nom de l'appareil en question et pour faire simple nous nous contenterons de programmer 6 caractères tout en sachant qu'une fois le principe maîtrisé nous pourrons modifier les paramètres utilisés.

Après avoir lancé Visual Basic 6.0 et choisi un projet EXE standard et sauvegardé sous le nom de "Protect.vbp", nous écrivons les quelques lignes de code suivantes dans "Général Déclaration" d'un module que nous intitulons : general.bas

Option Explicit'Déclarations pour récupérer le nom de l' utilisateur et de l' ordinateurDeclare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As LongDeclare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long'Déclaration des variables globales pour les instructions de messageriesGlobal Title As StringGlobal msg As StringGlobal Reponse As Integer

Dans ce même module nous utilisons la routine de centrage de feuille.Sub CenterForm(frm As Form)'Centrage de la feuillefrm.Top = Screen.Height / 2 - frm.Height / 2frm.Left = Screen.Width / 2 - frm.Width / 2End Sub

Nous allons fabriquer une feuille qui va nous permettre d'effectuer tous les essais nécessaires afin que vous compreniez le système élaboré par votre serviteur.Nous allons lui laisser le nom de "Form1"Dans la procédure Form nous écrirons :CenterForm Me                'Appel de la procédure de centrage de la feuille

Page 63: Visual Basic

NomPc                             'Appel de la procédure qui va nous restituer le nom du PCNomUtilisateur                'Appel de la procédure qui va nous restituer le nom de l'utilisateur

Nous n'utiliserons pas "NomUtilisateur" mais, dans la foulée je vous donne l'écriture du code de cette procédure d'autant que même si dans votre application cela ne sert à rien, ça enjolive et je dirais même que cela fait professionnel.

Pour pouvoir récupérer les données récoltées, nous insérerons deux étiquettes que nous nommerons :PropriétéName = lblUserCode1          'Etiquette qui va nous restituer le nom de l'ordinateurPropriétéName = lblUserName1         'Etiquette qui va nous afficher le nom de l'utilisateur

Passons aux choses sérieuses et récupérons le nom du PC de notre utilisateur.Public Function NomPc() As StringDim lngLongueur As LongDim strTampon As StringDim intR As IntegerstrTampon = Space(255)lngLongueur = Len(strTampon)intR = GetComputerName(strTampon, lngLongueur)NomPc = Left(strTampon, lngLongueur)Protect!lblUserCode1.Caption = NomPcEnd Function

Et maintenant le nom de l'utilisateurPublic Function NomUtilisateur() As StringDim lngLongueur As LongDim strTampon As StringDim intR As IntegerstrTampon = Space(256)lngLongueur = Len(strTampon)intR = GetUserName(strTampon, lngLongueur)NomUtilisateur = Left(strTampon, lngLongueur - 1)Protect!lblUserName1.Caption = UCase$(NomUtilisateur)End Function

Vous pouvez télécharger l'exemple que nous venons de réaliser ici!

Nous constatons que nous avons bien en retour de notre procédure les données recherchées, à savoir le nom de l'ordinateur(M7I2B7) et le nom de l'utilisateur.Notez que si vous essayer ce programme sur votre ordinateur les données que vous allez récupérer seront différentes.

Page 64: Visual Basic

Si vous cliquez sur le point d'interrogation, vous allez ouvrir la fenêtre "A propos de..." et vous constaterez que j' ai fait une réservation dans une étiquette ou va venir se loger le numéro de série que nous allons engendrer avec les nouvelles instructions que je vous propose de saisir.

Sans vouloir faire compliqué, mais en corsant quant même le procédé pour freiner l' enthousiasme des petits futés, nous allons essayer d'embrouiller le client par une suite de caractères qui ne serviront comme un leurre qu'à noyer le poisson.

La chaîne de caractères que nous avons eu en retour comprend 6 caractères et, comme cela semble simpliste, nous allons en rajouter 6 autres ce qui correspondra à un codage

ressemblant à ceci ! soit dans l'ordre :

Mais nous constatons que dans le cas présent, nos caractères zéro ne servent à rien aussi nous allons les modifier et mettre à la place des caractères plus significatif comme par exemple :

et voila ce que nous recherchons, un numéro de série qui comprend des caractères significatifs inérants à la machine de l'utilisateur.

Avant de passer à l'écriture du code devant planifier notre construction, essayons de mettre en place la technique que nous allons employer pour dispatcher nos caractères afin de compliquer la découverte du code.

Dans la ligne du haut vous avez le code que nous a retourné la machine de l'utilisateur. Dans la ligne du bas nous avons le même code que nous avons dispersé et noyé avec d' autres caractères insignifiants ce qui donne dans le tableau de droite en remplaçant les zéros par des caractères choisis au hasard et aléatoirement.

Nous savons maintenant que le code qui doit s'inscrire dans le fichier "A propos de..." et dans l'étiquette prévue à cet effet correspond à  : 3M-5l724870-B6 (Attention car le caractère après le chiffre 5 est un "L" en minuscule et que cela peut parfois engendrer des erreurs, et il vaut mieux effectuer un copier coller plutôt que d'inscrire le code manuellement.

Ecriture du code pour récupérer nos caractères et les utiliser dans cette réalisation

Recherchons dans l'index de VB quelle est la commande qui permet d'initialiser des nombres aléatoires(pour remplacer les zéros).Nous trouvons l'instruction Randomize avec la Syntaxe suivante Randomize nombre%Dans la feuille Form nous saisissons la commande Randomizeet nous utiliserons la commande suivante pour générer des caractères aléatoires.

Protect.ctlLabel1(0).Caption = Int(Rnd * 9) ' ("Label1(0)" ainsi que les 11 autres" Label" servent à stocker individuellement les caractères de notre numéro de série.)Les "Label" seront disposés côte à côte et numérotés de Label1(0) à Label1(13) ils seront indexés,

Page 65: Visual Basic

(vous l' avez compris puisque nous avons des chiffres entre parenthèses)

Les Label devant afficher un chiffre aléatoire sont :Label1(0) - Label1(3) - Label1(7) - Label1(8) - Label1(10) - Label1(13)Les "Label1(2)" et "Label1(11)" resteront statiques et afficherons le petit tiret(-)Les autres "Label" afficheront les caractères retournés par le système.

Voici les codes à utiliser pour les "Label" devant générer des caractères aléatoires :Protect.Label1(0).Caption = Int(Rnd * 9)Protect.Label1(3).Caption = Int(Rnd * 9)Protect.Label1(7).Caption = Int(Rnd * 9)Protect.Label1(8).Caption = Int(Rnd * 9)Protect.Label1(10).Caption = Int(Rnd * 9)Protect.Label1(13).Caption = Int(Rnd * 9)

Voici les codes à utiliser pour les "Label" devant générer des caractères statiques :Protect.Label1(2).Caption = "-"Protect.Label1(11).Caption = "-"Voici les codes à utiliser pour les "Label" devant générer les caractères du code machine :Que recherchons nous dans cette opération?Tous simplement à récupérer les caractères individuellement qui se trouvent dans la chaîne de caractères qui affiche le nom de la machine.Interrogeons Visual Basic et recherchons quelle est l'instruction qui permet de récupérer un caractère dans une chaîne.Nous trouvons la fonction "Mid, ou Mid$" (Fonction ou Instruction)avec comme descriptif :Renvoie une partie d'une chaîne de caractères ou remplace une partie d'une chaîne de caractères par une autre chaîne de caractères.La syntaxe est, 1° - resultat$ = Mid$(chaîne de caractères$, position% 'longueur%)                         2° - Mid$(chaîne de caractères$, position%, longueur&) = resultats$Remarque : La fonction Mid renvoie une chaîne de caractères Variant, la fonction Mid$ renvoie une chaîne de caractères au format String.Les instructions Mid et Mid$ fonctionnent de manière identique.

Et nous trouvons les fonctions "Left, Left$" et Right, Right$Left$ = Retourne un nombre de caractères définis dans la partie gauche d'une chaîne.Right$ = Retourne un nombre de caractères définis dans la partie droite d'une chaîne. Nous avons maintenant toutes les bases nécessaires à l'écriture du code devant nous permettre de récupérer les données que nous avons besoin.

Saisissons dans la feuille "Form" l'instruction suivante 'Initialisation des fonctions et instructions usuellesInitPCNumberSerial                           'Lancer l'initialisation de InitPCNumberSérial

Et voici la procédure correspondanteSub InitPCNumberSerial()'Déclaration des variablesDim X As StringDim Number1 As StringDim Number2 As String'

Page 66: Visual Basic

'RECUPERATION DU NOM DE L'ORDINATEUR.Dim lngRep As Long, sComputerName As StringsComputerName = Space$(16)lngRep = GetComputerName(sComputerName, Len(sComputerName))Form1.ctlLabel1.Caption = sComputerName'Vous avez ainsi dans sComputerName, le nom de l'ordinateur'ou le programme est installé.'GENERATION DU USERNAMEForm1.Label1(0).Caption = Int(Rnd * 9)Form1.Label1(3).Caption = Int(Rnd * 9)Form1.Label1(7).Caption = Int(Rnd * 9)Form1.Label1(8).Caption = Int(Rnd * 9)Form1.Label1(10).Caption = Int(Rnd * 9)Form1.Label1(13).Caption = Int(Rnd * 9)'Form1.Label1(2).Caption = "-"Form1.Label1(11).Caption = "-"'Nous savons que le nom du Pc se trouve dans la chaîne : (Form1.lblUserCode1.Text)Nous écrivons :X$ = Form1.lblUserCode1.Text'Form1.Label1(1).Caption = Mid$(X$, 1, 1)Form1.Label1(4).Caption = Mid$(X$, 3, 1)Form1.Label1(5).Caption = Mid$(X$, 6, 1)Form1.Label1(6).Caption = Mid$(X$, 4, 1)Form1.Label1(9).Caption = Mid$(X$, 2, 1)Form1.Label1(12).Caption = Mid$(X$, 5, 1)

Définissons notre SerialNumberCode NumberCode1 = Label1(1) + Label1(4) + Label1(5) + Label1(6) + Label1(9) + Label1(12)Il ne nous reste plus qu'à saisir le code qui va concaténer et rassembler le contenu des "Label" pour en faire une chaîne de caractère qui sera affichée dans l'étiquette NumberCode1  End SubVous constatez que j'ai utilisé parfois le préfixe de "Form1" ou "Protect", je vous précise que celui ci n'est pas obligatoire si vous saisissez l'instruction dans la feuille dans laquelle elle va être utilisée.Malgré ce, saisissez le préfixe avec le nom que vous avez donné à votre feuille.Si celle-ci se nomme "Form1" vous devez écrire : " Form1!Label1(1).Caption = Mid$(X$, 1, 1)"Si elle se nomme "Protect" vous devez "écrire : Protect!Label1(1).Caption = Mid$(X$, 1, 1)Mais... Label1(1).Caption = Mid$(X$, 1, 1) fonctionnera égalementLe préfixe serait obligatoire si vous aviez mis la procédure dans le module.Cette petite explication à titre pédagogique, pour vous aider à y voir plus clair!

Page 67: Visual Basic

Une vue de notre prototype dans lequel je dévoile la face cachée qui affiche le système de codage et décodage de notre application.

Télécharger cet exemple ici!

Le principe est de générer un code à partir du code initial de l'ordinateur de l'utilisateur, de le mettre en forme en le modifiant(SérialNumber1), ensuite après réception de ce code fournit par l'utilisateur, lui renvoyer un autre code issu du code initial, mais mis en forme également de façon qu'il ne soit pas identique(SérialNumber2) qui va générera un NumberCode identique à celui qui sera stocké sur le computer de l'utilisateur.Pour savoir si nous devons lui accorder une licence il ne nous reste plus qu'à comparer si les deux codes sont identiques(77MB2i dans notre exemple), et s'il le sont, débrider le logiciel automatiquement.

Je sais que vous pourriez me poser cette question, à savoir, que chaque fois que nous allons initialiser cette application, le système va générer des chiffres aléatoires différents ce qui peut amener le petit malin adepte du tournevis et de la combine à connaître le fonctionnement du système!

Je pourrais vous répondre que si vous voulez connaître la suite vous devrez suivre mes cours sur Internet, mais...je suis un temps soit peu philanthrope  et ayant la fibre pédagogique qui coule dans mes veines, je vais vous dévoiler comment remédier à ce problème.Il suffit de créer un fichier à accès direct et de stocker en mémoire le code que le computer de l'utilisateur aura généré, vous voyez c'est très simple à réaliser.Pour ceux qui souhaiteraient effectuer l'entière réalisation de cette application , je leur donne rendez-vous sur mon site.Pour conclure je vous donne quelques explications sur le fonctionnement de ce prototype. Le bouton de commande RaZ sert à la remise à zéro des caractères affichés dans les champs de saisies.Le bouton de commande1 sert à afficher les caractères aléatoires dans leurs champs desaisies respectifsLe bouton de commande2 sert à afficher le code série du computer.Le bouton de commande3 sert à afficher le code série que vous devez retourner à l'utilisateur,(Votre client)Le système comparera les données enregistrées, et si elles sont identiques, activera l'intégralité du programme.

Pour éviter de vous chauffer la tête, je vous conseille de réaliser un décodeur qui vous donnera à partir du code initial de la machine du client automatiquement le code à retourner à l'utilisateur.Le principe de ce codeur décodeur relève intégralement de cet article et vous devez le réaliser sans aucun problème à partir des données que je vous ai transmises.Bon courage....

Page 68: Visual Basic

Réflexions sur cette application(mise à jour)

MULTIMEDIA MCI32 [MCI32.OCX]Utilisation : Affichage et manipulation de fichiers multimédiasEDITEUR : MicrosoftLe contrôle MCI a été fourni avec toutes les versions de Visual Basic depuis la version 3.0

Ce contrôle sert à gérer différents périphériques multimédia comme les cartes son, les séquenceurs MIDI et les lecteurs  de CD audio et de CD-ROM. Il peut aussi diffuser des fichiers au formats audio Wave(.WAV), MIDI(.MID) et vidéo(.AVI)

Le contrôle MCI ressemble à un clavier de commande de magnétoscope.

 Pour que le contrôle MCI fonctionne parfaitement, les services appropriés de l'interface de Contrôle Multimédia (Services MCI) doivent être disponibles et être capable d'accéder au périphérique son, grâce au pilote spécifique installé sous Windows.

Extrait du code pour charger un fichier AudioPrivate Sub Form_Load ()' Définit les propriétés nécessaires à l'ouverture du périphérique MCI.MMControl1.Notify = FALSEMMControl1.Wait = TRUEMMControl1.Shareable = FALSEMMControl1.DeviceType = "WaveAudio"MMControl1.FileName = "C:\WINDOWS\MMDATA\GONG.WAV"

' Ouvre le périphérique MCI WaveAudio.MMControl1.Command = "Open"End Sub

Les propriétés et événements spécifiques au contrôle MCI sont présentées dans les tableaux suivants

Multimedia MCI, contrôle, constantes

Constantes du mode

Constante Valeur Description

mciModeNotOpen 524 Périphérique non ouvert.

mciModeStop 525 Arrêt du périphérique.

mciModePlay 526 Lecture du périphérique.

mciModeRecord 527 Enregistrement du périphérique.

Page 69: Visual Basic

mciModeSeek 528 Recherche du périphérique.

mciModePause 529 Pause.

mciModeReady 530 Périphérique prêt.

Constantes de notification

Constante Valeur Description

mciNotifySuccessful 1 La commande a abouti.

mciNotifySuperseded 2 La commande a été annulée par une autre commande.

mciAborted 4 La commande a été annulée par l'utilisateur.

mciFailure 8 La commande a échoué.

Constantes d'orientation

Constante Valeur Description

mciOrientHorz 0 Boutons disposés horizontalement.

mciOrientVert 1 Boutons disposés verticalement.

Constantes RecordMode

Constante Valeur Description

mciRecordInsert 0 Insérer le mode d'enregistrement.

mciRecordOverwrite 1 Remplacer le mode d'enregistrement.

Constantes Format

Constante Valeur Description

mciFormatMilliseconds 0 Format millisecondes.

mciFormatHms 1 Format heures, secondes et minutes.

mciFormatMsf 2 Format minutes, secondes et images.

mciFormatFrames 3 Format images.

mciFormatSmpte24 4 Format SMPTE 24 images.

Page 70: Visual Basic

mciFormatSmpte25 5 Format SMPTE 25 images.

mciFormatSmpte30 6 Format SMPTE 30 images.

mciFormatSmpte30Drop 7 Format SMPTE 30 images cibles.

mciFormatBytes 8 Format octets.

mciFormatSamples 9 Format échantillons.

mciFormatTmsf 10 Suit le format minutes, secondes et images.

Lorsque j'ai décidé de construire ce Tutoriel autour du contrôle MCI, plusieurs choix s'offraient à moi, je pouvais avec toute la documentation en ma possession trouver les instructions afférentes à une application multimédia.Mais...partant du principe qu'il ne faut pas refaire ce qui est déjà fait, je me suis posé la question à savoir si je ne pouvais pas trouver dans mes fonds de tiroir une application déjà toute faite.J'ai trouvé en effet dans un programme écrit sous VB3.0 une application fonctionnant avec un contrôle MCI issu d'un fichier à extension .vbx!Pour ceux qui suivent mes Tutoriels, j'ai évoqué précédemment une méthode pour convertir les applications fonctionnant sous 16 bits en applications 32 bits, j'ai donc pensé qu'il fallait essayer de mettre à profit les précieux conseils que je divulgue sans modération.J'ai donc utilisé la méthode que je vous ai déjà indiqué et je n'ai trouvé qu'un seul problème au niveau d'un appel d' "API", je vous donne la modification que j'ai apportée afin de faire fonctionner ma feuille écrite sous VB3(16bits) en instructions pouvant être lues sous VB6.0.

Une vue de la démo du contrôle MCI que vous pouvez télécharger ici!

La zone d'image est tronquée sur ce cliché, mais elle existe et se trouve cachée par la bordure inférieure.

On peut ne pas tenir compte de la zone d'image si on se contente d'utiliser la partie son du contrôle MCI

Nous écrirons dans "Général" et "Déclarations" de la feuille "Form1"'BEGINOption Explicit'--------------------------------------------------' Variables, constantes et déclarations utilisées dans la' démo du contrôle Multimédia MCI'--------------------------------------------------

' Stocke le Handle de fenêtre du contrôle d'image' utilisé pour afficher les fichiers AVI     (si vous vouler afficher des images) Dim HwndFrame As Integer

Page 71: Visual Basic

' Récupère le Handle de fenêtre du contrôle d'image'Private Declare Function GetFocus Lib "user" () As Integer           'Déclaration d'origineNdla - Nous aurions pu ne pas tenir compte de cette déclaration si nous nous servons uniquement que de la partie son de cette application

Et voici le code que j'ai récupéré dans le fichier des API de Windows qui a une relation avec la fonction GetFocus qui se trouve dans le fichier DLL intitulé "User32"

'Declare Function GetFocus Lib "user32" () As LongJe l'ai modifié en :Private Declare Function GetFocus Lib "user32" () As Long

' Mémorise la largeur et la hauteur initiale de la fenêtre.'La feuille ne peut être redimensionnée en dessous de ces valeurs.Dim MinWinWidth As IntegerDim MinWinHeight As Integer

' Color constantsConst BLUE = &H800000Const RED = &H80&

Dans cette procédure j'ai modifié uniquement le code relatif à l'affichage des fichiers AVIEt j'ai traduit les commentaires en Français(Sur le module que vous téléchargerez, les commentaires seront en Anglais, désolé!)Private Sub GetNewFileName(AFile As String)'--------------------------------------------------' Utilise la boîte de dialogue standard du menu fichier pour chercher un nom de fichier'--------------------------------------------------Dim Canceled As Integer

Canceled = FalseOn Error GoTo GetNewFileName_Error

' Configure la boîte de dialogue fichier standardCMDialog1.Filter = "Multimedia Files|*.wav;*.mid"            ';*.avi Attention coder les extensions en minusculeCMDialog1.DialogTitle = "Select Multimedia File"CMDialog1.CancelError = True

' Ouvre la boîte de dialogueCMDialog1.Action = 1

If Not Canceled ThenAFile = CMDialog1.FileNameElseAFile = ""End IfExit Sub'

Page 72: Visual Basic

GetNewFileName_Error:Canceled = TrueResume NextEnd Sub

Les autres procédures sont identiques et ne demandent pas de modificationsVous avez besoin du contrôle "MCI32.ocx" et du contrôle "Comdlg32.ocx" pour faire fonctionner cette application, ce dernier servant au fonctionnement des boîtes de dialogues sous Windows.

Pour que le module de démonstration fonctionne, vous devez créer un répertoire "Sons" à la racine de votre disque dur"C:\" et insérer les fichiers sons qui figurent dans le fichier ZIP compressé qui accompagnent cet exposé.Pour des raisons que j'ignore, j'ai pu constater que certains fichiers Wav ne pouvaient pas être lus par le contrôle MCI que ce soit sous plate forme16 bits ou indifféremment sous 32 bits.

J'attire votre attention sur le fait que lorsque vous allez lancer l'application "MciDemo" que vous allez télécharger, celle-ci va engendrer une erreur du genre :

Fenêtre d'erreur générée par Visual Basic6

Que nous dit ce fichier ?(mcidemo.log)Ligne 18: La classe CommonDialog du contrôle CMDialog1 n'est pas une classe de contrôle chargée.Ligne 31: La classe MMControl du contrôle MMControl1 n'est pas une classe de contrôle chargée.Qu'est ce que cela veut bien dire ?Cela veut dire que cette feuille ayant été écrite avec une version précédente de VB et faisant appel à des DLL incompatibles(*.vbx) qui ne peuvent pas être lues par VB6.0, le système nous prévient d'une incompatibilité majeure et qu'il a été dans l'impossibilité de charger les contrôles sollicités par les appels aux DLL.Charge à nous d'apporter les modifications nécessaires pour charger les contrôles adéquat qui rétabliront le bon fonctionnement de ce contrôle Multimédia.

Je vous laisse le soin de modifier en conséquence les instructions inopportunes ce qui à mon avis ne devrait pas vous poser de problème avec les explications que je vous ai données.

Je vous souhaite beaucoup de plaisir à réaliser cette application.

LES FICHIERS A ACCES SEQUENTIELS   Dans certains Tutoriels que je diffuse sur Internet, je fais référence à la création de fichiers afin de stocker des données en mémoire inérantes aux applications développées.Aussi, je vous propose d'étudier les bases de la gestion des fichiers pouvant vous servir dans la plupart des applications que vous aurez à développer.

Page 73: Visual Basic

Visual Basic possède les fonctions fondamentales de gestion de fichiers séquentiels, à accès direct et binaires.Quel que soit le mode de gestion adopté, nous ouvrirons les fichiers à l'aide de l'instruction "Open" et nous les fermerons avec l'instruction "Close".Recherchons dans Visual Basic les caractéristiques de l'instruction "Open"

Description : Ouvre un fichierSyntaxe : Open fichier$ [For Mode ] [ Access accès ] [ Look ] As [#] identificateur fichier% [ Len=longueur%] (Cette chaîne de caractère doit être écrite sur la même ligne)

fichier$ : Chaîne de caractère dont la valeur décrit le nom du fichier à ouvrir.mode : Vous pouvez entrer ici une chaîne de caractères dont la valeur définit le mode de transfert des données et doit contenir l'une des expressions suivantes :Random : Mode d'accès directBinary : Mode binaire. Tout octet est lu ou écrit par "Get" et "Put"Input : Entrée séquentielle.Output : Sortie séquentielle.Append : Sortie séquentielle ajoutée à la fin d'un fichier existant.Le mot clé Access est réservé aux versions du DOS supérieures ou égales à 3.1

En paramètre, on peut passer une chaîne de caractères contenant l'une des expressions suivantes.(Attribut)Read : Lecture seulementWrite : Ecriture seulementRead Write : Lecture et écriture. Réservé aux fichiers ouverts en mode Binary ou Append

Lock : Le fichier peut, avec l'un des mots-clés suivants, être doté de certains droits d'accès autres que Lock :Shared : Tout programme peut accéder au fichier et lire ou écrire des données.Lock Read : Aucun autre programme ne peut lire des données dans ce fichier.Lock Write : Aucun autre programme ne peut écrire de données dans ce fichier.

Identificateur fichier  : Expression numérique comprise entre 1 et 255 donnant le numéro de fichier.Longueur : Expression numérique comprise entre 1 et 32767. Le fichier est ouvert en accès libre avec des enregistrements de longueur "longueur".

Exemple : Open "C:\WINDOWS\SYSTEM\DATA.DAT" For Input As #2 Lock Read

En principe nous écrirons notre fichier dans le répertoire de Windows ou de System, mais pour le cas ou vous souhaiteriez le créer dans un répertoire nous allons étudier de prime abord la création du répertoire devant accueillir notre fichier

L'application "CREREP"Je vous ai concocté une petite application pour vous permettre de créer vos répertoires favoris. Télécharger ici!

Le listing complet est disponible ci-dessous.

Page 74: Visual Basic

Private Sub Command2_Click()'Contrôler si répertoire existe?Dim MyPath As String 'Définition des variablesDim MyName As StringDim RepertName As String'RepertName$ = Text1.TextMyPath = "C:\windows\" & RepertName$ 'On initialise la variableIf Text1.Text = "" ThenTitle$ = "Création d'un répertoire"msg = "Veuillez saisir le nom du répertoire à créer!"MsgBox msg, 64, Title$Text1.SetFocusElse'Instructions

End If'Si l' utilisateur n' a pas saisie un nom... alors sortie du programmeIf Text1.Text = "" Then Exit Sub'Puisqu'il a saisi un nom, nous traitons sa demande!If (MyName = Dir(MyPath, vbDirectory)) = vbEmpty Then'On teste l' existence du répertoireMsgBox "Le répertoire " & Chr(34) & MyPath & Chr(34) & " existe bien!"'Si le répertoire saisie existe... alors sortons....Exit SubElseMsgBox "Le répertoire " & Chr(34) & MyPath & Chr(34) & " n 'existe pas!", vbExclamation'Alors...créons le répertoireRepertName$ = Text1.TextMkDir "c:\windows\" & RepertName$   'Indiquez le chemin ou doit être stocké le répertoireEnd If'Ouverture d' une fenêtre de dialogueMsgBox "Le répertoire " & RepertName$ & " vient d' être créé!"

End Sub 

Dans cet exemple, le dossier "RepertName$"sera créé dans le répertoire de "Windows"  Pour pouvoir écrire dans un fichier, nous devons d'abord le créer, quelles sont les fonctions que nous offrent VB pour nous permettent de créer un fichier sous Windows ?

ECRIRE DANS UN FICHIERTous les fichiers devant comporter un numéro, nous utiliserons la fonction "FreeFile" qui retourne le premier numéro de fichier libre.Quelles sont les informations que nous donne VB sur cette Fonction :Description : Retourne l'identificateur de fichier suivant et disponible.Remarque : Cette fonction est particulièrement utile quand vous désirez ouvrir un fichier sans savoir avec certitude si l'identificateur de fichier n'est pas déjà occupé.

Nous allons le conserver dans la variable NumFich(Numéro de fichier), nous écrivons

Page 75: Visual Basic

NumFich = FreeFile

Création du fichier "Protect.org" (vous pouvez saisir le nom de votre choix)Sub CreatSerialNumberCode()Dim UserCode As StringDim SerialCode As StringDim PasswordNumberCode As StringDim Valeur As StringDim UserName As StringDim msg As StringDim MonFichier As String''Rechercher si le fichier existe?NumFich = FreeFileMonFichier$ = "c:\windows\protect.org"If Dir(MonFichier$, vbNormal Or vbReadOnly Or vbHidden Or vbArchive) = "" Then'Le fichier n' existe pas, alors...le créer!Open "c:\windows\protect.org" For Output As #NumFich'=============== [Affichage]===================='Ecriture des valeurs dans la clé [Affichage]Print #NumFich, "[Affichage]"Valeur$ = "0"    'Récupérer la valeur dans le champ de saisie approprié - Ex Protect.lblAffichage.Caption

'Afficher la valeur récupéréePrint #NumFich, "Device="; Valeur$'=============== [UserName ]===================='Ecriture des valeurs dans la clé [UserName]= Nom de l'utilisateurPrint #NumFich, "[UserName]"UserName$ = "0"  'Récupérer la valeur dans le champ de saisie approprié - Ex Protect.lblUsername.Caption

'Afficher la valeur récupéréePrint #NumFich, "Device="; UserName$'================ [UserCode ]===================='Ecriture des valeurs dans la clé [UserCode] = Nom de l' ordinateurPrint #NumFich, "[UserCode]"UserCode$ = "0" 'Récupérer la valeur dans le champ de saisie approprié - Ex Protect.lblUserCode.Caption

'Afficher la valeur récupéréePrint #NumFich, "Device="; UserCode$'================ [NumberSerie ]=================='Ecriture des valeurs dans la clé [Serial Code]Code de controleSerialCode$ = "0" 'Récupérer la valeur dans le champ de saisie approprié - Ex Protect.lblSerialCode.Caption

Print #NumFich, "[SerialCode]"'Afficher la valeur récupéréePrint #NumFich, "Device="; SerialCode$'================== [Password ]================='Ecriture des valeurs dans la clé [Password]Print #NumFich, "[Password]"PasswordNumberCode$ = "0" 'Récupérer la valeur dans le champ de saisie approprié - Ex Protect.lblPasswordNumberCode.Caption

'Afficher la valeur récupéréePrint #NumFich, "Device="; PasswordNumberCode$'Ferme le fichierClose #1

Page 76: Visual Basic

Else'Le fichier existe, alors...pas de commentaires, sortie...End IfEnd Sub

Dans cet exemple si vous ne remplacez pas la valeur "0" par le contenu du champs de saisie de l' exemple cité, vous afficherez "0"(Zéro)

L'application CREATFILE

Une vue de l'application concoctée spécialement pour les internautes de www.developpez.com

Elle vous permettra de mieux comprendre le système employé dans ce module de conception originale

Si l'on veut laisser le choix à l'utilisateur du nom du fichier à créer, nous utiliserons les données suivantes, à savoir :

NomFile$ = ctlTexte1.TextNumFich = FreeFileOpen NomFile$ + ".org" For Output As #NumFichL'extension est fantaisiste, libre choix à vous d'utiliser celle qui vous conviendra.

Télécharger l'exemple ci contre ici!

Vous savez dorénavant créer un répertoire, créer un fichier et saisir les données que vous souhaitez mettre en mémoire, il ne nous reste plus qu'à réaliser l'application qui va nous permettre de lire ce fichier.Vous ajoutez une zone de liste et vous lisez dans celle-ci les données enregistrées afin de les traiter dans votre application.

UN PROGRAMME SANS INTERFACE UTILISATEUR GRAPHIQUERien ne s'oppose aux premiers pas sous Visual Basic, si vous êtes débutants, sachez rester humble pour vos débuts. Avant de vous lancer dans une super production à la Métro Goldwin Mayer, apprenez à vous servir de l'environnement de programmation, à créer des feuilles et à saisir du code.

L'interface graphique n'est pas impérative pour tous les utilitaires de Visual Basic, ce qui permet de les écrire exclusivement sous l'éditeur de texte.Le sous programme "Sub Main" que je vous propose d'étudier a une signification particulière car Visual Basic ne connaît pas de programme principal. Il peut servir à lancer l'exécution du programme à la place d'une feuille.

Page 77: Visual Basic

Les quelques exemples qui vont être développés vont vous montrer comment écrire des programmes dépourvus d'interface utilisateur graphique.

Ouvrez un nouveau projet par "Fichier"/"NouveauProjet", choisissez l'Icône "EXE" standard et affichez la fenêtre de projet "Projet1".Dans celle-ci vous devez avoir un fichier d'inscrit "Form1", en cliquant avec le bouton droit de votre souris sur l'étiquette, vous ouvrez une nouvelle fenêtre, recherchez l'étiquette "Supprimez Form1"et cliquez sur celle-ci pour provoquer l'effacement de la feuille "Form1" dans la fenêtre de projet.Dans la barre de menu de VB cliquez sur "Projet"/"Ajoutez un moduleLe fichier "Module1" vient d'être créé !Dans l'objet "Général" - "Déclarations", tapez :

Sub Main et appuyez sur le bouton <Return> ou <Entrée> de votre clavier.Vous venez de créer la procédure :Sub Main ( )

End Sub

Nous allons écrire une petite application qui permet d'arrêter la machine.Dans l'objet "Général" - "Déclaration" on écrit :

Declare Function ExitWindows Lib "user32" Alias "ExitWindowsEx" (ByVal dwReserved As Long, ByVal uReturnCode As Long) As Long (mettez cette instruction sur la même ligne)

Et dans la procédure Main précédemment créée on saisi :Sub Main( )'Dim X As LongDim y As Long''X = ExitWindows(4, EWX_FORCE)y = ExitWindows(1, EWX_SHUTDOWN)End Sub

Vous avez vu que j'ai mis en commentaire une instruction(X)En effet j'ai découvert en feuilletant la documentation de Windows que cette instruction permet de forcer la fermeture d'une application qui a buggé, qui vous affiche parfois un panneau de couleur qu'il est souvent difficile de faire disparaître.Je ne l'ai pas essayé ? manque de temps désolé, je vous suggère de créer la même procédure en mettant cette-fois l'instruction "Y" en commentaire.Et si possible me faire savoir si cela fonctionne ? (Petit exercice)Voila c'est tout !  Votre programme est terminé, il ne nous reste plus qu'à créer un fichier exécutable en utilisant dans la barre de menu l'étiquette adéquate, mais, je vais broder un tout petit peu en vous demandant d'insérer dans votre programme les renseignements relatifs à la réalisation de votre application, cela fait un peu plus "Pro".

Dans la barre de menu, cliquez sur "Projets"/"Propriétés de Projet1"

Page 78: Visual Basic

Plusieurs onglets se présentent à nous, celui qui nous intéresse se nomme, "Créer".Nous l'ouvrons et dans la "Frame" "Informations sur la version", nous découvrons une ComboBox qui liste différentes étiquettes, à savoir :Commentaires :Copyright :Description du fichier :Marques légales :Nom du produit :Organisation :Remplissez le champ de saisie qui se trouve à droite des étiquettes en fonction de vos critères respectifs.

Pour pouvoir récupérer le nom de notre réalisation, nous la sauvegardons sous le nom de "CloseWin", ensuite nous pouvons compiler le fichier en allant dans la barre de menu et en cliquant sur :"Fichier"/"Créer CloseWin.exe"Ce fichier pourra être stocké ou bon vous semble, d'autant que nous allons l'ouvrir à partir d'un raccourci clavier.Je ne veux pas douter de vos compétences, néanmoins pour ceux qui ne connaîtraient pas la marche à suivre, voici comment faire un raccourci clavier depuis le bureau(l'écran) de votre computer.Après la compilation de votre projet et la fermeture de Windows, procédez comme suit :Cliquer du bouton droit sur le bureau (*)    'Selon la configuration de votre souris(*)Cliquez sur "Nouveau" (bouton Gauche) (*)Cliquez sur "Raccourci"Cliquez sur le bouton "Parcourir"Sélectionnez le programme "CloseWin.exe"Cliquez sur le bouton "Suivant", puis sur le bouton "Terminer"Vous pouvez arrêter votre appareil depuis l'icône que vous venez d'installer sur le bureau!Vous pouvez également modifier l'icône installé sur votre bureau, en cliquant sur le bouton droitde la souris, puis sur "Raccourci"/"Changez d'icône", Parcourir et rentrer dans le répertoire de Windows pour rechercher le fichier "Moricons.dll", choisissez l'icône qui vous convient.

Je vous propose pour clôturer ce chapitre de réaliser une autre application basée sur le même principe.Cela sera plus simple maintenant puisque nous en connaissons le fonctionnement.Cette application sera sauvegardée sous le nom de "RunProg.exe"Nous créons sous le même principe évoqué précédemment un fichier "Module1.bas" que nous renommerons sans plus attendre "RunProg.bas".

Page 79: Visual Basic

Dans l'objet "Général" - "Déclarations", tapez :Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long Faites un copier/coller c'est plus simple et surtout plus sur![Ctrl + c] pour copier et [Ctrl +V] pour coller, petit rappel, dès fois que...!

Et dans la procédure Main précédemment créée on saisi :Sub Main()     Dim RetVal     Dim fName As String     fName = "Index.html"    'Ou le nom du fichier que vous voulez ouvrir     RetVal = ShellExecute(hwnd, "Open", fName, ByVal 0&, 0&, SW_Normal)End SubIl ne reste plus qu' à compiler notre nouvelle réalisation qui sera insérée dans les fichiers devant visualiser une composition appartenant à un Cd-Rom.J'ai réalisé une variante de ce programme que je vous laisserai découvrir en téléchargement

Télécharger "RunProg.exe" classique selon l'exposé décrit dans cette page

Télécharger"RunProg1.exe" variante que j'utilise depuis des années dans la diffusion de mes Cd-Rom                                             Ce programme a été écrit initialement en VB4.0 puis Transcrit en VB6.0

Autre exemple :LES PROPRIETES DE L'OBJET "ERREUR"Une fois que l'exécution du programme a été transmise à votre routine de gestions d'erreurs, votre code peut déterminer l'erreur qui s'est produite en affichant son numéro et sa description.Quand une erreur se produit, les informations la concernant sont stockées dans l'objet "Err"Err.Number : indique le numéro de l'erreurErr.Description : indique la description de l'erreur'Voici le listing de cette application :Sub Main ( )On Error GoTo SortieDiscrete                                    ' ou l'étiquette de votre choixIf Dir("c:\toto\danseaveclesloups.txt") = False Then     MsgBox "Ce fichier n'existe pas!"End IfExit SubSortieDiscrete:MsgBox "Erreur N° : " &Err.Number & VBLF & Err.DescriptionEnd Sub

Si le fichier existe, alors nous sortons de cette routine par l'instruction Exit Sub et nous ignorons l'étiquette "SortieDiscrete".Finalement vous constatez que la programmation c'est un circuit ferroviaire avec des aiguillages qui vous dirigent selon le bon vouloir du concepteur du programme.

Page 80: Visual Basic

Si le fichier n'existe pas, le mot "SortieDiscrete" remplie sa fonction et vous renvoie à l'étiquette du même nom, c'est à dire "SortieDiscrete" qui demande à la boîte de messagerie MsgBox de vous indiquer le type d'erreur et sa description.

Lorsque l'on utilise un gestionnaire d'erreur, Visual basic affiche le numéro de l'erreur ainsi que le descriptif de l'erreur. Lorsque l'erreur n' est pas reconnue par Visual Basic un message vous informe que l'erreur est inconnue du système.

Voila, c'est tout pour aujourd'hui ! Bon travail !

Comme dans n'importe quel langage de programmation, la notion de variable est bien établie.Nous trouvons deux grands types de variables dans Visual basic 6.Les variables classiques et les variables objet.Les premières permettent de manipuler toutes sortes de données, comme par exemple, les valeurs numériques, les valeurs logiques, les dates, le texte, etc...Le deuxième type est un peu plus complexe car il permet de pointer sur les objets du projet(les feuilles) ainsi que sur des applications externes à Visual Basic comme Excel ou Word.Une variable objet permet ainsi de créer une instance d'une application afin de travailler directement à l'intérieur de celle-ci.

DEFINITION DES VARIABLESLes variables peuvent s'apparenter à des cases dans lesquelles on stocke des informations.Ces cases sont situées dans la mémoire de l'ordinateur.Elles peuvent contenir une grande variétés de données. Pour stocker une donnée dans une variable, nous luis assignerons une valeur en utilisant l'opérateur "égale" (=).Chaque variable reçoit un nom qui lui est propre et qui peut comporter jusqu'à 254 caractères.Le nom d'une variable doit commencer par une lettre et il ne doit être identique à aucun mot réservé du Visual basic.

Les types fondamentaux de donnéesLes entiers(Integer), flottants (Real), chiffres monétaires (Currency) et les chaînes de caractères (String) sont gérés dans des variables de type bien définis.Chaque type peut couvrir une échelle de valeurs qui lui est propre.Les débordements des limites de valeur sont la cause d'erreurs pendant l'exécution du programme.La déclaration d'une variable, qui définit son type, est effectuée à l'aide d'un suffixe(le% désigne le type entier par exemple) ou de l'instruction Dim (exemple : Dim Nombre As Integer)Le suffixe permet de reconnaître le type d'une variable du premier coup d'œil.Vous pouvez lire dans le tableau décrit plus bas, une description des types  fondamentaux de données de Visual basic.Depuis la version 6 de Visual Basic, le programme vous oblige à déclarer les variables par la  commande "Option Explicite"

Page 81: Visual Basic

Etendue d'une variable

L'étendue, ou durée de vie, d'une variable détermine le type de commandes pouvant accéder à cette variable. Une variable déclarée à l'intérieur d'une procédure a une étendue locale : la variable est créée et détruite chaque fois que la procédure est exécutée. Il n'existe aucun moyen d'y accéder en dehors de la procédure. Une variable déclarée en dehors d'une procédure a une étendue globale : sa valeur est accessible et modifiable par n'importe quelle commande.Lorsque vous déclarez des variables, une variable locale et une variable globale peuvent avoir le même nom. La modification de la valeur de l'une des variables ne modifiera pas la valeur de l'autre. Néanmoins, si vous ne déclarez pas de variables, vous risquez de modifier par inadvertance la valeur d'une variable globale.

Pour éviter tout problème, prenez l'habitude de déclarer explicitement toutes les variables. 

Déclarations de variables

Pour déclarer explicitement une variable avant de l'utiliser, (en principe au début d'une procédure d'évènement), il suffit d'indiquer le nom de la variable derrière l'instruction "Dim" (Dim est l'abréviation de Dimension).Cette action réserve en mémoire l'espace nécessaire pour stocker la variable et indique à Visual basic le type de variable déclarée.

Si vous ne précisez pas le type de la variable, Visual Basic la déclare par défaut comme étant de type "Variant".Après avoir déclaré la variable, vous pouvez faire appel à celle-ci à partir de votre code, par exemple, l'instruction suivante : Nom = "Developpez"affecte "Developpez" à la variable "Nom"Label1.Caption = Nom affichera "Developpez" dans l'étiquette (Label1) du programme.

Déclarer des variables sans DIMIl est également possible de déclarer une variable sans le mot "Dim".Cette technique est nommée "déclaration implicite".Pour déclarer une variable sous cette forme, il suffit simplement d'employer son nom, par exemple :Nom = "Oscar"Néanmoins nous utiliserons l'option explicite pour la réalisation de toutes les applications développées dans cette rubrique.

Modifier la valeur d'une variableLes instructions sont organisés en trois groupes. La première instruction déclare la variable Nom à l'aide de Dim. Aucun type n'étant spécifié, la variable prend le type "Variant" et peut contenir du texte ou des nombres.Les secondes et troisième lignes affectent le nom de "Pierre" à la variable "Nom", puis affichent le contenu de la variable dans l'étiquette "Label" de la feuille.Il s'agit là d'un des emplois les plus courants des variables : le transfert d'informations vers une propriété d'objets.

Exemple :

Page 82: Visual Basic

Modifier la valeur d'une variableVeuillez saisir les instructions suivantes pour déclarer et utiliser la variable "Nom:"Dim NomNom = "Pierre"Label1.Caption = Nom

Nom = 99Label2.Caption = Nom

Cliquez sur le bouton "Voir"

Travailler avec des types de données spécifiques

Type de données Taille Plage de valeurs Exemples

Entier (Integer) 2 octets -32768 à + 32767Dim Oiseaux%Calendrier% = 12

Entier long 4 octets-2.147.483.648 à+ 2.147.483.647

Dim Charge&Charge& = 35000

Simple précision etvirgule flottants

4 octets-3.042.823.E38 à3.402823E38

Dim Prix!Prix! = 895.50

Double précision etvirgule flottants

8 octets

-1.79769313486232D3308 à1.79769313486232D3308

Dim Pi #Pi#=3.1415926535

Monnaie (Currency) 8 octets  Dim Dette@Dette@= 760010010.50

Chaîne de caractères (String)

1 octet par caractère

0 à 65 535 caractèresDim Chien$Chien$ = "Berger allemand"

Bolléen ( boolean) 2 octetsTrue (Vrai) ou False (Faux)

Dim Drapeau As BooleanDrapeau = True

Date 8 octets1 janvier 100 à31 décembre 9999

Dim anniversaire As DateAnniversaire = #3-1-56#

Variant

16 octets pour les nombres et 22 octets + 1 octet par caractères pour les chaînes de caractères

Les plages de tous les autres types

Dim PrixPrix = 289.135

De ce tableau, il ressort qu'il vaut mieux(si possible) utiliser un type de données autre que celui de variant.Nous avons concocté un petit programme pour argumenter le tableau précédent.

Page 83: Visual Basic

Télécharger l'exemple ici!

Cet exemple est livré avec les sources à titre pédagogique, vous pourrez voir le code de la procédure "List" ainsi que le code de l'instruction "Select Case"

le programme permet d'expérimenter 9 types de données, dont le type "Entier", Virgule flottante en simple précision et Date.Le programme affiche un exemple de chaque type lorsque vous cliquez sur son nom dans la liste.

Type de données personnaliséesVisual Basic permet également de créer vos propres types de données.Cette fonction est particulièrement utile si vous avez à traiter un groupe de données formant un ensemble incluant différentes catégories de types de données.

La déclaration suivante est un exemple de création d'un type de données personnalisé.

Type Entreprise     Nom As String     DateDinscription As DateEnd Type

Vous faites appel à ce type de données par l'instruction suivante :Dim ChefEntreprise As EntrepriseChefEntrepriseName = "Jacques Dupont"

Gérer des contrôles comme des variables objetsVous pouvez non seulement utiliser des objets comme variables de tableau de contrôles, mais aussi passer ces variables objets et ces tableaux d'objets comme paramètres d'un sous programmes.

Cela peut paraître obscur pour certains, mais le but de cette méthode est tout simplement de gagner du temps à l'exécution de votre application.Combien de fois j'ai lu dans les colonnes de certains sites ou dans les exposés de certains programmeurs que le Visual basic était lent...je ne veux en aucun cas me faire le défenseur du VB, mais je me pause une question, à savoir si toutes les possibilités d'exécution du code ont vraiment étés examinées.

Or je constate que bien souvent on écrit un programme comme on le construit lors d'un premier jet, et qu'il est parfois rare que l'on se retourne sur sa réalisation pour lui apporter des modifications.Je ne veux pas généraliser aussi je vous laisse toute liberté pour analyser le bien fondé de mes observations et vous invite à réaliser l'application que je vous propose d'écrire pour argumenter mon petit exposé.

Prenons par exemple la réalisation d'une feuille qui doit contenir une trentaine de zones de textes, chacune

Page 84: Visual Basic

devant comporter un type de données bien spécifiques.Certaines ne pourront accepter que des caractères numériques, d'autres des données alphabétiques, et certaines peuvent être limités en nombre de caractères.

Cette configuration devrait normalement nécessiter trois sous programmes distincts, un pour chaque type de zone de texte.

Un sous programme de validation de zone de texteNous allons écrire un sous programme de validation de texte pour démontrer le bien fondé de cette explication, ce qui nous permettra de de savoir quel est le type de données requis par chaque zone de texte ainsi que la longueur maximale des données saisies.Ce qui obligera le programme à ignorer toute saisie qui n'obéirait pas aux règles établies par le concepteur du programme.passons aux choses sérieuses et créez un nouveau projet et positionnez sur l'interface les objets affichés ci-après.

Il ne nous reste plus qu'à rentrer le code pour faire fonctionner notre application.

Télécharger l'exo si vous ne voulez pas faire l'effort de saisir le texte.

Télécharger l'exo

je vous laisse le soin de positionner sur la feuille les objets suivants :1 Label - Label1 - Propriété.Caption = "Validation avec Variables Objets"3 autres Label pour les autres étiquettes, à savoir : Label2, Label3, Label4

Description Propriété Valeur

Zone de texte exclusivement alphabétique Name txtValider

  Index 0

  Tag A12

     Zone de texte exclusivement numérique Name txtValider

  Index 1

  Tag N5

     Zone de texte polyvalente Name txtValider

  Index 2

  Tag *4

Vous pouvez modifier la valeur de la propriété Tag qui correspond au nombre de caractères que vous avez définis dans les champs de saisie, mais assurez vous que les données affectées à ces propriétéssoient écrites exclusivement en majuscules.

Nous positionnons ensuite 3 TextBox, Text1, TExt2 et Text3, les 3 textBox auront la même propriété Name "txtValider"  et seront indexés de Index0 à Index2.

Page 85: Visual Basic

Il ne nous reste plus qu'à insérer le code devant faire fonctionner notre application.

Option Explicite                             'Nous forçons VB à déclarer les variablesPrivate Sub ValiderTouchePress(txtControle As TextBox, nKeyAscii As Integer)

Dim sMaxLength As StringDim sKey As String * 1'If nKeyAscii < 32 Or nKeyAscii > 126 Then Exit SubsMaxLength = Right$(txtControle.Tag, Len(txtControle.Tag) - 1)'If Len(txtControle.Text) >= Val(sMaxLength) ThenBeep 'nKeyAscii = 0Exit SubEnd If'Select Case Left$(txtControle.Tag, 1)Case "A"sKey = UCase(Chr$(nKeyAscii))'If Asc(sKey) < 65 Or Asc(sKey) > 90 ThenBeepnKeyAscii = 0Exit SubEnd If'Case "N"If nKeyAscii < 48 Or nKeyAscii > 57 ThenBeepnKeyAscii = 0Exit SubEnd IfEnd Select'End Sub

Nous insérons également le code devant provoquer l"événement lorsque nous insérons du texte dans les TextBoxPrivate Sub txtValider_KeyPress(Index As Integer, KeyAscii As Integer)     ValiderTouchePress txtValider(Index), KeyAsciiEnd Sub

Nous constatons que la première "TextBox" n'accepte que des caractères alphabétiques, la seconde accepte des caractères numériques et la troisième qui est polyvalente accepte les deux options précédentes sans aucun problème dans la limite du nombre de caractères que nous avons fixé!

Déclarer des variables objetsPour pouvoir déclarer des variables objets comme par exemple les zones de texte que nous venons d'étudier, il faut écrire :Dim txtControle As TextBoxLorsque l'on déclare des variables objet explicitement, le code est plus efficace, plus facile à déboguer et s'exécute plus rapidement.Voici la liste type de variables objet que Visual Basic accepte.

CheckBox ComboBox CommandButton MDIForm

Data DirListBox DriveListBox FileListBox

Page 86: Visual Basic

Grid Frame HScrollBar Image

Label Line ListBox Menu

OptionButton OLE PictureBox Shape

TextBox Timer VScrollBar Form

Ce sont les objets standardDéclarations explicites et implicites ? Qu'est sa quo ?

Les déclarations implicites...Rendent votre code plus difficile à comprendre.Réduisent les chances de Visual Basic à piéger les erreursSont beaucoup plus lentes

Les déclarations explicitesFacilitent le débogageLorsque l'on déclare un objet par un type spécifique, comme une zone de texte par exemple, Visual Basic sait quelles propriétés sont valables pour cette dernière

VISUAL BASIC ne vérifie les propriétés d'un objet contrôle qu'en phase d'exécution, tandis que dans le cas de contrôles explicites, il annoncera les erreurs de propriétés au moment de la compilation.

Nous allons essayer de comparer les deux possibilités pour constater si vraiment la différence d'exécution est flagrante.Nous lançons un nouveau projet et nous plaçons sur la feuille les contrôles suivants :

Un Label "Temp écoulé"Un second Label (Contrôle étiquette)Le contrôle étiquette aura comme propriété Name : lblTempsTrois boutonsLes boutons de commandes auront comme propriété Name: cmdExplicite, cmdImplicite, cmdQuitter

Il ne nous reste plus qu'à saisir le code devant faire fonctionner notre application

Private Sub cmdExplicite_Click()Dim VarTemps As VariantDim nIndex As Integer'VarTemps = Now'For nIndex = 1 To 30000Temps_Explicite cmdExplicite, nIndexNext'cmdExplicite.Caption = "&Explicite"'lblTemps.Caption = Minute(Now - VarTemps) & " Mins, " & Second(Now - VarTemps) & "Secs"End Sub'Private Sub cmdImplicite_Click()Dim VarTemps As VariantDim nIndex As Integer

Page 87: Visual Basic

'VarTemps = Now'For nIndex = 1 To 30000Temps_Implicite cmdImplicite, nIndexNext'cmdImplicite.Caption = "&Implicite"'lblTemps.Caption = Minute(Now - VarTemps) & " Mins, " & Second(Now - VarTemps) & "Secs"End Sub'Voici les deux sous programmes à saisir dans la section "Général" de la fenêtre de code:Private Sub Temps_Explicite(cmdCommande As CommandButton, nNumero As Integer)cmdCommande.Caption = nNumeroEnd Sub'Private Sub Temps_Implicite(cmdCommande As Control, nNumero As Integer)cmdCommande.Caption = nNumeroEnd Sub

Il ne nous reste plus qu'à comparer le temps écoulé par les deux instructions implicites et explicites.Nous constatons que la première génère :Explicite = 0 minute et 2 secondesImplicite = 0 minute et 1 secondeL'essai n'a été pratiqué que sur une portion infime de texte, imaginez un programme avec des millions voire des milliards de caractères ?

Néanmoins, parmi  les divers essais que j'ai pu réaliser, j'ai constaté que bien souvent le temps entre les deux instructions étaient identiques et que parfois il est vrai la valeur affichée était de 50% inférieure à la valeur initiale.Je vous laisserai le soin de tirer les conclusions que vous voudrez bien formuler sur l'exposé et l'exemple pratique que je viens de vous proposer.

Vous pouvez télécharger l'exo complet de cette réalisation.  

Bon travail et merci de vos commentaires.

Prochain tutoriel : Les bases de données

La signification du terme "Base de données"Chaque nouvelle version de Visual basic propose une méthode plus performante d'accès aux données et VB6 ne fait pas exception à la règle.Je ne sais pas à quelle époque le terme "Base de données" à fait son apparition, mais les sources de données ont toujours pratiquement existées, sous basic nous avions la possibilité de stocker des informations dans des fichiers et par effet inverse la possibilité d'aller rechercher ses même informations qui y étaient stockées.A l'époque il était question de magasins de données ou de sources de données ce qui me paraît plus exact que base de données, mais cela n'engage que moi, et je vous laisse le soin d'utiliser le terme qui vous convient.Qu'est ce qu'une base de données ?Tout simplement, une base de données est un vaste ensemble d'informations.En programmation, les bases de données sont souvent contenues dans des programmes tels que... Access, Dbase, Fox Pro, Paradox, etc... qui existent depuis de nombreuses années.Mais sans aller chercher ces noms célèbres qui sont devenus références en la matière, nous avons tout près de nous des bases de données que nous nous servons tous les jours comme, le courrier électronique, les documents provenant de traitements de textes, etc...Ils sont tous composés de données, même si elles sont stockées sous des formes différentes.Ce sont des sources de données.Ont peu imaginer une base de données comme un classeur à plusieurs tiroirs dans lesquels on rangeraient différents dossiers classés par discipline ou par département.Chaque tiroir possédant des classeurs devant contenir différents dossiers.

Page 88: Visual Basic

C'est de la que vient l'expression emmagasiner des dossiers d'ou la relation emmagasiner des données ou magasin de données.

Dans tout environnement multitâche comme Windows, le besoin nous sollicite pour échanger des données entre des applications simultanément en cours d'exécution;La méthode classique consiste à écrire ces données sur disquette ou sur disque dur et à les lire ensuite avec la deuxième application.

Les échanges de données ont été améliorées avec le développement des systèmes d'exploitations et des logiciels qui ont afflués sur le marché de l'informatique.La première des possibilités consiste à utiliser le presse-papiers qui est accessible à toutes les applications.Le programme d'origine écrit les données dans le presse-papiers, et le programme de destination va les lire tout simplement.

Cet échange dynamique de données a été appelée par Microsoft  "Dynamic Data Exchange" ou "DDE" L'objectif de DDE étant de permettre des échanges automatiques entre toutes les applications en cours d'exécution.

Cette méthode peut s'apparenter à l'ancêtre des bases de données, elle utilisait divers méthodes et tous les événements, propriétés et instructions recourant au DDE contenaient le mot clé "LINK" qui signifie "Liens"La communication s'établissait entre un émetteur appelé "Client" et un récepteur appelé "Serveur"

Pour ceux qui veulent tester cette méthode je vous donne la possibilité de télécharger les fichiers de l'application "Client/Serveur" appelée "WinLink", attention, je n'ai pas jugé utile de convertir tous les fichiers(25) qui sont au format d'origine VB3.0. Il vous faut donc le Run Time VBrun300.dllpour pouvoir fonctionner. Disponible sur la plupart des sites qui traitent du Visual Basic (Sur le mien entre-autre)    Télécharger WinLink

Lorsque j'ai démarré la programmation sous VB3.0 mon responsable de services m' a demandé de réaliser un programme devant stocker des données avec comme tout renseignement une feuille de papier au format 21x29,7 sur laquelle était écrit de nombreuses informations ainsi que quelques images.La proposition était simple... enfin, je peux vous dire que je n'étais pas fier, car réaliser un programme devant stocker toutes les informations requises portées sur cette feuille me paraissait être une charge insurmontable, enfin, je me suis mis au travail. Ce programme que j'ai appelé "FICHLOGI" m' a demandé 7 mois de mon temps (accordez moi des circonstances, je débutais)pour pouvoir le réaliser. Deux sources de données ont été imbriquées pour pouvoir traiter toutes les informations possibles qui ont été demandées et ceci sans aucun moteur de données, tout cela pour vous indiquer qu'il n'est pas indispensable d'utiliser les moteurs de bases de données existantes.Pour revenir à nos moutons,

Définissons les différentes technologies d'accès aux données.

DDE Microsoft  "Dynamic Data Exchange (voir exposé ci-dessus)

DAO - Data Access Object - Les objets d' accès aux données(DAO) ont été créés pour permettre aux programmeurs d'accéder à "Jet DataBase Engine, un moteur de base de données fourni avec Access.Tous les fichiers avec extension *.mdb sont issus de bases sous Access.

ODBC - Open DataBase Connectivity (Connectivité des bases de données ouverte), a été conçue pour permettre aux programmeurs de se connecter à diverses bases de données.Cette BdD était complexe d'utilisation et devenait un inconvénient pour la plupart des programmeurs. (depuis Visual basic3)

RDO -  Remote Data Objects (Objets de données distants) a été conçu en partie pour résoudre le problème de la complexité d'ODBC

OLEDB - Est une technologie sous-jacente d' ADO

ADO - Le dernier né de la mouture Visual basic a été conçu pour combiner les fonctionnalités les plus

Page 89: Visual Basic

performantes des technologies citées ci-dessus et pour répondre aux besoins d'un nouveau type de programmation, notamment l'Internet.Les programmeurs utilisant ce type de moteur pourront créer sans difficulté et avec plus d'aisance les réalisation fonctionnant sous des bases de données. (Depuis Visual basic6)

Pour ceux qui voudraient faire un essai sur les bases de données avec "ADO", je vous invite à lirele Tutoriel 19 qui a pour titre : Accès aux bases de données "ADO" avec Visual Basic 6.0 ainsi qu'aux différents articles postés sur ce serveur et écrits avec brio par des confrères issus de la programmation, vous en trouverez le descriptif sur le site "Développez.com"

Ce qui m'intéresse finalement ce n'est pas de faire comme les développeurs qui diffusent leurs réalisation, car la logique voudrait que je vous parle de la technique "ADO", mais comme beaucoup de programmeurs s'y intéressent et que finalement vous êtes en train d'apprendre à programmer, je vous propose de  travailler sur une source de données sans moteur existant ou ayant déjà été publié. Cela sera certainement plus difficile pour vous, mais ne dit on pas que l'on apprend à se former avec l'expérience des aînés?, et puis, vous aller bénéficier de mon expérience sans comme moi ramer si l'on peut dire et vous casser les dents comme cela m'est souvent arrivé!

Pour réaliser le programme "FICHLOGI"©1995 GilMirSoft nous avons besoin de connaître le fonctionnement des fichiers "MDI" aussi avant de nous attaquer à cette super production du style "Métro Goldwin Mayer", nous allons nous attaquer à une petite réalisation qui est un gestionnaire d'icônes utilisant des fenêtres MDI.Aussi, je vous donne rendez-vous dans le prochain Tutoriel (29) dans lequel nous traiterons exclusivement des applications MDIEn attendant, vous pouvez télécharger le module exemple des applications MDIBon travail.....

Prochain Tutoriel : Les applications Multi Documents Interface (MDI)

Visual Basic comporte trois styles d'interfaces :Interface monodocument(SDI) Une application SDI contient une seule fenêtre de données. Lorsque l'utilisateur ouvre un nouveau fichier de données, le contenu vient prendre la place de la fenêtre précédemment ouverte.(Style Bloc Notes que tout le monde connaît)

Interface multidocument(MDI) Une application MDI contient plusieurs fenêtres de données.Microsoft Word, par exemple, permet d'ouvrir autant de documents que l'on veut.Le code MDI de Word garantit que chaque document apparaît dans sa propre fenêtre (voir figure ci-dessous)Dans cet exemple nous avons ouvert 4 feuilles sous Word.

On passe d'une feuille à l'autre en cliquant sur la fenêtre appropriée ou en la sélectionnant dans la barre de menu. Lorsque l'utilisateur bascule d'une feuille à l'autre, la fenêtre sélectionnée reçoit le focus et devient la feuille active.Le focus dans le cas d'une feuille a sa barre de titre marquée par une couleur plus visible de nuance bleue.Le focus peut être passé à un objet par programme, grâce à la méthode suivante : Objet.SetFocusles propriétés Enabled et Visible de l'objet doivent être à "True".

Page 90: Visual Basic

Interface ExplorateurOn retrouve l'interface explorateur dans le cas des feuilles d'aide de Visual Basic et dans l'explorateur de Windows. La feuille active est représentée par deux  fenêtres, l'une à droite et l'autre à gauche.La fenêtre de gauche affiche une vue détaillée des données dans la fenêtre de droite.

Terminologie MDIPour pouvoir exploiter correctement le mode MDI, vous devez en connaître la terminologie.La feuille principale qui sert de conteneur aux autres feuilles est souvent appelée feuille Parent ou fenêtre Parent.dans notre projet nous l'appellerons frmParentCette feuille contient toutes les autres feuilles qui seront crées et dont l'appellation sera feuille Fille ou fenêtre fille, dans notre projet nous l'appellerons frmChildChaque document nouvellement crée s'ouvre dans une fenêtre fille à l'intérieur d'une feuille parent.Les fenêtre filles ne peuvent pas sortir du cadre de la feuille parent.Techniquement parlant, la fenêtre fille se distingue d'une fenêtre classique par sa propriété MDIChild qui aura comme caractéristique, la valeur True.

Pour créer une application MDI, choisissez dans le menu Projet, ajoutez une feuilleMDI, après avoir créé la première feuille (MDIForm) vous la renommez en frmParent, vous créez une seconde feuille à l'aide de l'étiquette "Projet" ajoutez une feuille, (frm2) que vous renommez sous le nom de frmChild, puis définissez la valeur True à la propriété MDIChild de la nouvelle feuille.Vous pouvez télécharger l' exemple type d'une application MDI prête à fonctionner.   Téléchargement

Vous avez appris dans mes précédents Tutoriels à réaliser des menus à l'aide du créateur de menu.Vous créez les menus correspondants à la figure ci-contre, à savoir :Menu Fichier - Le menu Fichier contient trois sous menu intitulés Ouvrir, Sauver et QuitterMenu Fenêtre, contient les sous menu Cascade et Mosaïque et "?" contient l'étiquette A propos de...

Un projet MDI peut également contenir des feuilles standard servant en particulier de boîte de dialogue modales, car les feuilles secondaires ne peuvent pas être affichées de manière modale. Pour les distinguer, Visual Basic affecte à chacun de ces trois types de feuilles une icône spécifique dans leur barre de titre et dans l'explorateur de projets.Les applications MDI sont généralement équipées d'une barre d'outils et d'une barre d'état. Pour insérer des images ou des boutons dans une feuille MDI il faut obligatoirement insérer un objet image de type PictureBox et affecter la propriété Align à la valeur 1-Align Top pour insérer la barre sur le haut de la feuille(barre d'outils) et à la propriété 2 - Align Bottom pour insérer la barre dans le bas de la feuille(barre d'état). Vous comprenez que pour installer deux barres dans la feuille MDI il faudra insérer deux objets PictureBox.La barre d'outils vient automatiquement s'insérer au dessous de la barre de titre qui est partie intégrante de la feuille Parent.A partir de ces deux barres précédemment citées, nous pouvons construite l'arborescence des instructions

Page 91: Visual Basic

de commande nécessaire à l'organisation de notre application.

Pour vous aider à comprendre les applications MDI, nous allons écrire un projet de bloc notes qui ne demande pas énormément d'écriture de code et qui va nous permettre de vous familiariser avec la technique relative aux applications Multi Document Interface (MDI).

L'application BlocNoteAprès avoir dézippé le fichier téléchargé, nous insérons dans la feuille frmParent deux objets PictureBox comme précédemment expliqué en modifiant leurs propriétés pour que l'affichage de ces nouvelles barres soient conforme à la description indiquée.Dans la barre supérieure nous insérons trois boutons, le bouton "Ouvrir", le bouton "Sauver" et le bouton "Quitter".Nous insérons également un contrôle de boîtes de dialogue intitulé CommonDialog que nous positionnons n'importe ou puisque à l'utilisation il devient invisible. Néanmoins pour nous habituer à cacher ce qui ne doit pas être vu par l'utilisateur et uniquement par soucis pédagogique, je vous demanderai de le positionner à l'intérieur de la barre d'outils nouvellement crée afin que ce contrôle ne soit plus visible. Si ce contrôle n'est pas chargé dans votre boîte à outils, il faut aller le chercher depuis le générateur de programme(VB) et charger comme déjà expliqué dans des leçons précédentes le fichier Comdlg32.ocx qui se trouve dans le répertoire de Windows\system de votre système d'exploitation.

Voici un aperçu de l'application qui a été réduite à sa plus simple expression pour des raisons d'espaces mémoire.Nous visualisons dans la barre de menu les étiquettes Fichier, Fenêtre et le point d'interrogation(commande About).Dans la barre d'outils les boutons Ouvrir, Sauver et Quitter

Dans la barre de tache nous avons inséré un Label et inscrit une annotation qui peut éventuellement contenir votre Copyright ainsi que votre nom.Pour votre information, les propriétés de la "Form"  frmParent que j'ai réalisé ont les valeurs suivantes :Height : 7215Width : 10350Vous constatez que cela ne correspond pas à l'image qui est affichée ci-dessus, à vous de présenter votre interface en fonction de vos aptitudes créatrices, n'oublions pas que Visual Basic est aussi un environnement graphique et que la présentation des programmes est fonction du bon vouloir du programmeur que vous êtes.

Voici la saisie du code à insérer dans l'application

Voici le code à insérer dans la fenêtre frm ParentA l'emplacement "Général" "Déclarations"Dim FenetreMDI As Form'Private Sub butOuvrir_Click( )

Page 92: Visual Basic

'Définitions des propriétés de al boîte de dialogueCMDialog1.DialogTitle = "Choisissez un fichier"CMDialog1.CancelError = TrueCMDialog1.Filter = TrueCMDialog1.Filter = "Fichiers Textes(*.txt)"CMDialog1.FilterIndex = 1CMDialog1.InitDir = "C:\"''Définition de la routine de renvoi d'erreurOn Error GoTo ExitbutOuvrir'Affichage de la boîte de dialogueCMDialog1.ShowOpen'Ouverture du fichier sélectionnéSet FenetreMDI = New frmChildFenetreMDI.ShowFenetreMDI.Width = 5000FenetreMDI.Height = 5800crlf = Chr$(13) + Chr$(10)Open CMDialog1.FileName For Input As #1Line Input #1, textelire = texteWhile Not EOF(1)Line Input #1, textelire = lire + crlf + texteWendFenetreMDI.Text1.Text = lireFenetreMDI.Caption = CMDialog1.FileNameClose #1Exit SubExitbutOuvrir:'Sortie sans provoquer d'erreurEnd Sub'Private Sub butQuitter_Click( )'Fermer toutes les feuilles et quitter le programmeT$ = "Attention"M$ = "Voulez vous vraiment quitter le programme ?"Reponse% = MsgBox(M$, 4 + 32, T$)If Reponse% = 6 Then'Sortir du programmeEndEnd IfEnd Sub'Private Sub butSauver_Click( )'Définition des propriétés de la boîte dedialogueCMDialog1.DialogTitle = "Enregistrer le fichier sous..."CMDialog1.CancelError = TrueCMDialog1.Filter = "txt (*.TXT | (*.TXT)"

Page 93: Visual Basic

CMDialog1.FilterIndex = 1CMDialog1.InitDir = "C:\"CMDialog1.FileName = "Saver.txt"''Définition de la routine de traitement des erreursOn Error GoTo ExitSaveFile'Affichage de la boîte de dialogueCMDialog1.ShowSave''Sauvegarde du fichierOpen CMDialog1.FileName For Output As #1Print #1, FenetreMDI.Text1.TextClose #1Exit SubExitSaveFile:'Sortie sans provoquer d'erreursEnd Sub'Private Sub MDIForm_Load( )'Centrer la feuille à l'écranCenterForm MeEnd Sub'Private Sub mnu_About_Click( )frmAbout.Show 1End Sub'Private Sub mnu_Cascade_Click( )frmParent.Arrange vbCascadeEnd Sub'Private Sub mnu_Mosaique_Click( )frmParent.Arrange vbTileVerticalEnd Sub'Private Sub mnu_Ouvrir_Click( )butOuvrir_ClickEnd Sub'Private Sub mnu_Quitter_Click( )butQuitter_ClickEnd Sub'Private Sub mnu_Sauver_Click( )butSauver_ClickEnd 

Nous créons un module et saisissons la formule de centrage de feuilles précédemment décrites dans d'autres Tutoriels

Page 94: Visual Basic

Sub CenterForm(frm As Form)'Centre la feuille à l'écranfrm.Left = (Screen.Width - frm.Width) / 2frm.Top = (Screen.Height - frm.Height) / 2End Sub

Voici les objets à insérer dans la fenêtre Fille   La fenêtre fille ne contient rien de particulier si ce n'est qu'un objet Texte qui aura comme propriété Name Text1.L'application est terminée, vous pouvez si vous le souhaitez, télécharger le fichier exécutable du programme compilé BlocNote.exe - Télécharger.

Vous pouvez bien sur améliorer ce programme qui est libre de droits et qui vous est offert par votre serviteur en espérant que vous appréciez les concepts que je développe pour vous.

Prochain Tutoriel : La super production que je vous ai promise, à vos claviers et préparez les aspirines.

J'ai vainement cherché dans mes archives si je trouvais une documentation relative aux attributs de fichier, mais en vain. J'ai bien trouvé la propriété "Attributs de fontes" mais ce n'est pas l'expression que je recherchais, aussi nous allons nous contenter des propriétés directes qu'il est possible de modifier lorsque nous rencontrons des attributs de fichiers.Certains en lisant ce commentaire doivent penser, mais ou veut -il en venir ? Il suffit de modifier par un clic de souris le fichier dont les caractéristiques possèdent l'attribut "Fichier caché" en attribut "Archives".Oui, c'est vrai, mais n'oublions pas que pour nous programmeur cela est facile, mais supposons que nous voulons écrire un programme qui doit manipuler des fichiers et surtout des fichiers qui possèdent l'Attribut caché et que notre programme veuille modifier les caractéristiques de ce type de fichier.Cela ne fonctionnera pas et risque d'engendrer une erreur fatale avec l'explication affichée dans une fenêtre de texte du genre,  erreur caractéristique N° xx. Nous ne sommes pas plus avancé et pour solutionner notre problème nous devons avant de pouvoir modifier le fichier transformer l'attribut en lui donnant par exemple l'attribut "lecture simple", exécuter les modifications s'il y a lieu, et ensuite le retransformer en un fichier caché.Le tour est joué et cela marche, aussi pour appuyer la logique de mon raisonnement nous allons tenter une petite expérience en créant un condensé de l'application "Savereg" © 2000 GilMirSoft DéveloppementVous pouvez télécharger le projet ici  Télécharger Disk1.zip   et Disk2.zip (1.337Ko - 1.088Ko)

Dans ce projet, nous voulons récupérer des fichiers sensibles pour les mettre dans un  lieu sur connu de nous même pour pouvoir en cas de problème grave écraser les fichiers existants qui ont étés endommagés par une mauvaise manipulation ou peut être par un virus.Vous comprenez que cette opération ne peut être envisagée par une entité humaine qui voudrait triturer la base de registre sana avoir l'expérience requise en la matière et qui au lieu de dépanner sa machine risquerait au contraire d'aggraver les problèmes existants au risque de la rendre irréparable (j'exagère un peu).

Page 95: Visual Basic

Nous allons passer sur l'écriture de l'initialisation des paramètres du PC de l'utilisateur qui a fait l'objet d'un précédent Tutoriel.Quels sont les fichiers qui peuvent nous intéresser ? (Si j'en oublie, vous pouvez les ajouter)Autoexec.bat, Config.sys, Bootlog.txt, Win.ini, System.ini, User.dat, System.datIMPORTANTJe vous conseille avant de manipuler ces fichiers de les sauvegarder dans un répertoire nouvellement créé à la racine du DOS. Exemple : C:\FilesSystem\Fichiers à sauvegarder(voir liste)En ce qui concerne la modification d'attributs système seul deux fichiers sont protégés et feront l'objet de modifications, le fichier "System.dat" et le fichier "User.dat" ces fichiers sauvegardent votre base de registre et feront l'objet de la plus grande attention.

Nous avons activé dans notre générateur de programme la déclaration "Option Explicit" ce qui nous oblige à déclarer toute procédure nouvellement crée.Pour simplifier, je n'affiche pas les déclarations de procédures dans les instructions ou fonctions car elles ont étés déclarés dans un module Global.Si vous ne prenez pas la peine de les déclarer Globalement VB va engendrer un erreur et va vous demander de déclarer toute nouvelle procédure.Pour les initiés, je pense que je n'avais pas besoin de le leur dire, désolé, mais...pour le cas ou !

Synoptique de l'ordinogrammeContrôler si les fichiers qui nous intéressent existesDésactiver l'attribut "Lecture seule"Exécuter les instructions recherchéesRéactiver l'attribut "Lecture seule"Sauvegarder les modifications

Ecriture du codePrivate Sub SSCommand1_Click ( )            'Bouton de commandeDim FileExist As String'On Error GoTo FileNotExist                         'Si erreur sortie discrète sans provoquer d'erreurFileExist = "C:\autoexec.bat"                         'Nom du fichier à rechercher     If Dir (FileExist, vbNormal Or vbReadOnly Or vbHidden Or vbArchives = "" Then          Call MsgBox("Ce fichier n'existe pas!")          Exit Sub                                              'Sortie de la procédure     Else          'Il existe, alors...instructions suivantes   'Pour la forme          'msg = "OK"          'MsgBox msgEnd IfNous écrirons exactement les mêmes routines pour les autres fichiers à savoir que certains fichiers se trouvent dans le répertoire de Windows et qu'il faudra afficher le chemin complet.Lorsque vous avez écrit toutes les routines afférentes aux fichiers recherchés, vous saisissez la routine d'erreur suivante:FileNotExist :     'Instructions     msg = "La sauvegarde des fichiers systèmes est impossible, désolé !"

Page 96: Visual Basic

     MsgBox msg, vbExclamation, Title$End sub

Sauvegarde des fichiers systemesPrivate Sub SSCommand5_Click( )'Dim MyPath As StringDim MyName As StringDim Reponse As IntegerDim A As StringDim B As String''Controle de l' existance du répertoire de sauvegardeTitle$ = "Restauration des fichiers systèmes"msg = "Voulez-vous vraiment restaurer le système ?"Reponse% = MsgBox(msg, vbYesNo, Title$)If Reponse% = 7 Thenmsg = "La sauvegarde a été annulée!"MsgBox msg, vbExclamation, Title$'L'utilisateur a répondu "Non" alors sortie!Exit SubEnd If'L' utilisateur a répondu "Oui"'Avant de sauvegarder le système contrôler si le répertoire existeMyPath = "C:\windows\filesystem"If (MyName = Dir(MyPath, vbDirectory)) = vbEmpty Then'On teste l' existance du répertoire, il existe alors...Frame1.Caption = "Restore Files System"List1.Visible = TrueList1.AddItem "Restauration des fichiers du registre système! Veuillez patienter SVP!"MousePointer = 11Le système affiche une ProgressBar (qui fera l'objet d'un prochain Tutoriel)'============ Restauration du systeme ================================'Récupérer et transférer les fichiers dans le répertoire de sauvegarde

A = "c:\windows\filesystem\autoexec.bat"B = "c:\autoexec.bat"FileCopy A, B'A = "c:\windows\filesystem\config.sys"B = "c:\config.sys"FileCopy A, B'A = "c:\windows\filesystem\bootlog.txt"B = "c:\bootlog.txt"FileCopy A, B'A = "c:\windows\filesystem\win.ini"B = "c:\windows\win.ini"FileCopy A, B

Page 97: Visual Basic

A = "c:\windows\filesystem\system.ini"B = "c:\windows\system.ini"FileCopy A, B''Désactiver les attributs systèmesModifAttribMoinsA = "c:\windows\filesystem\system.dat"B = "c:\windows\system.dat"FileCopy A, B'A = "c:\windows\filesystem\user.dat"B = "c:\windows\user.dat"FileCopy A, B''Réactiver les attributs systèmesModifAttribPlus''============ Fin de la Restauration =================================Title$ = "Restauration des fichiers systèmes"msg = "La restauration de la base de registre s' est bien déroulée!"MsgBox msg, vbOKOnly, Title$EradicationPictureFrame1.Caption = "Description"MousePointer = 0End IfEnd Sub'====== Nous créons les procédures de modifications d'attributs system insérés dans un module ===

Désactivation des attributs systèmesSub ModifAttribMoins( )Dim MyFile As String'MyFile = "c:\windows\system.dat"If Dir(MyFile, vbNormal Or vbReadOnly Or vbHidden Or vbSystem Or vbArchive) = "" ThenCall MsgBox("Erreur, désolé! Le fichier de sauvegarde n' existe pas!")Exit SubElse'Le fichier existe, Affiche l'attibut fichier cachéMyFile = GetAttr("c:\windows\system.dat")NomProg.Label7.Caption = MyFile''Modifier l' attribut systèmeMyFile = "c:\windows\system.dat"SetAttr MyFile, vbNormalMyFile = GetAttr("c:\windows\system.dat")NomProg.Label7.Caption = MyFileEnd If

Page 98: Visual Basic

'MyFile = "c:\windows\user.dat"If Dir(MyFile, vbNormal Or vbReadOnly Or vbHidden Or vbSystem Or vbArchive) = "" ThenCall MsgBox("Erreur, désolé! Le fichier de sauvegarde n' existe pas!")Exit SubElse'Le fichier existe, Affiche l'attibut fichier cachéMyFile = GetAttr("c:\windows\user.dat")NomProg..Label7.Caption = MyFile''Modifier l' attribut systèmeMyFile = "c:\windows\user.dat"SetAttr MyFile, vbNormal'Afficher à nouveau pour contrôle!MyFile = GetAttr("c:\windows\user.dat")NomProg.Label7.Caption = MyFileEnd IfEnd Sub

Réactivation des attributs systèmes'Il suffit simplement de faire l'opération à l'envertSub ModifAttribPlus( )Dim MyFile As String'MyFile = "c:\windows\system.dat"If Dir(MyFile, vbNormal Or vbReadOnly Or vbHidden Or vbSystem Or vbArchive) = "" ThenCall MsgBox("Erreur, désolé! Le fichier de sauvegarde n' existe pas!")Exit SubElse'Le fichier existe, Affiche l'attibut!MyFile = GetAttr("c:\windows\system.dat")NomProg.Label7.Caption = MyFile''Modifier l' attribut système en fichier caché et en lecture seuleMyFile = "c:\windows\system.dat"SetAttr MyFile, vbHidden + vbReadOnly'Afficher à nouveau pour contrôleMyFile = GetAttr("c:\windows\system.dat")NomProg.Label7.Caption = MyFileEnd If'MyFile = "c:\windows\user.dat"If Dir(MyFile, vbNormal Or vbReadOnly Or vbHidden Or vbSystem Or vbArchive) = "" ThenCall MsgBox("Erreur, désolé! Le fichier de sauvegarde n' existe pas!")Exit SubElse'Le fichier existe, Affiche l'attibut !

Page 99: Visual Basic

MyFile = GetAttr("c:\windows\user.dat")NomProg.Label7.Caption = MyFile''Modifier l' attribut système en fichier caché et en lecture seuleMyFile = "c:\windows\user.dat"SetAttr MyFile, vbHidden + vbReadOnly'Afficher à nouveau pour contrôleMyFile = GetAttr("c:\windows\user.dat")NomProg.Label7.Caption = MyFileEnd IfEnd Sub

Je vous avais promis une super production, la voici...mais j'ai un peu modifié mes projets car par manque de temps nous n'allons pas réaliser "Fichlogi" vu que c'est une double base de données imbriquée qui me demanderait un temps assez important pour vous la présenter.Je vous propose à la place "VidéoK7" qui est une base de donnée sans fichiers externe comme Fichlogi qui est plus simple à réaliser mais qui vous donnera les bases nécessaires à la réalisation d'autres projets bâtis sur cette structure qui a déjà fait ses preuves et qui est fonctionnelle.A vous de modifier la présentation en fonction de vos aptitudes créatrices.je ne me suis pas appliqué à réaliser une interface plus innovante elle est sobre comme un peu toutes les applications professionnelles à vous de me proposer votre interface que nous intégrerons au projet en cours.

VideoK7est une application qui vous permettra de stocker et de classer vos Cassettes VIDEO de les trier, c'est une véritable base de données qui doit vous satisfaire quant à son utilisation.Elle se compose de :1 répertoire Datas qui comprend 22 fichiers créés par l'application elle même.37 fichiers dont deux ou trois seront créés par le programme1 fichier exécutable VideoK7.exe1 fichier d'installation

Vous pouvez télécharger le prototype pour vous donner une idée de votre future réalisation Télécharger

Permettez moi de vous signaler que cette application dans sa pleine fonctionnalité nécessite des fichiers annexes que vous n'avez pas téléchargés, ce qui se traduit par une erreur lorsque vous appuyez sur certains boutons. Dans l'application que vous allez réaliser ces petits dysfonctionnements n'apparaîtrons pas.Ce n'est que pour vous donner une idée et une approche de la réalisation envisagée que je vous offre de télécharger une esquisse de votre prochain programme.Vous pouvez déjà essayer de construire votre propre interface peut être plus conviviale, mais je sais que les jeunes ont des idées et aussi du talent.

Projet de réalisation d'une application MDI relatif à un programme de gestion de produits Multimédia.

Ce projet sous forme de base de données sera écrit sans l'aide de contrôle VB (BdD)existant et sera assez puissant pour enregistrer une centaine de feuille dans chaque rubrique crée, ce qui représentera la somme d'un millier de feuilles pouvant être réalisé par cette application.

Page 100: Visual Basic

Ce projet pourra être paramétrable par chaque utilisateur qui pourra le modifier en fonction de la finalité qu'il souhaite donner à sa réalisation.Par exemple si vous ne souhaitez pas proposer sur l'interface d'accueil des CD-Rom, vous modifierez pour proposer des disquettes ou des produits de votre choix, puisque le libellé de la propriété Caption de l'étiquette n'a aucune relation avec l'écriture du code.

Dans ce programme, vous apprendrez :1°) - A créer une feuille qui efface les bases de données et leurs descriptions2°) - A créer une feuille qui ouvre les bases de données (nous utiliserons le contrôle MS CommonDialog)3°) - A centrer une feuille à l'écran4°) - A récupérer un type de fichier dans une liste5°) - A limiter l'ouverture à 5 "Feuilles" dans les fichiers MDI ( pour limiter l'espace mémoire)6°) - A créer des Fenêtres Filles (Child) et à programmer des "Spin Buttons"7°) - A naviguer dans la base de données à l'aide d' un bouton ou d'un un ascenseur8°) - A créer des listes et les paramétrer9°) - A utiliser le contrôle MCI pour utiliser des fichiers sons. (images en option)10°) - A créer un moteur de recherche incrusté dans la base11°) - A utiliser les barres de défilement verticalement ou horizontalement(les paramétrer)12°) - A modifier le pointeur de la souris13°) - A afficher des statistiques concernant certains produits14°) - Utiliser une liste modifiable15°) - Èviter la sortie d'un programme et bloquer en ouverture certaine feuilles16°) - Utiliser certaines instructions de messages d'erreur17°) - Modifier les éléments d'une feuille à la fermeture ou à l'ouverture18°) - Ranger les feuilles en différentes positions ainsi que les icônes19°) - Créer un interface de création de listes et des fichiers nécessaires au stockage de nos données20°) - Créer un fichier source qui définira la structure de notre base de données21°) - Nous apprendrons également à utiliser les feuilles de messagerie interconnectés avec des paragraphes de textes insérés dans une liste.22°) - Vous apprendrez également à utiliser les fonctions d 'empaquetage de VB afin de créer un programme exécutable.23°) - Quels sont les contrôles que nous allons utiliser ?Les contrôles Threed32.ocx, Spin32.ocx, Mci32.ocx.Je pense que vous devez tous posséder ces contrôles qui sont en principe livrés avec VB6.024°) - Le programme "VideoK7" vous est proposé à titre pédagogique, il a fait l'objet d'un Copyright. Vous pouvez le construire l'utiliser à des fins personnelles, mais en aucun cas le distribuer. Dans tous les cas de son utilisation vous devez demander une licence.

Alors si vous êtes toujours décidé ? nous pouvons commencer à aiguiser nos méninges                                                                                            Page précédente

Prochain Tutoriel : le code d' action de la feuille "frmParent"

Première partie Exercice N°1Nous allons travailler sur une application "MDI", (Multi Document  Interface)Pour les néophytes ce type d' application est une représentation de la plupart des programmes de

Page 101: Visual Basic

Microsoft, comme par exemple, Word, Excel, FrontPage, etc...C'est une document dans un autre document qui sert de conteneur, avec de multiples possibilités que nous allons essayer de vous faire découvrir.

Chaque feuille contient de nombreuses explications qui devraient en principe vous faire comprendre la finalité des paramètres employés dans la saisie du code.Néanmoins vous pouvez demander de plus amples explications si vous le souhaitez.

Comment créer une feuille "MDI" ?Lancez Visual Basic qui crée automatiquement un projet ainsi qu' une "Form" associée.Une fois le projet affiché, cliquez dans le menu "Projet" et cliquez sur l' étiquette "Ajoutez une feuille MDI"Le programme la répertorie sous le nom de MDIForm1.Cliquez sur la feuille "Form1" et dans la feuille des propriétés recherchez l' étiquette MDIChild et modifiez sa propriété avec la valeur "True".Saisissez le code à insérer dans la feuille Form_Load, puispassez en mode "Exécution" pour contrôler si les deux feuilles se positionnent correctement.Voici ce que vous devez obtenir :

Notre projet est en train de prendre forme, nous allons sauvegarder la feuille MDIForm1 sous le nom de : "frmParent" - (Feuille Parent)et la feuille Form1 sous le nom de :"frmChild"  -  (Feuille Fille)Modifiez les propriétés Name de chaque feuille en conséquence.frmParent(frmParent.frm)frmChild(frmChild.frm)Dans la propriété "Form_Load" de la feuille "frmParent" nous écrivons :Private Sub MDIForm_Load()     Form1.ShowEnd Sub

Passons à la création de l' interface graphique de la feuille frmParent.

Page 102: Visual Basic

         Elle comprend une barre de menu qui affiche les étiquettes "Fichier" "Aide" et "Infos"4 panels dont certains supportent des boutons au nombre de :3 boutons pour le premier Panel et :5 boutons pour le deuxième Panel.(non représentés sur ce cliché)Le troisième Panel comprend deux boutons, ainsi que deux "Label" représentés en creux vous avez deux "Label" dont le premier sert à afficher l' heure et le  second sert à afficher la date. Les deux Panel principaux (haut et bas) sont des "PictureBox" seul élément positionnable dans cette feuille.                                                      

Attention dans ce type d' application, le Panel principal que vous devez insérer est une "PictureBox" dans laquelle vous allez pouvoir loger des "Frames" ou bien des "Panels", au choix en fonction de vos possibilités.Insérez une "PictureBox" pour le haut de la feuille et une deuxième "PictureBox" pour afficher les informations de bas de feuille.La première "PictureBox" aura dans la propriété "Align", la valeur : 1 Align TopLa deuxième aura dans la propriété "Align", la valeur 2 Align Bottom

Passons à la création de l' interface graphique de la feuille frmChild.

Page 103: Visual Basic

Voici le cliché de l' interface graphique de la feuille frmChild(feuille Fille)Les éléments positionnés sont issus du contrôle "Threed.ocx" et "Spin.ocx"Si vous ne les possédez pas, nous verrons ultérieurement comment les remplacer.

La première des choses à faire est de réaliser la ligne de menus à l' aide de l'outils de création de menus que nous avons étudié dans les leçons précédentes.(Voir nos Tutoriels)Ensuite créer les éléments graphiques à l' aide des outils que nous avons à notre disposition, à savoir :Pour ceux qui possèdent le contrôle "Threed.ocx"Utiliser l' objet "Panel" pour appliquer les panneaux devant supporter les différents objets graphiques.Pour les autres :Utiliser l' objet "Frame" qui nous servira de Panel ou l' objet "PictureBox"En dehors de la Frame indiquée "Gestion de bases de donnée", les autres Frames ne comprendrons pas de propriété "Caption".(Les Panels également)Les boutons de dimensions "375x375" ne comprendrons pas d' images, sauf pour ceux qui possèdent le contrôle "Threed.ocx".Les 5 boutons "Spins" seront remplacés ultérieurement par des "ScrollBar"(si ça marche ?) ou des boutons ?Pour le reste, il ne s' agit que des objets "TextBox" et "Label" ce qui ne devrait pas poser de problèmes.Récapitulation des objets à insérer pour composer l' interface graphique qui sera la page d' accueil de votre application, soignez la, car elle représente le premier élément que va découvrir l' utilisateur dès qu'il aura lancé votre programme.

Si je n' en ai pas oublié, nous avons positionné sur l' interface :5 Panels(ou Frames)11 Boutons11 Labels1 Label (Le zéro est un Label)7 TextBox1 Label (Fichiers de sons)

Page 104: Visual Basic

1 ComboBox1 ScrollBar (position verticale)5 Spins (ou ScrollBar)Lorsque tout est positionné, nous utilisons la propriété "Verrouiller les contrôles" que nous trouvons dans la barre de menu sous l' étiquette "Format".(Depuis la version 4.0 de VB)

ATTENTION ! - Toutes les feuilles devront comporter cette procédure (l'installer dans un module)'Centrage de la feuilleSub Form_Load ( )     CenterForm MeEnd Sub                                                                                                          Page précédente

Prochain Tutoriel : le code d' action de la feuille "frmParent"

Exercice 2 La feuille frmParent saisie du code Voici une vue de la construction de la feuille "frmParent"

J'ai utilisé pour cela les "Panels" fournis avec le contrôle "Threed.ocx", de gauche à droite nous apercevons les Panels positionnés sous les boutons, j' ai expressément laissé les noms respectifs sous certains objets à titre indicatif.J' ai utilisé les boutons 3D qui vont nous permettre de positionner les images que vous pouvez télécharger si vous souhaitez les utiliser. Télécharger les images pour construire VidéoK7

Dans le cas contraire, vous pouvez positionner les images de votre choix. ou copier les images

à partir de cette planche. ou télécharger la collection d'images du programme.Nous allons codifier les feuilles déjà construites, à savoir la feuille "frmParent" et ensuite la feuille "frmChild"

Saisie du code des objets issus de  La feuille frmParent :Nous allons tout d' abord codifier les étiquettes de la barre de menu.

Etiquette "Fichier"

Page 105: Visual Basic

Nous avons créé dans cette étiquette 4 procédures qui sont :1°) - Créer une base de données (mnu_MakeFile)2°) - Supprimer une base de données (mnu_DelFile)3°) - Ouvrir (mnu_FileOpen)4°) - Quitter (mnu_Exit) 

                                                           Codification de ces procédures :Créer une base de donnéesPrivate Sub mnu_MakeFile_Click( )    'Crée une base de données de films vidéo    frmMakeFile.Show 1End Sub

Supprimer une base de donnéesPrivate Sub mnu_DelFile_Click( )     'Efface base de données     frmDelFile.Show 1End Sub

OuvrirPrivate Sub mnu_FileOpen_Click( )     'Dialogue d'ouverture de fichiers graphiques à afficher     frmFileOpen.Show 1End Sub

QuitterPrivate Sub mnu_Exit_Click( )     Titre = "Attention"     Message = "Souhaitez vous quitter Video_K7 ?"     Reponse = MsgBox(Message, 32 + 4, Titre)     If Reponse = 6 Then EndEnd Sub

Etiquette AIDE

Nous avons créé dans cette étiquette 2 procédures qui sont :1°) - Aide à la création (mnu_Aide1)2°) - Aide à la saisie (mnu_Aide2

Aide à la créationPrivate Sub mnu_Aide1_Click( )    'Appel de la feuille d' aide par la procédure "FileMsg"    FileMsg "FileMsg.txt", 1End Sub

Aide à la saisie

Page 106: Visual Basic

Private Sub mnu_Aide2_Click( )    'Appel de la feuille d' aide par la procédure "FileMsg"    FileMsg "FileMsg.txt", 2End Sub

Etiquette INFOS

Nous avons créé dans cette étiquette 2 procédures qui sont :1°) - Infos générales (mnu_Infos)2°) - A propos de... (mnu_About)

Infos généralesPrivate Sub mnu_Infos_Click( )    'Appel de la feuille d' aide par la procédure "FileMsg"    FileMsg "FileMsg.txt", 4End Sub

A propos de...Private Sub mnu_About_Click( )    'Appel de la feuille About par la Méthode Show    frmAbout.Show 1End Sub

Codifier les InfosBulles

Dans le premier Panel nous trouvons 3 boutons, à savoir :1°) - Création d'une base de données2°) - Ouvrir une base de données3°) - Détruire une base de données

Avant de coder ces procédure puisque les particularités de Visual Basic 6.0 nous permettent d' installer des "Infos Bulles", pourquoi s' en priver ?Dans la feuille de propriétés du premier bouton et à l' étiquette, "ToolTypText", nous écrivons :Création d' une base de donnéesDans le deuxième bouton, nous écrivons :Ouvrir une base de donnéesDans le troisième bouton :Détruire une base de donnéesVous pouvez renseigner les infos bulles de tous les objets qui engendrent des événements provoqués par l' utilisateur.

Page 107: Visual Basic

Voila ce que vous devez obtenir en positionnant votre curseur de votre souris sur le premier bouton. du premier Panel.

Saisie du code des Objets boutons issus de   La feuille frmParent, premier Panel :

Je ne vous rappelle pas que pour ouvrir la feuille des propriétés, vous devez appuyer sur la touche F4 de votre clavier, mais...vous le savez!A ce stade nous allons renommer tous les boutons afin de pouvoir les reconnaître si nous avons à rechercher une procédure distincte. Modifiez la propriété de chaque objet comme suit : (faire et défaire, c'est toujours programmer)

Private Sub SSCommand1_Click( ) devient : cmdCreat     'Créer une base de données     frmMakeFile.Show 1End Sub

Private Sub SSCommand2_Click( ) devient : cmdOpen     'Ouvrir une base de données     mnu_FileOpen_ClickEnd Sub

Private Sub SSCommand3_Click( ) devient : cmdErase     'Efface base de données     frmDelFile.Show 1End Sub

Saisie du code des Objets boutons issus de   La feuille frmParent, deuxième Panel : Private Sub SSCommand4_Click( ) devient : cmdCascade     'Fenêtres superposées et décalées     frmParent.Arrange 0End Sub

Private Sub SSCommand5_Click( ) devient : cmdHorTile     'Fenêtres en mosaïque verticale     frmParent.Arrange 2End Sub

Private Sub SSCommand6_Click( ) devient : cmdTile     'Fenêtres en mosaïque verticale     frmParent.Arrange 1End Sub

Private Sub SSCommand7_Click( ) devient : cmdIconArrange     'Arrange les icônes     frmParent.Arrange 3End Sub

Page 108: Visual Basic

Private Sub SSCommand8_Click( ) devient : cmdClose     'Appelle la procédure de fermeture de toutes les fenêtres filles     CloseAllEnd Sub

Saisie du code des Objets boutons issus de   La feuille frmParent, troisième Panel :

Le premier Panel aura comme valeur de proporiétés :Name : Panel3d8Caption : 00:00:00Le second Panel aura comme valeur de propriétés :Name : Panel3d4Caption : 00/00/0000'Premier boutonCe bouton permet d' afficher ou de masquer par sa propriété "Visible" le Panel qui indique l'heureLes Panels incrustés dans le Panel principal  devront être renommés, nous lui donnerons comme propriétés : Private Sub SSCommand9_Click( ) devient : cmdTime     If Indicateur = 0 Then     Panel3d9.Visible = True     Indicateur = 1Else     Panel3d9.Visible = False     Indicateur = 0     End IfEnd Sub

Deuxième bouton :Private Sub SSCommand10_Click( ) devient : cmdHelp     'Info     mnu_Infos_ClickEnd SubPour ne pas engendrer des erreurs, nous allons télécharger le fichier texte à insérer dans le répertoire de travail de Vidéok7, ainsi que le module nécessaire à l' affichage de ce fichier par Visual Basic.  Télécharger les fichiers

Ecriture de la procédure Form_Load dans le fichier MDI

Private Sub MDIForm_Load( )     'Ajuster le pointeur de souris     Screen.MousePointer = 0     'Répertoire de travail = répertoire du programme     ChDir App.Path     'Centrage de la feuille à l' écran     CenterForm  frmParent     'Afficher la feuille et la positionner dans la dimension de l' écran        Me.WindowState = 2     'Affichage de l'heure et de la date

Page 109: Visual Basic

     Panel3d9.Caption = Time     Panel3d4.Caption = Date     'Initialise base de données et descriptifs     InitFilesEnd Sub

Attention, le fait d' avoir renommé les objets sus indiqué a transféré toutes les procédures dans la fenêtre "Général - Déclarations" de la feuille "frmParent", vous devez les éliminer impérativement.Cela mettra un peu d' ordre dans notre projet, éliminons les procédures superflues.

Voici ce que vous devez avoir dans la feuille "frmParent" et dans la procédure "Déclarations"

A ce stade de l' évolution de votre projet, si vous cliquez sur un objet alors que celui-ci contient une procédure qui engendre un événement qui ne pointe sur rien générera automatiquement une erreur.Vous pouvez à titre pédagogique insérer une routine d' erreur, tout en sachant que lorsque nous aurons créé et codifié l' objet, ce type d' erreur ne se produira plus.

Un peu de patience, vous êtes sur la bonne voie, la voie qui vous mène sur le chemin du savoir et de la connaissance.

Dans la prochaine leçon, nous écrirons le code d' action de la feuille "frmMakeFile"