Eléments de VB
Transcription
Eléments de VB
IEPSCF Uccle Section informatique Langage orienté objet Notes personnelles 2002 Feyaerts Prod TABLE DES MATIERE 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Controles les plus courants.................................................................................................... 5 Classe, objet, attribut (propriété), méthode et évenement......................................................... 6 Quelques propriétés communes aux objets............................................................................. 6 Les variables ........................................................................................................................ 7 Type de variables et espace mémoire..................................................................................... 7 Déclaration ........................................................................................................................... 8 Domaine de validité. .............................................................................................................. 8 Manipulation de variables ...................................................................................................... 8 Les constantes ...................................................................................................................... 9 Constantes symboliques ........................................................................................................ 9 Constantes prédéfinies de VB ................................................................................................ 9 Les opérateurs ...................................................................................................................... 9 Arithmétiques ........................................................................................................................ 9 De comparaison .................................................................................................................... 9 Logiques ..............................................................................................................................10 De concaténation .................................................................................................................10 Les fonctions .......................................................................................................................10 Mathématiques ....................................................................................................................10 De manipulation de chaines ..................................................................................................10 De conversion ......................................................................................................................11 De date ...............................................................................................................................11 Fonctions particulières ..........................................................................................................12 Les structures de contrôles If end if, if else end if,if, else if, else endif, select case....................14 les boucles ..........................................................................................................................15 le Do Loop While..................................................................................................................15 Le do while Loop..................................................................................................................15 Le For Next..........................................................................................................................15 Sortie de la boucle................................................................................................................16 Boucles imbriquées ..............................................................................................................16 Les groupes de controles ......................................................................................................16 Création de groupes de contrôle ...........................................................................................16 Les procédures ....................................................................................................................17 Les procédures Sub .............................................................................................................17 Procedure Function ..............................................................................................................18 Transmission d'argument ......................................................................................................19 Les tableaux ........................................................................................................................20 Tableaux statiques ...............................................................................................................20 Tableaux Dynamiques ..........................................................................................................20 Vider un tableau ...................................................................................................................20 Accès aux données d'un tableau ...........................................................................................20 Les bases de données..........................................................................................................21 Relier la bibliothèque ADO au projet ......................................................................................21 Déclarer trois variables pour relier le projet à la DB ................................................................21 Etablir la connexion ..............................................................................................................21 Initialiser les propriétés ActiveConnection et CommandText....................................................21 Configurer et ouvrir le Recordset ...........................................................................................21 Méthodes et propriétés de l’objet Recordset ..........................................................................22 Exemples ............................................................................................................................22 La poo.................................................................................................................................23 Quelques notions de base ....................................................................................................23 Personnalisation d'Objets .....................................................................................................24 Création d'un module de classe.............................................................................................24 Création des données internes ..............................................................................................24 Création des propriétes ........................................................................................................24 Création des méthodes .........................................................................................................25 Création d'évenements .........................................................................................................26 Notion de constructeur et de destructeur................................................................................26 Instanciation d'objets ............................................................................................................26 L'hérttage en VB ..................................................................................................................26 Langage orienté objet VB - page 2 Feyaerts Prod 17. Un exemple .........................................................................................................................27 Un exemple d'héritage. .........................................................................................................28 Les contrôles en détail..........................................................................................................30 Les feuilles ..........................................................................................................................30 Les boutons de commande ...................................................................................................31 Les étiquettes ......................................................................................................................31 Zone de texte.......................................................................................................................32 Frame ou cadre....................................................................................................................32 Boutons à option ..................................................................................................................33 Case à cocher......................................................................................................................33 Timer...................................................................................................................................33 Slider Microsoft windows Common Controls 6.0 ...........................................................................34 Image ..................................................................................................................................34 Datetime Picker Microsoft Windows Common Controls - 2 6 0 ................................................34 Listbox = Zone de liste modifiable.........................................................................................35 Combobox Allie la zone de liste modifiable à la zone de texte .................................................35 Langage orienté objet VB - page 3 Feyaerts Prod Avant tout Vérifier Outils à Option à Éditeur - Cocher "Requiert la déclaration des variables" pour forcer "option explicit" - Tabulation : 2 Environnement : Invite d'enregistrement des modifications. A la première sauvegarde penser à donner un nom évocateur à la feuille puis au projet Sauvegarder d'abord la feuille puis le projet (par défaut) Si le projet comporte plusieurs feuilles, la commande "sauvegarder" les sauvegarde toutes Par souci de rapidité on peut copier les objets créés ; une fenêtre pop up demande si l'on veut créer un groupe de contrôle Répondre "NON". En VB Il n'y a pas de signe de fin de phrase comme en Cobol (.) ou en C(;) Les fichiers − Fichiers feuilles portent l'extension. frm. Ce sont des fichiers texte. Ils contiennent toutes les indications nécessaires à l'affichage de la feuille, des objets qui s'y trouvent et le code qui lui est attaché. − Fichiers projet portent l'extension. vbp C'est aussi un fichier texte il indique tout ce qui est nécessaire à l'application notamment où trouver les fichiers qui la constituent. − Fichiers classe portent l'extension. cls Ne sont créés que si le projet inclus des classes. Comportent les informations sur les classes. − Fichiers images portent l'extension. frx. Ce ne sont pas des fichiers texte. Ils contiennent des informations concernant les images ou les icônes si le projet en comporte. − Il existe aussi de fichiers textes qui portent l'extension. vbw qui sont créés lors d'une réparation d'erreur. − les fichiers log explique une erreur lors du chargement du fichier. frm Par exemple s'il manque un fichier frx auquel fait référence. Création d'une application 1. Création de l'interface 2. Définition des propriétés des objets 3. Écriture du code Création d'une procédure 4. Afficher le code > Outils > Ajouter une procédure. 5. La nommer choisir privé / public(défaut) 6. Écrire le code. Modification d'une propriété dans le code : nomObjet.propriété = nouvelle valeur Attribution d'une méthode dans le code : nomObjet.methode [arguments] Messages d'erreur Erreur de compilation Cet argument n'est pas facultatif Surligne en jaune la ligne précédant l'erreur essayer des guillemets Attendu : séparateur de liste ou ) On a oublié un second argument ou de fermer la parenthèse d'une fonction Langage orienté objet VB - page 4 Feyaerts Prod 1. CONTROLES LES PLUS COURANTS Icône Objet Classe Préfixe Qq Propriétés Valeurs Feuille form frm Name Caption BackColor StartupPosition "frmNom" "Intitulé" apparaît dans la barre de titre. Couleur du formulaire 0 man, 1 center Etiquette Label lbl Name lblNom Texte non modifiable par U "intitulé" 0=Left, 1=Right, 3=center true / false pratique Caption Alignment AutoSize Zone de texte TextBox txt Name Text Alignment Locked PasswordChar MultiLine Cancel Bouton commande de CommandButton cmd Name Caption Style Picture cadre Frame fra Name "txtNom" Texte modifiable par U "texte" 0=Left, 1=Right, 3=center true / false "*" pour masquer une entrée. true / false true / false "cmdNom" Pour exécuter une commande "intitulé" 0 = standard 1 = graphical permet les couleur les dessins c:\program Files\microsoft visual Basic6 \common\Graphics fraNom Sert à faire joli Sert à regrouper des btn à option. Boutton option à Option opt button Name Caption value Style Picture DownPicture Case à cocher CheckBox chk Name Caption value Zone de liste ListBox lst Name Style Colomns MultiSelect Liste Itemdata Zone de liste ComboBox modifiable cmb Name Style Locked Liste Timer Timer tim Name Visible Enable Interval Langage orienté objet VB - page 5 "optNom" Propose un choix pas de choix multiples "intitulé" true = coché 0 = classique, 1 =graphical permet d'insérer image insère image en mode graphical Image si coché en mode graphical "chkNom" Propose un choix multiple possible. "intitulé" 0= uncheched 1 = coché "lstNom" Affiche liste d'éléments permet sélection unique ou multiple. 0 = Standard 1 = chk box 0 = une colonne 0 non, 1 un à un , 3 un à un avec ctrl intervalle avec shift "donnée1", "donnée2", etc N° d'ordre pour chaque donnée. "cmbNom" Affiche liste Permet sélection Permet ajout d'un élément. 0= dropdown combo, 1 =Simple combo, 2=dropdown liste true / false "donnée1", "donnée2", etc "timNom" Sert à déclancher un évèmement toutes les n millisecondes toujours false true / false nb en millisec Feyaerts Prod 2. CLASSE, OBJET, ATTRIBUT (propriété), MÉTHODE ET ÉVENEMENT Classe : C'est un modèle d'objet. C'est la définition formelle de ce que vont être les objets, c'est à dire l'ensemble de leurs propriétés, méthodes et évènements. Objet : C'est une instance d'une classe. Les objets sont créés sur base de la définition d'une classe en attribuant des valeurs à ses propriétés par exemple. Propriétés : Ce sont les caractéristiques des objets Les objets ont des propriétés qui définissent leur apparence, leur nom Méthode : Les méthodes définissent les comportements des objets. Évènement : Ils traduisent les réactions d'un objet (contrôle) qu'il reconnaîtra et auquel il peut réagir. En VB on crée un objet quand on le dépose sur une feuille (la feuille est elle aussi un objet) Chaque objet : est une instance d'une classe a des propriétés qui définissent son nom, son apparence, a des méthodes qui définissent ce qu'il fait. réagit à certain évènements Exemple : txtMessage. text = "Bonjour" propriété valeur de la propriété text objet txtMessage. setfocus méthode objet En VB dès que l'on tape un nom d'objet suivi d'un point dans le code une fenêtre pop up propose une liste de méthode (en vert) et de propriétés (feuille avec main) utilisables pour l'objet en question. On peut aussi utiliser les boutons Menu Édition > Compléter le mot ou ctrl + <space>. Dans le même ordre d'idées on a Méthode Propriétés Constantes Types Valeurs 3. QUELQUES PROPRIÉTÉS COMMUNES AUX OBJETS Name nom de l'objet devrait toujours commencer par le préfixe Top Left Height Whidth Caption BackColor ForceColor Font texte qui accompagne l'objet par défaut = le nom l'objet couleur d'arrière plan* couleur d'avant plan* police d'affichage Langage orienté objet VB - page 6 Feyaerts Prod Visible Enable TabIndex Index ToolTipText booléenne visible si =True booléenne disponible si =True ; grisé si = False définit l'ordre du focus donné par la touche tab (ordre de création=défaut) Numéro identifiant dans un groupe de contrôle Texte de l'infobulle 4. LES VARIABLES T YPE DE VARIABLES ET ESPACE MÉMOIRE Nom préfixe Boolean Integer Long Single Double Currency Decimal String Byte Date Variant bln int lng sng dbl cur str byt dtm vnt domaine de validité % & ! # @ 11 2 3 4 5 6 $ 8 True / False -32.768 à 32.767 +/-2.147.483.648 Réel 6 chiffres après la virgule Réel 14 chiffres après la virgule Réel 4 chiffres après la virgule "Chaîne de car " 17 7 # expression date# 12 nbOctets 2 8 2 32 2 32 2 64 2 64 2 2 2 4 4 8 8 12 >10 1 8 16 Remarques Dim intNb As Integer équivaut à Dim intNb% On peut limiter la longueur d'une variable string Dim strNom As String * 30 Le type variant est particulièrement gourmand en espace mémoire et doit donc être évité. Il est pourtant automatiquement attribué par VB si on oublie de déclarer le type de la variable. Rester maître des décimales Les résultats de divisions s'affichent sans virgule avec int et long mais respectivement avec 4, 6 et 14 chiffres derrière la virgule si les résultats sont déclarés en currency, single, ou double Attention ! Lors de la saisie de nombres dans les textbox la fonction Val() convertit toujours le nombre en double (14 décimales) Dim res As Integer Private Sub CmdCalculer_Click() res = Val(txtnb1.Text) / Val(txtnb2.Text) txtres.Text = res End Sub Affiche un résultat sans décimale, mais affiche 4 décimales si res est déclaré as currency Alors que Private Sub CmdCalculer_Click() txtres.Text = Val(txtnb1.Text) / Val(txtnb2.Text) End Sub Affiche le résultat avec 14 décimales Pour limiter le nombre de décimales Voir la fonction round(expression, nb de ch après la virgule) Formater les nombres Voir la fonction format(expression, "masque") Le masque précise la position des espaces par une virgule ou un espace et la position de la virgule par un point. Langage orienté objet VB - page 7 Feyaerts Prod DÉCLARATION Le nom des variables est constitué d'un maximum de 255 caractères commence toujours par une lettre peut contenir des majuscules ou pas Peut contenir de nombres mais pas de ","ni d' -, d'espace. Elles ont un nom unique dans leur domaine de validité. DOMAINE DE VALIDITÉ. Locale Variable déclarée dans une procédure, n'est connue que dans cette procédure Private sub cmdTrucmuch_Click() Dim nomvar As Typvar ou Private nomvar As Typvar End Sub L'utilisation de variables locales doit être privilégiée car elle allège l'espace mémoire en cour d'exécution de l'application. La durée de vie d'une variable déclarée en local peut être élargie à la durée de vie de l'application par l'instruction Static Globale privée Variable déclarée à l'extérieur des procédures. Elle est connue de toutes les procédures du module et ne survit pas à celui-ci n'est connue que dans le module mais pas dans toute l'application si celle-ci en contient plusieurs. Option Explicit Dim a As Typvar Private a As Typvar ... ou Globale Publique Variable déclarée à l'extérieur des procédures. Elle est connue de toutes les procédures et de tous les modules de l'application. Option Explicit Public z As Typvar ... Remarque En VB il faut déclarer séparément les variables. Dim a As Integer Dim b As Integer ou à la rigueur Dim a As Integer, b As Integer Mais pas Dim a, b As Integer dans ce cas a serait variant M ANIPULATION DE VARIABLES VarType(nomvar) identifie le type de la variable renvoie une valeur identifiant le type de la variable. (voir tableau plus haut IsNumeric(expression) Vérifie que l'expression passée en argument est bien numérique et renvoie true si c'est le cas. L'expression peut être une variable ou l'attribut text d'une textbox. Cette fonction est très couramment utilisée pour forcer la saisie de nombres. If IsNumeric(txtSaisie.text) then faisons ceci Else msgbox "vous devez saisir des nombres!!" Existent aussi IsEmpty(), IsDate(), IsArray(), IsNull() Langage orienté objet VB - page 8 Feyaerts Prod 5. LES CONSTANTES Définition : Ce sont des valeurs définies qui ne peuvent être modifiées lors de l'exécution d'une application. Elles peuvent être des valeurs numériques ou des chaînes de caractères. Il y a deux types de constantes : les symboliques et les prédéfinies. Elles sont toujours Globales CONSTANTES SYMBOLIQUES Elles sont définies par le programmeur grâce à l'instruction Const Const Pi = 3,1416 Const message = "Vous êtes génial !!" Exemple : CONSTANTES PRÉDÉFINIES DE VB Leur nom commence toujours par Vbqqchose Elles ont pour la plupart un équivalent numérique., vbCrLf caractère de retour vbOKonly vbBlack vbOKCancel vbRed vbGreen etc vbOK vbYellow 1 vbCancel vbBlue 2 vbAbort vbMagenta 3 vbRetry vbCyan 4 vbIgnore vbWhite 5 vbYes 6 vbNO 7 &H0& 0 &HFF& &HFF00& 255 65280 &HFFFF& 65535 &HFF0000 16711680 &HFF00FF 16711935 &HFFFF00 16776960 &HFFFFFF 16777215 6. LES OPÉRATEURS ARITHMÉTIQUES + , Rmq - , * , / , \ , ^, mod / = division normale \ = division entière (sans reste) mod = modulo = reste. DE COMPARAISON > , < , Exemple >= , <= Dim Dim s = b = b as Boolean A as String “c d e a b i” s Like “* a b *” , <> , = , like à b = true like est un peu particulier il s'écrit comme suit : Résultat = chaîne de car Like "modèle". et renvoie true si le modèle se retrouve dans la chaîne de caractère Rmq ne pas oublier les caractères génériques ? et * Langage orienté objet VB - page 9 Feyaerts Prod LOGIQUES Not and, or xor (ou exclusif) Table de vérité A B Or Xor and T T F F T F T F T T T F F T T F T F F F DE CONCATENATION & ou + mais de préférence & car + peut prêter à confusion. 7. LES FONCTIONS M ATHÉMATIQUES Abs(var) Cos(var) Sin(var) Tan(var) Sqr(var) Exp(var) Round(var, nb de décimale) Randomize Rn Log(var) DE MANIPULATION DE CHAINES Instr(cible,"string") Len("string") Left("string",nb) Right("string",nb) Mid("string",nb) LCase("string") UCase("string") LTrim("string") RTrim("string") Trim("string") Strcomp(string,string) InstrRev Join split StrReverse("string") Langage orienté objet VB Renvoie valeur absolue Renvoie le cosinus Renvoie le sinus Renvoie le tangente Renvoie la racine carrée Renvoie e à la puissance var Renvoie var arrondi avec nb décimales À placer dans le "form load" Rnd renvoie un nombre aléatoire. Renvoie Ln var renvoie la position de la chaîne string dans la chaîne cible renvoie le nombre de caractères d'une chaîne renvoie les nb premiers caractères de la chaîne string renvoie les nb derniers caractères de la chaîne string ième renvoie les caractères depuis le nb renvoie la chaîne string en minuscule renvoie la chaîne string en majuscule caractère supprime les espaces à gauche de la chaîne supprime les espaces à droite de la chaîne supprime les espaces à droite de la chaîne Renvoie 0 si les 2 chaînes sont identiques Renvoie la chaîne à l'envers - page 10 Feyaerts Prod DE CONVERSION De Type de variable Attention au domaine de validité CBool() CDate CInt CDec CSng CDbl CLong CStr Convertit en booléenne Convertit en Integer Convertit en Single Convertit en Double Convertit en Long En String De genre Val(string) Str(nombre) Asc(string) Chr(nb<256) Hex(nb) Oct(nb) Chaîne en nombre (long) Nombre en chaîne Convertit 1er car en sa valeur ascii Convertit en caractère Renvoie valeur en Hexadécimal Renvoie la valeur en base huit DE DATE Date Renvoie la date système (6/11/02) Day(date) Renvoie le n° du jour dans la date (23 si 23/02/02) Month(date) Renvoie le n° du mois dans la date (02 si 23/02/02) Year(date) Renvoie le n° de l'année dans la date (2002 si 23/02/02) MonthName(N°) Renvoie le nom du mois mois.Text = MonthName(Month(Date)) renvoie en texte le nom du mois courant Weekday(date) Renvoie le N° du jour dans la semaine 1 = lundi WeekDayName Renvoie le nom du jour jour.Text = WeekdayName(Weekday(Date)) renvoie en texte le nom du mois courant now Renvoie la date et l'heure système (6/11/02 9:42:28) time Renvoie l'heure système (9:42:28) Second(time) Minute(time) Hour(time) Timer Langage orienté objet VB Renvoie la seconde du temps système Renvoie la minute du temps système Renvoie l' heure du temps système Renvoie le nombre de secondes écoulées depuis minuit - page 11 Feyaerts Prod FONCTIONS PARTICULIÈRES Masque de présentation d'un nombre txtRep.Text = Format(10000000 / 3, "###,###.###") Affichera : 3.333.333,333 ou 3 333 333,333 selon les paramètres du système La fonction IIF IIF(expression, si vraie, si pas vraie) Private Sub TestEgalité_Click() Dim a As Integer, b As Integer b = 12 a = Val(txtNb1.Text) txtRep.Text = IIf(a = b, "égal", "pas égal") renvoie "égal" si le texte saisi dans txtNb1 est 12 Les fonctions inputbox() et msgbox() voir plus loin InputBox() Affiche une invite dans une boîte de dialogue et renvoie la donnée entrée au clavier par l'utilisateur Dim Var As String ou autre chose Var = Inputbox ("Message ou question", "Titre", Valeur par défaut, Xpos, ypos) MsgBox() Affiche un message dans une boîte de dialogue et renvoie une valeur indiquant le bouton de commande sur lequel l'utilisateur a cliqué. Dim rep As Integer rep = MsgBox("message", vbtype d'icône + vb type de réponses + vb boutons par défaut,Titre") Type d'icones valeur vbExclamation 48 vbCritical 16 vbInformation 64 vbQuestion 32 Types de réponses VbOKOnly OK 0 VbOKCancel OK annuler 1 Langage orienté objet VB - page 12 Feyaerts Prod vbAbortRetryIgnorel Abandonner Réessayer, Ignorer 2 vbYesNoCancel Oui Non Annuler 3 VbYesNo Oui Non 4 vbRetryCancel 5 Type de réponses VbdefaultButton1 Bouton par défaut = 1er 0 Divers VbApplicationModal VbSystemmodal U doit répondre avant de pouvoir travailler dans l'application Toutes aplications interrompues tanque U na pas répondu 0 4096 Rmq si l'on connaît les valeurs celles-ci peuvent remplacer le nom des constantes. Elles peuvent être additionnées mais il est bien sûr impossible de combiner deux icônes en effet 16 + 32 = 48 cad critical + question = exclamation La valeur par défaut est 0 soit pas d'icône, vbOkOnly, vbApplicationModal. Valeurs des constantes réponses Constantes Valeur signification VbOK 1 OK VbCancel 2 Annuler VbAbort 3 Abandonner VbRetry 4 Réessayer VbIgnore 5 Ignorer VbYes 6 Oui VbNo 7 Non La fonction rnd() Sert à donner des nombres aléatoires Au préalable il faut initialiser le générateur de nombres aléatoire par la fonction randomize dans la procédure. Ensuite Rnd retourne un nombre [0 et 1[ (entre 0 compris et 1 non compris) Syntaxe et formule Pour avoir un entier x aléatoire entre min et max Randomize X= int(rnd*(max-min+1))+ min Les grands classiques : Entre 1 et 10 x = int(rnd * 10) x = int(rnd * 10) + 1 Entre 1 et 6 x = int(rnd * 6) + 1 Entre 97 et 122 x = int(rnd * 26) + 97 Entre 0 et 9 Langage orienté objet VB - page 13 (code ascii des lettres) Feyaerts Prod 8. LES STRUCTURES DE CONTRÔLES IF END IF, IF ELSE END IF,IF, ELSE IF, ELSE ENDIF, SELECT CASE Test simple If (condition) Then Instruction(s) End If − − − − La condition comporte une opération logique et est placée entre parenthèse. Elle est toujours suivie de Then qui termine une ligne Le test obligatoirement se termine par End If Comme il n'y as pas d'alternative si la condition n'est pas remplie la procédure rend la main Alternative simple If (condition) Then Instruction(s) Else Instruction(s) End If − Même remarques mais une alternative cad 2 possibilités. Alterntive triple If (condition) Then Instruction(s) Else Instruction(s) Else If Instruction(s) End If − Même remarques mais deux alternatives cad 3 possibilités. Alternative multiple On peut multiplier les Else If mais cela occupe trop d'espace mémoire. On préfère le Select Case. Select case nomvar Case valeur1 Instruction(s) Case valeur2, valeur 3, valeur 4 Instruction(s) Case Else Instruction(s) End Select − − − − La condition comporte une variable et propose plusieurs valeurs a cette variables. Les instructions sont toujours à la ligne La dernière voie de sortie est proposée par Case Else :"dans tous les autres cas" Le test se termine obligatoirement par End Select Exemple : Utilisation d'un groupe de contrôle pour agir sur 3 boutons d'effacement. La variable c'est l'index du groupe de contrôle les valeurs ce sont 0, 1, 2 Private Sub cmdEffacer_Click(Index As Integer) Select Case Index Case 0 txtA.Text = "" Case 1 txtB.Text = "" Case Else txtC.Text = "" End Select End Sub Langage orienté objet VB - page 14 Feyaerts Prod 9. LES BOUCLES En VB il existe de multiples manières de pratiquer les répétitives. On peut utiliser les conditions While (tant que comme en C) ou Until (jusqu'à ce que comme en Cobol). On peut utiliser l'un ou l'autre mais il faut garder en tête que les conditions sont inversées. Tant que la condition est remplie = Jusqu'à ce que la condition ne soit plus remplie. Les conditions doivent être entre parenthèse. LE DO LOOP WHILE Do Instructions Modification des intervenants de la condition Loop While (condition) Signifie fait ceci et continue tant que la condition n'est pas remplie. Particularités On rentre au moins une fois dans la boucle. LE DO WHILE LOOP Do while (condition) Instruction(s) Modification des intervenants de la condition Loop Remarque Avec les boucles Do while il faut une instruction qui permette de ne plus remplir la condition (sinon boucle infinie ce qui est assez casse pied il faut arrêter VB) Exemple : le PGCD Private Sub cmdPgcd_Click() Dim Nb1 As Integer, Nb2 As Integer Nb1 = Val(txtA.Text) Nb2 = Val(txtB.Text) Do While Nb1 <> Nb2 ou until Nb1 = Nb2 If Nb1 > Nb2 Then Nb1 = Nb1 - Nb2 Else Nb2 = Nb2 - Nb1 End If Loop txtRep.Text = Nb1 End Sub LE FOR NEXT Les boucles for permettent de répéter une suite d'instruction en fonction d'un compteur dont on règle le pas d'incrémentation par la clause step nb For var = début to fin [step pas] Instruction(s) Next Attention var = début to fin et non var = début to var = fin Exemple : La factorielle Private Sub cmdFactorielle_Click() Dim Nb1 As Integer, Fact As Long, i As Integer Fact = 1 il faut initialiser à 1 sinon on multiplie par 0 Nb1 = Val(txtA.Text) For i = 1 To Nb1 [Step 1] Fact = Fact * i Next txtRep.Text = "Factorielle de " & Nb1 & " = " & Fact End Sub Langage orienté objet VB - page 15 Feyaerts Prod La clause step est facultative et ici tout à fait inutile car le pas par défaut est 1 SORTIE DE LA BOUCLE La plupart du temps lorsque la condition est satisfaite. Mais on peut forcer la sortie par l'instruction exit for (breack comme en C) BOUCLES IMBRIQUÉES Private Sub cmdTest_Click() Dim i As Integer, j As Integer For i = 1 To 5 For j = 1 To 3 Print i, " ^ ", j Next j Next i End Sub Affiche sur la feuille le tableau ci contre 1 1 1 2 2 2 3 3 3 4 4 4 5 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ETC 1 2 3 1 2 3 1 2 3 1 2 3 10. LES GROUPES DE CONTROLES Plusieurs contrôles peuvent être regroupés en un groupe de contrôle. Le principal avantage étant le gains de place en mémoire. Condition : ils doivent − − − Appartenir à la même classe Avoir les mêmes propriétés Obéir aux mêmes événements On les différencie par leur valeur d'Index qui va de 0 à n-1. CRÉATION DE GROUPES DE CONTRÔLE Copier coller Copier un objet > Coller > Msg "Il y a déjà un objet 'trucmuche', Voulez vous créer un groupe de contrôle ? > Oui er à Automatiquement le 1 objet reçoit l'index 0 et le second l'index 2 Dans la fenêtre propriété le nom de l'objet et accompagné de son index NomdObjet(Index) et das la liste des propriétés le numéro d'index y est repris dans la catégorie "divers". Ajout d'éléments à un groupe pendant l'exécution − Déclarer une variable Index − Le premier objet doit déjà avoir un index (0) − Créer les objets dans une procédure par l'instruction Load NomdObjet(index+1) − Dans la même procédure placer les objets créés par rapport à la place des précédents avec les propriétés NomdObjet.Top = … et NomdObjet .Left = … Sinon il seront superposés − Ne pas oublier de spécifier la largeur de l'objet et − Dans le cas des images de les rendre visibles. Déchargement d'un élément d'un groupe Unload NomdObjet(Index) Attention lors du déchargement On ne peut décharger l'objet(0) Prévoir un test du genre If Index = 0 Then Msgbox " message" Langage orienté objet VB - page 16 Feyaerts Prod End if Ou une boucle Do While index >0 Unload nomdObjet(Index) Index = index –1 Loop On peut aussi utiliser for mais il faut avoir sauvegardé le nombre d'image Dans un sens Du dernier au premier Private Sub cmdEff_Click() For i = 1 To nbimg Unload img(i) Next End Sub Private Sub cmdEff_Click() For i = nbimg To 1 Step -1 Unload img(i) Next End Sub Exemple les groupes d'images Cas un peu particulier car il faut d'abord créer la première image Le premier index est donc déjà à zéro Recopier des images de gauche à droite avec un espace de 100. Dim i as Integer Private Sub cmdAjout_Click() i = i + 1 Load img(i) Img(i).left = img(i-1)left + img(0).width + 100 Img(i).Visible = True End sub 11. LES PROCÉDURES Il existe différents types de procédures − − − − Les procédures Sub qui ne renvoient pas de valeurs Les procédures Functions qui ne renvoient qu'une seule valeur Les procédures Property qui servent à déclarer des propriétés Les procédures Event qui servent à déclarer des évènements. Création : En mode Code : Outils > Ajouter une procédure provoque l'ouverture de la fenêtre Il faut nommer la procédure, cocher son type, et son domaine d'existence. Domaine : Les procédures peuvent être Private : connues du seul module Public ou Static connues de toute l'application Rmq Les procédures Event est toujours public − − Les procédures servent à économiser du code et des ressources Elles sont indispensables pour déclarer les méthodes lors de la création nouvelles classes. LES PROCÉDURES SUB Private Sub Exemple() End Sub Une fois créée il faut la construire Syntaxe : Private Sub NomProcedure(Liste d'arguments) Instructions End Sub Remarque l'inclusion d'un nom d'argument et son type équivalent à une déclaration. Langage orienté objet VB - page 17 Feyaerts Prod Appel d'une procédure : 2 manières Call NomProcédure (Argument 1, Argument 2) NomProcédure Argument 1, Argument2 entre parenthèse sans parenthèse Sortie prématurée Exit Sub Exemple : Private Sub AfficherMessage(n As Integer) Select Case n Case 1 MsgBox "Le client n'existe pas" Case 2 MsgBox "Le client existe" Case Else MsgBox "dernier client" End Select End Sub Private Sub cmdTest_Click() Call AfficherMessage (1) AfficherMessage 1 End Sub ou PROCEDURE FUNCTION Les procédures function ne renvoient qu'une seule valeur il faut donc déclarer le type de la valeur qu'elles renvoient. Syntaxe : Private Function Nomfunction(Liste d'arguments)As Type Instructions NomFunction = expression End Function Appel Call NomProcedure(Argument1, Argument2) NomProcedure Argument1, Argument2 NomVar = Nomprocedure (Argument1, Argument 2) Exemple Fonction factorielle Private Function Fact(n As Integer) As Integer Dim i As Integer Dim f As Integer f = 1 For i = 2 To n f = f * i Next Fact = f End Function Private Sub cmdAffichage_Click() txtRéponse.Text = Fact(Val(txtNombre.Text)) End Sub Exemple Fonction Exponentielle Private Function Exponentielle(Nb As Integer, Puiss As Integer) As Long Dim rep As Long Dim i As Integer rep = 1 Langage orienté objet VB - page 18 Feyaerts Prod For i = 1 To Puiss rep = rep * Nb Next Exponentielle = rep End Function Private Sub cmdTest_Click() txtRep.Text = Exponentielle(txtNB.Text, txtExposant.Text) End Sub 12. TRANSMISSION D'ARGUMENT Le système peut transmettre les arguments à une procédure de deux manières par référence ByRef (par défaut) et par valeur ByVal. ByRef : La procédure reçoit l'adresse de la variable Elle peut faire des calculs et peut modifier cette valeur cad le contenu de la variable à cette adresse. ByVal : La procédure reçoit une copie de la valeur elle exécute l'opération avec cette copie En aucun cas le contenu de la variable n'est changé. Utilité : Renvoyer plusieurs résultats avec une seule valeur entrée Alors qu'avec une fonction on ne peut en renvoyer qu'une. Exemple: Private Sub SurfPeriCercle(ByVal Rayon As Single, ByRef Surf As _ Single, ByRef Peri As Single) Const Pi = 3.1416 Surf = Pi * Rayon * Rayon Peri = Pi * 2 * Rayon End Sub Private Sub cmdTest_Click() Dim R As Single, S As Single, P As Single R = txtA.Text SurfPeriCercle R, S, P txtB.Text = S txtC.Text = P End Sub Commentaires La procédure SurfPeriCercle recoit un argument ByVal et en renvoie 2 ByRef ce qui contourne la contrainte des fonctions qui ne renvoient q'une valeur. Mais il faut passer par des variables intermédiaires pour les résultats ici S et P Langage orienté objet VB - page 19 Feyaerts Prod 13. LES TABLEAUX T ABLEAUX STATIQUES Dont la taille définie une fois pour toutes à la déclaration ne peut pas changer. Déclaration Dim nomtableau(Indice max) as type RMQ La taille du tableau = le nb d'élément –1 = Indice max (Attention différent du C) Exemple Dim Tab1(20) as Integer déclare un tableau nommé Tab1 de 21 éléments de type Integer dont les indices varient de 0 à 20. Option base 1 permet de modifier le numéro du 1er indice à la condition d'être placé entête de module sous Option Explicit. Dim Tab2(20 to 35) as Integer déclare un tableau nommé Tab2 de 16 éléments dont les indices vont de 20 à 35. Tableaux à 2 dimensions : Dim tab2(3,9) as Integer T ABLEAUX DYNAMIQUES Dont la taille peut varier au cours de l'exécution de l'application. Déclaration Dim tab() as Integer On peut ne pas déclarer la taille du tableau. C'est pratique si on ne la connaît pas Cela permet d'éviter d'occuper inutilement de l'espace mémoire. On augmentera la taille du tableau au fur et à mesure des besoins grâce à l'instruction ReDim. ReDim Tab(Nb élément – 1) Réinitialise toutes les valeurs du tableau à 0 Cette instruction remet donc à 0 toutes les valeurs du tableau. Redim Tab (1 to nb) est aussi correct. ReDim Preserve Tab(Nb élément –1) Permet de préserver les valeurs qui se trouvaient déjà dans le tableau. VIDER UN TABLEAU Erase tab Efface toutes les données du tableau Il n'occupe plus de place mémoire il rest smplement déclaré. Fonction particulière Is array(NomVar) renvoie true si la variable est bien un tableau cf isNumeric() ACCÈS AUX DONNÉES D'UN TABLEAU NomTableau(indice) Exemple Ajout retrait vidange et affichage d'un tableau. Option Explicit Dim tabInt() As Integer Dim Taille As Integer Private Sub cmdAjout_Click() If IsNumeric(txtElem.Text) And txtElem.Text <> "" Then ReDim Preserve tabInt(Taille) tabInt(Taille) = txtElem.Text Taille = Taille + 1 txtElem.Text = "" txtElem.SetFocus Else txtElem.Text = "" txtElem.SetFocus Langage orienté objet VB - page 20 Feyaerts Prod End If End Sub Private Sub cmdReset_Click() Taille = 0 Erase tabInt End Sub Private Sub cmdRetirer_Click() If Taille > 0 Then ReDim Preserve tabInt(Taille - 1) Taille = Taille - 1 Else MsgBox "Le tableau déjà vidé", , "Tableau vide" End If End Sub Private Sub cmdVerif_Click() Dim i As Integer Dim Elem As String If Taille > 0 Then For i = 0 To Taille - 1 Elem = Elem & vbCrLf & tabInt(i) Next MsgBox Elem, , "Affichage" Else MsgBox "Ce tableau est vide", , "Tableau vide" End If End Sub 14. LES BASES DE DONNÉES RELIER LA BIBLIOTHÈQUE ADO AU PROJET ⇒ PROJET ⇒ REFERENCES Cocher « Microsoft ActiveX Data Objects 2.0 Library » DÉCLARER TROIS VARIABLES POUR RELIER LE PROJET À LA DB Private cnnAdo as New ADODB.Connection Private cmdAdo as New ADODB.Command Private rsAdo as New ADODB.Recordset ETABLIR LA CONNEXION Sur Form_load : Initialiser les propriétés Provider et ConnectionString pour choisir la source des données. cnnAdo.Provider = « Microsoft.Jet.OLEDB.3.51 » cnnAdo.ConnectionString = (« …. Chemin de la DB …. ») Appliquer la méthode Open cnnAdo.Open Configurer la commande INITIALISER LES PROPRIÉTÉS ACTIVECONNECTION ET COMMANDT EXT cmdAdo.ActiveConnection = cnnAdo cmdAdo.CommandText = (« ….Requête SQL … ») CONFIGURER ET OUVRIR LE RECORDSET rsAdo.CursorType = adOpenDynamic rsAdo.Open cmdAdo Premier enregistrement disponible : Langage orienté objet VB - page 21 Feyaerts Prod Txtnom.Text = rsAdo ! Nom M ÉTHODES ET PROPRIÉTÉS DE L’OBJET RECORDSET MoveFirst se déplacer sur le premier enregistrement MoveLast se déplacer sur le dernier enregistrement MoveNext se déplacer sur l’enregistrement suivant MovePrevious se déplacer sur l’enregistrement précédent BOF Begin of File EOF End of File EXEMPLES Option Explicit Private cnnAdo As New ADODB.Connection Private cmdAdo As New ADODB.Command Private rsAdo As New ADODB.Recordset Private Sub Form_Load() cnnAdo.Provider = "Microsoft.Jet.OLEDB.3.51" cnnAdo.ConnectionString = ("C:\Ecole\Access\président.mdb") cnnAdo.Open cmdAdo.ActiveConnection = cnnAdo cmdAdo.CommandText = ("select * from Tpresident") rsAdo.CursorType = adOpenDynamic rsAdo.Open cmdAdo affiche End Sub Public Sub affiche() txtPres_nr.Text = rsAdo!PRES_NR txtPres_name.Text = rsAdo!PRES_NAME txtBirth_yr.Text = rsAdo!BIRTH_YR txtYrs_serv.Text = rsAdo!YRS_SERV txtDeath_age.Text = rsAdo!DEATH_AGE txtParty.Text = rsAdo!PARTY txtState_born = rsAdo!STATE_BORN End Sub Langage orienté objet VB - page 22 Feyaerts Prod 15. LA POO QUELQUES NOTIONS DE BASE Objet : − − − Unité autonome qui a ses propres données et un ensemble de comportements qui vont affecter ces données. Les données sont stockées dans des variables Chaque instance d'un objet a son propre comportement. Comportement : − − Les comportements d'un objet permettent au programmeur d'accéder aux données contenues dans l'objet. Les comportements constituent l'interface de l'objet c'est à dire l'ensemble des propriétés, méthodes et évènements de l'objet. Méthode : − − − Les méthodes sont des services qui permettent l'interaction entre les objets. Les méthodes utilisent les données ou les données d'un autre objet et produisent un résultat. Une méthode est donc une routine implémentée par sub ou function (en VB) Propriété : − − Les propriétés sont des attributs qui décrivent un objet elles redent disponibles les informations de l'objet. Une propriété est une routine de type property implémentée par Property Get pour connaître la valeur de la propriété et par Property Let ou Set pour attribuer une valeur à une propriété. Événement : − − − − − Les contrôles sur les formulaires produisent des évènements. Ceux-ci produisent au programmeur en retour ce qui arrive au contrôle. Les objets peuvent aussi générer des évènements qui indiquent au programmeur ce qui arrive à l'objet lorsque le programme s'exécute. Pour déclarer un événement on utilise l'instruction Event (dans le module de classe) Et l'instruction Raise-Event dans le formulaire. Classe : − − − Les objets sont définit par les classes. La classe est une abstraction de l'objet ; l'objet est une instanciation de la classe. La classe modélise l'objet Dont elle est en quelque sorte le moule. Les moules qui sont vides par essence peuvent en effet servir à fabriquer plusieurs objets semblables mais de couleurs différentes Encapsulation : − − Les informations contenues dans un objet sont masquées au monde extérieur. Il est néanmoins possible d'y accéder par l'interface (Ó propriétés + méthodes + évènements) Les données internes sont encapsulées. Langage orienté objet VB - page 23 Feyaerts Prod Héritage : − Les objets d'une classe ont ces caractéristiques communes Pour subdiviser les objet d'une classe sur des sous caractéristiques il est possibles soit de réécrire entièrement plusieurs nouvelles classes ou bien de décrire des classes filles en s'appuyant sur les caractéristiques d'une classe déjà existante : la classe mère. Polymorphisme : − − Un même traitement sur des objets différents peut aboutir à des comportement différent qui dépendent de la nature de l'objet. Le polymorphisme permet donc de manipuler des objets différents de la m^me manière pourvu qu'ils ait une interface identique. Fonction virtuelle : Le code d'une fonction virtuelle n'est pas écrit dans la classe mère. Mais il l'est dans les modules classes filles chaque sous classe peut donc avoir son propre code pour cette fonction. Méthode surchargée : Il s'agit d'une méthode d'une classe fille entièrement réécrite . 16. PERSONNALISATION D'OBJETS CRÉATION D'UN MODULE DE CLASSE Dans un projet cliquer sur projet à Ajouter un module de classe VB crée alors un fichier supplémentaire xxxx.cls qu'il faudra nommer et sauvegarder. Rappel : Les classes ont des − − − − − Données internes cachées du monde extérieur (Privées) Propriétés accessibles à tous Publiques Méthodes et réagissent à des évènements L'ensemble des propriétés, méthodes et évènements s'appelle l'"interface publique" CRÉATION DES DONNÉES INTERNES Dans la feuille .cls juste après Option Explicit. Avant tout il faut déclarer en privé toutes les données internes Ce sont des données internes (privées à la classe) la convention voudrait qu'on utilise le préfixe m_ nomvar ou m_ signifie "membre" . Dim m_NomVar As TypeVar CRÉATION DES PROPRIÉTES Les propriétés font partie des éléments publics de l'interface de la classe. Les propriétés sont des attributs qui décrivent un objet. Elles rendent disponibles les infos de l'objet. Une propriété est une routine de type property implémentée par : − Property Get à pour connaître la valeur de la propriété. Get renvoie la valeur et en permet entre autre l'affichage. − Property Let ß pour attribuer une valeur à la propriété. Let permet de modifier les données internes entre autre par la saisie de nouvelle valeur. Langage orienté objet VB - page 24 Feyaerts Prod Dans la feuille .cls : Outils > Ajouter une procédure > on lui donne un nom : "NomProc" par exemple, on coche "Property", et on la laisse en "Public" . Les lignes suivantes sont créées dans la feuille .cls: Public Property Get NomProc() As Variant pour la lecture End Property Public Property Let NomProc(ByVal vNewValue As Variant) pour l'écriture End Property a. − − Property Get "à lecture" Faire correspondre le type de la propriété avec le type de la donnée interne correspondante. Affecter la variable interne à la propriété. Public Property Get NomProc() As TypeVar NomProc = m_NomVar End Property b. − − Property Let "ß Saisie" Faire correspondre le type de la propriété avec le type de la donnée interne correspondante. Affecter le paramètre à la variable interne. Public Property Let NomProc(ByVal p_Value As TypeVar) m_Nomvar=p_var End Property CRÉATION DES MÉTHODES − − − Les méthodes sont des services publics qui permettent l'interaction entre des objets. Les méthodes utilisent leurs données ou les données d'autres objets et produisent un résultat. Une méthode est donc une routine implémentée par Sub ou function. Dans la feuille .cls : Outils > Ajouter une procédure > on lui donne un nom : "NomProc" par exemple, on coche "Function" ou "Sub" selon que la méthode doit renvoyer une valeur ou non, et on la laisse en "Public" . Selon le choix , les lignes suivantes sont créées dans la feuille .cls: Public Sub meth() End Sub Public Function meth2() End Function Il faut préciser les éventuels paramètres que reçoit la fonction ainsi que la manière dont on les lui transmet (ByVal ByRef). − Les paramètres peuvent être une variable ou un objet même issu de la classe que l'on déclare. Dans le cas de la procédure Function il faut préciser le type de la variable retournée Public Function EstEgale(ByVal pdate As ClsDate) As Boolean Langage orienté objet VB - page 25 Feyaerts Prod CRÉATION D'ÉVENEMENTS Les objets peuvent générer des évènements qui indiquent au programmeur ce qui arrive à l'objet lorsque le programme s'exécute. Les évènements traduisent les réactions d'un objet qu'il reconnaîtra et auquel il peut réagir Les contrôles comme les "boutons de commandes" réagissent à certains événements comme un "clic" de la souris. L'occurrence de l'événement n'est pas déclenchée par le programmeur. Dans la feuille .cls, il faut déclarer en public les évènements auxquels doivent réagir les objets instanciés depuis la classe ainsi que les éventuelles variables paramètre qui interviennent à cette occasion. Public Event NomEvènement (ByVal nomVar As typeVar) Dans le module on fera appel à l'événement par l'instruction : RaiseEvent NomEvènement (nomVar) NOTION DE CONSTRUCTEUR ET DE DESTRUCTEUR Constructeur Un constructeur est une méthode un peu particulière qui permet lors de la création effective (instanciation) d'un objet de la classe d'initialiser certaines données. En VB on l'appelle Class_initialize() et elle doit être déclarée en privé !!! Utile car les objets sont créés avant le Form Load. Destructeur Un destructeur est une méthode un peu particulière qui permet lors de la destruction effective d'un objet de réaliser certaines actions juste avant sa destruction. En VB on l'appelle Class_terminate() Remarque si une feuille se décharge par End , le destructeur n'a pas l'occasion de s'exécuter Il faut donc décharger la feuille par l'instruction plus adéquate Unload Me INSTANCIATION D'OBJETS Il suffit de déclarer les nouveaux objets en les nommant par l'instruction Dim nomObjet As New clsNomClasse L' HÉRTTAGE EN VB Héritage d'interface (polymorphisme) Placée en tête de module l'instruction implements nous oblige à écrire les mêmes propriétés et méthode déjà implémentées dans la classe mère. Il faut entièrement réécrire les méthodes et les propriétés. On ne peut rajouter ni des méthodes ni des propriétés. Héritage simulé On combine 2 techniques l'encapsulation et la délégation. Technique : Soit une classe mère Mère.cls.avec les caractéristiques suivantes : Donnée = Nb Propriété= Prop Méthode = Fct On crée un nouveau module de classe Fille.cls et on écrit le code suivant : Option Explicit Private ObjMère as new Mère Public Property get Prop() As Type Prop = ObjMère.Prop Langage orienté objet VB - page 26 Feyaerts Prod End Property UN EXEMPLE La classe cls_véhicule.cls Option Explicit Public Event WheelChanged(ByVal p_Wheels As Integer)déclaration d'un évènement Private m_intWheels As Integer déclaration donnée privée proriété get Public Property Get Wheels() As Integer Wheels = m_intWheels End Property Public Property Let Wheels(ByVal p_Wheels As Integer) property Let If p_Wheels < 2 Then MsgBox "Pas de monocycles SVP", 0, "Erreur" Else m_intWheels = p_Wheels RaiseEvent WheelChanged(m_intWheels) End If End Property Public Sub ShowInfo() MsgBox "Ce véhicule a " & m_intWheels & " roues." End Sub méthode Le formulaire : frm_véhicule Option Explicit Déclaration d'un objet avec événement Private WithEvents AutreObj_Véhicule As cls_Véhicule Private Sub AutreObj_Véhicule_WheelChanged(ByVal p_Wheels As Integer) MsgBox "Le nombre de roue est devenu " & p_Wheels End Sub Private Sub cmd_Pasdévènements_Click() Dim MonObjVéhicule As New cls_Véhicule MonObjVéhicule.Wheels = Val(txtSaisie.Text) MonObjVéhicule.ShowInfo End Sub Private Sub cmdAvecEvènement_Click() AutreObj_Véhicule.Wheels = Val(txtSaisie.Text) End Sub Private Sub Form_Load() Set AutreObj_Véhicule = New cls_Véhicule End Sub Langage orienté objet VB - page 27 Feyaerts Prod UN EXEMPLE D'HÉRITAGE. Clscompte Propriétés Solde Transfère la valeur de/vers sngSolde Min Transfère la valeur de/vers sngMin Méthodes Ajouter (single) ajoute le nombre passé en paramètre au solde de l'objet. Retirer (single as Booléan: soustrait le nombre passé en paramètre au solde de l'objet courant. Si toutefois le résultat n'est pas inférieur au minimum permis Si c'est le cas retourner false et laisser le solde inchangé. ClsCompteCourant Donnée interne IntNbChèques = nombre de chèques restant Propriété nbChèques transfère la valeur de/vers intNbCchèques Méthodes Constucteur initialise le solde à 0 et le min à –1250 EncaisserChèque single as Booléan : décrémente le nombre de chèques restants et soustrait le nombre passé en paramètre au solde de l'objet courant si toutefois le résultat n'est pas inférieur au minimum permis si oui laisse le solde inchangé et renvoie false sinon renvoie true La classe Compte : Option Explicit Private sngSolde As Single Private sngMin As Single Public Property Get Solde() As Single Solde = sngSolde End Property Public Property Let Solde(ByVal p_Solde As Single) sngSolde = p_Solde End Property Public Property Get Min() As Single Min = sngMin End Property Public Property Let Min(ByVal p_Min As Single) sngMin = p_Min End Property Public Sub Ajouter(montant As Single) sngSolde = sngSolde + montant End Sub Public Function Retirer(montant As Single) As Boolean If sngSolde - montant > sngMin Then sngSolde = sngSolde - montant Retirer = True Else Retirer = True End If End Function Langage orienté objet VB - page 28 Feyaerts Prod La classe CompteCourant Option Explicit Private Compte As New clsCompte Private intNbCheques As Integer Public Property Get NbCheques() As Integer NbCheques = intNbCheques End Property Public Property Let NbCheques(ByVal p_NbCheques As Integer) intNbCheques = p_NbCheques End Property Public Property Get Solde() As Single Solde = Compte.Solde End Property Public Property Let Solde(ByVal p_Solde As Single) Compte.Solde = p_Solde End Property Public Property Get Min() As Single Min = Compte.Min End Property Public Property Let Min(ByVal p_Min As Single) Compte.Min = p_Min End Property Private Sub Class_Initialize() sngMin = 0 sngSolde = -1250 End Sub Public Sub Ajouter(montant As Single) Compte.Ajouter montant End Sub Public Function Retirer(montant As Single) As Boolean Retirer = Compte.Retirer(montant) End Function Public Function EncaisserCheque(montant As Single) As Boolean intNbCheques = NbCheques - 1 EncaisserCheque = Compte.Retirer(montant) End Function Rmq pourquoi montant entre () Langage orienté objet VB - page 29 Feyaerts Prod 17. LES CONTRÔLES EN DÉTAIL LES FEUILLES Évènement associé Load(), Activate() permet de paramétrer la feuille à son chargement Name Nom utilisé dans le code pour identifier l'objet Appearance 1 = 3D ; 0 = Flat Autoredraw Booléenne True / false ? BackColor Couleur de fond Palette ou système par défaut &H8000000F& Border Style 0 plat pas de bord 1 fixed single Redimension impossible plus de bouton min ou max 2 sizable par défaut 3 fixed dialog Redimension impossible plus de bouton min ou max 4 fixed tool windows Redimension impossible plus de bouton min ou max btn stop plus petit pas d'icône 5 sizable tool windows Redimension possible plus de bouton min ou max btn stop plus petit pas d'icône Caption texte apparaissant dans la barre de titre Controlbox Booléenne si false disparition des boutons de contrôles et de l'icône Enable Booléenne si false aucune action possible sur l'objet Fillcolor Couleur de remplissage Fillstyle Font Police de caractère du texte affiché sur la feuille Forecolor Couleur du texte affichée sur la feuille Height Hauteur de la feuille en pixel Icon Icône de la barre de titre Left Distance au bord gauche de l'écran MaxButton Booléenne si false bouton Max grisé MinButton Booléenne si false bouton Min grisé MouseIcone Apparence du pointeur de souris si MousePointeur = Custom c:\program Files \microsoft visual Basic6 \common\Graphics MousePointer de 0 à 15 ; 99 = custom permet de choisir le MouseIcône Moveable Booléenne autorise ou non le déplacement de la feuille Picture Permet d'apposer une image dans la feuille RMQ les images wmf se laissent stretcher ShowInTaskbar Booléenne Si true apparaît dans la barre de tâche StartupPosition Position au départ de l'application 0 manuel, 1 centerowner, 2 centerscreen, 3 Top distance entre le bord supérieur et le bord supérieur de l'écran Visible Booléenne rend la feuille visible ou non Width Largeur de la feuille WindowState 0 Normal, 1 Minimisée, 2 Maximiser cls ? hide pas de paramètre cache la feuille printform pas de paramètre imprime la feuille SetFocus pas de parametre Langage orienté objet VB - page 30 Feyaerts Prod LES BOUTONS DE COMMANDE Évènement associé click(), Name Nom utilisé dans le code pour identifier l'objet Caption Texte apparaissant sur le bouton Cancel Booléenne Si True, la touche Esc déclenche la commande (False par défaut) Default Booléenne détermine si c'est le bouton par défaut de la feuille Style 0 = standard 1 = graphical permet les couleur les dessins DisablePicture Image si le bouton est inactivé. DownPicture Image quand le bouton est enfoncé. DragIcon Image à afficher dans une opération de glisser déplacer Dragmode Booléenne : 0 = Manuel, 1 = Automatic (image visible) Enable Booléenne : bouton actif on non Font Police de caractère du texte dans le bouton. MouseIcone Image du pointeur de souris si MousePointer =custom c:\program Files \microsoft visual Basic6 \common\Graphics MousePointer de 0 à 15 ; 99 = custom permet de choisir le MouseIcône Picture Image du bouton si style = graphical. c:\program Files \microsoft visual Basic6 \common\Graphics Visible Booléenne SetFocus pas de paramètre LES ÉTIQUETTES Évènement associé : Click() Name Nom utilisé dans le code pour identifier l'objet Alignment 0=Left, 1=Right, 2 =Center Appearence 0 = flat 1 = 3D (défaut = 1) Autosize Booléenne permet d'adapter automatiquement la taille au contenu BackColor Couleur de fond défaut = &H8000000F& BackStyle 0 =Transparent, 1=Opaque Boderstyle 0= None 1 = Caption Texte affiché DragIcon Image à afficher dans une opération de glisser déplacer Dragmode Booléenne 0 = Manuel, 1 = Automatic image visible Enable Booléenne contrôle utilisable ou non Font Police ForeColor Couleur du texte MouseIcone Image du pointeur de souris si MousePointer =custom c:\program Files\microsoft visual Basic6 \common\Graphics MousePointer de 0 à 15 ; 99 = custom permet de choisir le MouseIcône ToolTipText "Info bulle" Visible Booléenne Wordwrap Booléenne si true et autosize true : passe à la ligne Langage orienté objet VB - page 31 Feyaerts Prod ZONE DE TEXTE Évènement associé : Change(), KeyPress(),MouseDown(), MouseMove(), MouseUp(), Name Nom utilisé dans le code pour identifier l'objet Alignment 0=Left, 1=Righe, 2 =Center Appearence 0 = flat 1 = 3D (defaut = 1) BackColor Couleur de fond défaut = vbWhite DragIcon Image à afficher dans une opération de glisser déplacer Dragmode Booléenne 0 = Manuel, 1 = Automatic image visible Enable Booléenne contrôle utilisable ou non Font Police ForeColor Couleur du texte Locked Booléenne true / false saisie impossible Maxlenght nombre max de caractères MouseIcone Image du pointeur de souris si MousePointer =custom c:\program Files \microsoft visual Basic6 \common\Graphics MousePointer de 0 à 15 ; 99 = custom permet de choisir le MouseIcône MultiLine Booléenne true / false(défaut) PasswordChar "*" pour masquer une entrée. ScrollBars 0, 1= hor, 2= vert , 3 = les deux Text "texte" ToolTipText "Info bulle" Visible Booléenne SetFocus pas de paramètre Remarque on ne peut pas afficher du texte avec des vbCrLf il faut utiliser des étiquettes lbl Truc pour forcer à ne saisir que des chiffres et signaler par un beep les saisies erronées. Private Sub txtSaisie_KeyPress(KeyAscii as Integer) If KeyAscii < 48 or KeyAscii > 57 Then KeyAscii = 0 Beep End If End Sub FRAME OU CADRE Ca sert à regrouper des boutons à option ou à faire joli. RMQ dans ce cas aussi un cadre n'étant jamais transparent et nécessite donc d'être créé en premier. Name Nom utilisé dans le code pour identifier l'objet Appearence 0 = flat 1 = 3D (defaut = 1) BackColor Couleur de fond défaut = &H8000000F& Boderstyle 0= None 1 = Caption texte qui apparaît en titre (pas moyen de centrer) DragIcon imageà afficher dans une opération de glisser déplacer Dragmode Booléenne 0 = Manuel, 1 = Automatic image visible Enable Booléenne contrôle utilisable ou non Font police ForeColor Couleur du texte MouseIcone Image du pointeur de souris si MousePointer =custom c:\program Files \microsoft visual Basic6 \common\Graphics MousePointer de 0 à 15 ; 99 = custom permet de choisir le MouseIcône Langage orienté objet VB - page 32 Feyaerts Prod Visible Booléenne BOUTONS À OPTION Les boutons réunis dans un même cadre font partie d'un même groupe la sélection de l'un d'entre eux désélectionne les autres Attention lors de la création par copier-coller il faut coller dans le cadre et pas sur la feuille. Name Nom utilisé dans le code pour identifier l'objet Alignment 1 texte à Droite 0 texte à gauche (défaut) Appearence 0 = flat 1 = 3D (defaut = 1) BackColor Couleur de fond défaut = &H8000000F& Caption texte affiché à côté du bouton DisablePicture Image si le bouton est inactivé. DownPicture Image quand le bouton est enfoncé. DragIcon Image à afficher dans une opération de glisser déplacer Dragmode Booléenne 0 = Manuel, 1 = Automatic image visible Enable Booléenne contrôle utilisable ou non Font Police ForeColor Couleur du texte MouseIcone Image du pointeur de souris si MousePointer =custom c:\program Files \microsoft visual Basic6 \common\Graphics MousePointer de 0 à 15 ; 99 = custom permet de choisir le MouseIcône Picture Image du bouton si style = graphical. c:\program Files \microsoft visual Basic6 \common\Graphics Style Booléenne 0 = Standart 1 = Graphical Value Booléenne false = non cochée (par défaut) Visible Booléenne CASE À COCHER Name Nom utilisé dans le code pour identifier l'objet Alignment 1 texte à Droite 0 texte à gauche (défaut) Appearence 0 = flat 1 = 3D (defaut = 1) BackColor Couleur de fond défaut = &H8000000F& Caption texte affiché à côté de la case DisablePicture Image si le bouton est inactivé. DownPicture Image quand le bouton est enfoncé. DragIcon Image à afficher dans une opération de glisser déplacer Dragmode Booléenne 0 = Manuel, 1 = Automatic image visible Enable Booléenne contrôle utilisable ou non Font Police ForeColor Couleur du texte MouseIcone Image du pointeur de souris si MousePointer =custom c:\program Files \microsoft visual Basic6 \common\Graphics MousePointer de 0 à 15 ; 99 = custom permet de choisir le MouseIcône Picture Image du bouton si style = graphical.c:\program Files \microsoft visual Basic6 \common\Graphics Style Booléenne 0 = Standart 1 = Graphical Value 0 = unchecked (défaut), 1 = checked, 2 = grayed Visible Booléenne T IMER Name Nom utilisé dans l e code pour identifier l'objet Enabled true / false Interval nombre en millisec Langage orienté objet VB - page 33 Feyaerts Prod top SLIDER MICROSOFT WINDOWS COMMON CONTROLS 6.0 Évènement associé Scroll() click() Name Nom utilisé dans le code pour identifier l'objet Personnalisé Ouvre une fenètre qui permet:de : Général : Min, Max, SmallChange, LargeChange, Enabled , SelectRange, SelStart, SelLength Apparence : Orientation, TickStyle, TickFrequency, MousePointer, TextPosition BorderStyle 0 = none (défaut) DragIcon Image à afficher dans une opération de glisser déplacer Dragmode Booléenne 0 = Manuel, 1 = Automatic image visible LargeChange Incrément par touche PgDown et PgUp et par clic souris Max Valeur maximale renvoyée par le curseur Min Valeur minimale renvoyée par le curseur MouseIcone Image du pointeur de souris si MousePointer =custom c:\program Files \microsoft visual Basic6 \common\Graphics MousePointer de 0 à 15 ; 99 = custom permet de choisir le MouseIcône Orientation 0 = Horizontal 1 = Vertical SelRange Booléenne : True si sélection possible Fait apparaître une bande bleue entre le début et la fin du curseur. SelStart Début de la sélection SelLength Longueur de la sélection. SmallChange Incrément par touches flèches TextPosition Au dessus en dessous à Gauche ou à d roite Selon l'orientation. TickFrequency Une marque tous les .. TickStyle 0 en dessous 1 Au dessus, 2 les deux, 3 pas de marques Value 0 ? par défaut IMAGE Name Nom utilisé dans le code pour identifier l'objet Appearence 1= 3D 2 = Flat BorderStyle 0 = None ; 2 = fixed single DragIcon Image à afficher dans une opération de glisser déplacer Dragmode Booléenne 0 = Manuel, 1 = Automatic image visible Enabled Booléenne contrôle utilisable ou non MouseIcone Image du pointeur de souris si MousePointer =custom c:\program Files \microsoft visual Basic6 \common\Graphics MousePointer de 0 à 15 ; 99 = custom permet de choisir le mouseIcône Picture permet de choisir limage à afficher Stretch true -> permet de "stretcher" l'image à une selon les propriétés Height et Width false contour ajusté automatiquement -> DATETIME PICKER MICROSOFT W INDOWS COMMON CONTROLS - 2 6 0 Name Nom utilisé dans le code pour identifier l'objet Personnalisé Ouvre une fenètre qui permet: value; mindate, maxdate, format, mouspointer, enabled, up&down. Format 0= dtpLongDate; 1= dtpShortDate, 2 = dtpTime,dtpCustom. Max Date Limite supérieur de date Mindate Limite inférieure de date MouseIcone Image du pointeur de souris si MousePointer =custom c:\program Files \micros oft visual Basic6 \common\Graphics MousePointer de 0 à 15 ; 99 = custom permet de choisir le mouseIcône UpDown True / false permet de changer la date par curseurs Langage orienté objet VB - page 34 Feyaerts Prod Value Renvoie ou définit la date actuelle. la date LISTBOX = Zone de liste modifiable Name Nom utilisé dans le code pour identifier l'objet Appearence 1= 3D 2 = Flat BackColor Couleur de fond défaut = vbWhite Enabled Booléenne contrôle utilisable ou non Font Permet de choisir la police ForeColor Couleur du texte Itemdata ? List Renvoie ou définit les rubriques contenues dans la partie liste du contrôle.liste Locked True / false définit si le contenu peut être modifié. MouseIcone Image du pointeur de souris si MousePointer =custom c:\program Files \microsoft visual Basic6 \common\Graphics MousePointer de 0 à 15 ; 99 = custom permet de choisir le mouseIcône Multiselect 0 = none; 1= Single 2 = Extended Sorted True /false trié ou pas. Style 0 par défault 1 checkbox Propriétes lst_nom.listcount renvoie le nombre d'élément de la liste. lst_nom.listindex renvoie l'index de l'élement sélectionné de la liste lst_nom.list(lxt_nom.listindex) renvoie l'élément sélectionné de la liste Méthodes lst.nom lst_nom lst_nom lst_nom Additem(item as string, index) ClearRemoveItem(index) RemoveItem(Lst_nom.listindex) Combobox Allie la zone de liste modifiable à la zone de texte Name Nom utilisé dans le code pour identifier l'objet Appearence 1= 3D 2 = Flat BackColor Couleur de fond défaut = vbWhite DragIcon imageà afficher dans une opération de glisser déplacer Dragmode Booléenne 0 = Manuel, 1 = Automatic image visible Enabled Booléenne contrôle utilisable ou non ForeColor Couleur du texte itemData ? List Renvoie ou définit les rubriques contenues dans la partie liste du contrôle.liste Locked True / false définit si le contenu peut être modifié. MouseIcone Image du pointeur de souris si MousePointer =custom c:\program Files \microsoft visual Basic6 \common\Graphics MousePointer de 0 à 15 ; 99 = custom permet de choisir le mouseIcône Sorted True /false trié ou pas. Style 0 par défault partie texte & partie liste déroulante Texte valeur contenue dans la partie texte du contrôle. Propriétes listcount renvoie le nombre d'élément de la liste. listindex renvoie l'index de l'élement sélectionné de la liste list(index) renvoie l'élément sélectionné de la liste Méthodes Additem(item as string, index) Clear RemoveItem(index) Langage orienté objet VB - page 35 Feyaerts Prod