Académique Documents
Professionnel Documents
Culture Documents
Cours VB Net2
Cours VB Net2
-3-
Espace de travail VB Bote outils (Toolbox) (non active = barre grise) Explorateur de solution
Pr-requis : Ce tutorial suppose que vous soyez familier avec un langage structur de programmation (comme le Pascal). Certains concepts seront cependant, brivement rappels.
-4-
Contenu de ce tutorial: Ce tutorial vous prsente Visual Basic (VB) .NET de manire succincte. Il vous introduit la programmation multi-fentre sous MS Windows en vous exposant les outils de base de VB. Il vous introduit la programmation de bases de donne.
Limites de ce tutorial: Ce tutorial nest pas un manuel de rfrence VB .NET. Pour des fonctionnalits plus avances, rfrez vous dautres ressources, notamment des sites Web sur internet traitant de VB .NET.
Plan de travail Le tutorial est compos six parties qui peuvent tre tudies en six (semaines) sances. A chacune de ces parties correspond une srie dexercices, quil faut raliser et bien assimiler avant de passer la partie suivante. Chaque partie ncessite approximativement deux heures de travail sur un ordinateur, pendant lesquelles vous devez raliser les exercices correspondants. Pour chaque partie, avant de travailler sur un ordinateur, vous devez bien lire les sections correspondantes et essayer de bien comprendre les programmes qui y sont prsents. Partie 1 : Sections 1 et 2. Introduction VB .NET et lenvironnement de dveloppement VB .NET Vous introduit lenvironnement de travail de VB .NET et la programmation avec VB .NET. Partie 2 : Section 3. Les contrles (toutes les sous-sections jusqu la sous-section 3.2.7) Vous introduit la programmation des contrles Label, TextBox, RadioButton, CheckBouton et GroupBox. Partie 3 : Section 3. Les contrles (toutes les sous-sections jusqu la sous-section 3.2.14) Vous introduit la programmation des contrles utilisant des listes : ListBox, ComboBox et Menu. Partie 4 : Section 4. Cration de bases de donnes Vous introduit aux bases de donnes avec Microsoft Access
-5-
Dans cette section nous allons prsenter les structures de base de la programmation en VB. Nous allons dabord prsenter la notion de variable, les diffrents types standards, les oprateurs arithmtiques, les structures usuelles: structures de contrles (Instructions conditionnelles et rptitives), les structures de donnes labores (vecteurs et matrices) et finalement, les procdures et les fonctions. Quelques remarques prliminaires : Cette premire section prsente les structures thoriques de VB. Il est conseill de la parcourir une premire fois (sans trop insister) pour avoir une ide des structures de base de VB. Au fur et mesure que vous avancerez dans le cours, vous devez y revenir pour approfondir la partie qui vous intresse. Votre application VB sera compose dun ou plusieurs fichiers (formulaires et modules) contenant du code VB. Il nexiste pas de sparateurs dinstructions en VB (comme le ; en Pascal ou en C et le . en Cobol). VB ne fait pas de distinction entre les minuscules et les majuscules. Ainsi, ValeurVariable et vALEURvARIABLE reprsentent la mme variable. En fait, VB est trs intelligent, en ce sens quil vous rcrira (automatiquement) la variable dans le format de caractres que vous avez utilis lors de sa dclaration.
Pour la lisibilit du code, on peut ajouter un commentaire aprs une apostrophe ( ) Exemple
Dim Taux As Single Dim Rponse As String Ceci est un commentaire Taux de la TVA Mot propos par le joueur
Par dfaut, le compilateur VB considre que toute variable qui apparat doit avoir t dclare. Toutefois, si vous ajoutez dans votre code la ligne
Option Explicit Off
-6-
VB sera permissif et vous autorisera utiliser des variables sans les dclarer. Prenez la trs bonne habitude de toujours dclarer vos variables. Pour viter tout problme il est prfrable dinitialiser les variables dclares. Exemples
Compteur = 0 Taux = 21 = est le symbole daffectation en VB
Le langage VB utilise plusieurs types de donnes dont les plus utiliss sont le type String (chane de caractres), le type Integer (entier) et le type Single (dcimal). Les types standards de donnes en VB sont rsums dans le tableau ci-dessous. Types standards de donnes Oprateur
Integer Single
Plage de valeurs Nombres entiers de 32 768 +32 767 Nombres rels avec prcision de sept dcimales Valeurs ngatives : de 3,402823E38 1,401298E-45 Valeurs positives: de 1,401298E-45 3,402823E38 Chane de caractres pouvant aller jusqu' 65535 caractres (environ 2 milliards si la longueur est variable) Nombres entiers de 2 147 483 648 +2 147 483 647 Nombres rels avec prcision de seize dcimales Valeurs ngatives : De 1,79769313486232E308 4,94065641247E-324 Valeurs positives: De 4,94065641247E-324 1,79769313486232E308 Nombres entiers de 0 255 Vrai ou faux (valeur logique) De 1/1/100 31/12/9999 Nombres entiers de 922337203685477,5808 922337203685477,5808
Dclaration et affectation
Dim Nb As Integer Nb = 100 Dim Mt As Single Mt = 45.11
String
Dim as String Prnom = Jean Dim Profit As Long Profit = 123 465 789 Dim DblPrec As Double Mt = 1.23456789012
Long Double
Dim BitPattern As Byte BitPattern = 128 Dim Test As Boolean Trouv = True Dim JourPlus As Date JourPlus = 06/06/44 Dim Valeur As Currency
1.1.2 Oprateurs arithmtiques VB reconnat les oprateurs arithmtiques usuels qui sont rsums dans le tableau suivant :
-7-
Oprateurs arithmtiques Oprateur +, * / ^ \ MOD Description Addition et soustraction Multiplication Division dcimale Puissance Division entire Modulo (reste de la division entire) Exemples 12 + 34; 87.56 387.222 45.87 * 4 36 / 25 = 1.44 5 ^ 3 =125 36 \ 25 = 1 36 MOD 25 = 11
Si, dans une expression arithmtique plusieurs oprateurs sont utiliss, les priorits sont rsolues comme indiqu dans le tableau qui suit : Priorit des oprateurs arithmtiques Oprateur ( ) ^ *,/ \ MOD +, Description Parenthses Puissance Ngation Multiplication et division Division entire Modulo Addition et soustraction Priorit 1 2 3 4 5 6 7
-8-
Exemple
If Moyenne >= 12 Then Admis = Admis + 1 MsgBox(" Candidat admis ") Else Ajourns = Ajourns + 1 MsgBox(" Candidat ajourn ") End If affiche une fentre avec le message indiqu
Exemple
If NombrePropos > NombreATrouver Then MsgBox("Votre nombre est trop grand !") ElseIf NombrePropos < NombreATrouver Then MsgBox("Votre nombre est trop petit !") Else MsgBox("Gagn !") End If
Oprateurs de comparaison Oprateur = > < <> >= <= Signification Egal Suprieur Infrieur Diffrent de Suprieur ou gale Infrieur ou gal Exemple 15 = 11 + 4 17 > 11 17 < 11 23 <> 23.1 23 >= 23.1 23 <= 23.1 Rsultat True True False True False True
Si plusieurs conditions doivent tre testes, celles-ci doivent tre combines avec des oprateurs logiques. VB accepte les oprateurs logiques suivants: AND, OR, NOT et XOR. La signification de chacun deux est prsente dans le tableau qui suit: Oprateurs logiques Oprateur AND Signification Connexion ET. Il faut que les conditions soient vraies pour que le rsultat soit vrai
-9-
OR NOT XOR
Connexion OU. Il faut que lune des deux ( 1 = 2) OR (3 < 2) conditions soit vraie pour que le rsultat soit vrai ( 1 > 2) OR (2 > 1) Connexion NON. La valeur logique est inverse EstCeVrai = True NOT EstCeVrai Connexion OU exclusif. Une seule des deux ( 1 = 1) XOR (2 = 2) conditions doit tre vraie pour que le rsultat soit ( 2 > 1) XOR (3 < 1) vrai
1.2.2 IIf (Condition, ValeurSiVrai, ValeurSiFaux) Cette instruction (IIF) fonctionne comme le IF d'EXCEL. Syntaxe
IIf (Condition, ValeurSiVrai, ValeurSiFaux)
Exemple
Dim Note As Single Dim Rponse As String Note = InputBox (" Tapez votre note ") Rponse = IIf (Note >= 10, " Admis ", " Ajourn ") MsgBox (Rponse)
1.2.3 Select case Case Case Else Case End Select Linstruction Select Case est une instruction conditionnelle alternative, cest--dire quune expression peut tre teste par rapport plusieurs valeurs possibles. Syntaxe
Select Case expression Case Liste_Valeurs_1 Instruction11 Instruction12 Case Liste_Valeurs_2 Instruction21 Else Case InstructionElse1 InstructionElse2 End Select
Les instructions se trouvant aprs Case Liste_Valeurs_i seront excutes si expression = lun des lments de Liste_Valeurs_i, i = 1, 2, 3, . Sinon, les instructions se trouvant aprs Else Case seront excutes. Liste_Valeurs_i peut tre : une suite de valeurs : 1, 3, 5, 7, 9 une fourchette de valeur : 0 To 9 une plage de valeur : Is >= 10
Exemple
Select Case CodeASCIICaractre Case 65, 69, 73, 79, 85 MsgBox(" Cest une voyelle ") Case 66 To 90 MsgBox(" Cest une consonne ") Case Else MsgBox(" Ce nest pas une lettre ") End Select
Notez que Liste_Valeurs_i peut tre une combinaison de listes de valeurs comme dans le cas des exemples suivants :
Case 1 To 4, 7 To 9, 11, 13, Is > NombreMAx Case "Lundi", "Mercredi", "Dimanche", VariableJour
1.3 Tableaux
Un tableau permet de stocker une suite dlments de mme type. Laccs un lment prcis se fait laide dun indice (valeur ou variable entire). En VB, pour un vecteur dclar avec une dimension (N), le premier lment a lindice 0, le deuxime a lindice 2, le troisime a lindice 3, , le dernier a lindice N1. Syntaxe
Dim NomVecteur(N) As TypeVecteur
Cette instruction dclare un vecteur NomVecteur de taille N+1. Pour accder au ime lment du vecteur, il faut prciser lindice entre parenthses comme suit : NomVecteur(i-1), i doit tre compris dans lintervalle [0, N]. TypeVecteur est un type standard (Boolean, Integer, String, etc.) ou tout autre type (type dobjet) dfinie dans VB ou dans votre application. Exemple
Dim TabTemp(12) As Single
Numro Temprature
1 2 6 5,5
3 4 7 11,5
5 15
Exemple
Dim TabMajuscules(65 to 90) As String
Pour viter toute confusion (et garder vos bonnes habitudes Pascal), dclarez toujours le vecteur avec une taille (N) et ignorez llment lindice 0. Le premier lment ne sera jamais utilis. - 11 -
Numro Majuscule
65 66 A B
67 C
89 Y
90 Z
VB permet de travailler avec des tableaux de deux, trois, quatre, dimensions ou plus Exemple d'un tableau deux dimensions:
Dim ExempleMatrice(10, 10) As Single
ExempleMatrice est une matrice (de nombres rels) de 11 lignes et 11 colonnes et o ExempleMatrice(1, 9) est llment se trouvant lintersection de la premire ligne et de la dixime colonne 2. Exemple de dclaration dun tableau trois dimensions:
Dim ExempleMatrice(10, 10, 10) As Single matrice trois dimensions
Le test (Compteur = Dbut) est effectu au dbut de la boucle. La variable numrique Compteur est incrmente chaque fin de boucle du nombre indiqu par lincrment. Si lIncrment (le pas par lequel Compteur augmente chaque boucle) nest pas spcifi, il est fix par dfaut 1. Si la valeur de Fin est infrieure la valeur de Dbut, lincrment est ngatif. La valeur de Compteur peut tre utilise (par exemple, pour numroter le passage dans la boucle) mais ne doit pas tre modifie dans le corps de la boucle. Exemple
Dim Dim Dim For i As Integer Chane As String TabInitial(1 To 12) As Single i = 1 To 12 Chane = InputBox("Temprature N " & Compteur)
Aussi, pour viter toute confusion (et garder vos bonnes habitudes Pascal), dclarez toujours la matrice avec une dimension N*N et ignorez la ligne et la colonne lindice 0. - 12 -
La condition est ici teste au dbut, c'est--dire lentre de la boucle. Avec While (tant que), la boucle est rpte tant que la condition est vraie. Si la condition nest pas vraie au dpart, les instructions de la boucle ne sont pas excutes. Exemple
Do While MotPropos <> MotDePasse MotPropos = InputBox("Donnez votre mot de passe") Loop
Cela prsuppose que MotPropos soit initialis par une valeur autre que MotDePasse (par exemple, la valeur par dfaut ""). Test postrieur Syntaxe
Do Instructions [... Exit Do] [Instructions] Loop While Condition
La condition est alors teste la fin de la boucle. Avec While (tant que), la boucle est rpte tant que la condition est vraie. Les instructions de la boucle sont donc excutes au moins une fois. Exemple
Do MotPropos = InputBox("Donnez votre mot de passe") Loop While MotPropos <> MotDePasse
- 13 -
La condition est ici teste au dbut, c'est--dire lentre de la boucle. Avec Until (jusqu'), la boucle est rpte jusqu' ce que la condition soit vraie. Si la condition est vraie au dpart, les instructions de la boucle ne sont pas excutes. Exemple
Do Until MotPropos = MotDePasse MotPropos = InputBox("Donnez votre mot de passe") Loop
Cela prsuppose que MotPropos soit initialis par une valeur autre que MotDePasse (par exemple, la valeur par dfaut ""). Test postrieur Syntaxe
Do Instructions [... Exit Do] [Instructions] Loop Until Condition
La condition est alors teste la fin de la boucle. Les instructions de la boucle sont donc excutes au moins une fois. Avec Until (jusqu'), la boucle est rpte jusqu' ce que la condition soit vraie. Exemple
Do MotPropos = InputBox("Donnez votre mot de passe") Loop Until MotPropos = MotDePasse
- 14 -
1.4.4 For Each Next Cest une extension de la boucle For ... To Next. Syntaxe
For Each Elment In Ensemble Instructions [ ... Exit For] [Instructions] Next [Elment]
1.4.5 Conclusion Selon le problme traiter, vous aurez le choix entre ces diffrentes structures de contrle. Il s'agira de choisir la plus lgante ou du moins, celle qui ne provoquera pas de dysfonctionnement de votre programme. Trouvez les erreurs dans les exemples suivants : Exemple 1:
Dim VotreRponse As String Rponse = "LaRponse" Do VotreRponse = InputBox("Donnez votre rponse") Loop While VotreMot = Rponse
Exemple 2
Dim Cote As Single Do Until Cote >= 0 And Cote <= 20 Cote = InputBox("Taper une note entre 0 et 20") Loop
1.5.1 Procdure (Transmission par valeur : ByVal) Pour transmettre un paramtre par valeur, celui-ci doit tre obligatoirement prcd par le mot rserv ByVal. Sinon, il est considr de passer par rfrence. Syntaxe
Private Sub NomProcdure( ByVal Instruction1 Instruction2 argument As Type, )
Lappel de la procdure se fait soit en inscrivant call suivi du nom de la procdure, et des paramtres lui transmettre, soit en crivant uniquement le nom de la procdure, suivi des paramtres lui transmettre.
Dim X As integer Dim Y As integer Call Affectation (X, Y) avec les parenthses MsgBox (" Et X = " & X & " n'a pas chang ")
1.5.2 Procdure (Transmission par rfrence : ByRef) Si ByVal nest pas prcis ou si le paramtre est prcd par le mot rserv ByRef, la variable est transmise par rfrence (c'est--dire transmise en tant que variable). Ainsi, toute modification de la variable locale correspondante dans la procdure se rpercute sur la variable utilise lors de lappel. VB suppose que la transmission se fait par rfrence si le mot rserv ByVal est omis. Exemple
Private Sub Transvase ( valeur1 As Integer, valeur2 As Integer ) Dim variable As Integer variable = valeur1 valeur1 = valeur2 valeur2 = variable End Sub
- 16 -
1.5.3 Fonction Lors de la dclaration d'une fonction, la valeur qui doit tre retourne par celle-ci doit tre affecte au nom de la fonction. La dclaration de la fonction se termine par les mots rservs End function. Syntaxe
Private function NomFonction( Argument As Type, ) As Type Instruction1 Instruction2 NomFonction = RsultatDeLaFonction End function
Exemple
Private function Somme( valeur1 As Integer, valeur2 As Integer ) As integer Somme = Valeur1 + valeur2 End function
1.5.4 Transmission dun tableau comme argument dune procdure ou dune fonction Pour transmettre un tableau comme argument dune fonction ou dune procdure, il suffit de dclarer ( lintrieur des parenthses) une variable (le nom local du tableau) sans type, ni dimension. Lors de lappel de la fonction ou de la procdure, VB donne cette variable le type et la taille du tableau envoy. On peut aussi utiliser comme type de la variable locale, le type Variant. Comme tout variable, un tableau peut tre envoy par valeur ou par rfrence. Ci-aprs vous trouvez un exemple de dclaration dune procdure qui reoit un vecteur (passation par rfrence: par dfaut). Exemple
Private Sub Init(vec) Dim i As Integer For i = 1 To 10 vec(i) = 0 Next End Sub ou Private Sub init(vec As Variant)
Lappel de la procdure avec un vecteur comme argument se fait comme pour toute variable. Exemple
Dim vecteur(10) As Integer Call Init(vecteur)
- 17 -
1.5.5 Porte des variables, procdures et fonctions Une application VB peut tre compose dun ou de plusieurs formulaires et dun ou de plusieurs modules. Dans chaque module ou formulaire, des variables, des procdures et/ou des fonctions peuvent tre dclares. Dans chaque procdure et fonction, des variables locales peuvent tre dclares. Une fonction ou une procdure peut tre dclare soit Prive (Private), soit Publique (Public). Le sens de Priv ou Public se comprend par rapport au formulaire ou au module dans lesquelles elles sont dclares. Se pose alors le problme de la porte des variables, des fonctions et des procdures. Si une variable est dclare au dbut de la procdure (fonction) qui la manipule (Dim ou Private), elle nest alors valide que pour cette procdure (fonction). L'existence et la valeur de la variable disparaissent avec l'instruction End Sub (End Function). Toute rfrence cette variable en dehors de cette procdure (fonction) provoquera une erreur de compilation. Si une variable est dclare dans la section des dclarations dun module (formulaire), elle est valide dans toutes les procdures (fonctions) du module (formulaire). Une variable peut aussi tre dclare Public ou Global et sera alors valide pour toute lapplication. Exemple :
Global MotInitial As String premier mot traiter
Le tableau qui suit rsume la porte des variables, des procdures et des fonctions en fonction du type de dclaration (Dim, Private ou Public) et de lendroit o la dclaration a eu lieu. Porte des variables, procdures et fonctions Type Variable Variable Dclar dans Procdure vnementielle Procdure / fonction gnrale du formulaire Variable Procdure / fonction gnrale de module Variable Partie gnrale dun formulaire Variable Partie gnrale dun module Variable Procdure vnementielle Variable Procdure gnrale dun formulaire Variable Procdure gnrale de module Variable Partie gnrale dun formulaire Variable Partie gnrale dun module Procdure / Partie gnrale dun formulaire fonction Mot cl Dim Dim Dim Dim/private Dim/private Private/Public Private/Public Private/Public Public Public Private Porte Procdure vnementielle Procdure / fonction gnrale Procdure / fonction gnrale Formulaire Module Interdit Interdit Interdit Formulaire Projet Formulaire
- 18 -
Procdure / Partie gnrale dun module fonction Procdure / Partie gnrale dun formulaire fonction Procdure / Partie gnrale dun module fonction 1.5.6 Quelques fonctions globales
Les deux tableaux suivant rsument quelques fonctions mathmatiques et quelques fonctions pour la manipulation des chanes de caractres. Fonctions mathmatiques Fonction Utilit Abs(Nb) Donne la valeur absolue du nombre Atn(Angle) Donne larc tangente de langle Cos(Angle) Donne le cosinus de langle Exp(Nb) Donne lexponentielle du nombre Fix(Nb) Tronque les dcimales du nombre Int(Nb) Log(Nb) Sgn(Nb) Sin(Angle) Sqr(Nb) Tan(Angle) Round(Nb) Exemple Abs (- 89) = 89 Atn(0) = 0 Cos(0) = 1 Exp(1) = 2.71828 Fix(-4.6) = -4 Fix(4.6) = 4 Donne la partie entire du nombre Int(-4.6) = -5 Int et Fix ne diffrent que pour les valeurs suprieures 0 Int(4.6) = 4 Donne le logarithme naturel (base e) Log(1) = 0 Donne le signe du nombre : 1, 0 ou 1 Sgn(- 89) -1 Donne le sinus du nombre Sin(0) = 0 Donne la racine carre du nombre Sqr(4) = 2 Donne la tangente de langle Tan(0) = 0 Arrondi la valeur Round(4.5) = 4 suprieure si (Nb - Int(Nb) ) > 5 Round(4.51) = 5 infrieure si (Nb - Int(Nb) ) <= 5 Exemple Asc(A) = 65 Chr(65) = A Len (Orange) =6 Lcase(ABC)= abc Ucase(abc)= ABC LTrim( Hello)=Hello LTrim(Hello )=Hello Trim( Hello )=Hello Left(Auto,2)= Au Right(Auto,2)= to Mid(Locom, 3, 2) = co InStr (Locom,o) = 2 InStr (Locom,a) = 0 Str(123) = 123
Fonctions de chane de caractres Fonction Utilit Asc(Car) Donne le code ASCII dun caractre Chr(N) Donne le caractre correspondant au code ASCII Len(Chane) Donne la longueur dune chane Lcase(Chane) Transforme la chane en minuscules UCase(Chane) Transforme la chane en majuscules LTrim(Chane) Supprime les espaces de tte RTrim(Chane) Supprime les espaces de fin Trim(Chane) Supprime les espaces de tte et de fin Left(Chane, N) Renvoie les N caractres de gauche Right(Chane, N) Renvoie les N caractres de droite Mid(Chane, Pos, N) Renvoie N caractres partir de la position Pos InStr(Chane, Car) Renvoie la position de la premire occurrence du caractre dans la chane ou la valeur 0 si la chane ne contient pas le caractre Str(N) Convertit N en chane de caractres
- 19 -
String(5, A) = AAAAA Gnre des espaces Space(4) = Convertit en nombre les chiffres dune chane (la Val(123) = 123 conversion sarrte au premier caractre qui Val(123abcd) = 123 nest pas un chiffre, ou 0 sil ny a pas de Val(abcd123) = 0 chiffre en tte)
1.5.7 Interruption de squences Pour interrompre lexcution dune squence dinstructions (dans une fonction, procdure ou boucle For), on utilise linstruction Exit. Le tableau suivant rsume son utilisation. Les possibilits dinterruption de squences Instruction Exit function Exit Sub Exit For Exit Do Description Interruption de la fonction, sans excution des instructions restantes Limite la procdure Interruption de la procdure, sans excution des instructions restantes Limite la boucle For Interruption de la boucle, sans excution des instructions restantes Limite la boucle Do Interruption de la boucle, sans excution des instructions restantes Port Limite la fonction
- 20 -
VB est devenu grce ces atouts un langage de programmation trs utilis de par le monde, supplantant un grand nombre de langages de programmation. Pour rentrer dans le vif du sujet, nous allons regarder de quoi sera compose votre application (programme) VB. Celle-ci sera compose, entre autres, de deux parties essentielles: un ou plusieurs formulaires (la partie visuelle ou graphique) et le code VB (des formulaires et modules).
2.1 Environnement VB
2.1.1 Formulaires (Forms) La partie visuelle de votre application ou projet est compose principalement dUN ou de PLUSIEURS formulaires (Forms). Un formulaire nest rien dautre quune fentre (Window). Les figures 1 et 2 prsentent des exemples de formulaires.
- 21 -
Pratique. Pour dmarrer VB, double cliquez sur licne VB6.exe La fentre qui apparat alors lcran vous propose soit douvrir un projet existant, soit de crer un nouveau projet (new project) (figure 3).
Lorsque vous faites un nouveau projet, il vous reste choisir le type de projet que vous allez crer (Visual Basic Projects sur la gauche de lcran), le modle utilis (Application Windows) ainsi que le nom associ ce projet et lemplacement sur le disque o seront stockes ces informations (attention, sur les ordinateurs de lIAG, vous ne pouvez enregistrer que sur le disque L)
- 23 -
Il est galement toujours possible de crer un nouveau projet en slectionnant dans la barre du menu VB, File, New Project.
Figure 5 : Projet nouvellement cr, compos dun seul formulaire vierge (Form1) VB va crer un projet compos dun formulaire portant un nom gnr automatiquement : Form1, voir figure 5. Lenvironnement VB est compos de trois types dlments : une zone de barre de menus et de barres doutils, une zone de travail central une multitude de fentres qui gravitent autour, constituant les diffrents outils mis votre disposition pour travailler 2.1.2 Lexplorateur des solutions Lexplorateur des solutions prsente de manire arborescence et visuelle les objets composant lapplication charge. La figure 6(a) montre que le projet de nom WindowsApplication8 est compos dun seul formulaire de nom Form1.
- 24 -
Figure 6(b): Fentre des proprits du projet Les Forms constitueront les objets principaux qui composeront vos projets dans ce cours. Notez quun projet peut tre compos dun ou de plusieurs formulaires. Dans ce dernier cas, il faut prciser VB le formulaire qui sera charg en premier, en cliquant sur le nom du projet avec le bouton droit de la souris et ensuite sur Properties, voir figure 6(b) o le projet est compos de deux formulaires, Form1 et Form2. 2.1.3 La fentre Properties La fentre Properties prsente les proprits (ou attributs) de lobjet slectionn. La figure 6 prsente les proprits de lobjet (slectionn) Form1. On peut citer quelques proprits de Form1 et leurs valeurs respectives:
- 25 -
Name = Form1, nom logique utilis pour rfrencer lobjet dans du code VB. BackColor = &H800000, couleur de fond de lobjet Form1. Text = Form1, nom qui apparat visuellement sur lobjet, celui-ci peut tre diffrent de la proprit Name.
Proprits de lobjet Form1 (un formulaire) Proprits tries par ordre alphabtique
Figure 7: Fentre Properties Notez que la valeur de chaque proprit peut tre modifie en cliquant sur la colonne de droite de la fentre Properties. Pratique. Modifiez la valeur des proprits suivantes :
Text = Convertisseur FB en Euro, BackColor = votre guise, Etc. N.B. Ne modifiez que les proprits dont vous comprenez le sens
- 26 -
La partie graphique de votre application va contenir un (ou plusieurs) formulaire(s). Sur un formulaire, on peut placer un ou plusieurs objets graphiques ou ce quon appellera des contrles (Bouton cliquer, Champ libell (texte statique), Champ texte saisir au clavier, Menu, etc.). Ces contrles sont des objets pr-programms dont lutilit principale est de faciliter linteraction avec lutilisateur. Chacun de ces objets graphiques a une fonctionnalit bien prcise. Le tableau suivant rsume les contrles standards de base les plus utiliss:
Figure 8 : Toolbox Contrle Nom du contrle Label Text Box Button ListBox ComboBox PictureBox RadioButton Check Box GroupBox Utilit Afficher un texte statique : un libell Afficher et rentrer une valeur au clavier Lancer lexcution une procdure vnementielle Afficher une liste statique de valeur Combiner lutilit des contrles TextBox et ListBox Afficher une image dans un cadre. Celui-ci peut tre redimensionn en fonction de limage (Autosize = True) Slectionner une option. Si utilis en plusieurs instances (Option Button), une seule peut tre choisie Slectionner une option. Si utilis en plusieurs instances (Check Box), une ou plusieurs peuvent tre choisies Crer une fentre au sein dun formulaire et crer un groupe de contrles.
Les contrles standards dans VB se trouvent dans la Bote outils (ToolBox), voir figure 8. Dautres contrles plus labors (Components) peuvent tre ajouts dans la bote outils, en slectionnant dans la barre du menu : Project, Add Components. Comment placer un contrle sur un formulaire ?
- 27 -
Slectionnez dans la bote outils le contrle dsir. Dessinez sur le formulaire le rectangle dans lequel vous voulez placer le dit contrle. Pour ce faire, cliquez (sans relcher) sur le bouton gauche de la souris, sur le coin haut gauche du rectangle et dplacez la souris vers le coin bas droit du rectangle puis relchez le bouton de la souris. Le contrle apparat par magie sur le formulaire. Comment dplacer un contrle ou le redimensionner ? Slectionnez dabord (en cliquant dessus) le contrle plac sur le formulaire. Glissez le vers lendroit dsir ou cliquez et tirez sur lun des huit petits carrs bleus dlimitant lobjet slectionn (le contrle Label Euro est slectionn dans la figure 8). Chaque contrle peut tre vu comme un objet dfini par un ensemble de proprits. Quand un contrle, plac sur un formulaire, et slectionn, ses proprits apparaissent dans la fentre Properties. De manire gnrale, une fois quun objet est slectionn, ses proprits apparaissent dans la fentre Properties. Notez que certains objets (contrles, formulaires, etc.) ont les mmes proprits, par exemple Name et Text, mais ont bien videmment des valeurs diffrentes qui leurs sont propres. Pratique. Placez les contrles suivants sur le formulaire qui a t cr: Contrle Label TextBox Label CommandButton CommandButton Proprit Text Name Text Text Text Valeur FB Franc_Belge Euro : Convertir Sortir
Modifiez leurs positions et leurs proprits pour que le formulaire apparaisse comme suit :
Figure 9 : Exemple de conception dun formulaire Nous venons de crer un programme (graphique et statique) sans crire aucune ligne de code VB. Celui-ci peut dtre excut. Ce programme ne fait quafficher une boite de dialogue ayant la forme de la figure 9. Pour lui donner vie (lui faire faire ce qui est dsir), cest--dire convertir du Franc Belge en Euro, il faudra mettre la main la pte et crire du code VB. Comment excuter votre programme ? Pour excuter un programme, appuyez sur la touche F5 ou slectionnez dans la barre de menu, Run, Start, ou cliquez sur le bouton Start. Comment arrter lexcution dun programme ?
- 28 -
Pour arrter lexcution de votre programme, cliquez sur la petite croix situe en haut droite du formulaire ou cliquez sur le bouton End.
Un ensemble dvnements peut tre rattach chaque type dobjet. Ci-dessous quelques exemples dvnements : Evnement Click DblClick Load Change MouseDown
3
Se produit quand On clique sur le bouton gauche de la souris On double clique sur le bouton gauche de la souris Lobjet NomObjet est charg La valeur stocke par lobjet Nomobjet change On clique sur la souris sans relcher le bouton
Notez quune procdure vnementielle peut tre aussi appele dans du code comme une procdure classique - 29 -
On a relch le bouton de la souris On a boug la souris On a appuy sur une touche du clavier sans la relcher On a relch une touche du clavier On a appuy sur une touche du clavier et on la relch
A chaque formulaire sera associ un fichier logique portant le nom Nom_Formulaire, voir figure 10. Celui-ci contiendra le code VB des diffrentes procdures relatives aux vnements associs au formulaire en question ainsi quaux diffrents objets qui lui sont rattachs.
Figure 10 : Fentre du code VB relative au formulaire Convertisseur Comment attacher une procdure vnementielle Load un formulaire ? Pour attacher une procdure vnementielle un formulaire, double cliquez sur celui-ci (et non pas sur un des contrles qui le composent). VB ouvre alors une fentre textuelle et place le curseur dans le cadre dune procdure vnementielle particulire : Form_Load(). Form_Load() La procdure de nom Form_Load() sexcute lors du chargement du formulaire correspondant, cest--dire avant que le formulaire napparaisse lcran. Pratique. Placez les deux lignes de codes comme indiqu la figure 10 (entre les deux lignes Private Sub Form_Load() et End Sub). Ainsi, avant que le formulaire napparaisse lutilisateur, Franc_Belge.Text et Euro.Text seront initialiss 40.3399 et "Euro : 1" (voir figure 9).
- 30 -
Excutez votre programme pour noter leffet de linitialisation. Y-a-t il moyen dinitialiser sans crire du code ? Pratique. a. On dsire que, lorsque lutilisateur clique sur le bouton Convertir (figure 9), une procdure sexcute et convertisse le montant dans la zone Franc_Belge et donne le montant quivalent en Euro (dans la zone label). b. On dsire que, lorsque lutilisateur clique sur le bouton Quitter (figure 9), une procdure sexcute et ferme la fentre. Linstruction End ferme une fentre. Excutez votre programme, introduisez un montant en Franc Belge et appuyez Convertir. sur
Comment Sauver votre travail ? Slectionnez dans la barre du menu : File, Save Project as. VB vous demandera de donner un nom votre projet et, chaque formulaire et module, le composant. Lintrt de donner un nom chaque formulaire et module rside dans le fait quun formulaire ou un module peut tre rutilis dans des projets diffrents.
Comment ajouter un nouveau formulaire dans un projet ? Cliquez avec le bouton droit de la souris sur le mon du Projet se trouvant dans la fentre Projet, slectionnez dans le menu propos : Add, Windows form. Comment ajouter un formulaire existant dans un projet ? Cliquez avec le bouton droit de la souris sur le mon du Projet se trouvant dans la fentre Projet, slectionnez dans le menu propos : Add, Add Existing Items. Slectionnez le nom du fichier correspondant au formulaire recherch, puis appuyez sur Open. Comment retrouvez les diffrentes fentres (ToolBox, Project, Properties) ?
- 31 -
Si ces fentres sont fermes vous pouvez toujours les ouvrir en slectionnant dans le barre du menu, View (Toolbox, Project Explorer, Properties Windows).
En rsum Les objets manipuls sont appels des contrles (bouton de commande, bote de dialogue, zone de texte, zone d'image, etc. ) L'interface utilisateur cre est multifentre. Une fentre est appele un formulaire (Form). Un formulaire est lui-mme un contrle. Chaque contrle peut ragir des vnements qui lancent des procdures (ddies) codes en VB. Des modules gnraux de code peuvent porter sur tout le programme. Ces modules sont rutilisables.
- 32 -
2.3 Exercices
a. Ralisez les parties pratiques des sous-sections prcdentes b. Modifiez le programme de conversion pour quil puisse convertir dans les sens FB->Euro et Euro->FB. Votre formulaire doit apparatre comme suit :
Figure 12 : Exercice programmer c. Modifiez votre programme et placez avant linstruction, End, linstruction suivante : MsgBox(Je termine et je sors, confirmez avec OK) d. Aprs cette introduction, vous tes censs tre capable de rpondre aux questions suivantes : 1. 2. 3. 4. 5. Quest ce quun formulaire ? De quoi sera compos votre application VB ? Quest ce quun contrle ? Donnez des exemples. Comment placer un contrle sur un formulaire ? Quest-ce quune procdure vnementielle ? Donnez quelques exemples de procdures vnementielles. 6. Comment associer une procdure vnementielle un contrle ? 7. Quant la procdure vnementielle Click() sexcute-t-elle ? 8. Quant la procdure vnementielle Load() sexcute-t-elle ? 9. Quest ce quun objet ? Donnez des exemples dobjets en VB. 10. Quest ce quune proprit? Donnez des exemples de proprits. 11. Comment changer la proprit dun objet ? 12. Quelle est la diffrence entre la proprit Name et la proprit Text? 13. Quel est le lien entre la proprit Name du contrle TextBox et la proprit Name du contrle Label? 14. Quel est le lien entre la proprit Name du contrle TextBox et la proprit Name du formulaire dans lequel il se trouve? 15. Comment excuter et fermer votre application ? 16. Quel est lintrt de sauver chaque formulaire sous un nom particulier ? 17. Comment ajouter un nouveau formulaire (vierge) un votre projet ? 18. Comment ajouter un formulaire existant un votre projet ? 19. Comment sauver votre projet et le recharger nouveau ? 20. Que fait linstruction MsgBox(Chane de caractres) ? 21. Quelle est la diffrence majeur entre une procdure et une fonction ? 22. Comment effectuer une transmission de paramtre(s) par rfrence ?
- 33 -
Exemple Form1.Showdialog
La figure 13 montre lditeur des classes (objets) VB. La colonne de droite prsente les mthodes et les proprits de la classe slectionne. La fentre du bas donne une explication succincte de la classe, proprit ou mthode slectionne. Pour ouvrir lditeur des classes VB, il suffit de cliquer sur le bouton Object Browser.
- 35 -
3.2.2 Label Le contrle Label permet dafficher un texte statique. La proprit (de type String) charge de stocker ce texte (une chane de caractres) est la proprit Text. Celui-ci sera affich lors de laffichage du formulaire dans lequel il est plac. Linstruction qui suit modifie le texte correspondant au contrle Label de nom Label1. Exemple Label1.Text = lquivalent en Euro = 15.689,89 3.2.3 TextBox Le contrle Textbox permet dafficher et de saisir un texte au clavier. La proprit (de type String) charge de stocker ce texte (une chane de caractres) est la proprit Text. Celui-ci sera affich lors de laffichage du formulaire dans lequel il est plac et modifiable par lutilisateur. Linstruction qui suit modifie le texte correspondant au contrle TextBox de nom Text1. Exemple Text1.Text = Entez votre texte ici La figure 9 montre des exemples des contrles TextBox et Label. 3.2.4 RadioButton Le contrle RadioButton combine deux fonctionnalits. Il permet de slectionner une option prsente par un texte statique (un contrle Label). Le contrle RadioButton, utilis sur un formulaire en au moins deux instances, permet de faire une seule slection parmi les diffrents choix proposs (parmi les diffrents RadioButton affichs). La proprit du contrle qui stock ltat de celui-ci est la proprit Enabled, de type Boolean. La valeur True veut dire que loption est choisie. Notez bien que VB se charge de mettre jour la proprit Enabled une fois quune slection est faite (mettre True la proprit Enabled du bouton slectionn et False aux autres). Exemple OptionButton1.Enabled = True OptionButton2. Enabled = False Pratique. Dans lexemple de la figure 14, lutilisateur peut soit convertir du FB vers leuro ou inversement. Les contrles ont t dclars comme suit :
Caption Equivalent en Euro = 1 Entrez le montant convertir Montant convertir en Euro FB Quitter
- 36 -
- 37 -
Figure 16 : Code VB de lexemple de la figure 14 2 me possibilit Dans lexemple ci-dessus, la conversion se fait de manire dynamique chaque fois que le montant change (Montant_Change). La procdure vnementielle Montant_Change est aussi appele comme simple procdure dans les deux autres procdures vnementielles : OptionEuro_Click et OptionFB_Click Nom_objet_Change() La procdure vnementielle de nom Nom_objet_Change() sexcute quand lobjet portant le nom Nom_objet change. 3.2.5 CheckButton Ce contrle ressemble de trs prs au contrle RadioButton. Il combine aussi deux fonctionnalits. Il permet de slectionner une option prsente par un texte statique (un contrle Label). La diffrence majeure rside dans le fait que lutilisateur peut faire de multiples slections parmi les diffrents contrles de mme type. La proprit du contrle qui stocke ltat de celui-ci est la proprit Checked qui prend lune des deux valeur suivantes : false = choix non slectionn, true = choix slectionn.
Figure 17 : Exemple dutilisation du contrle CheckButton Dans lexemple de la figure 17, lutilisateur peut choisir jusqu 4 villes.
- 38 -
Notez que cest lutilisateur de grer la relation entre les diffrents choix en programmant la procdure vnementielle Click(). Exemple
Private Sub Check1_CheckedChanged() If Check1.checked = true Then Check3.enabled = false Else Check3.Checked = true End If End Sub on clique sur le 1er choix si le 1er choix vient dtre slectionn le 3me devient indisponible sinon le 3
me
devient disponible
3.2.7 GroupBox Un GroupBox est une fentre. Cest un contrle qui peut tre plac sur un formulaire pour crer un groupe de contrles. Tout contrle plac sur le GroupBox (lui-mme plac sur un formulaire) appartiendra ce groupe. On a vu dans le cas du contrle RadioButton quune seule option peut tre choisie. Cependant, si on veut prsenter lutilisateur deux groupes de choix dans lesquels il peut slectionner deux choix non exclusifs, un dans le premier groupe et un dans le second, ceci nest pas possible. Pour rsoudre ce problme, il suffit de placer lun des groupes doptions dans un GroupBox, lautre appartiendra au formulaire. Notez que les GroupBox peuvent tre utiliss pour crer un groupe de contrles de diffrents types, TextBox, RadioButton, Label, etc. La proprit Text permet de donner un titre au GroupBox. Pratique. Dans lexemple de la figure 18, deux GroupBox sont utiliss : Destination et Moyen de transport. Chaque GroupBox intgre un groupe doptions. Ainsi, lutilisateur peut choisir une seule ville et un seul moyen de transport.
- 39 -
Le code correspondant ce programme est prsent dans la figure 19. Les contrles ont t dclars comme suit :
Contrle
Label CheckBox CheckBox CheckBox CheckBox CommandButton CommandButton
Name
Text
Label1 Choissisez les villes que vous allez visiter C_Paris Paris C_Tokyo Tokyo C_SanFranciscoSan Francisco C_Sydney Sydney Confirmer Confirmer Quitter Quitter
- 40 -
3.2.8 Exercices a. Programmez lapplication qui permet de raliser l'application prsente figure 14. Exemple dutilisation du contrle RadioButton. b. Sachant qu1 US$ cote 38.5168 FB et qu1 FF cote 6.1498 FB, modifiez le code de lexemple pour quon puisse aussi avoir la conversion en US$ et en FF. Votre application doit avoir lallure de la figure 20.
Figure 20 : Exemple de formulaire de conversion de devises c. Programmez lapplication qui permet de raliser la figure 17 (Exemple dutilisation du contrle CheckButton). Le bouton Confirmer doit ouvrir (avec la procdure Show) un autre formulaire contenant quatre contrles Label qui affichent uniquement les choix faits par lutilisateur. d. Programmez lapplication qui permet de raliser la figure 18 (Exemple dutilisation du contrle GroupBox). Utilisez deux vecteurs de contrles pour les diffrents RadioButton. Le bouton Confirmer doit ouvrir (avec la procdure Show) un autre formulaire rsumant les choix faits par lutilisateur. e. Vous tes prsent capable de rpondre aux questions suivantes 1. Expliquez le concept dobjet 2. Expliquez le concept de proprit dun objet 3. Expliquez le concept de mthode dun objet 4. Comment peut-on accder une proprit dun objet ? 5. Comment fait-on appel une mthode dun objet ? 6. Donnez des exemples dobjets en VB. 7. Donnez des exemples de proprits en VB. 8. Donnez des exemples de mthodes en VB. 9. Comment trouver la liste des classes dobjets VB ? 10. Quel est lintrt de la proprit Name? 11. Pourquoi lintrieur dun formulaire la proprit Name dun objet doit tre unique ? 12. Dfinir le rle du contrle Label et donnez des exemples de proprits 13. Dfinir le rle du contrle TextBox et donnez des exemples de proprits 14. Dfinir le rle du contrle RadioButton et donnez des exemples de proprits 15. Dfinir le rle du contrle CheckButton et donnez des exemples de proprits 16. Quelle est la diffrence entre les contrles CheckButton et RadioButton? 17. Dfinir le rle du contrle GroupBox et donnez des exemples de proprits
- 41 -
3.2.9 ListBox Un ListBox est un contrle qui permet de proposer une liste de valeurs parmi lesquelles lutilisateur ne peut en choisir quune seule. La dite liste est stocke dans la proprit Items. La figure 21 montre un exemple dutilisation du contrle ListBot.
Figure 21 : Exemple utilisant le contrle ListBox 3.2.10 ComboBox Le contrle ComboBox combine les fonctionnalits des contrles TextBox et ListBox. La proprit Text stocke llment chercher, slectionner ou ajouter et la proprit Items stocke la liste des valeurs possibles, comme dans le cas du contrle ListBox. La figure 22 montre un exemple dutilisation du contrle ComboBox.
Figure 22 : Exemple utilisant le contrle ComboBox 3.2.11 La proprit Items La proprit Items se trouve dans plusieurs contrles (ListBox, ComboBox, ). Elle peut tre remplie lors de la conception dans la fentre Properties comme monter dans la figure 234. Cette liste peut aussi tre mise jour (ajout, suppression) de manire dynamique durant lexcution du programme.
4
Pour ajouter une ligne (un lment) dans la liste, il faut cliquer sur les 3 petits points - 42 -
Figure 23: La proprit Items dun contrle ComboBox ou dun contrle ListBox. Quelques proprits et mthodes pour grer les ListBox ou ComboBox Syntaxe : ajoute la valeur valeur_i dans la proprit List Nom_List_Box.Items.Remove(valeur_i) : enlve llment valeur_i de List Nom_List_Box.Items.RemoveAt(i) : enlve llment dindice i de List Nom_List_Box.Items.Clear : enlve tous les lments de List Nom_List_Box.Items.Count : donne le nombre dlments dans List Nom_List_Box.items(i) : retourne litem dindice i de la L ist ListIndex 0 = 1er lment, 1 = 2er lment, Nom_List_Box.SelectedItem : retourne llment slectionn Nom_List_Box.Sorted : = True, maintient la liste trie par ordre alphabtique croissant
Nom_List_Box.Items.Add(valeur_i)
Exemples
ListBox1.Items.Add ("Paris") List1. Items.Add(text1.text) Text1.Text = List1.SelectedItem List1.Items.Remove(List1.SelectedItem)
Ajoute Paris la liste de ListBox Ajoute Text1.Text la liste de ListBox affecte llment slectionn Text1.Text enlve llment slectionn de list
Pratique. Lexemple de la figure 24 utilise un ComboList pour stocker une liste de villes. Lutilisateur peut manipuler dynamiquement la dite liste. Le code correspondant ce programme est prsent dans la figure 25. La fonction Existe(Ville) vrifie si Ville se trouve dans la liste des villes. Une ville ne peut tre ajoute que si elle nexiste pas. Une ville ne peut tre supprime quaprs confirmation de lutilisateur, cest--dire, celui-ci a appuy sur OK. La fonction MsgBox, utilise avec loption OkCancel, affiche les boutons Ok et Cancel. Elle retourne 1 si on appuie sur OK et 2 si on appuie sur Cancel.
3.2.12 Exercices a. Programmez le programme qui permet de raliser la figure 24: Exemple manipulant la proprit List du contrle ComboList b. Dans le mme esprit que lexercice prcdent, crez un programme qui permet de convertir un montant en devise vers une autre divise. Votre application doit avoir lallure de la figure 26. Utilisez trois contrles ListBox : DeviseB, DeviseC et TauxC. DeviseB et DeviseC serviront, respectivement, slectionner la devise de base et la devise de conversion. TauxC servira stocker les taux de change des diffrentes devises par rapport une devise de rfrence (l'Euro). Notez bien que les trois contrles ne doivent pas tre tris, ainsi la devise dindice i du contrle DevideC correspond au taux i du contrle TauxC.
Figure 26 : Application programmer Lexemple ci-dessous montre comment convertir un montant (Montant.Text) dune devise de base (DeviseB) vers une devise de conversion (DeviseC) en utilisant le taux de conversion dune devise de rfrence (ici lEuro). Par exemple, si on dsire convertir un montant en CHF (Devise de base) en BEF (Devise de conversion), il faut dabord trouver le montant quivalent en Euro puis multiplier ce montant par le taux du FB dun Euro. 100 CHF = ((100 / 1.6014) * 40.3399 ) BEF = 2519.04 BEF. Exemple
- 45 -
c. Modifiez votre programme pour que les diffrentes listes soient dynamiques, permettant lutilisateur dajouter ou de supprimer une devise.
- 46 -
3.2.13 Solution
Public Class Form1 Inherits System.Windows.Forms.Form #Region " Windows Form Designer generated code " Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load DeviseB.SelectedItem = DeviseB.Items(0) DeviseC.SelectedItem = DeviseC.Items(1) TauxC.SelectedItem = TauxC.Items(1) Label1.Text = "le montant en " & DeviseB.SelectedItem Label2.Text = "vaut 40.3399 " & DeviseC.SelectedItem montant.Text = 1 End Sub Private Sub Convertir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Convertir.Click Dim MontantConverti, mont As Double mont = Double.Parse(montant.Text) MontantConverti = (mont / TauxC.Items(DeviseB.SelectedIndex)) * TauxC.Items(DeviseC.SelectedIndex) Label1.Text = "le montant en " & DeviseB.SelectedItem Label2.Text = "vaut " & MontantConverti & " " & DeviseC.SelectedItem End Sub Private Function existe(ByVal Devise As String) As Boolean Dim var As Boolean Dim i As Short var = False For i = 0 To (DeviseB.Items.Count - 1) If DeviseB.Items(i) = Devise Then var = True Exit For End If Next existe = var End Function Private Sub Ajouter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Ajouter.Click Dim NouvelleDevise As String Dim NouveauTaux As Short NouvelleDevise = InputBox("Entrez la nouvelle devise") If NouvelleDevise <> "" And Not existe(NouvelleDevise) Then NouveauTaux = InputBox("Entrez le nouveai taux") If NouveauTaux > 0 Then TauxC.Items.Add(NouveauTaux) DeviseC.Items.Add(NouvelleDevise) DeviseB.Items.Add(NouvelleDevise) End If Else MsgBox("Entrez une autre devise, celle-ci est dj rpertorie") End If End Sub Private Sub Supprimer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Supprimer.Click Dim Indice As Integer If MsgBox("Etes-vous bien sur de vouloir supprimer " & DeviseB.SelectedItem & " ?", MessageBoxButtons.OKCancel) = 1 Then Indice = DeviseB.SelectedIndex TauxC.Items.RemoveAt(Indice) DeviseB.Items.Remove(DeviseB.SelectedItem)
- 47 -
- 48 -
3.2.14 Lditeur de menus Lditeur de menus permet de rattacher un formulaire un menu comme celui utilis par exemple dans les applications sous Windows. La figure 28 montre le menu de VB.
Figure 28: Exemple de menu Un menu nest rien dautre quun ensemble de contrles (commandes) qui sont accessibles par une reprsentation sous forme de menus. Une commande peut soit ouvrir un sous-menu soit lancer une procdure vnementielle (comme celles vues prcdemment). Pour ouvrir lditeur de menu, il suffit de cliquer sur le bouton Menu Editor.
- 49 -
- 50 -
Figure 30: Exemple dune base de donnes Il existe dans le commerce plusieurs systmes de gestion de base de donnes (SGBD), tels que Oracle, Sybase, SQL server, DB2, Informix, Dbase, MS Access, etc. Dans ce cours, on utilisera Microsoft Access. VB .NET permet de travailler avec une base de donnes de type MS Access sans disposer du logiciel MS Access5. Dans la suite de ce syllabus, on va voir comment crer et interroger une base de donnes.
Notez que VB permet de travailler avec dautres types de base de donnes en utilisant des outils plus avancs, mais qui sortent du cadre de ce cours. - 51 -
Figure 31 : Microsoft Access Pour ajouter un table la base de donnes cliquez sur Create Table in Design View. Microsoft Access ouvre la fentre de dfinition de la structure dune table, figure 32. Pour ajouter des champs la table, cliquez dans Field Name et insrez le type de donne contenu dans ce champ (colonne Data Type). Si vous voulez indiquer que lun des champs est la cl primaire, slectionnez le champ (mettre le curseur sur la bonne ligne) et appuyez sur licne avec une cl (dans la barre des outils). Lorsque tous les champs sont complts, fermez la fentre et noubliez pas de donner un nom votre table.
- 52 -
Figure 32 : Fentre de dfinition de la structure dune table. Pour ajouter une nouvelle table, il faut recommencer le mme processus. Pour modifier la dfinition de la structure, cliquez sur la nom de la table avec la bouton droit de la souris et slectionnez, Design View. Lorsque vous aurez cr toutes vos tables, il sagira dindiquer les relations existant entre-elles. Pour cela, cliquez sur licne (Relationships). Slectionnez dabord les tables insrer dans le schma et reliez-les les unes avec les autres. Une fois que vous aurez cr toutes les tables et leurs structures, fermez votre base de donnes, (File, Close).
- 53 -
Requtes SQL
Soit le schma relationnel suivant:
Requte Statique: Quels sont les produits (nomProduit, Prix) achets par le client numro 3 SELECT FROM WHERE Produit.NomProduit, Produit.Prix Client, Commande, Constitution, Produit (Client.N_Client = Commande.N_Client) And (Commande.N_Commande = Constitution.N_Commande) And (Constitution.N_Produit = Produit.N_Produit) And (Client.NomClient = 3 );
Ceci est une requte statique, c'est--dire que cette requte nadmet pas de paramtre qui changerait la valeur du rsultat Requte Dynamique: Quels sont les produits (nomProduit, Prix) achets par le client dont le numro est donn en paramtre SELECT FROM WHERE Produit.NomProduit, Produit.Prix Client, Commande, Constitution, Produit (Client.N_Client = Commande.N_Client) And (Commande.N_Commande = Constitution.N_Commande) And (Constitution.N_Produit = Produit.N_Produit) And (Client.NomClient = ? );
Ceci est une requte dynamique, car le numro du client est donn en paramtre la requte (le paramtre est reprsent par le symbole ? dans la requte SQL)
Exemple de Requte dynamique : - Supposons que lapplication Visual Basic ci-dessous permette de rechercher les informations dun client dont le nom est donn en paramtre et qui afficherai le rsultat de cette requte lcran.
- La fentre ci-dessous montre comment construire cette requte avec le Query Builder de Visual Basic .Net.
- Le code Visual Basic permettant de donner le paramtre la requte SQL et dafficher le rsultat lcran.
- Une fentre de dialogue apparat suite cette action - Cliquer sur le bouton Next
- Crer une nouvelle connexion (si la connexion nexiste pas encore) Appuyer sur le bouton
- Cliquer sur longlet Provider - Cliquer sur Microsoft Jet 4.0 OLE DB Provider, le fournisseur de BD Microsoft Access
- Cliquer sur longlet Connection - Slectionner la Base de donnes - Tester la connexion - Cliquer ensuite sur le bouton Ok
- Le type de requte slectionn est Instructions SQL. Cela spcifie la manire dont lobjet OleDbDataAdapter sadresse la BD - Appuyez sur le bouton Next
- Ecrire les requtes SQL. Vous pouvez soit les crire vous-mmes, soit laisser le Gnrateur de requtes les crer votre place Bouton Query Builder .
Le query Builder : - Slectionnez les tables sur lesquelles vous voulez travailler
Exemple : Nous avons spcifi la requte suivante : Quel est le prix et numro du produit TV Cela se traduit, en Langage SQL, par:
SELECT Produit.Prix, Produit.N_Produit FROM Produit
- Aprs cela quittez le Query Builder en cliquant sur le bouton OK - Ensuite quittez la fentre de configuration du Data Adapter
souhaite accder).
- Cliquez Sur le lien generate pour faire apparatre une fentre de dialogue
3. Faire appel la mthode Fill de lobjet OleDbDataAdapter pour peupler lobjet DataSet avec les donnes adquates
Chaque classe se transforme en une table Chaque attribut de classe se transforme en un champ de table Lidentifiant de la classe qui est associe la cardinalit (?..1) (ex: Livre) devient le cl trangre de lautre classe (ex: Exemplaire)
Emprunte Code-Emprunte Date Date-De-Retour Personne Code-P ersonne Es t emprunt par Nom Prenom 0..n Adresse Livre Code-Livre Emprunte Auteur Titre 0..n Edition
Chaque classe se transforme en une table Chaque attribut de classe se transforme en un champ de table Lassociation se transforme en une table. Cette table a comme champs lidentifiant de chacune des deux classes, plus dventuels autres attributs.
Mthode 1:
Personne Code-P ers onne Nom Prenom Adresse
Professeur Salaire
Crer une table avec tous les attributs des classes Ajouter un attribut pour distinguer les types des objets
{Professeur, Etudiant}
Mthode 2:
Personne Code-P ers onne Nom Prenom Adresse
Professeur Salaire
Crer une table pour chaque sous type, chaque table se compose des attributs gnriques et dattributs spcifiques
Crer une table pour les classes Voiture et Roue, et lier les deux tables par une association 1 N