Vous êtes sur la page 1sur 109

L' environnement de dveloppement L' environnement de dveloppement intgr de Visual Basic (IDE, Integred Development Environment) peut tre

personnalis, pour ce qui concerne sa prsentation et son mode de fonctionnement. Il est toutefois prfrable avant de commencer votre premier projet, d' effectuer quelques rglages. 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)- Slectionnez l' onglet "Gnral", vous modifiez les valeurs des units de la grille "30"

Slectionnez l' onglet "Ancrage" et dsactivez 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 got. Nous verrons plus tard d' autres rglages intressants. Votre premier projet VISUAL BASIC Etape1 : Cration de l' interface La plupart des applications ralises avec Visual Basic comportent au moins une feuille. Les feuilles (Forums en Anglais) constituent les lments de base de linterface utilisateur. Elles forment les conteneurs (containers) recevant des contrles, comme des boutons, des zones de textes, des cases cocher, etc...Qui peuvent tre adapts en fonction de vos aptitudes cratrices. Lorsque vous avez dmarr Visual Basic, la fentre de l' diteur de feuille prsente une feuille vide nomme Form1(Nom que vous retrouvez dans la barre de titre). Dfinir la taille de la feuille Il y a plusieurs faons de crer notre feuille, la plus facile est de raliser une image et de lincorporer la feuille, lautre faon est de composer pice par pice notre prsentation et c' est cette option qui retiendra notre faveur. Le rsultat est le mme la diffrence prt que la solution avec l'image nous consommera un peu plus de mmoire. La taille de la feuille sera fonction des lments que nous allons y insrer et nous allons lui donner une taille approximative tout en sachant que nous pourrons ventuellement la

modifier. En regardant la feuille (Form1) vous constatez des petits carrs noirs situs au centre de chaque cot de la feuille. Cest ce que lon appelle des poignes qui vous permettent en les tirant de modifier les dimensions respectives de chaque ct de la feuille. Vous avez les possibilits de contrler tout moment les dimensions que vous accordez votre feuille par lintermdiaire du compteur situ dans la barre doutils. Nous lui donnerons comme valeur les dimensions de : 6195 x 3840. Pour modifier la taille de cette fentre, utilisez le pointeur de la souris. Placez-le sur le coin infrieur droit de la fentre (ce qui a pour effet de le transformer en une double flche oblique), appuyez sur le bouton gauche de la souris, dplacez le pointeur jusqu' ce que la fentre atteigne les dimensions souhaites, puis relchez la souris et contrlez les dimensions affiches. Nous venons de modifier les valeurs initiales de la feuille manuellement, nous aurions pu le faire galement par lintermdiaire de la fentre de proprits. Ca se complique, quest ce que les proprits ? Chaque objet en Visual Basic dispose dun jeu de caractristiques, appeles proprits, qui lui sont associes. Ces proprits, listes dans la fentre Proprits, contrlent lapparence et le comportement de lobjet. Visual Basic attribue une valeur par dfaut aux proprits de chaque objet. Ces valeurs peuvent tre modifies pendant la conception du programme ou en mode actif de l' application par programmation. Nous ne nous intresserons pour l' instant qu' aux proprits que nous allons utiliser. Je vous conseille nanmoins de faire des essais pour vous familiariser avec toutes les proprits de chaque objet. Pour afficher la fentre de proprits, cliquez depuis la barre d' outils sur l' icne qui reprsente une main qui tient un fichier(le 2me partir de la gauche) ou appuyez sur la touche de fonction F4 de votre clavier.
Ouvrons la feuille de proprits :

Dans le champ de saisie en haut de la feuille vous lisez le nom de la feuille auxquelles se rapportent les proprits. Il sagit dans cet exemple de la feuille Form1. Si jinsiste sur ce point cest que tout simplement lorsque vous aurez un programme qui contiendra une dizaine de feuilles, il faudra afficher prcisment la feuille dont les proprits sont modifier. Ne pas se tromper de feuille! Nous garderons l'option reprsente par longlet "Alphabtique" La premire proprit modifier est le nom Name : Form1 sera remplace par : frmAbout(Nom de la feuille) Backcolor : en cliquant sur le carr gris nous ouvrons la palette et nous choisissons la couleur de fond souhaite. (Noire) BorderStyle : 2 - Sizable cest dire modifiable par lutilisateur sera remplace par : 1 - fixe lutilisateur ne pourra pas modifier les dimensions de la feuille. Caption : Form1 sera remplac par : "A propos de... ". Ce champ de saisie correspond lcriture qui se trouve dans la barre de titre de votre feuille. Icon : (Icon) permet dinsrer une icne, n'importe quelle icne fera laffaire pourvu quelle ait une extension "*.ico" Icne : Fichier Image qui comporte une extension ico. Height : 3840 - Dimensions en hauteur de la feuille Width : 6195 - Dimensions en largeur de la feuille Une nouveaut par rapport aux premires versions de VB le champ de saisie en bas de la feuille de proprits qui vous indique les caractristiques de la proprit slectionne. Sur cet exemple nous avons lexplication de la proprit caption Chaque proprit une valeur attribue par dfaut et qui est modifiable au choix du programmeur. Cette modification peut se faire en cours de programmation comme nous le verrons plus loin. La proprit Caption vous permet d'affecter une touche d'accs rapide un contrle. Dans la lgende, tapez le signe & juste avant le caractre que vous souhaitez dsigner comme touche d'accs rapide. Ce caractre apparatra soulign. Il vous suffira d'appuyer sur la touche ALT et sur le caractre soulign pour placer le focus sur ce contrle. (nous reparlerons du focus en temps utile)

Pour slectionner un objet de la bote outils, dplacez le curseur de la souris sur llment que vous voulez choisir, une info bulle apparat et vous indique le nom de lobjet sur lequel vous pointez la souris. Nous allons positionner sur la feuille les autres objets ncessaires la prsentation de notre feuille, savoir : Un objet Label(Label1) qui nous servira de titre, un objet Image(Image1) pour insrer votre logo sous forme d' icne, 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 insrer le logo sous forme d' image de notre structure, un trait rcupr dans la bote 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 numro de srie.

La bote outils

Nous allons positionner sur linterface de travail les objets ncessaires la prsentation de notre feuille, savoir : Label1 positionn en haut gauche de la feuille, proprits : Height :390 Width : 4630 Caption : Help System Restorer ou le nom de votre choix BackColor : Choisir la couleur Noire ForeColor : Choisir la couleur Rouge Ces deux dernires proprits seront identiques tous les objet positionns dans cette feuille. Label2 positionn juste en dessous de la premire tiquette comprendra dans sa proprit : Caption : Version 1.0 Je vous laisse le soin de lui donner les dimensions adquates Label3 sera plac en dessous de Label2 et aura comme proprit : Caption : Description de l' application Suivi de Label4 avec comme proprit : Caption : Programme de sauvegarde de la base de registre, ou descriptif selon votre choix. Lobjet Image1 sera plac juste cot de Label1 et dans son prolongement. Les proprits dimensionnelles s' ajusteront aux dimensions de l' image Nous insrerons le fichier Image en cliquant sur la proprit Picture qui a pour effet d' ouvrir une bote 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 tlchargez les images et l' exemple de l'application ici

Nous insrerons un objet Line (trait) en dessous de lobjet Image1, sans commentaires Label5 positionn en dessous du trait aura comme proprit : Caption : Help System Restorer[Savereg] Copyright 2001 Tous droits rservs Gilbert Miralles 30980 Langlade France Ndl : Il est bien entendu que vous pouvez modifier cette saisie en la remplaant par vos propres coordonnes. Le sigle Copyright "" sobtient en appuyant sur les touches Alt du clavier alphanumrique + 0169 du clavier numrique. Il ne nous reste plus qu positionner les deux derniers "Label" qui restent, savoir : Label6 qui est une tiquette qui aura comme proprit : Caption :Srial N : Label7 qui sera juxtapos l' tiquette Label6 devant recevoir la valeur du numro de srie de votre ralisation. Pour terminer, nous positionnons les deux boutons qui auront comme proprit : CommandButton1 Caption : OK CommandButton2 Caption : Infos Systeme... Vous leur donnez comme dimensions une valeur en rapport avec la prsentation de votre feuille. Vous pouvez agrmenter la prsentation en modifiant la proprit "color" de certains textes. La prochaine leon sera rserve lcriture du code.

L'environnement de programmation de Visual Basic


Faisons connaissance avec le langage de programmation objet

Visual Basic, est en parfaite harmonie avec Windows. Le dveloppement d'une application passe
par les tapes suivantes : Dessin de l'interface d'utilisation, c'est dire les fentres et leur constituants, l'aide d'un outil interactif de dessin, "l'environnement Visual Basic". Valorisation initiale des proprits qui sont des attributs ou caractristiques de chaque lment

de

l'interface. programmation linaire traditionnelle. Ainsi, une application Visual Basic est constitue d'un ensemble de procdures indpendantes les unes des autres. Les procdures Une procdure comprend des instructions crites l'aide du langage BASIC. Elle est associe un
objet, c'est dire un des lments d'une feuille, la feuille elle mme, ou bien un bouton, une liste, un champs de saisie etc... La procdure est appele par Visual Basic lorsqu'il se produit un vnement pour l'objet Ecriture du code BASIC La programmation des applications Visual Basic est dite vnementielle, par opposition la

correspondant.
Si vous n'avez pas crit de code dans une procdure charge de traiter un type d'vnement pour un objet donn, il ne se passe rien de particulier lorsque l'vnement est gnr. Pour crire le code d'une application, il convient donc de dterminer les vnements auxquels on

souhaite ragir, et pour quels objets. Cela dtermine les procdures dans lesquelles le code est crit.
La fentre principale ( Interface graphique de conception )

La fentre 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 accs rapide aux principales commandes La boite outils, est une fentre qui comprend initialement tous les icnes visualisant des contrles personnaliss (application complmentaire dont certains contrles sont en option selon la version que vous possdez) pour la version standard 20 icnes.

Elle n'est accessible qu'en phase de conception (Mode Arrt)

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

La fentre de proprits comprend la liste des proprits de l'objet slectionn dans la feuille courante (feuille) ou contrle) ainsi que leurs valeurs.
La procdure est appele par Visual Basic lorsqu'il se produit un vnement pour l'objet correspondant. A ce stade de l' application, nous n' avons cre qu' une seule fentre, c' est donc la fentre principale. La fentre 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 dterminer par la suite qu' elle est la feuille qui deviendra l' interface d' accueil. Cette possibilit s' obtient par le paramtrage de l' environnement de travail de Visual Basic. Cliquez dans la barre de menus sur l' tiquette "Projet", puis sur "Proprits de projet1", slectionnez "Objet de dmarrage". Si le champs de saisie comprend la valeur "Sub main", modifiez et crivez "Form1" qui est le nom de la feuille que nous avons cre 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 dmarrage 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 comprhension de la suite du programme.

Un tout petit peu de Thorie


Mthodes Sous Visual Basic, certaines fonctions ne sont accessibles que combines avec des objets. Ces instructions sont dnommes mthodes. Par exemple la mthode Show charge et affiche une fentre dfinie par l'utilisateur (vous en l'occurrence) (se rfrer aux sources pour les autres mthodes)

Programmation vnementielle Les programmes Visual Basic sont commands par les vnements gnrs par les objets de l'interface utilisateur. Par exemple, le chargement d'une feuille est un vnement auquel certaines instructions peuvent tre rattaches., comme par exemple l'effacement d'une feuille dans la mmoire. L'vnement sera caus par un clic de souris, dans le cas d'un bouton, ou par une modification du contenu d'une zone de texte.

Domaine de validit des variables et des procdures Comme tout langage moderne, Visual Basic connat les variables globales, locales et statiques. Les variables globales sont accessibles depuis le programme entier mais les variables locales ne sont connues que dans leur procdure. Les variables statiques conservent leur valeur la sortie de la procdure, 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 "dmonter" : tous les fichiers qui le composent sont dsormais intimement associs. Les images installes dans un contrle sont elles aussi intgres l'excutable. Seuls les fichiers OCX ou TXT restent autonomes, et devront tre livrs l'utilisateur. Les fichiers DLL devront galement tre fournis avec l'application.

Les types de donnes Suffixe Type de donnes % & Long 4 oct de -2.147.483.648 2.147.483.647 Integer 2 oct de -32.768 32767 Taille Limites d'utilisation

! # @ Currency 8 oct Double " 8 oct Simple prcision 4 oct

$ rien

String

1oct par caractre

Variant

nombre requis

Quelques prcisions De ce tableau on retient que si l'on doit dclarer une variable alphanumrique (caractres textes) on choisira une variable de type String Pour une opration avec des chiffres ou des oprations de comptage simples, on choisira une variable numrique de type Integer, ou long pour des oprations importantes (voir limites). Pour les calculs montaires, on choisira la variable de type Currency. Le type par dfaut d'une variable est VARIANT.Ce type indique Visual Basic que la donne est susceptible de contenir divers types de donnes. Je dconseille d' utiliser la variable de type Variant, sauf cas de force majeure.

Qu'est ce qu'une variable ? Les instructions sont constitues de verbes qui agissent sur des variables. Une variable peut tre considre comme une case mmoire. Elle possde un nom et une valeur. Le nom est constitu de lettres, de chiffres et de caractres < _ > ( le soulign), le premier caractre est obligatoirement une lettre et il ne peut y avoir plus de 40 caractres dans un nom de variable. entraner des rsultats tonnants. Dclarations de variables La dclaration d'une variable se fait de plusieurs faons , savoir : Dim <nom de la variable> As <type de la variable> Ex : pour dclarer une variable de type String (alphanumrique), que vous avez nomme <Bazile>, vous crirez

Dim Bazile As String reprsente dans le programme par <Bazile$> Si la mme variable est de type Integer (numrique), vous crirez : Dim Bazile As Integer reprsente dans le programme par <Bazile%>

Exemple d'un champs de saisie comportant une tiquette ayant comme proprit Caption : Name, et comme proprit Name : Label1. Ne pas confondre la proprit Name qui est le nom par dfaut de l'objet, et la proprit Caption qui peut avoir n'importe quel nom et qui dans la cas prsent est le Nom de l'utilisateur saisir. Vous mettrez un certain temps vous y faire, mais, vous comprendrez avec un peu d'exprience. La proprit Name est le nom que vous donnez l'objet dans la phase de dveloppement. Cette proprit n'est pas visible par l'utilisateur. Par contre la proprit 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 proprit est visible par l'utilisateur, mais au contraire de la TextBox celle-ci n'est pas modifiable. Nous allons essayer de mettre en pratique les formules prcdemment acquises. Lorsque vous travaillez sur l' interface de travail vous vous trouvez en mode dveloppement. Vous pouvez contrler le bon droulement des instructions ou fonctions crites dans les pages de code en passant en mode excution. Nous allons crire notre premire ligne de code et visualiser le fonctionnement en mode excution. Ecrire dans la proprit Caption de bouton de commande "Command1" &Quitter. Nous allons nous servir titre de dmonstration 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 slectionn.

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

Cette feuille se prsente avec une "ComboBox"(Command1) qui vous permet en cliquant sur le petit bouton de droite de drouler une liste qui comprend tous les noms d' objets utiliss dans cette feuille(Form1). La "ComboBox de droite(Click) liste toutes les proprits disponibles pour l'objet slectionn. Nous devons gnrer un vnement lorsque l' utilisateur appuiera sur le bouton, et lorsqu'il gnrera un clic avec le curseur de la souris. Nous slectionnerons donc l' vnement "Click". Ecriture du code dans la feuille de code du bouton de commande "Command1" avec l' vnement "Click" Nous crivons notre premi e procdure en saisissant: Private Sub Command1_Click ( ) 'Sortie du programme End End Sub Vous avez vu que j' ai mis une apostrophe devant la ligne de texte "'Sortie du programme" Ces lignes commenant par une apostrophe sont nommes "lignes de commentaires. Il est conseill en effet d' indiquer sous forme de texte l' explication de l' vnement que l' on a voulu effectuer.

Cela sera trs utile surtout lorsque notre programme sera compos de plusieurs dizaines de procdures. Ne pas s' en priver d' autant que le compilateur ignore compltement les lignes de commentaires. Si vous tes un peu curieux(Il faut l' tre en programmation) et que vous avez cliqu sur "Gnral" dans la feuille de code vous constatez que l' interface comprend une instruction "Option Explicite". Cette instruction force le dveloppeur dclarer toutes les variables utiliser dans son programme. Si vous oubliez de dclarer une variable en phase de conception, le programme vous rappellera l' ordre et vous indiquera une erreur. Puisque nous venons de crer notre premire procdure, essayons de la lancer pour visualiser ce qu' il se passe.

Dans la barre d' outils, cliquez sur le bouton excuter 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 "Rservs", vous ne pouvez pas les utiliser en dehors de la fonction tablie par l' environnement de programmation. La prochaine leon sera rserve la cration de tableaux.

Les tableaux Un tableau, c'est dans le cas d'une ralisation graphique, la dclaration 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 reprsentant un point sur l'cran. Ex : Un pixel = ceci [ . ] Chaque partie de l'cran tant reprsente, si nous voulons animer un graphique, nous devons dclarer dans le programme, c'est dire Visual Basic, la configuration d'cran que nous allons utiliser. Dans l' une des applications que j' ai dj dvelopp ("Patman"), j'ai dcid que le tableau comprendrait 456 cases, comment j'ai fait pour trouver ce chiffre ? J'ai dessin plusieurs lments graphiques devant reprsenter l'interface de travail, pour l'exemple, je vous reproduis un de ces lments ,( 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 lments, et dans la largeur de l'cran 24 lments. Le calcul est simple 19 que multiplie 24 gale 456. Ces chiffres peuvent tre modifis en fonction de la configuration d'cran et des dimensions des lments que vous avez dessins. Comment allons nous dclarer ce tableau ? Principe : Dim <nom du tableau><liste de paramtres> As <type du tableau> Gnralement nous dclarons, Ex : Dim Mon_tableau(1 To 12) As Integer Dans le cas de l' exemple prcit, nous dclarerons notre tableau avec les instructions suivantes :

Global Const NB_CASES = 456 Global Const NB_LIGNES = 19 Global Const NB_COLONNES = 24 Si nous nous rfrons aux explications prcdentes, nous en concluons que nous venons de dclarer un tableau qui comprend 19 lignes, 24 colonnes, 456 cases, qui sont des constantes donc qui ont des valeurs fixes et qui sont dclares globalement dans tous le programme, donc qui sera pris en compte par toutes les feuilles de travail s' il y en a plusieurs. Nous dclarerons 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><opration> Explication : Si(If) inclure une condition Alors(Then) donner instructions pour appliquer la condition si la condition ne peut - tre excute, Else(nouvelle condition) donner de nouvelles instructions pour excuter une nouvelle condition si la premire n' est pas excute. End If Fin du traitement conditionnel. If <condition> Then <instruction> Else <instruction> Ex : If tableau(ligne, colonne) = Patman Then 'Traduction = si le tableau reprsent 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 premire condition n'est pas remplie) 'Donner de nouvelles instructions End if
Prenez 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 utilise prcdemment n'est pas excute! Vous constatez que devant le mot Instruction, j'ai mis une apostrophe, en effet Visual Basic considre que toute criture prcde d'une apostrophe n'est pas pris en compte par le compilateur. Donc toutes les lignes de commentaires sont prcdes d'une abrviation et servent au dveloppeur expliquer la forme et l'ide de son texte. Je vous conseille de mettre le plus de commentaires possibles. Les compteurs de boucles Qu' 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 incrmentera(ajouter1) le nombre de tours chaque fois que celui-ci passera devant la case dpart. On peut galement le faire sortir de la boucle au bout d'un certain nombres de tours. Exemple : 1 - Dmarrage du point 2 - excuter un tour 3 - Contrle du nombre de tours 4 - Si la valeur compteur est gale ou suprieure 3, alors le point sort de la boucle 5 - Si la valeur compteur est infrieure 3 6 - Ajouter 1 la valeur du compteur et retourner la case dpart

Etudions la boucle For Next For<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'anne dans une boucle, on crira : For Mois = 12 To 1 Step -1 'Instructions Total = Total + Montant(Mois) Next Mois Dans cet exemple on dcrmente(Comptage ngatif) de 12 1 la variable Step indique le pas de dcrmentation, et dans ce cas nous souhaitons dcrmenter de 1(mois) si nous avions souhait effectuer des calculs bass sur un trimestre nous aurions mis comme "valeur de pas" le chiffre 3 ( Step - 3) La ligne instruction excute le programme demand et le Next est la variable de fin de procdure. Si vous souhaitez comprendre au mieux l'opration de comptage avec les boucles, cliquez sur le lien qui vous ouvre le fichier [EXERCICE1]

Les oprateurs arithmtiques et de comparaison (les principaux)


Oprateur
+ * \ < <= > >= = <> &

Signification
Ajoute deux nombres Soustrait deux nombres ou rend ngatif un nombre Multiplie deux nombres Divise deux nombres

Exemple
a+b a - b ou -92 a* b a\b a < b (a plus petit que b) a <= a>b a >= b a=b a <> b Bonjour & messieurs, retourne "Bonjour messieurs"

Oprateurs de comparaison
Infrieur Infrieur ou gal Suprieur Suprieur ou gal Egal Diffrent Retourne une chane de caractre qui est la concatnation des deux autres

D'autres traitements conditionnels seront tudis en cours de programmation

Cration des menus(contrle) Un contrle Menu affiche un menu personnalis pour votre application. Un menu peut inclure des commandes, des titres de sous-menus et des barres de sparation. Vous pouvez crer des menus dans lesquels figurent jusqu' quatre niveaux de sous-menus. Pour crer un contrle Menu, utilisez le Crateur de menus. Entrez le nom du Menu dans la zone Caption. Pour crer une barre de sparation, tapez simplement un trait d'union (-) dans la zone Caption. Pour afficher une coche gauche du nom d'un lment de menu, activez la case cocher Checked. Crateur de menus, bote de dialogue

Bien que certaines proprits des contrles Menu puissent tre dfinies dans le Crateur de menus, toutes les proprits de ces contrles sont disponibles dans la fentre Proprits. Pour afficher les proprits d'un contrle de Menu, slectionnez son nom dans la zone Objet de la partie suprieure de la fentre Proprits. Lorsque vous crez une application MDI, la barre de menus de la feuille MDI fille remplace celle de l'objet MDIForm quand la feuille fille est active.

Options de la bote de dialogue Caption Vous permet d'entrer les noms de menu ou de commande qui apparatront sur votre barre de menus ou dans un menu. Si vous voulez crer une barre sparatrice dans votre menu, tapez un simple trait d'union (-) dans la zone Caption. Pour permettre l'utilisateur d'accder au menu par l'intermdiaire du clavier, insrez un caractre (&) avant une lettre. Au moment de l'excution, cette lettre apparat souligne (le caractre & reste invisible), et l'utilisateur peut accder au menu ou la commande en appuyant sur ALT et la lettre. Si vous souhaitez qu'un caractre & apparaisse dans le menu, tapez deux caractres & conscutifs dans la lgende. Name Vous permet d'entrer un nom de contrle pour l'lment de menu. Ce nom est un identificateur utilis uniquement pour accder l'lment de menu dans le code. Il n'apparat pas dans le menu. Index Vous permet d'affecter une valeur numrique qui dtermine la position du contrle l'intrieur d'un groupe de contrles. Cette position n'a aucun rapport avec la position l'cran. ShortCut Vous permet de slectionner un raccourci clavier pour chaque commande. HelpContextID Vous permet d'affecter une valeur numrique unique pour l'identificateur de contexte. Cette

