mis

62
Programmation évènementielle avec VB ISIGK, 2011 Adel ESSAFI [email protected] http://www.slideshare.net/ adelessafi

Transcript of mis

Page 1: mis

Programmation évènementielle avec VB

ISIGK, 2011Adel [email protected]://www.slideshare.net/adelessafi

Page 2: mis

Plan du cours

Les bases de VB Les structures conditionnelles Les structures itératives Les structures de données complexes (structures, tableau, collection)

Les procedures et les fonction La programmation évènementielle avec VB

Les objets de bases Reactions aux évènements

Page 3: mis

Langages de programmation

Génération I: Les langages de première génération s'adressaient aux ordinateurs en langage binaire (des 0 et des 1).

Génération II: le langage assembleur, s'adresse au microprocesseur instruction par instruction.

Génération III: introduit une syntaxe et des mots réservés, ce sont les langages procéduraux (COBOL, Fortran, BASIC, Pascal, langage C, RPG) ou encore à objets (Java, C++, Eiffel, Python).

Génération IV: associée à des bases de données, se situe un niveau au-dessus, en intégrant la gestion de l'interface utilisateur et en proposant un langage moins technique, plus proche de la syntaxe naturelle.

Page 4: mis

Langages de programmation

Tendances:oLes langages de programmation InterneloLes langages basé sur XML (markup)

Page 5: mis

Historique du langage Visual Basic