valeur est utilise pour trouver la rubrique approprie dans le fichier d'aide identifi par la proprit HelpFile. NegotiatePosition Vous permet de slectionner la proprit NegotiatePosition du menu. Cette proprit dtermine si le menu apparat dans une feuille conteneur, et, si oui, quel emplacement. Checked Vous permet d'ajouter une coche la gauche d'un lment de menu. Celle-ci est gnralement utilise pour signaler si une option bascule est valide ou non. Enabled Vous permet de dcider si l'lment de menu doit rpondre des vnements, ou doit tre gris si vous voulez qu'il soit indisponible. Visible Vous permet de rendre l'lment visible dans le menu. WindowList Dtermine si le contrle Menu contient une liste des feuilles MDI fille ouvertes dans une application MDI. Flche vers la droite Dplace le menu slectionn d'un niveau vers le bas lorsque vous cliquez dessus. Vous pouvez crer jusqu' quatre niveaux de sous-menus. Flche vers la gauche Dplace le menu slectionn d'un niveau vers le haut lorsque vous cliquez dessus. Vous pouvez crer jusqu' quatre niveaux de sous-menus. Flche vers le haut Dplace l'lment de menu slectionn d'une position vers le haut l'intrieur d'un mme niveau de menu chaque fois que vous cliquez dessus. Flche vers le bas Dplace l'lment de menu slectionn d'une position vers le bas l'intrieur d'un mme niveau de menu chaque fois que vous cliquez dessus. Zone de liste du menu Zone de liste qui affiche une liste hirarchique des lments de menu. Les lments de sousmenus sont indents pour indiquer leur position ou leur niveau hirarchique.

Suivante Dplace la slection vers la ligne suivante. Insrer Insre une ligne dans la liste, au-dessus de la ligne actuellement slectionne. Supprimer Supprime la ligne actuellement slectionne. OK Ferme le Crateur de menus et applique toutes les modifications la dernire feuille slectionne. Le menu est disponible au moment de la cration ; toutefois le fait de slectionner un menu la cration ouvre la fentre Code pour l'vnement Click de ce menu, sans excuter aucun code d'vnement. Annuler Ferme le Crateur de menus et annule toutes les modifications. Apprenons raliser des barres de menu dans notre interface. Donnons le "Focus" notre feuille de travail en la slectionnant tout simplement, la barre de titre s'affiche avec la couleur bleu que vous connaissez bien. Cliquez dans la barre de menu de V.B sur l'tiquette "Fentre" puis sur l'tiquette "Cration de menus". Ou bien, Dans la barre d' outils de l' interface de VB, cliquez sur l' icne qui reprsente un fichier le troisime en partant de la gauche. (Il est ncessaire qu' une feuille soit affiche) Vous visualisez le crateur de menu. La fentre de cration de menus s'ouvre. 1re tiquette - l'tiquette intitule "Fichier" ( Etiquette Parent ) Dans la proprit "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 proprit "Name", appuyez sur Tab(bouton clavier) 1re sous tiquette - l'tiquette "Imprimer" ( Etiquette Fille ) Appuyez sur le bouton " Suivant" pour ouvrir une nouvelle fentre de saisie. Ecrire : [&Imprimer] dans la proprit "Caption" appuyez sur Tab, puis, Ecrire : [mnu_Print], dans la proprit "Name", appuyez sur Tab,

ensuite cliquez sur le bouton flche droite pour crer une tiquette fille qui sera loge dans l'tiquette (Parent) intitule "Fichier" 2me sous tiquette - l'tiquette intitule "Excuter" ( Etiquette Fille ) Appuyez sur le bouton " Suivant" pour ouvrir une nouvelle fentre de saisie. Ecrire : [&Excuter] dans la proprit "Caption" appuyez sur la Tab puis, Ecrire : [mnu_Execut, dans la proprit "Name", appuyez sur Tab Si les quatre petits points avant la commande &Executer ne sont pas reprsents alors, cliquez sur le bouton flche droite pour crer une tiquette fille qui sera loge dans l'tiquette (Parent) intitule "Fichier" sinon,

Insrer une ligne de sparation ( Etiquette Fille ) Appuyez sur le bouton " Suivant" pour ouvrir une nouvelle fentre de saisie. (les 4 petits points s'inscrivent automatiquement) Ecrire : [-] (tiret de sparation situ sur la touche "6" de votre clavier) dans la proprit " Caption ", appuyez sur "Tab" Ecrire : [mnu_Sep1, dans la proprit "Name", appuyez sur Tab 3me sous tiquette - l'tiquette intitule "Quitter" ( Etiquette Fille ) Appuyez sur le bouton " Suivant" pour ouvrir une nouvelle fentre de saisie. Ecrire : [&Quitter] dans la proprit "Caption" appuyez sur la Tab puis, Ecrire : [mnu_Quitter, dans la proprit "Name", appuyez sur Tab 2me tiquette - l'tiquette intitule "?" ( Etiquette Parent ) Appuyez sur le bouton " Suivant" pour ouvrir une nouvelle fentre de saisie. Ecrire : [?] dans la proprit "Caption" appuyez sur la Tab puis, Ecrire : [mnu_About_Titre, dans la proprit "Name", appuyez sur Tab ( observez que devant le caractre " ? " nous n'avons pas les 4 petits points ( tiquette Parent ) 1re sous tiquette - l'tiquette intitule "A propos de..." ( Etiquette Fille ) Appuyez sur le bouton " Suivant" pour ouvrir une nouvelle fentre de saisie. Ecrire : [&A propos de...] dans la proprit "Caption" appuyez sur la Tab puis, Ecrire : [mnu_About, dans la proprit "Name", appuyez sur Tab ensuite cliquez sur le bouton flche droite pour crer une tiquette fille qui sera loge dans l'tiquette (Parent)

Appuyer sur le bouton "OK" ,contrlez votre travail et sauvegardez le.. Vous avez crit votre premire " 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 dplaant le curseur de votre souris, sur les diffrents objets insrs dans la bote outils, un petit rectangle de couleur apparat et vous indique le nom de l' objet.

Les diffrents objets de la bote outils. Dans cet exemple nous avons survol avec la souris la dernire icne de la dernire range de droite, ce qui a provoqu l' apparition de la bulle qui nous indique que cet icne correspond un contrle "Data".

Etudions les diffrents contrles de la bote outils. Nom du contrle PictureBox Description

C'est un conteneur d' autres objets. Vous pouvez insrer une image ou par exemple un groupe d' objets en une seule opration On utilise ce contrle pour placer du texte comme affichage simple ou Label comme tiquette.(L' utilisateur ne peut pas modifier le texte saisi dans ce contrle) C' est le seul objet qui vous permet de saisir du texte, des nombres ou des TextBox dates. Ce contrle sert enjoliver votre prsentation. Un autre contrle remplit le mme rle mais n' est pas livr en standard, c 'est le contrle Sheridan 3D Frame Controls qui est gnr par le fichier Threed32.ocx.(A possder imprativement) C'est un bouton poussoir qui enclenchera une action par l' intermdiaire d' CommandButton une procdure vnementielle. CheckBox C'est une case cocher OptionButton C'est un bouton radio(Option) Il s' agit d' une liste modifiable qui permet de choisir un seul lment dans ComboBox une liste mais aussi de taper une valeur qui n' est pas affiche

ListBox HScrollBar VScrollBar Timer DriveListBox DirListBox FileListBox Shape Line Image Data OLE

C'est une liste dans laquelle vous pouvez choisir un ou plusieurs lments, sans pouvoir saisir de nouvelle valeur. C'est un ascenseur horizontal C'est un ascenseur vertical C'est une minuterie, genre chronomtre qui vous permet d' enclencher une action toutes les n milli-secondes Ce contrle permet d' afficher la liste de tous les lecteurs disponibles sur l' ordinateur Ce contrle permet d' afficher la liste de tous les rpertoires d' un lecteur slectionn Ce contrle permet d' afficher la liste de tous les fichiers d' un rpertoire slectionn Permet de dessiner des formes, rectangles, cercles Permet de dessiner des lignes Sert insrer des images, nous le prfrerons l' objet PictureBox Ce contrle permet de programmer l' accs aux bases de donnes 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 fentres qui permettent de programmer et de paramtrer les diffrents objets. Si vous possdez la version "Pro", vous pouvez aller chercher des contrles supplmentaires comme celui que j' ai cit dans le paragraphe prcdent. Dans la barre de menus, cliquez sur l' tiquette "Projets", "Composants" En cliquant sur le bouton "Parcourir", vous ouvrez une bote de dialogue de Windows. Il ne vous reste plus qu' aller chercher le fichier qui vous intresse, en l'occurrence "Threed32.ocx" qui se trouve dans le rpertoire de c:\Windows\system Vous pouvez galement visualiser tous les fichiers avec extension *.ocx pour connatre les

contrles que vous avez disposition. Nous essayerons titre pdagogique de raliser quelques petites applications qui englobent les contrles "Treed32.ocx" "et "Spin32.ocx" cela nous permettra de constater l' volution esthtique de nos prsentations.
Prochain tutoriel : Etude des principales proprits d' une feuille Form1

Etude des principales proprits d' une feuille Form1 Pour modifier une proprit, slectionnez l' objet dsir(Form1), cliquez sur la ligne de la proprit que vous voulez modifier et utilisez la flche dirige vers le bas pour afficher les diffrentes valeurs comme indiqu sur la figure ci-contre. Modification des valeurs des proprits en double cliquant sur le nom de la proprit ou en utilisant la flche dirige vers le bas. Appel de la fentre des proprits Si la fentre des proprits n' apparat pas, appuyez sur la touche de fonction F4 ou slectionnez dans le menu Affichage/Fentre des proprits. Tableau 1.2 : Proprits d' une feuille FORM1 (les principales) Proprits BackColor BorderStyle Caption ControlBox Enabled Font ForeColor Height Icon Left MaxButton MidiChild MinButton Signification Dfinit la couleur d' arrire plan Dfinit le style de la bordure d' un objet Dfinit le texte dans la barre de titre de la feuille Dtermine si les boutons du menu systme en haut droite dans la barre de titre de la feuille sont affichs. Dtermine si l' objet peut rpondre aux vnements, c'est dire s'il est utilisable. Dfinit une police, un style et une taille de caractre Dfinit la couleur de premier plan Dfinit la hauteur de l' objet partir du haut Indique l' icne qui est affiche quand la feuille est rduite Indique la position horizontale gauche l' excution de la feuille Dfinit si une feuille contient un bouton "Agrandissement" Dfinit si une feuille est considre comme feuille enfant MIDI Dfinit si une feuille contient un bouton "Rduction"

MouseIcon MousePointer Picture tag Top Width WindowState

Dfinit une icne de souris personnalise Dfinit le type de pointeur de souris Dfinit un graphisme utiliser Permet de stocker des informations supplmentaires Dtermine la position verticale de l' objet excution Indique la largeur de l' objet dfinit l' tat visuel d' une feuille au moment de l' excution

Vous pouvez tester toutes ces proprits en vous positionnant en mode Excution. Par contre pour modifier un paramtre, vous devrez vous placer en mode conception. LE MODE CONCEPTION Vous ralisez votre interface, mise en place des objets, des proprits, et criture du code devant gnrer les vnements souhaits. Vous modifiez tous les paramtres qui vous semblent utiles au fonctionnement de votre ralisation. Lorsque vous dsirez visualiser le rsultat de votre travail, vous devrez passer en mode excution. LE MODE EXECUTION Vous excutez la feuille par la commande du menu Excution/Excuter ou bien en appuyant sur la touche "F5" de votre clavier Dans la barre de menus, cliquez sur l' tiquette Excution, puis sur Excuter.

Vous pouvez galement excuter votre application en mode pas pas, c' est dire en suivant ligne par ligne, procdure par procdure 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 excutant cette manuvre, vous avez excut votre programme qui se trouve positionn sur votre bureau derrire la feuille de procdure que vous avez visualis. Il faut faire un peu d' acrobatie pour dplacer la feuille de procdure pour rendre visible l' application que l' on veut excuter afin de contrler le cheminement des instructions et des fonctions du code. C'est la procdure habituelle que vous emploierez pour dbuguer votre programme en phase finale de ralisation. La compilation complte permet votre application de compiler tout le code ncessaire dans l' environnement de dveloppement. Quand vous choisissez Excution/Excuter ou bien quand vous appuyez sur la touche" F5 "de votre clavier, seul le code ncessaire au dmarrage de l' application est compil. Comment placer des objets sur la feuille ?

Placer un contrle 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 relchez le bouton de la souris, le contrle est plac. Slectionner un ou plusieurs contrles Cliquez sur le contrle. Des poignes s' affichent tout autour du contrle. Cliquez sur un contrle, maintenez la touche "Maj" du clavier, puis cliquez sur un autre contrle. Dessinez un cadre fictif avec la souris tout autour des contrles slectionner. Dplacer un ou plusieurs contrles Slectionnez les contrles comme expliqu ci-dessus, puis dplacez en un. Vous constaterez qu'ils se dplacent tous. Cadrer un groupe de contrles Slectionnez les contrle cadrer. Utilisez la commande du menu "Format/Aligner" et choisissez l' option que vous dsirez. Supprimer un contrle Slectionnez le contrle que vous voulez supprimer puis appuyez sur la touche "Suppr" du clavier ou cliquez sur le bouton "Couper" dans la barre d' outils.

NDL'AJe vous conseille d' utiliser les procdures que je viens de dcrire pour dessiner des tableaux importants devant comprendre 2, 3 voire 400 objets sur la feuille. La marche suivre est de raliser manuellement la premire ligne de votre tableau, de la slectionner, puis de faire un copier coller de la ligne slectionne qui viendra se placer au dessous, et ainsi de suite jusqu' la ligne finale. Ex pour raliser un tableau devant contenir 456 objets images de dimensions 32x32, on ralise la premire ligne, on la slectionne, puis on la colle en dessous de la premire.(Procdure Copier/Coller) Les objets devront tre indexs et "Vb" incrmentera automatiquement les objets. Contrler nanmoins le rsultat. 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 prcis dans ce domaine contrairement certaines versions prcdentes ou le contrle tait vraiment ncessaire.

Prochain tutoriel : Utilisation primaire des contrles

Utilisation primaire des contrles


Dans les pages qui vont suivre nous allons apprendre utiliser les contrles avec pour chacun leur code correspondant afin de les rendre oprationnels. Certains contrles sont faciles programmer, d' autres le sont moins surtout pour les dbutants aussi nous accompagnerons les explications de ces modules avec des exemples tlcharger. Libre vous d 'utiliser cette option. Les contrles Visual basic sont des outils graphiques qui servent construire l' interface utilisateur d' un programme. Ils sont regroups dans la bote outils de l' environnement de programmation. Il suffit de quelques clics et de dplacement de souris pour crer des objets sur une feuille. Vous apprendrez dans les prochaines leons afficher des informations dans une zone de texte, parcourir les lecteurs et dossiers prsents sur votre systme, traiter les donnes utilisateurs, dmarrer des applications Windows et visualiser des enregistrements de bases de donnes. Les exercices vous aideront concevoir vos propres applications et vous feront tudier en dtail les objets, proprits et codes de programme.

Utilisation de l' objet "TextBox"


Dans cet exercice nous utiliserons deux contrles, le contrle "TextBox" (zone de texte) et le contrle "CommandButton" (bouton de commande), ils sont tout deux prsents dans la bote outils. 1. 2. 3. Dmarrez Visual Basic et crez une nouvelle application "EXE standard". Positionnez sur la feuille(Form1) nouvellement cre un contrle 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-aprs. Positionnez sur la feuille un contrle "CommandButton".

Une zone de texte sert afficher du texte sur une feuille ou de traiter les saisies de l' utilisateur pendant l' excution 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 proprits de
l' objet soit par la fentre de proprits, soit en programmant les lignes de codes ncessaires l' application de nouvelles instructions. Dans notre exemple, l' objet zone de textes sera utilis pour afficher un message lorsque l' utilisateur appuiera sur le bouton de commande.

Utilisation de l' objet "CommandButton"


Un bouton de commande permet de traiter l' vnement 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 vnement, vous attendiez une rponse celui-ci, en l' occurrence que le lampadaire s' allume. En programmation objet sous Visual Basic, il en va de mme, l' utilisateur provoque un vnement (lorsqu'il appuie sur le bouton) et attend en rponse l' excution immdiate d' une action spcifique.

Le comportement du bouton doit rpondre aux attentes de l' utilisateur.


Vous pouvez comme pour la feuille Form1 tudie prcdemment, modifier les caractristiques des boutons de commande(comme celles de tous les objets) l' aide des proprits du contrle utilis. Vrifiez les possibilits offertes dans la feuille de proprits. Lorsque l' on a positionn les objets sur la feuille comme indiqu sur la figure ci-dessus, on va apporter les modifications souhaites, savoir :

Contrle

Proprit

Paramtre

Text1 Command1

Text Caption

Vide(rien) &Ok

Une particularit de la version 6.0 de Visual basic qui n' est pas ngliger pour les dbutants, c'est la zone de liste qui affiche toutes les proprits valides pour l' objet que vous utilisez. (Le caractre(perluette) crit devant le "O" de "OK" sert simplement souligner le premier caractre de chaque mot afin de crer un lien devant lancer la procdure par l' appui de ce caractre 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 prsent il s' agit du contrle "TextBox" qui, lorsque l' on crira Text1 suivi du point(Text1.) droulera la zone de liste. Celle-ci vous indique toutes les proprits disponibles valides pour ce contrle.

Ecriture du code devant gnrer l' vnement souhait : Effectuez un double-clic sur le bouton de commande "OK". Une fentre s' ouvre, c'est la feuille des procdures (criture du code) qui correspond l' objet traiter. Dans cette feuille nous trouvons dj les instructions par dfaut de l' objet. Private Sub Command1_Click( )

'
End Sub

Si vous n' crivez rien, il ne se passe rien. Comme nous souhaitons gnrer un vnement, nous allons crire : Votre prnom suivi de votre nom! Ce qui donne : Private Sub Command1_Click( ) 'Commentaires (crire ici l' ide de l' vnement gnrer) je mettrais par Ex : 'Ecrire dans la TextBox Text1.Text = "Gaston Lagaffe"
End Sub Explications : Private sub est le

dbut de la procdure "Command1_Click" Suivi par les commentaires (je prcise 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 excutes par le programme. Je traduirais cette instruction plus simplement pour les nophytes par : Dans l' objet intitul Text1 et particulirement dans la procdure Text, crit la chane de caractres suivante "Gaston Lagaffe" (qui s' crira obligatoirement entre guillemets). Et End Sub qui indique que la procdure est termine. Vous pouvez galement pour donner du cachet votre ralisation crer un second bouton qui effacera le texte dj crit dans la TextBox comme par exemple :

Contrle

Proprit

Paramtre

Command2
Private Sub

Caption

Reset

Command2_Click( ) 'Effacer la zone de texte Text1.Text = ""


End Sub Nous pouvons galement titre pdagogique utiliser le contrle "Label" Nous l' utiliserons particulirement pour crer des tiquettes car contrairement au contrle 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 proprit "Caption" de celui-ci : "Veuillez entrer votre nom " Ce qui modifiera la prsentation de notre ralisation par la figure suivante. Nous terminons notre ralisation en lui apportant les modifications dcrites en apart de la figure jointe et nous procdons aux essais en passant du mode "Conception" au mode "Excution" comme expliqu dans les leons prcdentes. Vous pouvez si vous le souhaitez rpondre votre premier QCM (questions choix multiples) ralis l' intention de ceux qui suivent ces tutoriels. QCM1 - Visual Basic 6.0 Prochain Tutoriel : Utiliser des objets systmes de fichiers

Utiliser des objets systmes de fichiers


Visual Basic propose trois objets trs utiles permettant d' accder au systme de fichiers. Il s' agit des contrles "DriveListBox"(liste de lecteurs), "DirListBox"(liste de rpertoires), et "FileListBox"(liste de fichiers). La liste de lecteur permet de parcourir les lecteurs valides de votre systme. La liste de rpertoires permet de naviguer parmi les dossiers d' un lecteur particulier. La liste de fichiers permet de slectionner un fichier spcifique dans un dossier. Vous pourrez tlcharger en option le fichier compress de l' application "Explorateur" qui reprend les contrles que nous venons d' voquer. Notre objectif dans cet exercice sera de raliser un programme "Explorateur". Vous aurez besoin pour celui-ci d' utiliser les trois contrles dj cits, ainsi qu' un objet "image" qui nous servira d' exemple d' utilisation de l' application propose dans ce Tutoriel. Dessinons le programme Dans le menu Fichier, slectionnez Nouveau Projet, choisissez "EXE Standard puis cliquez sur "OK". Une feuille vierge intitule "Form1" s 'affiche. Slectionnez dans la bote outils les trois contrles qui nous intressent, DriveListBox, DirListBox, et FileListBox puis, positionnez les sur la feuille. Ajoutez y un contrle "Image"

Voici le prototype de l' application "Explorer" Les dimensions n' ont pas grande importances, vous d' ajuster les paramtres en fonction de vos aptitudes cratrices.
Vous pouvez passer en mode Excution pour voir ce qui se passe ?

Un objet "FileListBox"(liste de fichiers) permet l' utilisateur de slectionner un fichier spcifique dans le systme de fichier. Visual basic insre alors le nom du fichier slectionn dans la proprit "FileName" de l' objet. Les slections appropries effectues par l' utilisateur sont rcupres galement l' identique par les objets : DriveListBox qui sera insr dans la proprit "Drive" de l' objet et, DirListBox sera insrr dans la proprit "Path" de l' objet. Nous utiliserons ces trois proprits dans le programme Explorateur. L' utilisateur change le paramtre d' un objet durant l' excution d' un programme, cette modification engendre un vnement qui est trait par Visual Basic dans le code du programme. Nota - Les proprits "Drive", "Path" et "FileName" ne sont accessibles qu' en phase d' excution. Il est impossible de les dfinir l' aide de la fentre de proprits.

Nous allons dfinir les proprits suivantes en utilisant la fentre "Proprits" Objets File1 Image1 Image1 Proprits Pattern Stretch BorderStyle Paramtres *.bmp ; *.* ; *.wmf ; *.ico True 1 - Fixed Single

Si nous n' avions pas utilis la proprit "Pattern" la "FileListBox" aurait affiche tous les types de fichiers contenus dans un dossier avec le risque que l' utilisateur slectionne un fichier qui n' est pas support par Visual Basic. Ce qui aurait pour effet de provoquer une erreur. Il est prfrable dans la mesure du possible d 'essayer d' viter tout risque d' erreurs, tout au moins celles qui sont prvisibles.

Nous allons ajouter quelques lignes de code aux procdures qui sont associes aux objets. Ces procdures sont appeles "Procdures d' vnement"car elles sont engendres par un vnement, par exemple un clic de souris. On affiche par un double clic sur l' objet "DriveListBox" la fentre de code de l' objet (Drive1) et particulirement dans la procdure "Change" on crit : Private Sub Drive1_Change ( ) 'L' utilisateur cliqu sur l' objet

Dir1.Path = Drive1.Drive End Sub Cette instruction actualise la proprit "Path" dans la liste de lecteurs lorsque l' utilisateur slectionne un lecteur de disque dans la zone Avec cette simple ligne de code nous constatons que nous pouvons changer de lecteur et lire dans le contrle DirListBox les rpertoires se trouvant dans le lecteur slectionn. Essayez de passer en mode Excution pour visualiser le fonctionnement. Nous allons effectuer la mme opration avec la "DirListBox" Private Sub Dir1_Change ( ) 'L' utilisateur cliqu sur l' objet File1.Path = Dir1.Path End Sub Cette instruction lie la liste des fichiers celle des rpertoires de manire ce que les fichiers prsents correspondent ceux du dossier slectionn. Nous allons effectuer la mme opration avec la "FileListBox" et ajouter le code suivant : Private Sub File1_Click() Dim SelectedFile As String 'L'utilisateur a slectionn l' objet SelectedFile = File1.Path & "\" & File1.FileName ' (&) Voir oprateurs Image1.Picture = LoadPicture(SelectedFile) End Sub Nous avons dclar la variable SelectedFile, concatn les instructions affrentes au fichier slectionn puis rajout l' anti-slach pour le cas ou ? et avons donn au programme le chemin du fichier qui nous intresse en l' occurrence celui que l' utilisateur a slectionn dans la liste des fichiers valides Le paramtre 1(Fixed Single) de la proprit BorderStyle de l' objet "Image" nous permet de cadrer l' image slectionne en fonction de ces propres dimensions(pour l' esthtique). Excutons le programme en procdant comme d' habitude. Lorsque le programme se trouve en mode Excution, slectionnez le contrle "Drive1" et choisissez le lecteur "A:", vous constatez que le programme(VB) gnre une erreur d' excution en ouvrant et affichant une fentre du style :

Fig1 : Voici la fentre affiche par Visual Basic lorsque vous gnrez l' erreur d' excution n 68 qui stipule que le priphrique est non disponible.

Pour ceux qui possdent 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 ficele qui vous aidera dans bien des cas trouver la procdure ou l' instruction recherche. Cliquez sur le bouton d' aide et vous devez voir apparatre la fentre suivante:

Priphrique non disponible (erreur 68)


PARTICULARITES Causes et solutions de cette erreur :

Le priphrique auquel vous tentez d'accder est hors ligne ou n'existe pas. Vrifiez que le priphrique est sous tension et que les cbles le raccordant votre ordinateur sont bien branchs. Si vous tentez d'accder une imprimante via un rseau, vrifiez l'existence d'une connexion logique entre l'ordinateur et l'imprimante, par exemple, une connexion associant LPT1 l'identificateur de l'imprimante rseau.

Votre connexion rseau a peut-tre t rompue. Reconnectez-vous au rseau et recommencez l'opration.

Pour plus d'informations, slectionnez l'lment en question et appuyez sur F1. Il est possible de gnrer d' autres erreurs avec ce programme, aussi sachez que pour rsoudre ces problmes, il faut utiliser des instructions qui contournent la cause de l' erreur, ou crer des routines spciales nommes "Gestionnaires d' erreurs" qui vous permettrons de contourner les problmes rencontrs par cette application qui demande tre dbugue. Nous apprendrons plus tard crire un gestionnaire d' erreurs et rechercher les erreurs ventuelles. Le programme "Explorer" est termin, nous affichons le rsultat de notre ralisation.

Le programme en lui mme est trs simple, mais si vous le souhaitez, vous pouvez tlcharger les sources ici
Ndl'A- L'image affiche par le programme Visual Basic est un Logo de la firme Real.Com

Sauvegardez votre ralisation.


Dans le menu, cliquez sur l' tiquette "Enregistrez le projet sous" : vous pouvez modifier le nom de la feuille "Form1" par "Explorer" qui prendra aussitt l' extension "Explorer.frm" et le projet que nous venons de raliser "Projet1.vbp" sera sauvegard sous le nom de "Explorer.vbp" Vous pouvez galement crer votre premire application excutable Dans la barre de menu cliquez sur l' tiquette "Fichier" vous devez avoir dans la fentre qui vient de s' ouvrir une tiquette comportant la saisie : "Crer Projet1.exe" En cliquant sur cette tiquette vous ouvrez une fentre 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 caractres. 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 liste La plupart des applications laissent une certaine marge de choix l' utilisateur. Le contrle "CheckBox"(case cocher) permet d' affecter une option ou un paramtre une valeur qui peut tre Vrai ou Faux (True ou False) Les cases cocher peuvent tre rassembles en groupe, chaque case tant activable individuellement et sans incidence pour les autres cases du mme groupe. Vous pouvez utiliser la proprit "ToolTyp" qui permet d' adjoindre au contrle un court texte explicatif sous forme d' une Info-bulle lorsque le pointeur de la souris survole le contrle un court instant. Une nouveaut dans la version 6.0 de Visual Basic qui propose un contrle "CheckBox" graphique. Utilisez pour cela la proprit "Picture" pour affecter la case cocher une icne pour l' tat "non enfonc, puis de la proprit "DownPicture" pour l' tat "enfonc" vous pouvez utiliser galement la proprit "DisabledPicture" pour l' tat dsactiv. Contrairement aux contrles d' options boutons, la case cocher est dote de 3 tats, l' tat dsactiv qui correspond la valeur "0", l' tat activ = 1 et l' tat gris = 2. C'est la raison pour laquelle, nous ne pourrons pas utiliser des valeurs boolennes pour coder ce contrle, nous utiliserons les valeurs cits prcdemment. Dterminer l' tat de la case cocher Le 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 Beep End If

Valeur 0 1 2

Les tats possibles des contrles Cas cocher Description Constante Dsactive(par dfaut) vbUnchecked Active vbChecked Etat intermdiaire vbGrayed

En rgle gnrale, 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 procdure), 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 dfinitives. Si vous voulez fixer en interne l' tat d' une case cocher comme tant "non coche", c 'est dire en crivant du code, vous crirez l' instruction suivante : CheckBox1.Value = 0 Pour quelle soit coche, vous crirez : CheckBox1.Value = 1 Pour quelle apparaisse en gris, vous crirez : CheckBox1.Value = 2 Le texte affich cot de la case cocher est dtermin par la proprit "Caption". Vous pouvez modifier l' alignement du texte droite ou gauche avec la proprit "Alignment"

Tous nos Tutoriels sont accompagns d' exemples que vous pouvez tlcharger sur notre site. L' interactivit du module vous permet de comprendre aisment le fonctionnement des exemples fournis ici

Le contrle "OptionButton" accepte deux tats pour l'option Vrai ou Faux(True ou False). Ces "OptionsButtons" ou boutons d' options peuvent tre rassembls en groupes de contrles dans une "Frame" ce type de contrle bnficie d' une slection exclusive. Vous pouvez galement comme le contrle dcrit prcdemment bnficier de l' option graphique avec la proprit "Picture" en insrant une image en position bouton slectionn et d' une autre image en position bouton dsactive. Dterminer l' tat du bouton d' option Les boutons d' options connaissent deux tats, l' tat coche qui correspond la valeur boolenne "True" et l' tat non coche qui correspond la valeur boolenne "False". Dans un groupe de contrle seul un bouton peut tre coch. Exploitation d' un vnement utilisateur avec 2 boutons d' option : Sub Option1_Click ( ) If Option1.Value = True Then

'Instructions si l' option1 est active Else 'Instructions si l' option2 est active End If End Sub Exploitation d' un vnement utilisateur avec 3 boutons d' option : Sub Option1_Click ( ) If Option1.Value = True Then 'Instructions si l' option1 est active ElseIf 'Instructions si l' option2 est active ElseIf 'Instructions si l' option3 est active End If End Sub Vous pouvez galement comme le bouton prcdent utiliser l' option "InfoBulle" avec la proprit "ToolTyp". On peut galement affecter une valeur par l' intermdiaire du code, comme par exemple : Option1.Value = 1 ou dans l' hypothse d' affecter une valeur dans une zone de liste de fichiers pour slectionner une extension de fichier bien dtermine nous utiliserons le masque de recherche: Sub Option1_Click ( ) Fichier1.Pattern = "*.exe" End Sub La zone de liste et zone modifiable Le contrle zone de liste affiche une liste contenant des entres dont l' utilisateur peut slectionner un ou plusieurs lments. Si le nombre d' lments contenus dans la liste dpasse celui qui peut tre affich, une barre de dplacement(ascenseur) s' affiche automatiquement.

Vous pouvez tlcharger le module FileList qui explique le fonctionnement des zones de liste. Tlchargez le module et saisissez un certain nombre d' entres pour voir apparatre la barre de dplacement.

Une zone de liste peut tre cre en mode "Conception" comme dcrit dans l' exemple exo2, dans ce cas le remplissage de la zone de liste est ralis par la procdure vnementielle "Load" qui est appele lors du chargement de la feuille.

En mode "Excution" nous utiliserons la mthode "AddItem". Objet.AddItem "Element" L' argument "Objet" dsigne le nom du contrle, c 'est dire celui de la zone de liste. L' argument "Element" est l' entre qui doit tre ajoute. Ex : lstZonedeliste.AddItem "Help System Restorer" L' application dcrite 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 "Mthodes" "RemoveItem" et "Clear" La mthode "RemoveItem" nous permet aprs avoir slectionn la ligne qui nous intresse de pouvoir slectivement la supprimer. La mthode "Clear" quant elle efface compltement le contenu de la liste. Nous avons galement utilis la proprits "ListCount" La proprit "List" est lie la proprit "ListCount, qui renvoie le nombre d' entres de la liste. Dans l' exercice Exo2 la proprit "ListCount" renvoie le nombre d' entre que vous saisissez et rectifie le nombre indiqu lorsque vous effacez une ou plusieurs entres. Vous pourrez tudier tous les autres contrles dans les cours que nous diffusons sur notre site.

MsgBox - Instruction ou fonction ? Cette instruction trs utilise dans Visual Basic permet de poser une question l' utilisateur au travers d' une bote de dialogue. Celle-ci peut tre paramtre en dfinissant le nombre de boutons poussoir, l' icne de la bote et le bouton par dfaut, c' est dire celui qui sera enfonc quant vous appuyez sur la touche "Entre". La syntaxe de l' instruction MsgBox est la suivante : Variable = MsgBox("Message", Type, "Titre de la fentre") * Variable : Variable de type Entier(Integer) recevant la valeur du bouton. * Message : Chane de caractres affiche comme message dans la bote de dialogue. * Type : Expression numrique qui contrle les boutons et les icnes afficher. * Titre : Expression chane affiche dans la barre de titre de la bote de dialogue. Le paramtre Type reprsente l' addition de plusieurs constantes intgres de Visual Basic. Pour rpondre la question pose, MsgBox est utilise en Instruction lorsque la syntaxe utilise n' attend pas une rponse du systme 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 rponse du systme) nous crirons :

T$ = "Attention" 'Titre du message M$ = "Dsirez-vous vraiment quitter le programme ?" 'Message afficher si votre message afficher est plus long, vous pouvez utiliser la concatnation suivante, M$ = M$ + " suite du message" (vous pouvez aussi utiliser le caractre "&" la place du caractre "+") Reponse% = MsgBox(M$, 4 + 32, T$) et voici la rponse que vous pouvez ventuellement utiliser : If Reponse% = 6 Then End 'Sortie du programme J' utilise depuis Vb 3.0 la fonction prcdente qui fonctionne sous toutes les versions connues ce jour. Nous allons les tudier en dtail avec les tableaux suivants. Les constantes pour les boutons Constante ChiffreDescription vbOKOnly 0 Affiche le bouton OK uniquement vbOKCancel 1 Affiche les boutons Ok et Annuler vbCancelRetryIgnore2 Affiche les boutons Abandonner, Rpter et Ignorer vbYesNoCancel 2 Affiche les boutons Oui, Non et Annuler vbYesNo 4 Affiche les boutons Oui et Non vbRetryCancel 5 Affiche les boutons Rpter et Annuler Les constantes pour les icnes Constante vbCritical vbQuestion vbExclamation vbInformation Chiffre 16 32 48 64 Description Affiche l'icne message critique Affiche l' icne requte d' avertissement Affiche l'icne message d' avertissement Affiche l'icne message d' information

Les constantes pour le bouton par dfaut Constante vbDefaultButton vbDefaultButton vbDefaultButton Chiffre 10 256 512 Description Le premier bouton est le bouton par dfaut Le deuxime bouton est le bouton par dfaut Le troisime bouton est le bouton par dfaut

Chaque bouton lorsqu'il est activ, renvoie une valeur que l' on pourra interprter au travers de la variable. Si vous ne mettez pas le paramtre "Type" l' instruction MsgBox n' affichera que le bouton "OK" Les constantes renvoyes par MsgBox Constante vbOk vbCancel vbAbort vbRetry Chiffre 1 2 3 4 Description OK Annuler Abandonner Ressayer

vbIgnore vbYes vbNo

5 6 7

Ignorer Oui Non

Le code suivant montre un exemple de paramtrage de bote de dialogue MsgBox avec retour de valeur d' une variable Private Sub Button_Supprime_Click ( ) Dim Sup Sup = MsgBox("Veuillez confirmer la suppression du fichier", vbCritical + vbYesNo + 256, "Attention") If Sup = vbYes Then MsgBox "Suppression confirme" End If End Sub Nous aurions pu crire : Sup = MsgBox("Veuillez confirmer la suppression du fichier", 16 + 4 + 256, "Attention") Faites des essais avec toutes les combinaisons possibles ou bien tlchargez le module d' exemples qui vous permettra de constater de visu toutes les combinaisons possibles de MsgBox [ici] Voici les fentres que vous devez obtenir :

Prochain tutoriel : La bote de dialogue InputBox

La bote de dialogue "InputBox" Comme pour les messages, Visual Basic propose une fonction simple permettant de crer une bote de dialogue InputBox. Elle est active par l' appel suivant: Variable$ = InputBox$(Prompt$, Titre$, Defaut$, X%, Y%)

Le paramtre Prompt$ est le texte saisi par l' utilisateur. Vous pouvez utiliser les caractres Chr$(13) + Chr$(10) pour forcer une ligne.(comme dans MsgBox) Le paramtre Titre$ contient ventuellement le titre de la bote de dialogue. Le texte Defaut$ est propos au moment de l' ouverture de la bote de dialogue. X% et Y% permettent de positionner la bote, en l' absence de ces valeurs, la bote de dialogue est centre. Un exemple de bote de dialogue InputBox Le message est pass dans le paramtre "Message$", le titre dans "Titre$". Tous les paramtres sont dfinis librement l'exception de "Message$" Si vous dfinissez une chane de caractre "Texteinplicite$", ce texte sera affich dans la zone de texte ds l'ouverture de la fentre. Les variables numriques "x%" et "y%" permettent de positionner l'angle suprieur gauche de la fentre dans des coordonnes exprims en "Twips" partir de l'angle suprieur gauche de l'cran. Une application envisageable de "InputBox" est la saisie d'un mot de passe. Titre$ = "Saisie du mot de passe" Message$="Tapez quelque chose pour accder au programme" MotDpass$=InputBox$(Message$, Titre$) 'La boite de dialogue s'ouvre, inscrit la valeur de, Message$ et de Titre$ l'emplacement prvu par VB If MotDpass$ = MotDpass$ Then 'Explication du traitement conditionnel : si la donne saisie par l'utilisateur est gale la donne enregistre par le concepteur, alors.... 'Instructions (autoriser l'accs) Else 'Instructions (refuser l'accs et quitter le programme) 'Fin de la procdure End If Tlchargez l' exemple de "InputBox"

Les botes de dialogues de windows


Vos applications doivent prsenter les mmes menus et les mmes botes de dialogue que les applications Windows standards. Exemple de bote de dialogue (Ouvrir, Enregistrer, Couleur, Polices, Imprimer) Ce sont des applications de Windows, et oui j'ai bien dit Windows, qui peuvent tre utilises par Visual Basic pour le choix d'un nom de fichier, d'une couleur ou d'une police de caractres. Cela permet aux diverses applications d'avoir une apparence homogne, et simplifie la tche du programmeur. La bote outils ne contient pas tous les contrles disponibles, pour pouvoir l' utiliser, vous devez aller le chercher et l' ajouter dans la bote outils. Pour utiliser le contrle "Common Dialog" cliquez dans la barre de menus sur la commande du menu intitule Projet, puis Composants

Cliquez sur le bouton parcourir et rechercher le fichier intitul : Comdlg32.ocx vous devez voir apparatre la saisie que vous apercevez en surbrillance dans le clich ci-contre. Cochez la case et cliquez sur OK Le contrle se trouvera dans la bote outils. Le contrle se trouvant positionn maintenant dans votre bote 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 "Excution". Il ne vous reste plus qu' codifier les instructions ncessaires l' excution des diffrents paramtres que vous souhaitez utiliser. Exemples de la commande d' affichage des Botes de dialogues de WINDOWS : Comme vous le voyez, un seul contrle Common Dialog suffit pour afficher divers types de botes de dialogues. Toutefois, avant de dclencher le contrle par une mthode, il est indispensable de dfinir quelques proprits. L' utilisation de ses proprits est largement explique dans nos cours en ligne. Vous pouvez tlcharger les routines d'exemples de botes de dialogues en cliquant ci aprs :
Tlchargement de "CmDialog.zip"

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

Prochain tutoriel : Les structures de contrles

Les structures de contrles Il est ncessaire de pouvoir contrler le bon droulement des instructions dans le code et de tester les variables. Visual Basic propose plusieurs instructions de contrle qui permettent de dterminer ce que le programme doit raliser par la suite. La construction IF - THEN La construction SELECT CASE La construction IFF La boucle FOR - NEXT La boucle WHILE La 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 L' instruction la plus utilise en programmation est la construction If - Then Cette instruction courante est sens unique et permet des prises de dcision. La syntaxe de base de la construction If Then est la suivante : If Condition logique Then 'Instructions si la condition est vraie Else 'Instruction si la condition est fausse End If 'Fin de l' instruction La construction If Then est employe pour excuter une ou plusieurs instructions conditionnelles. Le mot Else est facultatif, si celui-ci est inclus dans la construction c' est qu'il permet d' excuter 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' intrieur de la structure If Then. Voici la syntaxe : If Condition1 Then 'Instructions si la condition est vraie ElseIf Condition2 Then 'Instructions si la condition est vraie ElseIf Condition3 Then 'Instructions si la condition est vraie Else 'Instructions si la condition est fausse End If Exemples : If AgeFrederic > 30 Then 'Instructions si la condition est vraie msg = "Frdric a plus de 30 ans"