Le BASIC (Beginner's All-purpose Symbolic Instruction Code, 1963)

Principes de concept:o facile d'utilisation pour les débutantsoun langage généraliste (All-purpose) ;oautoriser l'ajout de fonctionnalités pour leso interactif ;o fournir des messages d'erreur clairs et conviviaux ;oavoir un délai de réaction faible pour les petits

programmes ;o Indépendant du matérielo isoler l'utilisateur du système d'exploitation.

Page 6: mis

Visual Basic

Le VB est directement dérivé du BASIC et permet le développement rapide d'applications, la création d'interfaces utilisateur graphiques, l'accès aux bases de données, ainsi que la création de contrôles ou d'objets ActiveX.

VB est un langage de haut niveau

Page 7: mis

Framework Un framework (dans notre cas, le framework .NET de Microsoft) est une sorte d'immense bibliothèque informatique contenant des outils qui vont faciliter la vie du développeur

Evolution:oVersion 2.0 en 2005oVersion 3.5 en 2007oVersion 4 en 2010

Visual studio et frameworkoVS 2003 (Framework 1.1), VS 2005 (Framework 2.0), VS 2008 (Framework 3.5) et VS 2010 (Framework 4.0).

Page 8: mis

Premier programme

Créer un nouveau projet (application console)Voici le code que nous devons obtenirModule Module1 Sub Main() End Sub End Module

Chaque section ce termine par END (end sub, end module)

la première chose que ce dernier va faire sera de localiser et de sauter dans la partie appelée « Main »

Page 9: mis

Premier programme (exécution)

Exécution très rapide Affichons un message

Console.Write("Hello World !") Attendons un évènement

Console.Read() Apres l exécution de ce programme, on va avoir un message affiché sur la console. L’application va ensuite attendre une action de l’utilisateur pour se terminer

Page 10: mis

Procédure, objets et fonctions

Main(): fonction principale qui sera appelée lors de l’exécution

console: objet offrant un ensemble de fonctions relié à l’affichage, la lecture, le BEEP , ……

Fonction: ce sont les comportement que offre un objet (la méthode write par exemple permet d afficher sur la console).

Une procédure/fonction peut prendre plusieurs arguments

Page 11: mis

Variables

Dim MaVariable As type Les types disponibles:oBooleano Integer oDouble oString oDate Stocke une date et son heure sous la forme

« 12/06/2009 11:10:20 ».

Page 12: mis

Variables : exemples d’utilisation

Dim MaVariable As Integer MaVariable = 10 Console.Write(MaVariable) Quelques opérations: Addition (+) Soustraction (-) Multiplication (*) Division( /) Division entière (\) Puissance (^) Modulo (Mod)

Page 13: mis

Les constantes

Une constance est un objet dont la valeur ne change pas au cours de l’exécution

Déclaration:

Const NomConstante As Type = ValeurConst LONGUEURTABLEAU As Integer = 9

Page 14: mis

Structures

Une structure est utilisée comme conteneur pour un petit jeu de variables.Permet de regrouper des données de type différent: EXEMPLE:Public Structure Adresse Dim Numero As Integer Dim Rue As StringDim Ville As StringEnd Structure Puis dans une procédure il faut déclarer la variable :Dim MonAdresse As Adresse

Page 15: mis

Utilisation

La variable MonAdresse contientun numéro qui est dans 'MonAdresse.Numero' un nom de rue qui est dans 'MonAdresse.Rue' un nom de ville qui est dans 'MonAdresse.Ville MonAdresse.Numero=2MonAdresse.Rue= "Grande rue"MonAdresse.Ville= "Lyon" 

Page 16: mis

Utilisation

Mot clé With pour ne pas avoir à répéter le nom de la variableWith MonAdresse.Rue= "Grande rue".Ville= "Lyon"End With  Structures et tableauxDim Adresses(99) as Adresse  'Permet de travailler sur un tableau de 100 adresses Adresses(33).Rue="Place de la mairie"

Page 17: mis

La fonction write

Write: affiche sans retour à la ligne Writeline : affiche avec retour à la ligne & : concaténer deux chaines

Page 18: mis

Exemple: Que fait ce programme

Module Module1 Sub Main()

'Initialisation des variables Dim MaVariable As Integer = 0 Dim MaVariable2 As Integer = 0 Console.WriteLine("- Multiplication de deux nombres -") 'Demande du premier nombre stocké dans MaVariable Console.WriteLine("Veuillez entrer le premier nombre") MaVariable = Console.ReadLine() 'Demande du second nombre stocké dans MaVariable2 Console.WriteLine("Veuillez entrer le second nombre") MaVariable2 = Console.ReadLine() 'Affiche "X x Y = " puis le résultat (multiplication  de MaVariable par MaVariable2) Console.WriteLine(MaVariable & " x " & MaVariable2 & " = " &

MaVariable * MaVariable2) 'Crée une pause factice de la console Console.ReadLine()

End Sub End Module

Page 19: mis

Structure conditionnelle

If - end if : structure classique If – else – end if If –elseif – else - end if

Page 20: mis

La structure select

Select Case MaVariable Case 1 'Si MaVariable = 1 Case 2 'Si MaVariable = 2 Case Else 'Si MaVariable <> 1 et <> 2 End Select

Page 21: mis

Structure Do while

Do 'Instruction exécutée au moins une fois Loop While MaVariable = 10

Page 22: mis

Structure while

While MaVariable = 10 'Exécuté tant que MaVariable = 10 End While

Page 23: mis

La boucle for

For x As Integer = 0 to 10 step 2'Instruction à exécuter 5 fois Next

Page 24: mis

Tableaux

1 dimensionoDim MonTableau(4) As Integer

2 dimensionsoDim MonTableau(3,4) As Integer

3 dimensionsoDim MonTableau(2,3,4) As Integer

TAILLE D’UN TABLEAULe nombre de cases d'un tableau est toujours « indice + 1 ».Réciproquement, l'index de sa dernière case est « taille - 1 ».

Page 25: mis

Les tableaux dans les structures

En Visual Basic .NET il y a 2 méthodes pour utiliser un tableau dans une structure: 1-Méthode par initialize Une structure peut comporter une méthode 'Initialize' qui sera exécutée quand on déclare une variable de type structure. Public Structure DriveInfoDim DriveNumber() As Short'Noter que le nombre d'élément a disparu.Dim DriveType As String'maintenant on instance les 25 éléments.Public Sub Initialize()ReDim DriveNumber(25)End SubEnd Structure 

Page 26: mis

Les tableaux dans les structures

2. Après la déclaration de la variable, on 'Redimensionne' le tableau.   Public Structure DriveInfoDim DriveNumber() As ShortDim DriveType As StringEnd Structure  Function AddDrive(ByRef Number As ShorByRef DriveLabel As String) As ObjectDim Drives As DriveInfoRedim Drives.DriveNumber(25)Drives.DriveNumber(3)=12Drives.DriveType = "Fixed"End Function

Page 27: mis

Opérations sur les tableaux: affichage 'afficher les éléments un par unfor i=0 to N    console.write(t(i))Next

Page 28: mis

recherche dans un tableauPour une liste non triée, on n'a pas d'autres choix que de comparer la string cherchée à chaque élément du tableau, on utilisera donc une boucle:  N=4  'tableau de 5 éléments.Dim T(N) As String  'élément de 0 à 4T(0)="vert"T(1)="bleu"T(2)="rouge"T(3)="jaune"T(4)="blanc"Dim i  As Integer    'Variable de boucleDim AChercher As String= "rouge" 'String à chercherFor i=0 To N      If T(i)=AChercher then             Exit For      End ifNext i

Page 29: mis

opérations sur les tableaux: supprimer

si on veut supprimer l'élément d'indice x, on doit copier les élements d'indices i+1 dans l'element d'indice i pour tout i>=x

 Dim N As IntegerDim T(N) As String   'création d'un tableau de String.Dim i As IntegerFor i= x To N-1    T(i)=T(i+1)Next iT(N-1)=""            'ne pas oublier de modifier le dernier élément 

Page 30: mis

opérations sur les tableaux : insérer un élementpour insérer un element à l'indice x, on doit decaler toutes les cases à partir de x d'une unité et insérer l'élément voulu à l'endroit x

Dim N As IntegerDim T(N) As String   'création d'un tableau de String.Dim i As IntegerFor i= N-1 To x+1 Step -1    T(i)=T(i-1)Next iT(x)="LFSI"            'ne pas oublier d'ajouter

Page 31: mis

Opérations sur les tableaux: recherche d'un élémentPour une liste non triée, on n'a pas d'autres choix que de comparer la string cherchée à chaque élément  du tableau, on utilisera donc une boucle:N=4  'tableau de 5 éléments.Dim T(N) As String  'élément de 0 à 4T(0)="vert"T(1)="bleu"T(2)="rouge"T(3)="jaune"T(4)="blanc"Dim i  As Integer    'Variable de boucleDim AChercher As String= "rouge" 'String à chercherFor i=0 To N      If T(i)=AChercher then             Exit For      End ifNext i

Page 32: mis

Les collections

Les Collections permettent de regrouper des données. Les collections sont très utilisées dans la programmation 'Objet'.

Une collection fonctionne plutôt comme un groupe d'éléments dans laquelle il est possible d'ajouter ou d'enlever un élément à n'importe quel endroit sans avoir à se préoccuper de la taille de la collection, ni ou se trouve l'élément.

Le nombre d'élément n'est pas défini au départ comme dans un tableau. Dans une collection, il n'y a aucun élément au départ, puis il n'y a que les éléments que l'on a ajouté.

Les éléments sont repérés grâce à un index ou avec une Clé unique

Les items affichés dans une ListBox donnent une idée concrète de ce qu'est une collection. Types de collections: 

 Les Listes:ArrayList, List(Of..) VB 2005 ...........................................

Page 33: mis

collection de type array listC'est une 'Liste' d'objets, d'Item: La ArrayList est une collection particulière: On peut y mettre des objets : chaînes, nombres... rien n'empêche que le premier élément soit un entier, le second une chaîne … . Il n'y a pas de clé. Dim L As New ArrayList()  'On crée une collection ArrayList Dim L As ArrayList = ArrayList.Repeat("A", 5) 'On crée une ArrayList de 5 éléments contenant  chacun "A" (on répète "A") L.Add("Bonjour")  'On ajoute un élément à la collection

Page 34: mis

arraylist : quelques opérationsL.Remove("Bonjour") 'On enlève l'élément de la liste qui contient "Bonjour" L.RemoveAt(0) 'On enlève l'élément 0 de la liste L.Sort()  'Trie la collection L.Clear()  'Efface tous les éléments L.Contains (élément)  ' Retourne True si la liste contient élément.

Page 35: mis

arraylist: quelques opérationInsert permet d'insérer à un index spécifié: L.Insert( position, Ainserrer)recherche L.Containts (élément)  ' Retourne True si la liste contient 'élément'. Recherche d'un élément dans une collection NON TRIEE avec IndexOf:  Dim l As New ArrayList Dim i As Integer l.Add("toto") l.Add("lulu") i = l.IndexOf("lulu") MsgBox(i.ToString)  'Affiche 1 qui est l'index de "lulu"

Page 36: mis

Fonction et procédure

Une procédure est un ensemble d'instructions qui effectue une fonction précise. 

En Visual Basic.NET, il existe deux sortes de procédures : les 'sub' et les 'function' . o Les 'sub' commencent par le mot clé 'sub' puis finissent par

'end sub' et ne retournent aucune valeur o Les fonctions qui débutent par 'function' puis finissent par

'end function' et qui retournent une valeur précise.

Page 37: mis

Les fonctions

SyntaxeFunction NOMF(ByVal Valeur1 As Integer, ByVal Valeur2 As Integer) As Integer Instructions ……Return Resultat End Function

Page 38: mis

Arguments d'une fonction

  Passage par valeur (ByVal) La procédure utilise alors une copie de la variable. La valeur de la variable ne peut pas être modifiée par la procédure.Passage par référence (ByRef) L'adresse de la variable qui est passée à la procédure et peut donc être modifiée par la procédure.

Page 39: mis

Fonctions/Procedure et Structures

Sub AfficheAdresse( ByVal Une Adresse As Adresse)...Imprimer l'adresseEnd sub

Page 40: mis

La boucle For each

Structure générale : For Each Item In Collection'boucleNext  ItemExempledim tab(10) as integerfor each v in tab s=s+vnext v  

Page 41: mis

Partie II : Programmation événementielle

Page 42: mis

Créer un projet

Créer nouveau projet Choisir « application windows forms » Le contrôle de base « form » Le contrôle de base en Visual Basic est la feuille, ou formulaire, en anglais, Form.

Deux proriétés basiques: Name: nom de l’objet tel qu’il est géré par l’application

Caption: texte associé à l’objet sur l’écran

Page 43: mis

Autres propriétés Modal : propriété qui gère le caractère « impératif » ou non de toute Form (on peut cliquer ou non en dehors de la form, sur une autre Form)

Style : propriété qui gère la tête générale de la Form (présence ou non du menu système, tête des bordures, etc.)

Visible : propriété booléenne qui gère, comme son nom l’indique, le caractère visible ou non de la Form (et partant, des autres contrôles qu’elle contient)

Page 44: mis

Form (propriétés)

BackColor: Définis l'arrière plan du contrôle Text: Le titre de la form Name: Le nom du contrôle utilisé dans le codage

Enabled: Indique si le contrôle est activé ou pas

Page 45: mis

Un Label

Un Label est un contrôle "inerte", qui sert à afficher un texte sur une Form.oName : Nom de l’objetoCaption : évidemmentoAlignment : qui règle l’alignement du texte

(gauche, centré, droite)oBorderStyle : qui désigne le type de bordure

Page 46: mis

Un textbox (zone de texte)

Ces zones (de la classe "TextBox" pour VB) peuvent servir à saisir une information.

toute information contenue dans une zone de texte est obligatoirement de type texte !

Propriétés :oText: C’est la propriété qui désigne son contenu.oMultiline : autorise ou non l’écriture sur plusieurs lignesoScrollbars : fait figurer dans la TextBox une barre de

défilement horizontale ou verticale (ou les deux)oPasswordChar : crypte le texte entré par le caractère

stipulé (généralement, on choisit le caractère *)oMaxLength  : limite le nombre de caractères qu’il est

possible de saisir dans la zone de texte.

Page 47: mis

Accéder aux objets

Pour accéder aux informations (données) dans le formulaire, on utilise la syntaxe suivante

Nomobjet.propriété Exemple

Somme.text=5

Page 48: mis

Les checkbox

Les " cases à cocher " (CheckBox): Elles sont carrées, et indépendantes les unes des autres, si l'utilisateur coche une case , cela n'a pas d'influence sur les autres cases du formulaire, qu'elles soient regroupées dans un cadre pour faire plus joli ou nonoChecked: Indique si la case est cochéeoCheckState: Indique l'état de la case à cocher

Page 49: mis

Les boutons radios

Les " boutons radio " (RadioButton): Ils sont ronds et font toujours partie d'un groupe (Ils sont dans une fenêtre ou dessinés dans un objet GroupBox ). Ce groupe est indispensable, car au sein d'un groupe de RadioButton, un seul bouton peut être coché à la fois : si l'utilisateur en coche un, les autres se décochent

Page 50: mis

Le bouton Le bouton est le composant le plus important puisque c'est grâce à lui que l'utilisateur pourra interagir avec le programme. Un bouton permet essentiellement de valider ou d'annuler une fonction. oText: Le texte du bouton oTextAlign: L'alignement du texte du boutonoEnabled Indique si le contrôle est activé ou pas oVisible Indique si le contrôle est visible ou pasoName Le nom du contrôle utilisé dans le codage oSize La taille du contrôle en pixels

Page 51: mis

La Combobox

Les ComboBox sont des menus déroulants. Elles permettent de choisir une option parmi plusieursoSorted: Indique comment sont triés les éléments

de la listeo Items: Permet d'ajouter les éléments dans la liste

déroulante

Page 52: mis

listbox

Le contrôle ListBox affiche une liste d'éléments (d'objets) dans laquelle l'utilisateur peut faire un ou plusieurs choix.