MsgBox msg ElseIf AgeFrederic >25 Then 'Instructions si la condition est vraie msg = "Frdric a plus de 25 ans" MsgBox msg ElseIf AgeFrederic >20 Then 'Instructions si la condition est vraie msg = "Frdric a plus de 20 ans" MsgBox msg ElseIf AgeFrederic > 15 Then 'Instructions si la condition est vraie msg = "Frdric a plus de 15 ans" MsgBox msg Else 'Instructions si la condition est fausse msg = "Frdric a 15 ans ou moins de 15 ans" MsgBox msg End If Tlchargeons le programme d' exemple : AgeFreddy.zip Nous n' avons pas voulu dans cet exemple indiquer exactement l' age de Frdric, mais connaissant le principe vous pouvez maintenant votre tour, dterminer exactement l' age qui est indiqu dans le champs de saisie. A vous de jouer! Il est prfrable lorsque vous avez de nombreuses structures imbriques d' utiliser la construction SELECT CASE que vous pourrez tudier dans nos cours. Une des structures les plus employes en programmation est la boucle FOR NEXT Une boucle est un processus de rptition d' un bloc d' instructions. Vous utiliserez For...Next lorsque vous voulez rpter des instructions dans la boucle un nombre prcis de fois. Vous pouvez forcer un arrt des rptitions avec l' instruction Exit For. La syntaxe est la suivante : For pointeur = ValeurDepart To ValeurFin Step Pas 'Instructions Next Vous pouvez utiliser le mot cl STEP pour changer la valeur du compteur qui s' incrmente() ou pour indiquer que le compteur va dans une direction ngative. Par exemple le code suivant compte de 5 100 par pas de 5 en montrant les valeurs du compteur. (Incrmenter, augmenter la valeur initiale d' un compteur de x points) Vous incrmentez de 5 Vous dcrmentez de 5 Dim A As Integer Dim A As Integer For A = 5 To 100 Step 5 For A = 100 To 5 Step -5 MsgBox (A) MsgBox (A) Next A Next A Vous pouvez modifier le pas votre convenance. Sans le sigle STEP l' incrmentation aura comme valeur 1 point. Un trs bon exercice raliser est la fameuse calculette de conversions Francs/Euros vous trouverez sur notre site de nombreux exemples dvelopper.

De l' intelligence dans les objets Je souhaitais continuer ces Tutoriels avec une approche du processus de l' intelligence artificielle qui est contrairement aux ides reues relativement simple. Sans rentrer dans les algorithmes compliqus, on peut dvelopper 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 vido Quand les amateurs commencent crire leurs propres programmes, beaucoup rvent du jour o ils seront capables de programmer un jeu d' checs ? Mais l' criture d' un jeu d' checs tourne parfois l' obsession, mme parmi les programmeurs les plus rudits et mme familiariss 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 diffrentes de programmation et de l' imagination dans les procdures 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 alatoires, vous avez appris que gnrer une squence rellement alatoire est une tache impossible pour les tres humain et pour les ordinateurs, bien que ces derniers arrivent faire une meilleure approximation. Dans une longue srie 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 mmoire les choix du joueur en utilisant un tableau trois lments 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 inconvnient de cet algorithme apparat au moment o le joueur russit percer la stratgie de l'ordinateur. Les tres humains sont incapables de prendre une dcision totalement irrationnelle ou alatoire. Il s' ensuit que chaque choix dpend des choix prcdents. Si l' ordinateur russit laborer une approximation sur ces choix, alors il devrait pouvoir gagner assez rgulirement Le programme doit tre crit de telle faon qu'il puisse interprter la formule pendant le droulement de la partie. Les programmes qui sont capables d' apprendre de cette faon s' appellent : Des programmes "Heuristiques" Un programme heuristique permet l' ordinateur de dtecter des changements dans la stratgie de son adversaire et de modifier son algorithme en consquence. Il applique une technique statistique appele "Corrlation" Nous allons faire abstraction de toutes ces techniques rbarbatives pour nous consacrer l' tude simpliste d' un jeu de morpions, tout en sachant que nous aurons par la suite la possibilit d' amliorer ses performances en suivant les techniques dcrites prcdemment.

Une valuation correcte des positions est fondamentale tout programme de jeu mme si ce jeu est aussi simple que le morpion. Sur ce tableau 3x3 les zros du joueur sont reprsents 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 range, 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 utiliss parce qu' elles fournissent des totaux diffrents 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' apparat indispensable d' utiliser un gnrateur alatoire pour gnrer le carr de dpart lorsque c' est l' ordinateur de jouer. Cela dsoriente le joueur(un certain temps) qui ne sait pas ou le computer va positionner son pion. On pourrait choisir un algorithme compliqu de faon que l' on ne tombe pas sur des chiffres dj utiliss tout au moins dans la limite des 9 disponibles. Mais faisons simple , et l' on pourrait coder le gnrateur sous la forme de : Private Sub Form_Load( ) 'Centrage des feuilles CenterForm Me 'Utiliser dans un module la procdure de centrage des feuilles Form1!ctlQuiJoue.Caption = "Appuyez sur le bouton [Start]" Randomize 'Commande du gnrateur alatoire End Sub Sub Ordi_A_Jouer ( ) 'Dterminer alatoirement la slection d'une case Valeur% = Int(Rnd * 9) 'Formule simple pour gnrer un chiffre alatoirement dans la limite de 9 nombres. 'Ecrit la valeur dans l'tiquette Form1!Label10.Caption = Valeur% 'le programme a slectionn une case, contrler 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 slection Form1!ctlControlSelect.Caption = Valeur% 'Mise jours des compteurs individuels Iteration_Compteur_Ordi Exit Sub

Else 'La case est occupe, alors allons voir ailleurs Control_Resultat End If End Sub ()Il est vident que la premire fois, la case est vide, nous aurions pu crer un traitement conditionnel pour aiguiller sur les instructions adquates uniquement pour le premier mouvement du jeu, ou bien nous aurions pu crer un procdure supplmentaire. Vous trouverez le listing complet de cette application en suivant nos cours disponibles sur notre site. Vous pouvez tlcharger l' application "Morpionus"

La gestion des erreurs, le dbogage 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 rsoudre les problmes d' criture du code. Points d' arrt : Placez des points d' arrt sur les lignes contenant des variables dont vous dsirez connatre ou modifier la valeur cet endroit. Les points d' arrt permettent d' interrompre l' excution d' un programme dans un segment que l' on suspecte contenir une erreur. Vous pouvez utiliser l' instruction " Stop" Fentre espions : Vous pouvez tablir des espions qui permettent de visualiser des variables ou des expressions et suspendre l' excution sous certaines conditions. Fentre excution : Vous pouvez utiliser cette fentre pour examiner les variables, les valeurs des proprits et pour assigner de nouvelles valeurs aux variables. Fentre Variable Locale : Vous pouvez utiliser cette fentre pour montrer les valeurs de toutes les variables locales d' une procdure. Excution pas pas : Vous pouvez raliser du pas pas pour suivre le droulement du code, ligne par ligne, en tudiant le comportement du programme. Visualiser la variable : Lorsque vous tes en mode dbogage, 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 fentre. Le gestionnaire d' erreur permet d' afficher le numro de l' erreur et sa description. (prochainement)

Vous pouvez galement consulter les programmes qu'il vous est possible de raliser en suivant nos cours. Voir un aperu de nos ralisations

Ecrire un gestionnaire d' erreurs Erreur d'excution Erreur survenant lors de l'excution du code. Une erreur d'excution se produit lorsqu'une instruction tente d'accomplir une opration non valide. Nous avons tous utilis dans notre activit de dveloppement l' instruction : On Error Resume Next C'est en effet une instruction intressante 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 insrer dans son programmes que lorsque l' on a dbugu son application et pour prvenir l' erreur imparable que l' on n'avait pas prvue lors des divers contrles des lignes de code. Le gestionnaire d' erreurs sert fournir l' utilisateur les possibilits de rcuprer proprement les erreurs d' excutions du programme. Vous utilisez gnralement 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 un gestionnaire d'erreurs qui ne rvle pas l'utilisateur l'existence d'une erreur d'excution 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 laisse libre votre discrtion) On Error Resume Next On Error GoTo 0 Quand Visual Basic traite l' instruction On Error, il initialise un traitement d' vnements qui vrifie continuellement les conditions d' erreurs pendant que le code s' excute. Quand une erreur se produit, le chemin prcis du droulement du programme dpend de l' utilisation de l' instruction On Error. La liste suivante montre les diffrentes expressions de cette instruction On Error GoTo suivi de l' tiquette que vous avez dclare, en l' ocurence dans cet exemple, nous emploierons : On Error GoTo SortieDiscrete : le contrle passe la premire ligne excutable du code qui suit l' tiquette indique 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 procdure Exit Sub 'Voici l' tiquette du gestionnaire d' erreurs SortieDiscrete: 'On peut mettre un message du genre(Voir en fonction de l' erreur dtecte) 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 rserve cet effet. 1er cas, il y a effectivement dans le listing du code une erreur inconnue provoque par le programme ou par le systme, ds que l' erreur est dtecte, le contrle est dirig automatiquement vers l' tiquette Label, dans notre cas, c' est l' tiquette "Sortie discrte". Il l' ignore mais lit les lignes de codes qui suivent immdiatement celle-ci. Si vous n' avez pas de message, le programme suit son cours, si vous avez un message, il le lit, ferme la page en cours, termine son cycle et attend les instructions suivantes. Deuxime cas, il n' y a pas d' erreurs, le contrle lit les lignes de code, arrive l' instruction Exit Sub, ferme normalement la page en cours, sort de la procdure et attend de nouvelles instructions. Si nous n' avions pas mis l' instruction Exit Sub le contrle aurait continu lire les instructions suivantes et aurait affich les les lignes de code qui se trouvent aprs l' tiquette Label ce qui vous aurait induit en erreur. Vous avez constat que j' ai mis juste aprs l' tiquette le double point ":", c'est tout simplement la caractre qui indique VB que j' ai utilis une tiquette de renvoi. On Error Resume Next : Le contrle passe la ligne qui suit celle qui a provoque l'erreur On Errot GoTo 0 : L'erreur est neutralise et le gestionnaire d' erreurs est contourn dans la procdure. Le code suivant montre l' utilisation d' un gestionnaire simple pour contrler la suppression d' un fichier LANGLADE.TXT sur le lecteur de disquette. Sub Main( ) On Error GoTo InformeMoi Kill "A:\LANGLADE.TXT" 'Si tout s'est pass normalement nous sortons de la procdure Exit Sub InformeMoi:

MsgBox "Erreur de lecture de disquette" End sub Faites l' essai la premire fois sans disquette et la deuxime fois avec une disquette dans laquelle vous aurez renomm un fichier existant en "Langlade.txt" Vrifiez les attributs du fichier de faon qu'il puisse tre effaable. Attention, ce fichier va tre effac par votre ralisation. Les proprits de l' objet ERR Une fois que l' excution du programme a t transmise votre routine de gestion d' erreurs, votre code peut dterminer l' erreur qui s' est produite en affichant son numro et sa description. Quand une erreur se produit, les informations la concernant sont stockes dans l' objet ERR. Vous pouvez utiliser deux proprits de cet objet, la proprit Number et la proprit Description. Dans les vieilles versions du Basic, les instructions Error et Error() taient utilises. Err.Number : indique le numro de l' erreur Err.DEscription : indique la description de l' erreur Le code qui suit montre un exemple de code qui vrifie l' existance d' un fichier dans un rpertoire particulier. En cas d' erreur, le programme affiche le numro de l' erreur ainsi que sa description. Sub Main ( ) On Error GoTo ErreurFatale If Dir ("C:\Gilou\Langlade.txt") = False Then MsgBox "Ce fichier n' existe pas" End If Exit Sub ErreurFatale: MsgBox "N erreur:"&Err.Number & vbLf & Err.DEscription End Sub La figure qui suit montre le rsultat obtenu issu de la capture de l' erreur par le gestionnaire.

Le gestionnaire d' erreur permet d' afficher le numro 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 raliser un Password pour Windows

Je vous propose d'tudier la ralisation d'un "Password" pour protger l'accs votre ordinateur. Nous allons partir du principe que vous connaissez l' environnement de Visual Basic, aussi nous allons sauter les tapes subsidiaires communes aux dbutants en programmation. Nous lanons 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 crons en leur laissant leur nom d' origine. Dans la premire "Form" nous insrons grce 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, tlcharger sur mon site les fichiers images. Tlchargement de : ImgPassword1 ImgPassword2

Dans la feuille form2, insrez un objet PictureBox dans lequel vous insrez l' image intitule "imgpassword" ce qui doit donner ceci : Il ne vous reste plus qu' insrer deux "TextBox" la Text1 pour slectionner le nom de l' utilisateur, et la Text2 pour insrer 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 mmoire, coller l' image "ImgPassword" au centre sur votre fond d' cran. Si vous voulez utiliser les fichiers tlchargeables, les images ont ts optimises au mieux des possibilits, 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 Slectionner un nom d' utilisateur et Label2 pour Mot de passe. Dans la proprit "Ico" insrer votre logos sous forme d' icne. Nous passons en mode excution et nous contrlons si nos images s'affichent parfatement. Il ne nous reste plus qu' insrer le code pour bloquer l' accs de notre machine aux indsirables. Si nous avons choisi l' option avec deux images nous crivons dans la proprit Form_Activate de la feuille Form1 : (a supprimer si vous utilisez une feuille avec les deux images) Private Sub Form_Activate( ) Form2.Show End Sub

Dans la feuille Form2 et dans la proprit Form_Activate, nous crivons : Private Sub Form_Activate() 'Donner le focus Text1 Text1.SetFocus End Sub Dans la feuille Form2 et dans la proprit "Form_Load, nous crivons : Private Sub Form_Load() 'Centrage de la feuille - (si vous ne connaissez pas cette procdure, chargez la sur le site) CenterForm Me End Sub Nous crivons le code du bouton "Annuler" Private Sub Command2_Click( ) 'Nous effaons le contenu des TextBox Text1.Text = "" Text2.Text = "" 'Nous donnons le Focus au contrle Text1 Text1.SetFocus End Sub 'Nous crivons le code du bouton "OK" Private Sub Command1_Click() Dim t As String Dim M As String Dim C As String Dim MP As String 'Choisir un nom d' utilisateur C$ = "Marina" 'ou le nom de votre choix 'Choisir un mot de passe MP$ ="sesame" 'ou le nom de votre choix 'Contrler si le nom de l' utilisateur est correct If Text1.Text <> C$ Then GoTo Sortir ' Si erreur renvoyer vers l' tiquette Sortir 'Slectionner 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 Sub End 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.SetFocus Else

t$ = "Flicitations!" M$ = "Vous tes autoris(e) utiliser cet appareil!" Reponse% = MsgBox(M$, 0 + 64, t$) Unload Form2 Unload Form1 Exit Sub End If Exit Sub 'Etiquette de renvoie Sortir: Text1.Text = "" t$ = "Attention!" M$ = "Code utilisateur incorrect! dsol !" Reponse% = MsgBox(M$, 0 + 32, t$) Text1.SetFocus Text1.Text = "" Text2.Text = "" End Sub Vous compilez le programme en lui donnant l'extension EXE et vous l' insrez dans le rpertoire de dmarrage 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 supplmentaires. Tlcharger l' application compile : xwcdsth.exe (crite pour une configuration d' cran de 640x480) Attention, si vous tlchargez cette application, vous avez besoin des codes qui sont : Identifiant : Mairie Password : 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 contrle Threed32.ocx et Spin32.ocx dans ses applications Il m' est difficile d' tre catgorique dans mes affirmations car possdant toutes les versions de Visual Basic, je possde en effet les contrles "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 possdez pas en standard l' objet en question, vous ne pourrez pas l' incorporer votre projet, car ne possdant pas de droits acquis lgalement, celui-ci refusera de fonctionner avec votre application. Visual Basic 4.0 version professionnelle fournissait en standard ce type d' objet, et si vous possdez cette version dans un tiroir, rinstallez la, ce qui vous permettra de pouvoir utiliser ces contrles dans vos futures applications.

Le contrle "Threed" issu du fichier "Threed32.ocx" que vous pouvez rcuprer depuis le rpertoire de "Windows/system" avec la mthode apprise prcdemment c' est dire depuis la barre de menu et en slectionnant "Projet", "Composants" et parcourir, ce qui vous permet d' afficher la bote de dialogue "Ajouter un contrle ActiveX".

Nous venons de slectionner le contrle "Threed32.ocx" de la firme "Sheridan" Il ne nous reste plus qu' cliquer sur le bouton "Appliquer" et lancer l' insertion du contrle en appuyant sur le bouton "OK"

A quoi peut nous servir ce contrle ? Il peut en effet nous servir beaucoup de choses nanmoins pour ceux qui ne le possdent pas, laissez moi vous dire qu'il n 'est pas ncessaire et que l' on peut s' en passer avec un peu d' ingniosit. Voyons d' abord comment ce prsentent ces nouveaux objets dans la bote 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 intrieurement le caractre "F" est une "Frame" et porte le nom de SSFrame1 L'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 insrer pratiquement tous les objets de votre bote 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 caractre 3D, en plus le bouton "SSCommand" peut afficher une image en couleur.

Les panels peuvent avoir un affichage graphique diffrent, j' ai reprsent dans la Form1 deux panels identiques , mais reprsents graphiquement de faon diffrente. Tous ces objets ont leur homologues qui sont livrs en standard par Visual Basic et ne sont donc pas indispensables pour raliser une interface graphique. L' avantage si vous les possdez, est que vous allez pouvoir enjoliver votre prsentation par une approche plus esthtique de la prsentation graphique de votre page d' accueil.. L' inconvnient est que vous allez tre oblig de livrer dans votre application le fichier "Threed.ocx" Mais... pourquoi pas ? Le Contrle "SPIN32.OCX" double bouton poussoir(suprieur et infrieur

Ce contrle est trs intressant car il permet de crer toute sorte d' applications qui offrent la possibilit de faire modifier une valeur par l' utilisateur. Prenons par exemple la ralisation d' un chronomtre dont le pas d' incrmentation doit pouvoir tre modifi par l' utilisateur.

Dans cet exemple le bouton "Spin" sert rgler la dure de la temporisation qui est fix 8 secondes, elle peut-tre modifie en plus ou en moins par l' utilisateur.

Nous allons voir comment crire le code nous permettant d' utiliser ce contrle dans nos applications. Nous voulons raliser un calendrier avec un compteur qui compte les jours de 1 31 jours. L'objet "SPIN" est un double bouton poussoir qui comprend deux procdures qui gnrent chacune d' entre-elles un vnement lorsque vous appuyez sur un des deux boutons. Le premier vnement se produit lorsque vous appuyez sur le bouton suprieur pour incrmenter la valeur par dfaut (incrmenter veut simplement dire ajouter 1 la valeur initiale) Le deuxime vnement se produit lorsque vous appuyez sur le bouton infrieur pour dcrmenter la valeur par dfaut (dcrmenter veut simplement dire retirer 1 la valeur initiale) (La valeur 1 est un exemple et peut varier selon le vouloir du dveloppeur) Cration des lignes de codes affrentes cette procdure, nous crivons : Private Sub SpinButton1_SpinDown( ) 'Jours dbutent 1 Dim Jour1 As Integer ' Jour1 est le nom de la variable qui va stocker ' la valeur affiche dans une case mmoire

Jour1% = Val(ctlJour1.Text) 'ctlJour1 est la Proprit Name de la TextBox If Jour1% >1 Then 'Dcrmenter ctlJour1.Text = Trim$(Str$(Jour1% - 1)) End If End Sub Private Sub SpinButton1_SpinUp() 'Jours terminent 31 Dim Jour1 As Integer ' Jour1 est le nom de la variable qui va stocker ' la valeur affiche dans une case mmoire Jour1% = Val(ctlJour1.Text) 'ctlJour1 est la Proprit Name de la TextBox If Jour1% < 31 Then 'Incrmenter ctlJour1.Text = Trim$(Str$(Jour1% + 1)) End If End Sub

L'application "Spin32" avec les sources de l' exemple dcrites dans cette page.

Tlcharger l' application "Spin" Tlcharger l' application "AppSpin" Accs aux bases de donnes "ADO" avec Visual Basic 6.0

Ralisation du 30 mai 2002

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 accs aux fichiers travers le moteur de donnes Microsoft Jet Engine, l' interface DAO (Data Acces Object) et l' ODBC(Open DataBase Connectivity). Les contrles de donnes (DAO) se sont enrichis progressivement, aprs la version 3.0 d'une zone de liste et d'une bote combo spcialise base de donnes, ainsi que d'une grille de base de donnes. Ces contrles spcialiss sont prcds d'un prfixe : dbList, dbCombo et dbGrid. Les DAO (objets d'accs aux donnes) vous permettent d'utiliser un langage de programmation pour extraire et manipuler des donnes dans des bases de donnes locales ou distantes. Ils vous permettent galement de grer des bases de donnes, ainsi que les objets et la structure de ces dernires. Les anciennes versions de VB utilisaient les moteurs "Jet" "DAO" et RDO", avec l' arrive de VB6 un nouveau moteur de bases de donnes et n et a t baptis : "ADO" 'ActiveX Data Objects), nous allons tudier sur ces nouvelles technologies pour raliser dornavant nos bases de donnes. Dans les versions prcdentes de Visual Basic, il tait possible de lier les contrles entre-eux

uniquement sur une feuille. En revanche, la version 6.0 de Visual Basic permet de lier toute source de donnes un utilisateur de donnes. Il est possible de dfinir la proprit DataSource des contrles au moment de la cration pour tablir une liaison dynamique avec les sources de donnes. Vous avez la possibilit de crer des classes qui se comporteront comme des sources et des utilisateurs de donnes et de les lier grce au nouvel objet BindingsCollection. Il est galement possible de produire des contrles utilisateur qui sont des sources de donnes, similaires au contrle de donnes ADO. Vous pouvez ainsi gnrer des contrles utilisateur connects par une liaison complexe , identiques au contrle DataGrid.

Le nouveau moteur de BdD de type "ADO" est constitu de sept objets dont les relations structurelles sont dcrite sur la figure cijointe. L'accs une source de donnes est ralise par l' intermdiaire d' une nouvelle interface nomme OLE-DB Nous disposons avec cet environnement d'une souplesse de construction qui offre des performances plus labores que celles offertes par les versions prcdentes. Modle d' objet "ADO" Environnement des bases de donnes Lorsque vous ajoutez un Data Environnement (environnement de base de donnes) un projet, Visual Basic cre automatiquement un objet "Connection ADO", dont les proprits, Nom, Type de base de donnes, droits d' accs, etc... peuvent tre dfinis de manire similaire celle d' un contrle. Cette connexion est alors tablie pour permettre de transfrer des informations de structure partir de la base de donnes. Une des grandes nouveauts de Visual Basic 6.0 est la possibilit d' tablir des relations entre les objets "Command" d' une connexion, de manire constituer et pouvoir appeler ainsi des dpendances hirarchiques entre des donnes avec lesquelles des relations existent. Nous allons travailler sur un exercice pour vous dmontrer qu'il est possible d' accder aux informations contenues dans une base de donnes sans crire la moindre ligne de code. Nous allons rcuprer dans les fichiers stocks dans l' environnement de Visual Basic un fichier intitul "Biblio.mdb", si vous ne le possdez pas, je vous donne la possibilit de le tlcharger sur mon site. Tlcharger le fichier Ce fichier sera stock dans le rpertoire de travail du projet que vous allez raliser.

Lancez la procdure pour crer un nouveau projet. Par la procdure dcrite prcdemment insrez dans la bote outils le contrle MSADODC ncessaire la ralisation de notre base de donnes ADO Voici l' image de l'icne du contrle "ADODC" que vous devez avoir insr dans votre bote outils.

Ralisation de notre interface graphique devant nous servir d'exemple : Par la mthode habituelle crez un nouveau projet, insrez dans ce projet le contrle ADODC comme expliqu prcdemment et ralisez l' interface graphique indiqu sur la figure cidessous.

Ce projet comprend : Trois tiquettes de Label1 Label3 Trois zones de texte de Text1 Text3 Un contrle ADODC intitul Adodc1

Vu des valeurs de proprits disponibles dans la feuille "ConnectionString"

Les informations ncessaires pour raliser l'interconnexion la base de donnes sont stockes dans la proprit "ConnectionString" du contrle ADODC. Dans la fentre de proprits de ce contrle slectionnez l' option "Utiliser une chane de connexion" puis cliquez sur le bouton "Crer..."

Ce qui vous ouvre la bote de dialogues "Proprits des liaisons de donnes"

Nous slectionnons l'tiquette intitule "Microsoft Jet 3.51 OLE DB Provider" et cliquons ensuite sur le bouton marqu "Suivant" pour ouvrir la feuille des proprits des liaisons de donnes qui va vous permettre de tester la connexion entre votre application et votre fichier de base de donnes.

Vous pouvez maintenant tester la connexion. Ce qui vous permet de vrifier que celle-ci peut tre tablie.

Vu de la bote de dialogue "Proprits des liaisons de donnes aprs la slection 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' exagre en vous le rappelant, dsol! Il ne nous reste plus qu' renseigner les valeurs des proprits comme suit : Proprits du Contrle ADODC : Name : adoBiblio Caption : Auteurs CommandType : 2 - adCmdTable ConnectionString : Provider=Microsoft Jet... RecordSource : Authors Proprits de la zone de texte (Text1) Name : txtID DataField : AU_ID DataSource : adoBiblio Proprits de la zone de texte (Text2) Name : txtNom DataField : Author DataSource : adoBiblio Proprits de la zone de texte (Text3) Name : txtAnneN DataField : Year Born DataSource : adoBiblio Les noms des Label n' ont aucune influence sur le programme et je vous laisse le soin de les renommer conformment aux pratiques usuelles dans les pages et exercices divers que je diffuse sur Internet.

'Cliquez sur l' tiquette et slectionnez...

Une vue de l' application en fonctionnement

Cette application a t ralise avec en annexe un fichier nomm "Biblio.mdb". Ce fichier est trop volumineux pour tre tlcharg, mais si vous possdez Visual Basic 6.0, vous l'avez automatiquement dans le rpertoire "Program Files/Microsoft Visual studio". Faites une recherche avec, "Rechercher :" depuis le lecteur ou est install "Visual Studio". Crez la racine de votre disque dur ("C:\") un rpertoire nomm : "Atelier Vbasic\Tutoriels\Exercice_ADO\ Insrez dans ce rpertoire le fichier "Biblio.mdb" Installez le fichier Exo_Ado.zip en le dzipant dans ce mme rpertoire, et cela doit fonctionner. Pour tout problme vous pouvez me contacter via le forum ou directement mon adresses lectronique qui se trouve sur le site. Tlcharger l' application Exo_Ado.zip (sans le fichier "Biblio.zip") Tlcharger l'application Exo_Ado1.zip (avec le fichier "Biblio.zip") Il est en effet possible de convertir des programmes crits sous une version infrieure de VB en programme pouvant tre lancs avec la version de VB 6.0 Il est vrai que si vous ne prenez pas certaine prcautions au pralable la conversion risque de ne pas fonctionner et laisser perplexe l' utilisateur nophyte en la matire. Pour pouvoir raliser la conversion, il est indispensable de possder 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 possder la version. Partons du principe que VB6.0 ne veut pas rcuprer les fichiers des versions infrieures 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 gnrs sont exclusivement crites pour du 32 bits, donc incompatibles avec les prcdentes 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

fonctionner sous VB6. Vous allez me dire que tout cela est bien compliqu ? et bien non il suffit d' avoir le rflexe logique et partir du principe que nous allons liminer tout ce qui nous gne et ne garder que l' indispensable. L' indispensable c' est quoi ? L' indispensable s' est tout simplement le code qui gnre les vnements ncessaires au fonctionnement de l' application. Je cre 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 slectionnant 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 fentre de projets de l' application transformer les contrles qui sont affichs. Si je constate que celui-ci affiche par exemple le contrle "Threed.vbx" je sais par avance que je vais gnrer un problme, aussi pour viter de gnrer une erreur si je le transfre, je prend au pralable la prcaution d' liminer dans la feuille "Form" tous les objets qui font rfrence ce contrle. Par exemple si les boutons sont des boutons 3D donc qui ont une relation avec ce contrle, j' insre dans la feuille le nombre de boutons standards ncessaire au fonctionnement de l' application, et une fois positionns sur la feuille, je transfre les lignes de codes, procdure par procdure, 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 procdures 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 digrant pas, il faut galement les liminer en prenant la prcaution de ne pas liminer les lments positionns et qui sont indispensables. Ce n 'est pas facile, mais on y arrive avec un peu de patience et de dextrit. En ce qui concerne les modules, le systme d' criture tant diffrant d' une version une autre il est impratif de rcuprer les codes de chaque procdures et de les transfrer directement dans le module de VB6.0 On n 'insre pas le module d' une version infrieure VB6.0, on ne fait que transfrer les lignes de code, donc, les procdures contenues dans le module. Si votre application fait appel une DLL, contrler 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 affrentes une version diffrent dans une autre version, dans ce cas essayer de rcuprer le fichier des "API" Windows qui est un fichier Texte donc extension *.txt et rechercher la procdure qui vous intresse afin d' appliquer les nouvelles instructions.

Lorsque Windows95 est pass dans un environnement 32 bits, les noms de fichiers des DLL standards ont t modifis. 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 rpertoire 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 indiques, vous pouvez transfrer les fichiers "Form", c' est dire les feuilles qui composent votre application. Tlchargez l' application "Econom16.zip" qui est un programme crit sous Visual Basic 3.0, et procdez aux modifications indiques 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 ts transfrs selon les directives indique, et que l' application ne gnre plus d' erreur, transformez la en fichier excutable par la mthode habituelle. Dans cette application nous gnrons une erreur au niveau de la procdure "GetPrivate ProfileString", alors que la procdure "WritePrivateProfileString" est reconnue par VB6.0 Cette procdure devant servir dialoguer avec un fichier "*.ini", nous pouvons nous en passer en crant un fichier accs direct pour la mise en mmoire des informations ncessaires au fonctionnement de cette application. je n'ai pas tudi la procdure dfaillante, 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 dcouvrez le cobaye mis votre disposition, dissquez le et si vous trouvez la solution, faites moi le savoir titre d'informations d'autant que cela pourra servir d'autres.

Ci dessus gauche le fichier "Params" de l'application 16 bits Ci dessus droite le fichier "Params" issus de la transformation en application 32 bits Si vous rencontrez des erreurs lors de la compilation, rectifiez en consquence jusqu' ce que VB gnre le fichier xcutable. Un des avantages de VB6.0 est qu'il est plus "pointu" que les versions prcdentes au niveau de la procdure de compilation des applications gnrs. Dans l'exemple cit prcdemment, et en rgle gnrale, nous constatons que le concepteur des fichiers "API" utilisent parfois des procdures diffrentes entre un fichier 16 bits et un fichier 32 bits. Rechercher la procdure adquate dans les "API" correspondants pour rtablir (si possible) le fonctionnement de la procdure. Visual Basic a rvolutionn la programmation deux niveaux. La principale rvolution concerne la conception de l' interface utilisateur. Son dveloppement tait complexe et reprsentait jusqu' 75% du code. L' approche graphique et "Visuelle" de Visual Basic permet dsormais de concevoir une interface utilisateur simple et conviviale, en crivant peu ou pas de code. La seconde rvolution est l' objet de ce Tutoriel. Visual Basic est un langage de programmation modulaire. Les modules qui composent son environnement sont prsents sous la forme de contrles ou "VBX" pour les versions infrieures VB4 et "OCX" qui sont apparues depuis le lancement de la version 32 bits de VB4. Certains de ces contrles livrs selon les versions disponibles sur le march sont rutilisables l' infini et compltent l' ensemble des outils fournis en standard avec Visual Basic. Les puristes prtendent que Visual Basic n' est pas rellement un langage de programmation objet. Pourtant, les principes majeurs de la POO (Programmation Oriente Objet), savoir l' encapsulation, l'hritage et le polymorphisme, y sont prsent. Ces principes rendent possible une rutilisation du code suprieure aux langages conventionnels. L' utilisation des contrles signifie pour le programmeur, moins de code crire, donc simplifie au pralable l' criture des applications dveloppes. J' avais dans l' esprit de vous initier aux dveloppements de contrles documents avec l' utilisation d' un contrle 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 prsenter galement le contrle "MCI32.ocx", mais vous n' allez pas vous en plaindre, n' est ce pas ? Le contrle "MCI" est utilis succinctement dans ce Tutoriel et au vu de ses nombreuses possibilits, il fera l'objet d' une tude plus approfondie ultrieurement. Le contrle 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"

Comment raliser une animation sous VB sans crire de code ?(ou si peu). Ralisation des images La qualit d' un bouton anim dpend de la qualit du graphisme employ pour la ralisation des images. Raliser quatre images qui reprsentent les tapes en dvelopp des actions qui doivent tre entreprises lorsque l' utilisateur provoque un vnement, savoir le bouton au repos en phase1, le bouton enfonc en phase4 et deux phases intermdiaires ce qui va se traduire par une certaine souplesse dans le dvelopp de l' animation. Si vous ne vous sentez pas en mesure de raliser les images, tlchargez les sur mon site. Vous avez au pralable charg dans votre bote outils le contrle "OCX" ce qui a augment votre bote outils d' une icne supplmentaire correspondant cette figure graphique. Comment fonctionne ce contrle ? 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 dfaut "AniPushButton1" Nous allons modifier ses proprits en fonction des vnements que nous souhaitons provoquer. Name : AniPushButton1 Caption : 1 'les boutons suivants auront la valeur de 2, puis 3, etc... Cycle : 0 Height : 675 Width : 495 Picture : Aller chercher l' image1 (bouton au repos) TextPosition : 3- above 'Positionner le texte sur le haut du bouton Speed : 80 'Vitesse de transition entre les images (80 ou 100) Maintenant nous allons prparer l' animation du bouton en modifiant la proprit "Frame"que nous slectionnons. Un double clic sur cette proprit ouvre la bote de dialogue Select Frame. Cette dernire permet de construire la squence d'animation.

Frame1 reprsente l' image1 que vous devez aller chercher par l'intermdiaire du bouton "Load" L'image charge s' affiche comme visualise sur ce document. En appuyant sur le bouton droite de l' ascenseur, vous incrmentez 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 dcrmentant 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 charges, vous refermez la fentre et l' animation doit fonctionner. Vous pouvez tlcharger le module exemple de l'application Tlcharger l'exo : Exo1.zip Voici le prototype de termin, vous pouvez faire des essais et appuyer sur les boutons pour voir se drouler l'animation en tlchargeant l' exemple de cette dmonstration. Cette image est un exemple de programme qui utilise des boutons anims pour simuler l'apparence et le fonctionnement d' une radio de voiture. La ligne de boutons poussoirs est faite de 8 Bitmaps insrs dans le contrle cadre. Lorsque l' on appuie sur un bouton, celuici s'enfonce et slectionne une station de radio, l' aiguille se dplace et la mlodie slectionne est difuse. La pousse des Dans cet exemple, nous avons utilis en plus du boutons est temporise avec un dcalage contrle ANIBTN32.OCX, le contrle MCI32.OCX de 100 millisecondes d'intervalle, donnant pour diffuser la musique.(Ce contrle fera l'objet l'illusion de mouvement de l'vnement d'un prochain tutoriel). provoqu. Les boutons On/Off et Exit sont crs avec 2 Bitmaps dans le cadre du contrle. Dans cet exemple il a t utilis 5 contrles AniPushButton pour les boutons poussoirs et 2 contrles pour les boutons On/Off et Exit.

Trois images PictureBox pour la faade des stations de radio, un objet "Line" pour simuler l'aiguille et une image pour afficher la marque de l' autoradio. Le botier de l' autoradio est simul simplement avec des objets "Line", vous voyez que l'on peut se passer de "Frame" ou de contrles similaires(Panel) qui utilisent de la mmoire et qui ne sont pas toujours indispensables, mais reconnaissons le, parfois tellement utiles. Tlcharger le programme AnimButton.zip Le soucis de la plupart des programmeurs est de protger ses ralisations. Je n'ai pas la prtention de connatre toutes les astuces lies la protection des programmes et il serait fastidieux de les numrer tous, aussi nous allons tudier une protection simple mais qui dcouragera la plupart des adeptes du tournevis et de la combine. Pour construire notre ralisation, nous avons besoin de donnes "rfrence" prise sur le computer du client qui va installer notre ralisation sur sa machine. Le meilleur moyen est de rcuprer 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 caractres tout en sachant qu'une fois le principe matris nous pourrons modifier les paramtres utiliss. Aprs 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 "Gnral Dclaration" d'un module que nous intitulons : general.bas Option Explicit 'Dclarations pour rcuprer le nom de l' utilisateur et de l' ordinateur Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long 'Dclaration des variables globales pour les instructions de messageries Global Title As String Global msg As String Global Reponse As Integer Dans ce mme module nous utilisons la routine de centrage de feuille. Sub CenterForm(frm As Form) 'Centrage de la feuille frm.Top = Screen.Height / 2 - frm.Height / 2 frm.Left = Screen.Width / 2 - frm.Width / 2 End Sub Nous allons fabriquer une feuille qui va nous permettre d'effectuer tous les essais ncessaires afin que vous compreniez le systme labor par votre serviteur. Nous allons lui laisser le nom de "Form1" Dans la procdure Form nous crirons : CenterForm Me 'Appel de la procdure de centrage de la feuille NomPc 'Appel de la procdure qui va nous restituer le nom du PC NomUtilisateur 'Appel de la procdure qui va nous restituer le nom de l'utilisateur

Nous n'utiliserons pas "NomUtilisateur" mais, dans la foule je vous donne l'criture du code de cette procdure d'autant que mme si dans votre application cela ne sert rien, a enjolive et je dirais mme que cela fait professionnel. Pour pouvoir rcuprer les donnes rcoltes, nous insrerons deux tiquettes que nous nommerons : PropritName = lblUserCode1 'Etiquette qui va nous restituer le nom de l'ordinateur PropritName = lblUserName1 'Etiquette qui va nous afficher le nom de l'utilisateur Passons aux choses srieuses et rcuprons le nom du PC de notre utilisateur. Public Function NomPc() As String Dim lngLongueur As Long Dim strTampon As String Dim intR As Integer strTampon = Space(255) lngLongueur = Len(strTampon) intR = GetComputerName(strTampon, lngLongueur) NomPc = Left(strTampon, lngLongueur) Protect!lblUserCode1.Caption = NomPc End Function Et maintenant le nom de l'utilisateur Public Function NomUtilisateur() As String Dim lngLongueur As Long Dim strTampon As String Dim intR As Integer strTampon = Space(256) lngLongueur = Len(strTampon) intR = GetUserName(strTampon, lngLongueur) NomUtilisateur = Left(strTampon, lngLongueur - 1) Protect!lblUserName1.Caption = UCase$(NomUtilisateur) End Function Vous pouvez tlcharger l'exemple que nous venons de raliser ici!

Nous constatons que nous avons bien en retour de notre procdure les donnes recherches, savoir le nom de l'ordinateur(M7I2B7) et le nom de l'utilisateur. Notez que si vous essayer ce programme sur votre ordinateur les donnes que vous allez rcuprer seront diffrentes.

Si vous cliquez sur le point d'interrogation, vous allez ouvrir la fentre "A propos de..." et vous constaterez que j' ai fait une rservation dans une tiquette ou va venir se loger le numro de srie que nous allons engendrer avec les nouvelles instructions que je vous propose de saisir. Sans vouloir faire compliqu, mais en corsant quant mme le procd pour freiner l' enthousiasme des petits futs, nous allons essayer d'embrouiller le client par une suite de caractres qui ne serviront comme un leurre qu' noyer le poisson. La chane de caractres que nous avons eu en retour comprend 6 caractres 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 prsent, nos caractres zro ne servent rien aussi nous allons les modifier et mettre la place des caractres plus significatif comme par exemple : et voila ce que nous recherchons, un numro de srie qui comprend des caractres significatifs inrants 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 caractres afin de compliquer la dcouverte 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 mme code que nous avons dispers et noy avec d' autres caractres insignifiants ce qui donne dans le tableau de droite en remplaant les zros par des caractres choisis au hasard et alatoirement. Nous savons maintenant que le code qui doit s'inscrire dans le fichier "A propos de..." et dans l'tiquette prvue cet effet correspond : 3M-5l724870-B6 (Attention car le caractre aprs le chiffre 5 est un "L" en minuscule et que cela peut parfois engendrer des erreurs, et il vaut mieux effectuer un copier coller plutt que d'inscrire le code manuellement. Ecriture du code pour rcuprer nos caractres et les utiliser dans cette ralisation Recherchons dans l'index de VB quelle est la commande qui permet d'initialiser des nombres alatoires(pour remplacer les zros). Nous trouvons l'instruction Randomize avec la Syntaxe suivante Randomize nombre% Dans la feuille Form nous saisissons la commande Randomize et nous utiliserons la commande suivante pour gnrer des caractres alatoires. Protect.ctlLabel1(0).Caption = Int(Rnd * 9) ' ("Label1(0)" ainsi que les 11 autres" Label" servent stocker individuellement les caractres de notre numro de srie.) Les "Label" seront disposs cte cte et numrots de Label1(0) Label1(13) ils seront indexs,

(vous l' avez compris puisque nous avons des chiffres entre parenthses) Les Label devant afficher un chiffre alatoire 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 caractres retourns par le systme. Voici les codes utiliser pour les "Label" devant gnrer des caractres alatoires : 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 gnrer des caractres statiques : Protect.Label1(2).Caption = "-" Protect.Label1(11).Caption = "-" Voici les codes utiliser pour les "Label" devant gnrer les caractres du code machine : Que recherchons nous dans cette opration? Tous simplement rcuprer les caractres individuellement qui se trouvent dans la chane de caractres qui affiche le nom de la machine. Interrogeons Visual Basic et recherchons quelle est l'instruction qui permet de rcuprer un caractre dans une chane. Nous trouvons la fonction "Mid, ou Mid$" (Fonction ou Instruction)avec comme descriptif : Renvoie une partie d'une chane de caractres ou remplace une partie d'une chane de caractres par une autre chane de caractres. La syntaxe est, 1 - resultat$ = Mid$(chane de caractres$, position% 'longueur%) 2 - Mid$(chane de caractres$, position%, longueur&) = resultats$ Remarque : La fonction Mid renvoie une chane de caractres Variant, la fonction Mid$ renvoie une chane de caractres au format String. Les instructions Mid et Mid$ fonctionnent de manire identique. Et nous trouvons les fonctions "Left, Left$" et Right, Right$ Left$ = Retourne un nombre de caractres dfinis dans la partie gauche d'une chane. Right$ = Retourne un nombre de caractres dfinis dans la partie droite d'une chane. Nous avons maintenant toutes les bases ncessaires l'criture du code devant nous permettre de rcuprer les donnes que nous avons besoin. Saisissons dans la feuille "Form" l'instruction suivante 'Initialisation des fonctions et instructions usuelles InitPCNumberSerial 'Lancer l'initialisation de InitPCNumberSrial Et voici la procdure correspondante Sub InitPCNumberSerial() 'Dclaration des variables Dim X As String Dim Number1 As String Dim Number2 As String '

'RECUPERATION DU NOM DE L'ORDINATEUR. Dim lngRep As Long, sComputerName As String sComputerName = 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 USERNAME Form1.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 chane : (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)

Dfinissons 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 concatner et rassembler le contenu des "Label" pour en faire une chane de caractre qui sera affiche dans l'tiquette NumberCode1 End Sub Vous constatez que j'ai utilis parfois le prfixe de "Form1" ou "Protect", je vous prcise que celui ci n'est pas obligatoire si vous saisissez l'instruction dans la feuille dans laquelle elle va tre utilise. Malgr ce, saisissez le prfixe 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 galement Le prfixe serait obligatoire si vous aviez mis la procdure dans le module. Cette petite explication titre pdagogique, pour vous aider y voir plus clair!

Une vue de notre prototype dans lequel je dvoile la face cache qui affiche le systme d codage et dcodage de notre application. Tlcharger cet exemple ici!

Le principe est de gnrer un code partir du code initial de l'ordinateur de l'utilisateur, de le mettre en forme le modifiant(SrialNumber1), ensuite aprs rception de ce code fournit par l'utilisateur, lui renvoyer un autre code issu du code initial, mais mis en forme galement de faon qu'il ne soit pas identique(SrialNumber2) qu va gnrera 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, dbrider le logiciel automatiquement. Je sais que vous pourriez me poser cette question, savoir, que chaque fois que nous allons initialiser cette application, le systme va gnrer des chiffres alatoires diffrents ce qui peut amener le petit malin adepte du tournevis et de la combine connatre le fonctionnement du systme!

Je pourrais vous rpondre que si vous voulez connatre la suite vous devrez suivre mes cours sur Internet, mais...je suis un temps soit peu philanthrope et ayant la fibre pdagogique qui coule dans mes veines, je vais vous dvoiler comment remdier ce problme. Il suffit de crer un fichier accs direct et de stocker en mmoire le code que le computer de l'utilisateur aura gnr, vous voyez c'est trs simple raliser. Pour ceux qui souhaiteraient effectuer l'entire ralisation 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 zro des caractres affichs dans les champs de saisies. Le bouton de commande1 sert afficher les caractres alatoires dans leurs champs de saisies respectifs Le bouton de commande2 sert afficher le code srie du computer. Le bouton de commande3 sert afficher le code srie que vous devez retourner l'utilisateur, (Votre client) Le systme comparera les donnes enregistres, et si elles sont identiques, activera l'intgralit du programme Pour viter de vous chauffer la tte, je vous conseille de raliser un dcodeur qui vous donnera partir du code initial de la machine du client automatiquement le code retourner l'utilisateur. Le principe de ce codeur dcodeur relve intgralement de cet article et vous devez le raliser sans aucun problme partir des donnes que je vous ai transmises. Bon courage....

Rflexions sur cette application(mise jour) MULTIMEDIA MCI32 [MCI32.OCX] Utilisation : Affichage et manipulation de fichiers multimdias EDITEUR : Microsoft Le contrle MCI a t fourni avec toutes les versions de Visual Basic depuis la version 3.0 Ce contrle sert grer diffrents priphriques multimdia comme les cartes son, les squenceurs 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 vido(.AVI) Le contrle MCI ressemble un clavier de commande de magntoscope. Pour que le contrle MCI fonctionne parfaitement, les services appropris de l'interface de Contrle Multimdia (Services MCI) doivent tre disponibles et tre capable d'accder au priphrique son, grce au pilote spcifique install sous Windows. Extrait du code pour charger un fichier Audio Private Sub Form_Load () ' Dfinit les proprits ncessaires l'ouverture du priphrique MCI. MMControl1.Notify = FALSE MMControl1.Wait = TRUE MMControl1.Shareable = FALSE MMControl1.DeviceType = "WaveAudio" MMControl1.FileName = "C:\WINDOWS\MMDATA\GONG.WAV" ' Ouvre le priphrique MCI WaveAudio. MMControl1.Command = "Open" End Sub Les proprits et vnements spcifiques au contrle MCI sont prsentes dans les tableaux suivants Multimedia MCI, contrle, constantes Constantes du mode Constante mciModeNotOpen mciModeStop mciModePlay mciModeRecord Valeur 524 525 526 527 Description Priphrique non ouvert. Arrt du priphrique. Lecture du priphrique. Enregistrement du priphrique.

mciModeSeek mciModePause mciModeReady

528 529 530

Recherche du priphrique. Pause. Priphrique prt.

Constantes de notification Constante mciNotifySuccessful mciNotifySuperseded mciAborted mciFailure Constantes d'orientation Constante mciOrientHorz mciOrientVert Constantes RecordMode Constante mciRecordInsert mciRecordOverwrite Constantes Format Constante mciFormatMilliseconds mciFormatHms mciFormatMsf mciFormatFrames mciFormatSmpte24 mciFormatSmpte25 Valeur 0 1 2 3 4 5 Description Format millisecondes. Format heures, secondes et minutes. Format minutes, secondes et images. Format images. Format SMPTE 24 images. Format SMPTE 25 images. Valeur 0 1 Description Insrer le mode d'enregistrement. Remplacer le mode d'enregistrement. Valeur 0 1 Description Boutons disposs horizontalement. Boutons disposs verticalement. Valeur 1 2 4 8 Description La commande a abouti. La commande a t annule par une autre commande. La commande a t annule par l'utilisateur. La commande a chou.

mciFormatSmpte30 mciFormatSmpte30Drop mciFormatBytes mciFormatSamples mciFormatTmsf

6 7 8 9 10

Format SMPTE 30 images. Format SMPTE 30 images cibles. Format octets. Format chantillons. Suit le format minutes, secondes et images.

Lorsque j'ai dcid de construire ce Tutoriel autour du contrle MCI, plusieurs choix s'offraient moi, je pouvais avec toute la documentation en ma possession trouver les instructions affrentes une application multimdia. Mais...partant du principe qu'il ne faut pas refaire ce qui est dj fait, je me suis pos la question savoir si je ne pouvais pas trouver dans mes fonds de tiroir une application dj toute faite. J'ai trouv en effet dans un programme crit sous VB3.0 une application fonctionnant avec un contrle MCI issu d'un fichier extension .vbx! Pour ceux qui suivent mes Tutoriels, j'ai voqu prcdemment une mthode pour convertir les applications fonctionnant sous 16 bits en applications 32 bits, j'ai donc pens qu'il fallait essayer de mettre profit les prcieux conseils que je divulgue sans modration. J'ai donc utilis la mthode que je vous ai dj indiqu et je n'ai trouv qu'un seul problme au niveau d'un appel d' "API", je vous donne la modification que j'ai apporte afin de faire fonctionner ma feuille crite sous VB3(16bits) en instructions pouvant tre lues sous VB6.0. Une vue de la dmo du contrle MCI que vous pouvez tlcharger ici! La zone d'image est tronque sur ce clich, mais elle existe et se trouve cache par la bordure infrieure. On peut ne pas tenir compte de la zone d'image si on se contente d'utiliser la partie son du contrle MCI Nous crirons dans "Gnral" et "Dclarations" de la feuille "Form1" 'BEGIN Option Explicit '-------------------------------------------------' Variables, constantes et dclarations utilises dans la ' dmo du contrle Multimdia MCI '-------------------------------------------------' Stocke le Handle de fentre du contrle d'image ' utilis pour afficher les fichiers AVI (si vous vouler afficher des images) Dim HwndFrame As Integer ' Rcupre le Handle de fentre du contrle d'image 'Private Declare Function GetFocus Lib "user" () As Integer 'Dclaration d'origine

Ndla - Nous aurions pu ne pas tenir compte de cette dclaration si nous nous servons uniquement que de la partie son de cette application Et voici le code que j'ai rcupr 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 Long Je l'ai modifi en : Private Declare Function GetFocus Lib "user32" () As Long ' Mmorise la largeur et la hauteur initiale de la fentre. 'La feuille ne peut tre redimensionne en dessous de ces valeurs. Dim MinWinWidth As Integer Dim MinWinHeight As Integer ' Color constants Const BLUE = &H800000 Const RED = &H80& Dans cette procdure j'ai modifi uniquement le code relatif l'affichage des fichiers AVI Et j'ai traduit les commentaires en Franais(Sur le module que vous tlchargerez, les commentaires seront en Anglais, dsol!) Private Sub GetNewFileName(AFile As String) '-------------------------------------------------' Utilise la bote de dialogue standard du menu fichier pour chercher un nom de fichier '-------------------------------------------------Dim Canceled As Integer Canceled = False On Error GoTo GetNewFileName_Error ' Configure la bote de dialogue fichier standard CMDialog1.Filter = "Multimedia Files|*.wav;*.mid" extensions en minuscule CMDialog1.DialogTitle = "Select Multimedia File" CMDialog1.CancelError = True ' Ouvre la bote de dialogue CMDialog1.Action = 1 If Not Canceled Then AFile = CMDialog1.FileName Else AFile = "" End If Exit Sub ' GetNewFileName_Error: Canceled = True ';*.avi Attention coder les

Resume Next End Sub Les autres procdures sont identiques et ne demandent pas de modifications Vous avez besoin du contrle "MCI32.ocx" et du contrle "Comdlg32.ocx" pour faire fonctionner cette application, ce dernier servant au fonctionnement des botes de dialogues sous Windows. Pour que le module de dmonstration fonctionne, vous devez crer un rpertoire "Sons" la racine de votre disque dur"C:\" et insrer 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 contrle MCI que ce soit sous plate forme16 bits ou indiffremment sous 32 bits. J'attire votre attention sur le fait que lorsque vous allez lancer l'application "MciDemo" que vous allez tlcharger, celle-ci va engendrer une erreur du genre :

Fentre d'erreur gnre par Visual Basic6

Que nous dit ce fichier ?(mcidemo.log) Ligne 18: La classe CommonDialog du contrle CMDialog1 n'est pas une classe de contrle charge. Ligne 31: La classe MMControl du contrle MMControl1 n'est pas une classe de contrle charge. Qu'est ce que cela veut bien dire ? Cela veut dire que cette feuille ayant t crite avec une version prcdente de VB et faisant appel des DLL incompatibles(*.vbx) qui ne peuvent pas tre lues par VB6.0, le systme nous prvient d'une incompatibilit majeure et qu'il a t dans l'impossibilit de charger les contrles sollicits par les appels aux DLL. Charge nous d'apporter les modifications ncessaires pour charger les contrles adquat qui rtabliront le bon fonctionnement de ce contrle Multimdia. Je vous laisse le soin de modifier en consquence les instructions inopportunes ce qui mon avis ne devrait pas vous poser de problme avec les explications que je vous ai donnes. Je vous souhaite beaucoup de plaisir raliser cette application. LES FICHIERS A ACCES SEQUENTIELS Dans certains Tutoriels que je diffuse sur Internet, je fais rfrence la cration de fichiers afin de stocker des donnes en mmoire inrantes aux applications dveloppes. Aussi, je vous propose d'tudier les bases de la gestion des fichiers pouvant vous servir dans la plupart des applications que vous aurez dvelopper. Visual Basic possde les fonctions fondamentales de gestion de fichiers squentiels, accs

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 caractristiques de l'instruction "Open" Description : Ouvre un fichier Syntaxe : Open fichier$ [For Mode ] [ Access accs ] [ Look ] As [#] identificateur fichier% [ Len=longueur%] (Cette chane de caractre doit tre crite sur la mme ligne) fichier$ : Chane de caractre dont la valeur dcrit le nom du fichier ouvrir. mode : Vous pouvez entrer ici une chane de caractres dont la valeur dfinit le mode de transfert des donnes et doit contenir l'une des expressions suivantes : Random : Mode d'accs direct Binary : Mode binaire. Tout octet est lu ou crit par "Get" et "Put" Input : Entre squentielle. Output : Sortie squentielle. Append : Sortie squentielle ajoute la fin d'un fichier existant. Le mot cl Access est rserv aux versions du DOS suprieures ou gales 3.1 En paramtre, on peut passer une chane de caractres contenant l'une des expressions suivantes.(Attribut) Read : Lecture seulement Write : Ecriture seulement Read Write : Lecture et criture. Rserv aux fichiers ouverts en mode Binary ou Append Lock : Le fichier peut, avec l'un des mots-cls suivants, tre dot de certains droits d'accs autres que Lock : Shared : Tout programme peut accder au fichier et lire ou crire des donnes. Lock Read : Aucun autre programme ne peut lire des donnes dans ce fichier. Lock Write : Aucun autre programme ne peut crire de donnes dans ce fichier. Identificateur fichier : Expression numrique comprise entre 1 et 255 donnant le numro de fichier. Longueur : Expression numrique comprise entre 1 et 32767. Le fichier est ouvert en accs 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 rpertoire de Windows ou de System, mais pour le cas ou vous souhaiteriez le crer dans un rpertoire nous allons tudier de prime abord la cration du rpertoire devant accueillir notre fichier L'application "CREREP" Je vous ai concoct une petite application pour vous permettre de crer vos rpertoires favoris. Tlcharger ici! Le listing complet est disponible ci-dessous.

Private Sub Command2_Click() 'Contrler si rpertoire existe? Dim MyPath As String 'Dfinition des variables Dim MyName As String Dim RepertName As String ' RepertName$ = Text1.Text MyPath = "C:\windows\" & RepertName$ 'On initialise la variable If Text1.Text = "" Then Title$ = "Cration d'un rpertoire" msg = "Veuillez saisir le nom du rpertoire crer!" MsgBox msg, 64, Title$ Text1.SetFocus Else 'Instructions End If 'Si l' utilisateur n' a pas saisie un nom... alors sortie du programme If 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 rpertoire MsgBox "Le rpertoire " & Chr(34) & MyPath & Chr(34) & " existe bien!" 'Si le rpertoire saisie existe... alors sortons.... Exit Sub Else MsgBox "Le rpertoire " & Chr(34) & MyPath & Chr(34) & " n 'existe pas!", vbExclamation 'Alors...crons le rpertoire RepertName$ = Text1.Text MkDir "c:\windows\" & RepertName$ 'Indiquez le chemin ou doit tre stock le rpertoire End If 'Ouverture d' une fentre de dialogue MsgBox "Le rpertoire " & RepertName$ & " vient d' tre cr!" End Sub Dans cet exemple, le dossier "RepertName$"sera cr dans le rpertoire de "Windows" Pour pouvoir crire dans un fichier, nous devons d'abord le crer, quelles sont les fonctions que nous offrent VB pour nous permettent de crer un fichier sous Windows ? ECRIRE DANS UN FICHIER Tous les fichiers devant comporter un numro, nous utiliserons la fonction "FreeFile" qui retourne le premier numro 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 particulirement utile quand vous dsirez ouvrir un fichier sans savoir avec certitude si l'identificateur de fichier n'est pas dj occup. Nous allons le conserver dans la variable NumFich(Numro de fichier), nous crivons

NumFich = FreeFile Cration du fichier "Protect.org" (vous pouvez saisir le nom de votre choix) Sub CreatSerialNumberCode() Dim UserCode As String Dim SerialCode As String Dim PasswordNumberCode As String Dim Valeur As String Dim UserName As String Dim msg As String Dim MonFichier As String ' 'Rechercher si le fichier existe? NumFich = FreeFile MonFichier$ = "c:\windows\protect.org" If Dir(MonFichier$, vbNormal Or vbReadOnly Or vbHidden Or vbArchive) = "" Then 'Le fichier n' existe pas, alors...le crer! Open "c:\windows\protect.org" For Output As #NumFich '=============== [Affichage]==================== 'Ecriture des valeurs dans la cl [Affichage] Print #NumFich, "[Affichage]" Valeur$ = "0" 'Rcuprer la valeur dans le champ de saisie appropri - Ex Protect.lblAffichage.Caption 'Afficher la valeur rcupre Print #NumFich, "Device="; Valeur$ '=============== [UserName ]==================== 'Ecriture des valeurs dans la cl [UserName]= Nom de l'utilisateur Print #NumFich, "[UserName]" UserName$ = "0" 'Rcuprer la valeur dans le champ de saisie appropri - Ex Protect.lblUsername.Caption 'Afficher la valeur rcupre Print #NumFich, "Device="; UserName$ '================ [UserCode ]==================== 'Ecriture des valeurs dans la cl [UserCode] = Nom de l' ordinateur Print #NumFich, "[UserCode]" UserCode$ = "0" 'Rcuprer la valeur dans le champ de saisie appropri - Ex Protect.lblUserCode.Caption 'Afficher la valeur rcupre Print #NumFich, "Device="; UserCode$ '================ [NumberSerie ]================== 'Ecriture des valeurs dans la cl [Serial Code]Code de controle SerialCode$ = "0" 'Rcuprer la valeur dans le champ de saisie appropri - Ex Protect.lblSerialCode.Caption Print #NumFich, "[SerialCode]" 'Afficher la valeur rcupre Print #NumFich, "Device="; SerialCode$ '================== [Password ]================= 'Ecriture des valeurs dans la cl [Password] Print #NumFich, "[Password]" PasswordNumberCode$ = "0" 'Rcuprer la valeur dans le champ de saisie appropri - Ex
Protect.lblPasswordNumberCode.Caption

'Afficher la valeur rcupre Print #NumFich, "Device="; PasswordNumberCode$ 'Ferme le fichier Close #1

Else 'Le fichier existe, alors...pas de commentaires, sortie... End If End 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"(Zro) L'application CREATFILE Une vue de l'application concocte spcialement pour les internautes de www.developpez.com Elle vous permettra de mieux comprendre le systme employ dans ce module de conception originale Si l'on veut laisser le choix l'utilisateur du nom du fichier crer, nous utiliserons les donnes suivantes, savoir : NomFile$ = ctlTexte1.Text NumFich = FreeFile Open NomFile$ + ".org" For Output As #NumFich L'extension est fantaisiste, libre choix vous d'utiliser celle qui vous conviendra. Tlcharger l'exemple ci contre ici! Vous savez dornavant crer un rpertoire, crer un fichier et saisir les donnes que vous souhaitez mettre en mmoire, il ne nous reste plus qu' raliser l'application qui va nous permettre de lire ce fichier. Vous ajoutez une zone de liste et vous lisez dans celle-ci les donnes enregistres afin de les traiter dans votre application. UN PROGRAMME SANS INTERFACE UTILISATEUR GRAPHIQUE Rien ne s'oppose aux premiers pas sous Visual Basic, si vous tes dbutants, sachez rester humble pour vos dbuts. Avant de vous lancer dans une super production la Mtro Goldwin Mayer, apprenez vous servir de l'environnement de programmation, crer des feuilles et saisir du code. L'interface graphique n'est pas imprative 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 particulire car Visual Basic ne connat pas de programme principal. Il peut servir lancer l'excution du programme la place d'une feuille.

Les quelques exemples qui vont tre dvelopps vont vous montrer comment crire des programmes dpourvus d'interface utilisateur graphique. Ouvrez un nouveau projet par "Fichier"/"NouveauProjet", choisissez l'Icne "EXE" standard et affichez la fentre 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 fentre, recherchez l'tiquette "Supprimez Form1" et cliquez sur celle-ci pour provoquer l'effacement de la feuille "Form1" dans la fentre de projet. Dans la barre de menu de VB cliquez sur "Projet"/"Ajoutez un module Le fichier "Module1" vient d'tre cr ! Dans l'objet "Gnral" - "Dclarations", tapez : Sub Main et appuyez sur le bouton <Return> ou <Entre> de votre clavier. Vous venez de crer la procdure : Sub Main ( ) End Sub Nous allons crire une petite application qui permet d'arrter la machine. Dans l'objet "Gnral" - "Dclaration" on crit : Declare Function ExitWindows Lib "user32" Alias "ExitWindowsEx" (ByVal dwReserved As Long, ByVal uReturnCode As Long) As Long (mettez cette instruction sur la mme ligne) Et dans la procdure Main prcdemment cre on saisi : Sub Main( ) 'Dim X As Long Dim 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 dcouvert 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 disparatre. Je ne l'ai pas essay ? manque de temps dsol, je vous suggre de crer la mme procdure 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' crer un fichier excutable en utilisant dans la barre de menu l'tiquette adquate, mais, je vais broder un tout petit peu en vous demandant d'insrer dans votre programme les renseignements relatifs la ralisation de votre application, cela fait un peu plus "Pro". Dans la barre de menu, cliquez sur "Projets"/"Proprits de Projet1"

Plusieurs onglets se prsentent nous, celui qui nous intresse se nomme, "Crer". Nous l'ouvrons et dans la "Frame" "Informations sur la version", nous dcouvrons une ComboBox qui liste diffrentes tiquettes, savoir : Commentaires : Copyright : Description du fichier : Marques lgales : Nom du produit : Organisation : Remplissez le champ de saisie qui se trouve droite des tiquettes en fonction de vos critres respectifs. Pour pouvoir rcuprer le nom de notre ralisation, 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"/"Crer 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 comptences, nanmoins pour ceux qui ne connatraient pas la marche suivre, voici comment faire un raccourci clavier depuis le bureau(l'cran) de votre computer. Aprs la compilation de votre projet et la fermeture de Windows, procdez 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" Slectionnez le programme "CloseWin.exe" Cliquez sur le bouton "Suivant", puis sur le bouton "Terminer" Vous pouvez arrter votre appareil depuis l'icne que vous venez d'installer sur le bureau! Vous pouvez galement modifier l'icne install sur votre bureau, en cliquant sur le bouton droit de la souris, puis sur "Raccourci"/"Changez d'icne", Parcourir et rentrer dans le rpertoire de Windows pour rechercher le fichier "Moricons.dll", choisissez l'icne qui vous convient. Je vous propose pour clturer ce chapitre de raliser une autre application base sur le mme principe. Cela sera plus simple maintenant puisque nous en connaissons le fonctionnement. Cette application sera sauvegarde sous le nom de "RunProg.exe" Nous crons sous le mme principe voqu prcdemment un fichier "Module1.bas" que nous renommerons sans plus attendre "RunProg.bas".

Dans l'objet "Gnral" - "Dclarations", 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, ds fois que...! Et dans la procdure Main prcdemment cre 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 Sub Il ne reste plus qu' compiler notre nouvelle ralisation qui sera insre dans les fichiers devant visualiser une composition appartenant un Cd-Rom. J'ai ralis une variante de ce programme que je vous laisserai dcouvrir en tlchargement Tlcharger "RunProg.exe" classique selon l'expos dcrit dans cette page Tlcharger"RunProg1.exe" variante que j'utilise depuis des annes 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'excution du programme a t transmise votre routine de gestions d'erreurs, votre code peut dterminer l'erreur qui s'est produite en affichant son numro et sa description. Quand une erreur se produit, les informations la concernant sont stockes dans l'objet "Err" Err.Number : indique le numro de l'erreur Err.Description : indique la description de l'erreur ' Voici le listing de cette application : Sub Main ( ) On Error GoTo SortieDiscrete ' ou l'tiquette de votre choix If Dir("c:\toto\danseaveclesloups.txt") = False Then MsgBox "Ce fichier n'existe pas!" End If Exit Sub SortieDiscrete: MsgBox "Erreur N : " &Err.Number & VBLF & Err.Description End 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.

Si le fichier n'existe pas, le mot "SortieDiscrete" remplie sa fonction et vous renvoie l'tiquette du mme nom, c'est dire "SortieDiscrete" qui demande la bote 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 numro 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 systme.

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 premires permettent de manipuler toutes sortes de donnes, comme par exemple, les valeurs numriques, les valeurs logiques, les dates, le texte, etc... Le deuxime 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 crer une instance d'une application afin de travailler directement l'intrieur de celle-ci. DEFINITION DES VARIABLES Les variables peuvent s'apparenter des cases dans lesquelles on stocke des informations. Ces cases sont situes dans la mmoire de l'ordinateur. Elles peuvent contenir une grande varits de donnes. Pour stocker une donne dans une variable, nous luis assignerons une valeur en utilisant l'oprateur "gale" (=). Chaque variable reoit un nom qui lui est propre et qui peut comporter jusqu' 254 caractres. Le nom d'une variable doit commencer par une lettre et il ne doit tre identique aucun mot rserv du Visual basic. Les types fondamentaux de donnes Les entiers(Integer), flottants (Real), chiffres montaires (Currency) et les chanes de caractres (String) sont grs dans des variables de type bien dfinis. Chaque type peut couvrir une chelle de valeurs qui lui est propre. Les dbordements des limites de valeur sont la cause d'erreurs pendant l'excution du programme. La dclaration d'une variable, qui dfinit son type, est effectue l'aide d'un suffixe(le% dsigne le type entier par exemple) ou de l'instruction Dim (exemple : Dim Nombre As Integer) Le suffixe permet de reconnatre le type d'une variable du premier coup d'il. Vous pouvez lire dans le tableau dcrit plus bas, une description des types fondamentaux de donnes de Visual basic. Depuis la version 6 de Visual Basic, le programme vous oblige dclarer les variables par la commande "Option Explicite"

Etendue d'une variable L'tendue, ou dure de vie, d'une variable dtermine le type de commandes pouvant accder cette variable. Une variable dclare l'intrieur d'une procdure a une tendue locale : la variable est cre et dtruite chaque fois que la procdure est excute. Il n'existe aucun moyen d'y accder en dehors de la procdure. Une variable dclare en dehors d'une procdure a une tendue globale : sa valeur est accessible et modifiable par n'importe quelle commande. Lorsque vous dclarez des variables, une variable locale et une variable globale peuvent avoir le mme nom. La modification de la valeur de l'une des variables ne modifiera pas la valeur de l'autre. Nanmoins, si vous ne dclarez pas de variables, vous risquez de modifier par inadvertance la valeur d'une variable globale. Pour viter tout problme, prenez l'habitude de dclarer explicitement toutes les variables. Dclarations de variables Pour dclarer explicitement une variable avant de l'utiliser, (en principe au dbut d'une procdure d'vnement), il suffit d'indiquer le nom de la variable derrire l'instruction "Dim" (Dim est l'abrviation de Dimension). Cette action rserve en mmoire l'espace ncessaire pour stocker la variable et indique Visual basic le type de variable dclare. Si vous ne prcisez pas le type de la variable, Visual Basic la dclare par dfaut comme tant de type "Variant". Aprs avoir dclar 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. Dclarer des variables sans DIM Il est galement possible de dclarer une variable sans le mot "Dim". Cette technique est nomme "dclaration implicite". Pour dclarer une variable sous cette forme, il suffit simplement d'employer son nom, par exemple : Nom = "Oscar" Nanmoins nous utiliserons l'option explicite pour la ralisation de toutes les applications dveloppes dans cette rubrique. Modifier la valeur d'une variable Les instructions sont organiss en trois groupes. La premire instruction dclare la variable Nom l'aide de Dim. Aucun type n'tant spcifi, la variable prend le type "Variant" et peut contenir du texte ou des nombres. Les secondes et troisime 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 proprit d'objets. Exemple :

Modifier la valeur d'une variable Veuillez saisir les instructions suivantes pour dclarer et utiliser la variable "Nom:" Dim Nom Nom = "Pierre" Label1.Caption = Nom Nom = 99 Label2.Caption = Nom Cliquez sur le bouton "Voir" Travailler avec des types de donnes spcifiques Type de donnes Entier (Integer) Entier long Simple prcision et virgule flottants Double prcision et virgule flottants Monnaie (Currency) Chane de caractres (String) Bollen ( boolean) Date Taille 2 octets 4 octets Plage de valeurs -32768 + 32767 Exemples Dim Oiseaux% Calendrier% = 12 Dim Charge& Charge& = 35000 Dim Prix! Prix! = 895.50

-2.147.483.648 + 2.147.483.647 -3.042.823.E38 4 octets 3.402823E38 -1.79769313486232D3308 Dim Pi # 8 octets Pi#=3.1415926535 1.79769313486232D3308 Dim Dette@ 8 octets Dette@= 760010010.50 Dim Chien$ 1 octet par 0 65 535 caractres Chien$ = "Berger caractre allemand" True (Vrai) ou False Dim Drapeau As Boolean 2 octets (Faux) Drapeau = True 1 janvier 100 Dim anniversaire As Date 8 octets 31 dcembre 9999 Anniversaire = #3-1-56#
16 octets pour les nombres et 22 octets + 1 octet par caractres pour les chanes de caractres

Variant

Les plages de tous les autres types

Dim Prix Prix = 289.135

De ce tableau, il ressort qu'il vaut mieux(si possible) utiliser un type de donnes autre que celui de variant. Nous avons concoct un petit programme pour argumenter le tableau prcdent.

Tlcharger l'exemple ici! Cet exemple est livr avec les sources titre pdagogique, vous pourrez voir le code de la procdure "List" ainsi que le code de l'instruction "Select Case" le programme permet d'exprimenter 9 types de donnes, dont le type "Entier", Virgule flottante en simple prcision et Date. Le programme affiche un exemple de chaque type lorsque vous cliquez sur son nom dans la liste. Type de donnes personnalises Visual Basic permet galement de crer vos propres types de donnes. Cette fonction est particulirement utile si vous avez traiter un groupe de donnes formant un ensemble incluant diffrentes catgories de types de donnes. La dclaration suivante est un exemple de cration d'un type de donnes personnalis. Type Entreprise Nom As String DateDinscription As Date End Type Vous faites appel ce type de donnes par l'instruction suivante : Dim ChefEntreprise As Entreprise ChefEntrepriseName = "Jacques Dupont"

Grer des contrles comme des variables objets Vous pouvez non seulement utiliser des objets comme variables de tableau de contrles, mais aussi passer ces variables objets et ces tableaux d'objets comme paramtres d'un sous programmes. Cela peut paratre obscur pour certains, mais le but de cette mthode est tout simplement de gagner du temps l'excution de votre application. Combien de fois j'ai lu dans les colonnes de certains sites ou dans les exposs de certains programmeurs que le Visual basic tait lent...je ne veux en aucun cas me faire le dfenseur du VB, mais je me pause une question, savoir si toutes les possibilits d'excution du code ont vraiment ts examines. 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 ralisation pour lui apporter des modifications. Je ne veux pas gnraliser aussi je vous laisse toute libert pour analyser le bien fond de mes observations et vous invite raliser l'application que je vous propose d'crire pour argumenter mon petit expos. Prenons par exemple la ralisation d'une feuille qui doit contenir une trentaine de zones de textes, chacune

devant comporter un type de donnes bien spcifiques. Certaines ne pourront accepter que des caractres numriques, d'autres des donnes alphabtiques, et certaines peuvent tre limits en nombre de caractres. Cette configuration devrait normalement ncessiter trois sous programmes distincts, un pour chaque type de zone de texte. Un sous programme de validation de zone de texte Nous allons crire un sous programme de validation de texte pour dmontrer le bien fond de cette explication, ce qui nous permettra de de savoir quel est le type de donnes requis par chaque zone de texte ainsi que la longueur maximale des donnes saisies. Ce qui obligera le programme ignorer toute saisie qui n'obirait pas aux rgles tablies par le concepteur du programme. passons aux choses srieuses et crez un nouveau projet et positionnez sur l'interface les objets affichs ci-aprs.

Il ne nous reste plus qu' rentrer le code pour faire fonctionner notre application. Tlcharger l'exo si vous ne voulez pas faire l'effort de saisir le texte. Tlcharger l'exo

je vous laisse le soin de positionner sur la feuille les objets suivants : 1 Label - Label1 - Proprit.Caption = "Validation avec Variables Objets" 3 autres Label pour les autres tiquettes, savoir : Label2, Label3, Label4 Description Zone de texte exclusivement alphabtique Proprit Name Index Tag Zone de texte exclusivement numrique Name Index Tag Zone de texte polyvalente Name Index Tag Valeur txtValider 0 A12 txtValider 1 N5 txtValider 2 *4

Vous pouvez modifier la valeur de la proprit Tag qui correspond au nombre de caractres que vous avez dfinis dans les champs de saisie, mais assurez vous que les donnes affectes ces proprits soient crites exclusivement en majuscules. Nous positionnons ensuite 3 TextBox, Text1, TExt2 et Text3, les 3 textBox auront la mme proprit Name "txtValider" et seront indexs de Index0 Index2.

Il ne nous reste plus qu' insrer le code devant faire fonctionner notre application. Option Explicite 'Nous forons VB dclarer les variables Private Sub ValiderTouchePress(txtControle As TextBox, nKeyAscii As Integer) Dim sMaxLength As String Dim sKey As String * 1 ' If nKeyAscii < 32 Or nKeyAscii > 126 Then Exit Sub sMaxLength = Right$(txtControle.Tag, Len(txtControle.Tag) - 1) ' If Len(txtControle.Text) >= Val(sMaxLength) Then Beep ' nKeyAscii = 0 Exit Sub End If ' Select Case Left$(txtControle.Tag, 1) Case "A" sKey = UCase(Chr$(nKeyAscii)) ' If Asc(sKey) < 65 Or Asc(sKey) > 90 Then Beep nKeyAscii = 0 Exit Sub End If ' Case "N" If nKeyAscii < 48 Or nKeyAscii > 57 Then Beep nKeyAscii = 0 Exit Sub End If End Select ' End Sub Nous insrons galement le code devant provoquer l"vnement lorsque nous insrons du texte dans les TextBox Private Sub txtValider_KeyPress(Index As Integer, KeyAscii As Integer) ValiderTouchePress txtValider(Index), KeyAscii End Sub Nous constatons que la premire "TextBox" n'accepte que des caractres alphabtiques, la seconde accepte des caractres numriques et la troisime qui est polyvalente accepte les deux options prcdentes sans aucun problme dans la limite du nombre de caractres que nous avons fix! Dclarer des variables objets Pour pouvoir dclarer des variables objets comme par exemple les zones de texte que nous venons d'tudier, il faut crire : Dim txtControle As TextBox Lorsque l'on dclare des variables objet explicitement, le code est plus efficace, plus facile dboguer et s'excute plus rapidement. Voici la liste type de variables objet que Visual Basic accepte. CheckBox Data Grid ComboBox DirListBox Frame CommandButton DriveListBox HScrollBar MDIForm FileListBox Image

Label OptionButton TextBox

Line OLE Timer

ListBox PictureBox VScrollBar

Menu Shape Form

Ce sont les objets standard Dclarations explicites et implicites ? Qu'est sa quo ? Les dclarations implicites... Rendent votre code plus difficile comprendre. Rduisent les chances de Visual Basic piger les erreurs Sont beaucoup plus lentes Les dclarations explicites Facilitent le dbogage Lorsque l'on dclare un objet par un type spcifique, comme une zone de texte par exemple, Visual Basic sait quelles proprits sont valables pour cette dernire VISUAL BASIC ne vrifie les proprits d'un objet contrle qu'en phase d'excution, tandis que dans le cas de contrles explicites, il annoncera les erreurs de proprits au moment de la compilation. Nous allons essayer de comparer les deux possibilits pour constater si vraiment la diffrence d'excution est flagrante. Nous lanons un nouveau projet et nous plaons sur la feuille les contrles suivants :

Un Label "Temp coul" Un second Label (Contrle tiquette) Le contrle tiquette aura comme proprit Name : lblTemps Trois boutons Les boutons de commandes auront comme proprit 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 Variant Dim nIndex As Integer ' VarTemps = Now ' For nIndex = 1 To 30000 Temps_Explicite cmdExplicite, nIndex Next ' cmdExplicite.Caption = "&Explicite" ' lblTemps.Caption = Minute(Now - VarTemps) & " Mins, " & Second(Now - VarTemps) & "Secs" End Sub ' Private Sub cmdImplicite_Click() Dim VarTemps As Variant Dim nIndex As Integer ' VarTemps = Now

' For nIndex = 1 To 30000 Temps_Implicite cmdImplicite, nIndex Next ' cmdImplicite.Caption = "&Implicite" ' lblTemps.Caption = Minute(Now - VarTemps) & " Mins, " & Second(Now - VarTemps) & "Secs" End Sub ' Voici les deux sous programmes saisir dans la section "Gnral" de la fentre de code: Private Sub Temps_Explicite(cmdCommande As CommandButton, nNumero As Integer) cmdCommande.Caption = nNumero End Sub ' Private Sub Temps_Implicite(cmdCommande As Control, nNumero As Integer) cmdCommande.Caption = nNumero End Sub Il ne nous reste plus qu' comparer le temps coul par les deux instructions implicites et explicites. Nous constatons que la premire gnre : Explicite = 0 minute et 2 secondes Implicite = 0 minute et 1 seconde L'essai n'a t pratiqu que sur une portion infime de texte, imaginez un programme avec des millions voire des milliards de caractres ? Nanmoins, parmi les divers essais que j'ai pu raliser, j'ai constat que bien souvent le temps entre les deux instructions taient identiques et que parfois il est vrai la valeur affiche tait de 50% infrieure 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 tlcharger l'exo complet de cette ralisation. Bon travail et merci de vos commentaires. Prochain tutoriel : Les bases de donnes La signification du terme "Base de donnes" Chaque nouvelle version de Visual basic propose une mthode plus performante d'accs aux donnes et VB6 ne fait pas exception la rgle. Je ne sais pas quelle poque le terme "Base de donnes" fait son apparition, mais les sources de donnes ont toujours pratiquement existes, sous basic nous avions la possibilit de stocker des informations dans des fichiers et par effet inverse la possibilit d'aller rechercher ses mme informations qui y taient stockes. A l'poque il tait question de magasins de donnes ou de sources de donnes ce qui me parat plus exact que base de donnes, 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 donnes ? Tout simplement, une base de donnes est un vaste ensemble d'informations. En programmation, les bases de donnes sont souvent contenues dans des programmes tels que... Access, Dbase, Fox Pro, Paradox, etc... qui existent depuis de nombreuses annes. Mais sans aller chercher ces noms clbres qui sont devenus rfrences en la matire, nous avons tout prs de nous des bases de donnes que nous nous servons tous les jours comme, le courrier lectronique, les documents provenant de traitements de textes, etc...Ils sont tous composs de donnes, mme si elles sont stockes sous des formes diffrentes. Ce sont des sources de donnes. Ont peu imaginer une base de donnes comme un classeur plusieurs tiroirs dans lesquels on rangeraient diffrents dossiers classs par discipline ou par dpartement. Chaque tiroir possdant des classeurs devant contenir diffrents dossiers. C'est de la que vient l'expression emmagasiner des dossiers d'ou la relation emmagasiner des donnes ou magasin de donnes.

Dans tout environnement multitche comme Windows, le besoin nous sollicite pour changer des donnes entre des applications simultanment en cours d'excution; La mthode classique consiste crire ces donnes sur disquette ou sur disque dur et les lire ensuite avec la deuxime application. Les changes de donnes ont t amliores avec le dveloppement des systmes d'exploitations et des logiciels qui ont afflus sur le march de l'informatique. La premire des possibilits consiste utiliser le presse-papiers qui est accessible toutes les applications. Le programme d'origine crit les donnes dans le presse-papiers, et le programme de destination va les lire tout simplement. Cet change dynamique de donnes a t appele par Microsoft "Dynamic Data Exchange" ou "DDE" L'objectif de DDE tant de permettre des changes automatiques entre toutes les applications en cours d'excution. Cette mthode peut s'apparenter l'anctre des bases de donnes, elle utilisait divers mthodes et tous les vnements, proprits et instructions recourant au DDE contenaient le mot cl "LINK" qui signifie "Liens" La communication s'tablissait entre un metteur appel "Client" et un rcepteur appel "Serveur" Pour ceux qui veulent tester cette mthode je vous donne la possibilit de tlcharger les fichiers de l'application "Client/Serveur" appele "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.dll pour pouvoir fonctionner. Disponible sur la plupart des sites qui traitent du Visual Basic (Sur le mien entreautre) Tlcharger WinLink Lorsque j'ai dmarr la programmation sous VB3.0 mon responsable de services m' a demand de raliser un programme devant stocker des donnes 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 raliser un programme devant stocker toutes les informations requises portes 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 dbutais)pour pouvoir le raliser. Deux sources de donnes ont t imbriques pour pouvoir traiter toutes les informations possibles qui ont t demandes et ceci sans aucun moteur de donnes, tout cela pour vous indiquer qu'il n'est pas indispensable d'utiliser les moteurs de bases de donnes existantes. Pour revenir nos moutons, Dfinissons les diffrentes technologies d'accs aux donnes. DDE Microsoft "Dynamic Data Exchange (voir expos ci-dessus) DAO - Data Access Object - Les objets d' accs aux donnes(DAO) ont t crs pour permettre aux programmeurs d'accder "Jet DataBase Engine, un moteur de base de donnes fourni avec Access. Tous les fichiers avec extension *.mdb sont issus de bases sous Access. ODBC - Open DataBase Connectivity (Connectivit des bases de donnes ouverte), a t conue pour permettre aux programmeurs de se connecter diverses bases de donnes. Cette BdD tait complexe d'utilisation et devenait un inconvnient pour la plupart des programmeurs. (depuis Visual basic3) RDO - Remote Data Objects (Objets de donnes distants) a t conu en partie pour rsoudre le problme de la complexit d'ODBC OLEDB - Est une technologie sous-jacente d' ADO ADO - Le dernier n de la mouture Visual basic a t conu pour combiner les fonctionnalits les plus performantes des technologies cites ci-dessus et pour rpondre aux besoins d'un nouveau type de programmation, notamment l'Internet.

Les programmeurs utilisant ce type de moteur pourront crer sans difficult et avec plus d'aisance les ralisation fonctionnant sous des bases de donnes. (Depuis Visual basic6) Pour ceux qui voudraient faire un essai sur les bases de donnes avec "ADO", je vous invite lire le Tutoriel 19 qui a pour titre : Accs aux bases de donnes "ADO" avec Visual Basic 6.0 ainsi qu'aux diffrents articles posts sur ce serveur et crits avec brio par des confrres issus de la programmation, vous en trouverez le descriptif sur le site "Dveloppez.com" Ce qui m'intresse finalement ce n'est pas de faire comme les dveloppeurs qui diffusent leurs ralisation, car la logique voudrait que je vous parle de la technique "ADO", mais comme beaucoup de programmeurs s'y intressent et que finalement vous tes en train d'apprendre programmer, je vous propose de travailler sur une source de donnes sans moteur existant ou ayant dj t publi. Cela sera certainement plus difficile pour vous, mais ne dit on pas que l'on apprend se former avec l'exprience des ans?, et puis, vous aller bnficier de mon exprience sans comme moi ramer si l'on peut dire et vous casser les dents comme cela m'est souvent arriv! Pour raliser le programme "FICHLOGI"1995 GilMirSoft nous avons besoin de connatre le fonctionnement des fichiers "MDI" aussi avant de nous attaquer cette super production du style "Mtro Goldwin Mayer", nous allons nous attaquer une petite ralisation qui est un gestionnaire d'icnes utilisant des fentres MDI. Aussi, je vous donne rendez-vous dans le prochain Tutoriel (29) dans lequel nous traiterons exclusivement des applications MDI En attendant, vous pouvez tlcharger le module exemple des applications MDI Bon 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 fentre de donnes. Lorsque l'utilisateur ouvre un nouveau fichier de donnes, le contenu vient prendre la place de la fentre prcdemment ouverte.(Style Bloc Notes que tout le monde connat) Interface multidocument(MDI) Une application MDI contient plusieurs fentres de donnes. Microsoft Word, par exemple, permet d'ouvrir autant de documents que l'on veut. Le code MDI de Word garantit que chaque document apparat dans sa propre fentre (voir figure cidessous) Dans cet exemple nous avons ouvert 4 feuilles sous Word. On passe d'une feuille l'autre en cliquant sur la fentre approprie ou en la slectionnant dans la barre de menu. Lorsque l'utilisateur bascule d'une feuille l'autre, la fentre slectionne reoit le focus et devient la feuille active. Le focus dans le cas d'une feuille a sa barre de titre marque par une couleur plus visible de nuance bleue. Le focus peut tre pass un objet par programme, grce la mthode suivante : Objet.SetFocus les proprits Enabled et Visible de l'objet doivent tre "True". Interface Explorateur On retrouve l'interface explorateur dans le cas des feuilles d'aide de Visual Basic et dans l'explorateur de

Windows. La feuille active est reprsente par deux fentres, l'une droite et l'autre gauche. La fentre de gauche affiche une vue dtaille des donnes dans la fentre de droite. Terminologie MDI Pour pouvoir exploiter correctement le mode MDI, vous devez en connatre la terminologie. La feuille principale qui sert de conteneur aux autres feuilles est souvent appele feuille Parent ou fentre Parent. dans notre projet nous l'appellerons frmParent Cette feuille contient toutes les autres feuilles qui seront cres et dont l'appellation sera feuille Fille ou fentre fille, dans notre projet nous l'appellerons frmChild Chaque document nouvellement cre s'ouvre dans une fentre fille l'intrieur d'une feuille parent. Les fentre filles ne peuvent pas sortir du cadre de la feuille parent. Techniquement parlant, la fentre fille se distingue d'une fentre classique par sa proprit MDIChild qui aura comme caractristique, la valeur True. Pour crer une application MDI, choisissez dans le menu Projet, ajoutez une feuilleMDI, aprs avoir cr la premire feuille (MDIForm) vous la renommez en frmParent, vous crez une seconde feuille l'aide de l'tiquette "Projet" ajoutez une feuille, (frm2) que vous renommez sous le nom de frmChild, puis dfinissez la valeur True la proprit MDIChild de la nouvelle feuille. Vous pouvez tlcharger l' exemple type d'une application MDI prte fonctionner. Tlchargement Vous avez appris dans mes prcdents Tutoriels raliser des menus l'aide du crateur de menu. Vous crez les menus correspondants la figure cicontre, savoir : Menu Fichier - Le menu Fichier contient trois sous menu intituls Ouvrir, Sauver et Quitter Menu Fentre, contient les sous menu Cascade et Mosaque et "?" contient l'tiquette A propos de...

Un projet MDI peut galement contenir des feuilles standard servant en particulier de bote de dialogue modales, car les feuilles secondaires ne peuvent pas tre affiches de manire modale. Pour les distinguer, Visual Basic affecte chacun de ces trois types de feuilles une icne spcifique dans leur barre de titre et dans l'explorateur de projets. Les applications MDI sont gnralement quipes d'une barre d'outils et d'une barre d'tat. Pour insrer des images ou des boutons dans une feuille MDI il faut obligatoirement insrer un objet image de type PictureBox et affecter la proprit Align la valeur 1-Align Top pour insrer la barre sur le haut de la feuille(barre d'outils) et la proprit 2 - Align Bottom pour insrer la barre dans le bas de la feuille(barre d'tat). Vous comprenez que pour installer deux barres dans la feuille MDI il faudra insrer deux objets PictureBox. La barre d'outils vient automatiquement s'insrer au dessous de la barre de titre qui est partie intgrante de la feuille Parent. A partir de ces deux barres prcdemment cites, nous pouvons construite l'arborescence des instructions de commande ncessaire l'organisation de notre application.

Pour vous aider comprendre les applications MDI, nous allons crire un projet de bloc notes qui ne demande pas normment d'criture de code et qui va nous permettre de vous familiariser avec la technique relative aux applications Multi Document Interface (MDI). L'application BlocNote Aprs avoir dzipp le fichier tlcharg, nous insrons dans la feuille frmParent deux objets PictureBox comme prcdemment expliqu en modifiant leurs proprits pour que l'affichage de ces nouvelles barres soient conforme la description indique. Dans la barre suprieure nous insrons trois boutons, le bouton "Ouvrir", le bouton "Sauver" et le bouton "Quitter". Nous insrons galement un contrle de botes de dialogue intitul CommonDialog que nous positionnons n'importe ou puisque l'utilisation il devient invisible. Nanmoins pour nous habituer cacher ce qui ne doit pas tre vu par l'utilisateur et uniquement par soucis pdagogique, je vous demanderai de le positionner l'intrieur de la barre d'outils nouvellement cre afin que ce contrle ne soit plus visible. Si ce contrle n'est pas charg dans votre bote outils, il faut aller le chercher depuis le gnrateur de programme(VB) et charger comme dj expliqu dans des leons prcdentes le fichier Comdlg32.ocx qui se trouve dans le rpertoire de Windows\system de votre systme d'exploitation. Voici un aperu de l'application qui a t rduite sa plus simple expression pour des raisons d'espaces mmoire. Nous visualisons dans la barre de menu les tiquettes Fichier, Fentre 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 insr un Label et inscrit une annotation qui peut ventuellement contenir votre Copyright ainsi que votre nom. Pour votre information, les proprits de la "Form" frmParent que j'ai ralis ont les valeurs suivantes : Height : 7215 Width : 10350 Vous constatez que cela ne correspond pas l'image qui est affiche ci-dessus, vous de prsenter votre interface en fonction de vos aptitudes cratrices, n'oublions pas que Visual Basic est aussi un environnement graphique et que la prsentation des programmes est fonction du bon vouloir du programmeur que vous tes. Voici la saisie du code insrer dans l'application Voici le code insrer dans la fentre frm Parent A l'emplacement "Gnral" "Dclarations" Dim FenetreMDI As Form ' Private Sub butOuvrir_Click( ) 'Dfinitions des proprits de al bote de dialogue CMDialog1.DialogTitle = "Choisissez un fichier"

CMDialog1.CancelError = True CMDialog1.Filter = True CMDialog1.Filter = "Fichiers Textes(*.txt)" CMDialog1.FilterIndex = 1 CMDialog1.InitDir = "C:\" ' 'Dfinition de la routine de renvoi d'erreur On Error GoTo ExitbutOuvrir 'Affichage de la bote de dialogue CMDialog1.ShowOpen 'Ouverture du fichier slectionn Set FenetreMDI = New frmChild FenetreMDI.Show FenetreMDI.Width = 5000 FenetreMDI.Height = 5800 crlf = Chr$(13) + Chr$(10) Open CMDialog1.FileName For Input As #1 Line Input #1, texte lire = texte While Not EOF(1) Line Input #1, texte lire = lire + crlf + texte Wend FenetreMDI.Text1.Text = lire FenetreMDI.Caption = CMDialog1.FileName Close #1 Exit Sub ExitbutOuvrir: 'Sortie sans provoquer d'erreur End Sub ' Private Sub butQuitter_Click( ) 'Fermer toutes les feuilles et quitter le programme T$ = "Attention" M$ = "Voulez vous vraiment quitter le programme ?" Reponse% = MsgBox(M$, 4 + 32, T$) If Reponse% = 6 Then 'Sortir du programme End End If End Sub ' Private Sub butSauver_Click( ) 'Dfinition des proprits de la bote dedialogue CMDialog1.DialogTitle = "Enregistrer le fichier sous..." CMDialog1.CancelError = True CMDialog1.Filter = "txt (*.TXT | (*.TXT)" CMDialog1.FilterIndex = 1 CMDialog1.InitDir = "C:\"

CMDialog1.FileName = "Saver.txt" ' 'Dfinition de la routine de traitement des erreurs On Error GoTo ExitSaveFile 'Affichage de la bote de dialogue CMDialog1.ShowSave ' 'Sauvegarde du fichier Open CMDialog1.FileName For Output As #1 Print #1, FenetreMDI.Text1.Text Close #1 Exit Sub ExitSaveFile: 'Sortie sans provoquer d'erreurs End Sub ' Private Sub MDIForm_Load( ) 'Centrer la feuille l'cran CenterForm Me End Sub ' Private Sub mnu_About_Click( ) frmAbout.Show 1 End Sub ' Private Sub mnu_Cascade_Click( ) frmParent.Arrange vbCascade End Sub ' Private Sub mnu_Mosaique_Click( ) frmParent.Arrange vbTileVertical End Sub ' Private Sub mnu_Ouvrir_Click( ) butOuvrir_Click End Sub ' Private Sub mnu_Quitter_Click( ) butQuitter_Click End Sub ' Private Sub mnu_Sauver_Click( ) butSauver_Click End Nous crons un module et saisissons la formule de centrage de feuilles prcdemment dcrites dans d'autres Tutoriels Sub CenterForm(frm As Form)

'Centre la feuille l'cran frm.Left = (Screen.Width - frm.Width) / 2 frm.Top = (Screen.Height - frm.Height) / 2 End Sub Voici les objets insrer dans la fentre Fille La fentre fille ne contient rien de particulier si ce n'est qu'un objet Texte qui aura comme proprit Name Text1. L'application est termine, vous pouvez si vous le souhaitez, tlcharger le fichier excutable du programme compil BlocNote.exe - Tlcharger. Vous pouvez bien sur amliorer ce programme qui est libre de droits et qui vous est offert par votre serviteur en esprant que vous apprciez les concepts que je dveloppe pour vous. Prochain Tutoriel : La super production que je vous ai promise, vos claviers et prparez 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 proprit "Attributs de fontes" mais ce n'est pas l'expression que je recherchais, aussi nous allons nous contenter des proprits 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 caractristiques possdent 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 possdent l'Attribut cach et que notre programme veuille modifier les caractristiques de ce type de fichier. Cela ne fonctionnera pas et risque d'engendrer une erreur fatale avec l'explication affiche dans une fentre de texte du genre, erreur caractristique N xx. Nous ne sommes pas plus avanc et pour solutionner notre problme nous devons avant de pouvoir modifier le fichier transformer l'attribut en lui donnant par exemple l'attribut "lecture simple", excuter 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 exprience en crant un condens de l'application "Savereg" 2000 GilMirSoft Dveloppement Vous pouvez tlcharger le projet ici Tlcharger Disk1.zip et Disk2.zip (1.337Ko 1.088Ko) Dans ce projet, nous voulons rcuprer des fichiers sensibles pour les mettre dans un lieu sur connu de nous mme pour pouvoir en cas de problme grave craser les fichiers existants qui ont ts endommags par une mauvaise manipulation ou peut tre par un virus. Vous comprenez que cette opration ne peut tre envisage par une entit humaine qui voudrait triturer la base de registre sana avoir l'exprience requise en la matire et qui au lieu de dpanner sa machine risquerait au contraire d'aggraver les problmes existants au risque de la rendre irrparable (j'exagre un peu). Nous allons passer sur l'criture de l'initialisation des paramtres du PC de l'utilisateur qui a fait l'objet d'un prcdent Tutoriel.

Quels sont les fichiers qui peuvent nous intresser ? (Si j'en oublie, vous pouvez les ajouter) Autoexec.bat, Config.sys, Bootlog.txt, Win.ini, System.ini, User.dat, System.dat IMPORTANT Je vous conseille avant de manipuler ces fichiers de les sauvegarder dans un rpertoire nouvellement cr la racine du DOS. Exemple : C:\FilesSystem\Fichiers sauvegarder(voir liste) En ce qui concerne la modification d'attributs systme seul deux fichiers sont protgs 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 gnrateur de programme la dclaration "Option Explicit" ce qui nous oblige dclarer toute procdure nouvellement cre. Pour simplifier, je n'affiche pas les dclarations de procdures dans les instructions ou fonctions car elles ont ts dclars dans un module Global. Si vous ne prenez pas la peine de les dclarer Globalement VB va engendrer un erreur et va vous demander de dclarer toute nouvelle procdure. Pour les initis, je pense que je n'avais pas besoin de le leur dire, dsol, mais...pour le cas ou ! Synoptique de l'ordinogramme Contrler si les fichiers qui nous intressent existes Dsactiver l'attribut "Lecture seule" Excuter les instructions recherches Ractiver l'attribut "Lecture seule" Sauvegarder les modifications Ecriture du code Private Sub SSCommand1_Click ( ) 'Bouton de commande Dim FileExist As String ' On Error GoTo FileNotExist 'Si erreur sortie discrte sans provoquer d'erreur FileExist = "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 procdure Else 'Il existe, alors...instructions suivantes 'Pour la forme 'msg = "OK" 'MsgBox msg End If Nous crirons exactement les mmes routines pour les autres fichiers savoir que certains fichiers se trouvent dans le rpertoire de Windows et qu'il faudra afficher le chemin complet. Lorsque vous avez crit toutes les routines affrentes aux fichiers recherchs, vous saisissez la routine d'erreur suivante: FileNotExist : 'Instructions msg = "La sauvegarde des fichiers systmes est impossible, dsol !" MsgBox msg, vbExclamation, Title$ End sub

Sauvegarde des fichiers systemes Private Sub SSCommand5_Click( ) ' Dim MyPath As String Dim MyName As String Dim Reponse As Integer Dim A As String Dim B As String ' 'Controle de l' existance du rpertoire de sauvegarde Title$ = "Restauration des fichiers systmes" msg = "Voulez-vous vraiment restaurer le systme ?" Reponse% = MsgBox(msg, vbYesNo, Title$) If Reponse% = 7 Then msg = "La sauvegarde a t annule!" MsgBox msg, vbExclamation, Title$ 'L'utilisateur a rpondu "Non" alors sortie! Exit Sub End If 'L' utilisateur a rpondu "Oui" 'Avant de sauvegarder le systme contrler si le rpertoire existe MyPath = "C:\windows\filesystem" If (MyName = Dir(MyPath, vbDirectory)) = vbEmpty Then 'On teste l' existance du rpertoire, il existe alors... Frame1.Caption = "Restore Files System" List1.Visible = True List1.AddItem "Restauration des fichiers du registre systme! Veuillez patienter SVP!" MousePointer = 11 Le systme affiche une ProgressBar (qui fera l'objet d'un prochain Tutoriel) '============ Restauration du systeme ================================ 'Rcuprer et transfrer les fichiers dans le rpertoire 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 A = "c:\windows\filesystem\system.ini" B = "c:\windows\system.ini"

FileCopy A, B ' 'Dsactiver les attributs systmes ModifAttribMoins A = "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 ' 'Ractiver les attributs systmes ModifAttribPlus ' '============ Fin de la Restauration ================================= Title$ = "Restauration des fichiers systmes" msg = "La restauration de la base de registre s' est bien droule!" MsgBox msg, vbOKOnly, Title$ EradicationPicture Frame1.Caption = "Description" MousePointer = 0 End If End Sub '====== Nous crons les procdures de modifications d'attributs system insrs dans un module === Dsactivation des attributs systmes Sub ModifAttribMoins( ) Dim MyFile As String ' MyFile = "c:\windows\system.dat" If Dir(MyFile, vbNormal Or vbReadOnly Or vbHidden Or vbSystem Or vbArchive) = "" Then Call MsgBox("Erreur, dsol! Le fichier de sauvegarde n' existe pas!") Exit Sub Else 'Le fichier existe, Affiche l'attibut fichier cach MyFile = GetAttr("c:\windows\system.dat") NomProg.Label7.Caption = MyFile ' 'Modifier l' attribut systme MyFile = "c:\windows\system.dat" SetAttr MyFile, vbNormal MyFile = GetAttr("c:\windows\system.dat") NomProg.Label7.Caption = MyFile End If ' MyFile = "c:\windows\user.dat" If Dir(MyFile, vbNormal Or vbReadOnly Or vbHidden Or vbSystem Or vbArchive) = ""

Then Call MsgBox("Erreur, dsol! Le fichier de sauvegarde n' existe pas!") Exit Sub Else 'Le fichier existe, Affiche l'attibut fichier cach MyFile = GetAttr("c:\windows\user.dat") NomProg..Label7.Caption = MyFile ' 'Modifier l' attribut systme MyFile = "c:\windows\user.dat" SetAttr MyFile, vbNormal 'Afficher nouveau pour contrle! MyFile = GetAttr("c:\windows\user.dat") NomProg.Label7.Caption = MyFile End If End Sub Ractivation des attributs systmes 'Il suffit simplement de faire l'opration l'envert Sub ModifAttribPlus( ) Dim MyFile As String ' MyFile = "c:\windows\system.dat" If Dir(MyFile, vbNormal Or vbReadOnly Or vbHidden Or vbSystem Or vbArchive) = "" Then Call MsgBox("Erreur, dsol! Le fichier de sauvegarde n' existe pas!") Exit Sub Else 'Le fichier existe, Affiche l'attibut! MyFile = GetAttr("c:\windows\system.dat") NomProg.Label7.Caption = MyFile ' 'Modifier l' attribut systme en fichier cach et en lecture seule MyFile = "c:\windows\system.dat" SetAttr MyFile, vbHidden + vbReadOnly 'Afficher nouveau pour contrle MyFile = GetAttr("c:\windows\system.dat") NomProg.Label7.Caption = MyFile End If ' MyFile = "c:\windows\user.dat" If Dir(MyFile, vbNormal Or vbReadOnly Or vbHidden Or vbSystem Or vbArchive) = "" Then Call MsgBox("Erreur, dsol! Le fichier de sauvegarde n' existe pas!") Exit Sub Else 'Le fichier existe, Affiche l'attibut ! MyFile = GetAttr("c:\windows\user.dat") NomProg.Label7.Caption = MyFile '

'Modifier l' attribut systme en fichier cach et en lecture seule MyFile = "c:\windows\user.dat" SetAttr MyFile, vbHidden + vbReadOnly 'Afficher nouveau pour contrle MyFile = GetAttr("c:\windows\user.dat") NomProg.Label7.Caption = MyFile End If End 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 raliser "Fichlogi" vu que c'est une double base de donnes imbrique qui me demanderait un temps assez important pour vous la prsenter. Je vous propose la place "VidoK7" qui est une base de donne sans fichiers externe comme Fichlogi qui est plus simple raliser mais qui vous donnera les bases ncessaires la ralisation d'autres projets btis sur cette structure qui a dj fait ses preuves et qui est fonctionnelle. A vous de modifier la prsentation en fonction de vos aptitudes cratrices. je ne me suis pas appliqu raliser une interface plus innovante elle est sobre comme un peu toutes les applications professionnelles vous de me proposer votre interface que nous intgrerons au projet en cours. VideoK7 est une application qui vous permettra de stocker et de classer vos Cassettes VIDEO de les trier, c'est une vritable base de donnes qui doit vous satisfaire quant son utilisation. Elle se compose de : 1 rpertoire Datas qui comprend 22 fichiers crs par l'application elle mme. 37 fichiers dont deux ou trois seront crs par le programme 1 fichier excutable VideoK7.exe 1 fichier d'installation Vous pouvez tlcharger le prototype pour vous donner une ide de votre future ralisation Tlcharger Permettez moi de vous signaler que cette application dans sa pleine fonctionnalit ncessite des fichiers annexes que vous n'avez pas tlchargs, ce qui se traduit par une erreur lorsque vous appuyez sur certains boutons. Dans l'application que vous allez raliser ces petits dysfonctionnements n'apparatrons pas. Ce n'est que pour vous donner une ide et une approche de la ralisation envisage que je vous offre de tlcharger une esquisse de votre prochain programme. Vous pouvez dj essayer de construire votre propre interface peut tre plus conviviale, mais je sais que les jeunes ont des ides et aussi du talent. Projet de ralisation d'une application MDI relatif un programme de gestion de produits Multimdia. Ce projet sous forme de base de donnes sera crit sans l'aide de contrle VB (BdD)existant et sera assez puissant pour enregistrer une centaine de feuille dans chaque rubrique cre, ce qui reprsentera la somme d'un millier de feuilles pouvant tre ralis par cette application. Ce projet pourra tre paramtrable par chaque utilisateur qui pourra le modifier en fonction de la finalit qu'il souhaite donner sa ralisation. 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 proprit Caption de l'tiquette n'a aucune relation avec l'criture du code. Dans ce programme, vous apprendrez : 1) - A crer une feuille qui efface les bases de donnes et leurs descriptions 2) - A crer une feuille qui ouvre les bases de donnes (nous utiliserons le contrle MS CommonDialog) 3) - A centrer une feuille l'cran 4) - A rcuprer un type de fichier dans une liste 5) - A limiter l'ouverture 5 "Feuilles" dans les fichiers MDI ( pour limiter l'espace mmoire) 6) - A crer des Fentres Filles (Child) et programmer des "Spin Buttons" 7) - A naviguer dans la base de donnes l'aide d' un bouton ou d'un un ascenseur 8) - A crer des listes et les paramtrer 9) - A utiliser le contrle MCI pour utiliser des fichiers sons. (images en option) 10) - A crer un moteur de recherche incrust dans la base 11) - A utiliser les barres de dfilement verticalement ou horizontalement(les paramtrer) 12) - A modifier le pointeur de la souris 13) - A afficher des statistiques concernant certains produits 14) - Utiliser une liste modifiable 15) - viter la sortie d'un programme et bloquer en ouverture certaine feuilles 16) - Utiliser certaines instructions de messages d'erreur 17) - Modifier les lments d'une feuille la fermeture ou l'ouverture 18) - Ranger les feuilles en diffrentes positions ainsi que les icnes 19) - Crer un interface de cration de listes et des fichiers ncessaires au stockage de nos donnes 20) - Crer un fichier source qui dfinira la structure de notre base de donnes 21) - Nous apprendrons galement utiliser les feuilles de messagerie interconnects avec des paragraphes de textes insrs dans une liste. 22) - Vous apprendrez galement utiliser les fonctions d 'empaquetage de VB afin de crer un programme excutable. 23) - Quels sont les contrles que nous allons utiliser ? Les contrles Threed32.ocx, Spin32.ocx, Mci32.ocx. Je pense que vous devez tous possder ces contrles qui sont en principe livrs avec VB6.0 24) - Le programme "VideoK7" vous est propos titre pdagogique, 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 dcid ? nous pouvons commencer aiguiser nos mninges
Page prcdente

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