Exemple de codes Vider la ListBox ListBox1.Items.Clear() Ajouter un ou des éléments ListBox1.Items.Add(" quelquechose") Ajouter un tableauoDim t() As String {"Franc", "Norgege", " Thaïlande" } oMe.ListBox1.Items.AddRange(t)

Page 53: mis

La fonction MessageBox

C'est une fonction qui affiche un message dans une boîte de dialogue, attend que l'utilisateur clique sur un bouton (Ok ou Oui-Non..), puis retourne si on le désire, le nom du bouton cliqué par l'utilisateur.

On utilise la méthode Show pour afficher la boite.

On doit fournir le texte à afficher, on peut aussi fournir le titre dans la barre, le type de bouton , le type d'icône et le bouton par défaut, une option , la présence d'un bouton d'aide.

Page 54: mis

La fonction MessageBox: Exemple

MessageBox.show(Texte,Titre, TypeBouton , Icone, BoutonParDéfaut, Option, Bouton aide)

MessageBox.Show("bonjour", "Programme", MessageBoxButtons.YesNo, MessageBoxIcon.Error, _ MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign, True)

Page 55: mis

InputBox C'est une fonction qui permet d'ouvrir une fenêtre qui pose une question :

Elle retourne la réponse tapée par l'utilisateur. Le retour est effectué dans une variable String.