Premire partie Exercice N1 Nous allons travailler sur une application "MDI", (Multi Document Interface) Pour les nophytes ce type d' application est une reprsentation de la plupart des programmes de Microsoft, comme par exemple, Word, Excel, FrontPage, etc... C'est une document dans un autre document qui sert de conteneur, avec de multiples possibilits que nous allons essayer de vous faire dcouvrir. Chaque feuille contient de nombreuses explications qui devraient en principe vous faire comprendre la finalit des paramtres employs dans la saisie du code. Nanmoins vous pouvez demander de plus amples explications si vous le souhaitez. Comment crer une feuille "MDI" ? Lancez Visual Basic qui cre automatiquement un projet ainsi qu' une "Form" associe. Une fois le projet affich, cliquez dans le menu "Projet" et cliquez sur l' tiquette "Ajoutez une feuille MDI" Le programme la rpertorie sous le nom de MDIForm1. Cliquez sur la feuille "Form1" et dans la feuille des proprits recherchez l' tiquette MDIChild et modifiez sa proprit avec la valeur "True". Saisissez le code insrer dans la feuille Form_Load, puis passez en mode "Excution" pour contrler 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 proprits Name de chaque feuille en consquence. frmParent(frmParent.frm) frmChild(frmChild.frm) Dans la proprit "Form_Load" de la feuille "frmParent" nous crivons : Private Sub MDIForm_Load() Form1.Show End Sub Passons la cration de l' interface graphique de la feuille frmParent.

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 deuxime Panel.(non reprsents sur ce clich) Le troisime Panel comprend deux boutons, ainsi que deux "Label" reprsents 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 lment positionnable dans cette feuille. Attention dans ce type d' application, le Panel principal que vous devez insrer est une "PictureBox" dans laquelle vous allez pouvoir loger des "Frames" ou bien des "Panels", au choix en fonction de vos

possibilits. Insrez une "PictureBox" pour le haut de la feuille et une deuxime "PictureBox" pour afficher les informations de bas de feuille. La premire "PictureBox" aura dans la proprit "Align", la valeur : 1 Align Top La deuxime aura dans la proprit "Align", la valeur 2 Align Bottom Passons la cration de l' interface graphique de la feuille frmChild.

Voici le clich de l' interface graphique de la feuille frmChild(feuill e Fille) Les lments positionns sont issus du contrle "Threed.ocx" et "Spin.ocx" Si vous ne les possdez pas, nous verrons ultrieurement comment les remplacer.

La premire des choses faire est de raliser la ligne de menus l' aide de l'outils de cration de menus que nous avons tudi dans les leons prcdentes.(Voir nos Tutoriels) Ensuite crer les lments graphiques l' aide des outils que nous avons notre disposition, savoir : Pour ceux qui possdent le contrle "Threed.ocx" Utiliser l' objet "Panel" pour appliquer les panneaux devant supporter les diffrents objets graphiques. Pour les autres : Utiliser l' objet "Frame" qui nous servira de Panel ou l' objet "PictureBox" En dehors de la Frame indique "Gestion de bases de donne", les autres Frames ne comprendrons pas de proprit "Caption".(Les Panels galement) Les boutons de dimensions "375x375" ne comprendrons pas d' images, sauf pour ceux qui possdent le contrle "Threed.ocx". Les 5 boutons "Spins" seront remplacs ultrieurement 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 problmes. Rcapitulation des objets insrer pour composer l' interface graphique qui sera la page d' accueil de votre application, soignez la, car elle reprsente le premier lment que va dcouvrir l' utilisateur ds