Dim Nom As String Nom = InputBox("Bonjour","Tapez votre nom ?")

Page 56: mis

procédures événementielles

A chaque objet créé peuvent correspondre autant de procédures que d’événements possibles survenant sur cet objet

Double click : la procédure gérant l’événement le plus courant pour l’objet considéré vient d’être créée

CODE CREE ->Private Sub NomObjet_Evenement()…End Sub

Page 57: mis

procédures événementielles

Private signifie que la procédure n’est utilisable que pour la Form considérée (et pas pour d’autres objets situés sur d’autres Form). On peut aussi créer des procédures Public

End Sub marque la fin de la procédure en question (mais pas la fin de l’application).

Page 58: mis

Combobox (VB6)

Une combox est un contrôle qui permet de choisur un élèment d’une listeUne liste peut être ajouté graphiquement (menu propiétés) ou avec le code sourceChaque item d’une combobox comporte: le nom et un dataitemla propriété ItemData d'un contrôle ComboBox peut être définie au moment du design dans la fenêtre Propriétés pour associer un Integer à un élément ComboBox

Page 59: mis

Comboxbox: ajouter un item et definir sa valeur

cbonom.AddItem " mehdi  "cbonom.ItemData(cboFood.NewIndex) = 02328545cbonom.AddItem " sihem"cbonom.ItemData(cboFood.NewIndex) = 08254789cbonom.AddItem " gaith"cbonom.ItemData(cboFood.NewIndex) = 105 la propriété NewIndex était utilisée pour récupérer l'index du dernier élément ajouté à un contrôle ComboBox

Page 60: mis

Combobox: évènement et propriétés

Cet évènement se déclenche quand on clique sur la comboboxPour récupérer l’indexe de l’élément seléctionnée nous utilisons la propriété : listIndexPour récupérer le nombre d’éléments on utilise la propriété

ListCountPour accéder à un élément d’indice i, on utilise la propriété List(intX)L’indice de l’item sélectionné est récupéré grâce à ListIndex 

Page 61: mis

exercice

Ecrire une application VB qui contientUne comboboxUne zone de texte (nom)Un bouton chercherQuand l’utilisateur appui sur le bouton chercher , le programme cherche si le nom tapé dans la zone de texte existe dans les éléments de la listbox et affiche le message qui convientTraiter les cas particuliers (liste vide, zone de texte vide ….)