qu'il aura lanc votre programme. Si je n' en ai pas oubli, nous avons positionn sur l' interface : 5 Panels(ou Frames) 11 Boutons 11 Labels 1 Label (Le zro est un Label) 7 TextBox 1 Label (Fichiers de sons) 1 ComboBox 1 ScrollBar (position verticale) 5 Spins (ou ScrollBar) Lorsque tout est positionn, nous utilisons la proprit "Verrouiller les contrles" 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 procdure (l'installer dans un module) 'Centrage de la feuille Sub Form_Load ( ) CenterForm Me End Sub
Page prcdente

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 contrle "Threed.ocx", de gauche droite nous apercevons les Panels positionns sous les boutons, j' ai expressment 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 tlcharger si vous souhaitez les utiliser. Tlcharger les images pour construire VidoK7 Dans le cas contraire, vous pouvez positionner les images de votre choix. ou copier les images partir de cette planche. ou tlcharger la collection d'images du programme. Nous allons codifier les feuilles dj 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" Nous avons cr dans cette tiquette 4 procdures qui sont : 1) - Crer une base de donnes (mnu_MakeFile) 2) - Supprimer une base de donnes (mnu_DelFile) 3) - Ouvrir (mnu_FileOpen) 4) - Quitter (mnu_Exit)

Codification de ces procdures :


Crer une base de donnes Private Sub mnu_MakeFile_Click( ) 'Cre une base de donnes de films vido frmMakeFile.Show 1 End Sub Supprimer une base de donnes Private Sub mnu_DelFile_Click( ) 'Efface base de donnes frmDelFile.Show 1 End Sub Ouvrir Private Sub mnu_FileOpen_Click( ) 'Dialogue d'ouverture de fichiers graphiques afficher frmFileOpen.Show 1 End Sub Quitter Private Sub mnu_Exit_Click( ) Titre = "Attention" Message = "Souhaitez vous quitter Video_K7 ?" Reponse = MsgBox(Message, 32 + 4, Titre) If Reponse = 6 Then End End Sub Etiquette AIDE Nous avons cr dans cette tiquette 2 procdures qui sont : 1) - Aide la cration (mnu_Aide1) 2) - Aide la saisie (mnu_Aide2 Aide la cration Private Sub mnu_Aide1_Click( ) 'Appel de la feuille d' aide par la procdure "FileMsg" FileMsg "FileMsg.txt", 1

End Sub Aide la saisie Private Sub mnu_Aide2_Click( ) 'Appel de la feuille d' aide par la procdure "FileMsg" FileMsg "FileMsg.txt", 2 End Sub Etiquette INFOS Nous avons cr dans cette tiquette 2 procdures qui sont : 1) - Infos gnrales (mnu_Infos) 2) - A propos de... (mnu_About) Infos gnrales Private Sub mnu_Infos_Click( ) 'Appel de la feuille d' aide par la procdure "FileMsg" FileMsg "FileMsg.txt", 4 End Sub A propos de... Private Sub mnu_About_Click( ) 'Appel de la feuille About par la Mthode Show frmAbout.Show 1 End Sub Codifier les InfosBulles Dans le premier Panel nous trouvons 3 boutons, savoir : 1) - Cration d'une base de donnes 2) - Ouvrir une base de donnes 3) - Dtruire une base de donnes Avant de coder ces procdure puisque les particularits de Visual Basic 6.0 nous permettent d' installer des "Infos Bulles", pourquoi s' en priver ? Dans la feuille de proprits du premier bouton et l' tiquette, "ToolTypText", nous crivons : Cration d' une base de donnes Dans le deuxime bouton, nous crivons : Ouvrir une base de donnes Dans le troisime bouton : Dtruire une base de donnes Vous pouvez renseigner les infos bulles de tous les objets qui engendrent des vnements provoqus par l' utilisateur.

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 proprits, 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 reconnatre si nous avons rechercher une procdure distincte. Modifiez la proprit de chaque objet comme suit : (faire et dfaire, c'est toujours programmer) Private Sub SSCommand1_Click( ) devient : cmdCreat 'Crer une base de donnes frmMakeFile.Show 1 End Sub Private Sub SSCommand2_Click( ) devient : cmdOpen 'Ouvrir une base de donnes mnu_FileOpen_Click End Sub Private Sub SSCommand3_Click( ) devient : cmdErase 'Efface base de donnes frmDelFile.Show 1 End Sub Saisie du code des Objets boutons issus de La feuille frmParent, deuxime Panel : Private Sub SSCommand4_Click( ) devient : cmdCascade 'Fentres superposes et dcales frmParent.Arrange 0 End Sub Private Sub SSCommand5_Click( ) devient : cmdHorTile 'Fentres en mosaque verticale frmParent.Arrange 2 End Sub Private Sub SSCommand6_Click( ) devient : cmdTile 'Fentres en mosaque verticale frmParent.Arrange 1 End Sub Private Sub SSCommand7_Click( ) devient : cmdIconArrange 'Arrange les icnes frmParent.Arrange 3 End Sub

Private Sub SSCommand8_Click( ) devient : cmdClose 'Appelle la procdure de fermeture de toutes les fentres filles CloseAll End Sub Saisie du code des Objets boutons issus de La feuille frmParent, troisime Panel : Le premier Panel aura comme valeur de proporits : Name : Panel3d8 Caption : 00:00:00 Le second Panel aura comme valeur de proprits : Name : Panel3d4 Caption : 00/00/0000 ' Premier bouton Ce bouton permet d' afficher ou de masquer par sa proprit "Visible" le Panel qui indique l'heure Les Panels incrusts dans le Panel principal devront tre renomms, nous lui donnerons comme proprits : Private Sub SSCommand9_Click( ) devient : cmdTime If Indicateur = 0 Then Panel3d9.Visible = True Indicateur = 1 Else Panel3d9.Visible = False Indicateur = 0 End If End Sub Deuxime bouton : Private Sub SSCommand10_Click( ) devient : cmdHelp 'Info mnu_Infos_Click End Sub Pour ne pas engendrer des erreurs, nous allons tlcharger le fichier texte insrer dans le rpertoire de travail de Vidok7, ainsi que le module ncessaire l' affichage de ce fichier par Visual Basic. Tlcharger les fichiers Ecriture de la procdure Form_Load dans le fichier MDI Private Sub MDIForm_Load( ) 'Ajuster le pointeur de souris Screen.MousePointer = 0 'Rpertoire de travail = rpertoire 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

Panel3d9.Caption = Time Panel3d4.Caption = Date 'Initialise base de donnes et descriptifs InitFiles End Sub Attention, le fait d' avoir renomm les objets sus indiqu a transfr toutes les procdures dans la fentre "Gnral - Dclarations" de la feuille "frmParent", vous devez les liminer imprativement. Cela mettra un peu d' ordre dans notre projet, liminons les procdures superflues.

Voici ce que vous devez avoir dans la feuille "frmParent" et dans la procdure "Dclarations"

A ce stade de l' volution de votre projet, si vous cliquez sur un objet alors que celui-ci contient une procdure qui engendre un vnement qui ne pointe sur rien gnrera automatiquement une erreur. Vous pouvez titre pdagogique insrer 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 mne sur le chemin du savoir et de la connaissance.

Dans la prochaine leon, nous crirons le code d' action de la feuille "frmMakeFile"