PROGRAMMATION INFORMATIQUE D’INGÉNIERIE II
Contenu du Chapitre III Visual Basic .NET (VB.NET) VB et premier programme Introduction à la programmation-objet Applications Windows Chapitre 11 (Troelsen) Manipulations de fichiers Dessins et images
VB .NET (Applications WINDOWS) Une application Windows est un programme qui a une ou plusieurs fenêtres servant à l'inter-action avec l'utilisateur (autrement qu'en mode-texte, comme dans le cas des anciennes applications DOS). Une fenêtre (Window) est une région de l'écran à laquelle est associée une fonctionnalité spéciale qu'on appelle Window sous la plate-forme Windows. Bien entendu le concept Window est à la base du système d'exploitation Windows. Un contrôle .NET est une classe qui dérive de plusieurs anciennes interfaces COM (anciennes classes).
VB .NET (Applications WINDOWS) Par exemple observons dans Object Browser (Namespace: System.Windows.Forms): Un contrôle a le comportement d'une fenêtre générale (IWin32Window), plusieurs interfaces OLE servant aux échanges d'informations et plusieurs autres fonctionnalités complexes.
VB .NET (Applications WINDOWS) La fenêtre principale d'une application Windows est de type Form. Les lignes suivantes montrent qu'une Forme hérite de plusieurs classes: Quand nous parlons de fenêtre, nous abordons la notion de points à l'écran qui s'appellent des pixels. Le pixel est aussi l'unité de mesure pour les éléments de l'écran. La structure Point représente les coordonnées (x,y) d'un point de l'écran. La structure Size représente la taille d'une zone rectangulaire (Width, Height) i.e. largeur, hauteur.
VB .NET (Applications WINDOWS) Voici une liste partielle des propriétés des formes (fenêtres): Height: hauteur de la forme en Y Width: largeur de la forme en X Left: coordonnée en x du coin supérieur gauche de la forme Top: coordonnée en y du coin supérieur gauche de la forme Location: position (coin supérieur gauche) par rapport à son conteneur MaximumSize, MinimumSize, Size: tailles: largeur, hauteur FormStartPosition, FormWindowState: énumérations (constantes pré-définies) qui définissent les propriétés StartPosition et WindowState
VB .NET (Applications WINDOWS) Supposons, maintenant que nous créons un projet VB avec une forme et que la propriété Text de la forme est mise "Principale, aModale": Ensuite, dans la fenêtre de code de la forme, ouvrons la section Windows Form Designer generated code.
VB .NET (Applications WINDOWS) Code généré automatiquement
VB .NET (Applications WINDOWS) Code généré automatiquement
VB .NET (Applications WINDOWS) La section Region contient du code qui a été ajouter par "VS Designer". Voici quelques remarques à propos du code précédent découlant des ajouts fait par VS: Création d’une nouvelle classe appelée Form1 qui dérive de la classe Form Création d’une fonction New qui sert à créer des objets de type Form1 Création d’une fonction Dispose qui sert à détruire les formes de type Form1 Initialisation des propriétés concernant la taille de la fenêtre (280,173) le nom de la forme est "Form1" Initialisation de la propriété Text de la Form1 à "Principale, aModale" La forme ainsi décrite est en fait la forme principale de notre programme et elle est opérée en mode amodal (avec Show) i.e. le programme qui a exécuté Show montre la fenêtre et continue.
VB .NET (Applications WINDOWS) Exemple d’un projet avec plusieurs formes Nous allons maintenant ajouter une nouvelle classe Form2 et montrer comment passer de la forme principale à la seconde et inversement. D'abord, ajoutons une nouvelle forme avec le menu Project/Add Windows Form
VB .NET (Applications WINDOWS) Sélection du template Windows Form
VB .NET (Applications WINDOWS) Ajoutons aussi un bouton à la forme principale:
VB .NET (Applications WINDOWS) De la même façon, ajoutons un bouton à la forme Form2:
VB .NET (Applications WINDOWS) Code associé à la forme Form1 (principale):
VB .NET (Applications WINDOWS) Code associé à la forme Form2:
VB .NET (Applications WINDOWS) Sub Main Nous pourrions définir la fonction Main dans un module de code et utiliser cette fonction pour démarrer et contrôler notre programme, au lieu que ce soit la forme Form1 (par défaut). Pour modifier le programme précédent, il faut d'abord, ouvrir la fenêtre des propriétés du projet "deuxfenetres" et choisir "Sub Main".
VB .NET (Applications WINDOWS)
VB .NET (Applications WINDOWS) Ensuite, ajoutons un module de code pur avec le menu "Project/Add Module ...":
VB .NET (Applications WINDOWS) Voici le code du module:
VB .NET (Applications WINDOWS) Si nous plaçons un point d'arrêt sur l’énoncé "End Sub", la fonction ShowDialog est aModale ce qui signifie que la seule façon de quitter la fonction ShowDialog et d'arriver au point d'arrêt est de fermer la fenêtre (la fonction Show ne bloque pas). En plus, ShowDialog retourne une valeur de type DialogResult (Yes, No, OK, etc). Elle a un fonctionnement semblable à la fonction MsgBox.
VB .NET (Applications WINDOWS) Boutons-radio et case à cocher La figure suivante montre une forme qui contient 2 textbox 1 et 2, 2 cases à cocher qui contrôlent les propriétés Enable et Visible du TextBox1. Les boutons-radio (cercles en haut à droite) contrôlent la position en Z (devant-derrière) des textbox (on montre les cas possibles):
VB .NET (Applications WINDOWS) Boutons-radio et case à cocher
VB .NET (Applications WINDOWS) Code de la forme:
VB .NET (Applications WINDOWS) Un TextBox est en gris lorsqu’il est désactivé. Un Textbox désactivé ou non visible ne répond pas aux événements. Notez que ces propriétés se retrouvent dans tous les contrôles. Contrairement aux cases à cocher, les boutons-radio fonctionnent en groupe: si nous cochons un des boutons du groupe, alors le bouton déjà coché est dé-coché automatiquement. Souvent, on place les boutons dans un contrôle de regroupement (GroupBox) comme suit:
VB .NET (Applications WINDOWS) Menus et TextBox Pour ajouter un menu en haut d'une forme, il suffit de double-clicker le contrôle MainMenu de la boîte à outils. De même, pour créer un menu contextuel (qui apparaît avec le bouton droit de la souris), il faut double-clicker le contrôle ContextMenu de la boîte à outils. Ensuite, nous ajoutons les entrées appropriées pour les menus. Notez que nous devons d'abord entrer un titre dans un menu, et ensuite utiliser l'onglet des propriétés comme avec les autres contrôles.
VB .NET (Applications WINDOWS) Insertion des contrôles de gestion de menus
VB .NET (Applications WINDOWS) Ensuite, définissons un choix de menu appelé MenuItemCouper. Le nom est important car il est utiliser dans le programme. Nous pourrions choisir un racourci (Shortcut).
VB .NET (Applications WINDOWS) Procédons de façon semblable avec le menu contextuel:
VB .NET (Applications WINDOWS) Dans cet exemple, nous avons ajouté un TextBox avec les propriétés: Multiline=True, Scrollbars=Both AcceptReturn=True. Ensuite, nous définissons des procédures qui répondent aux choix de menus: à cette fin, il suffit de double-clicker le titre de chaque choix de menu. Finalement, nous devons choisir le menu MainMenu1 dans la propriété Menu de la forme Form1. Également, nous pouvons choisir le menu contextuel ContextMenu1 pour l’associer à la propriété ContextMenu du TextBox.
VB .NET (Applications WINDOWS) Fenêtre d’édition résultante:
VB .NET (Applications WINDOWS) Code associé aux items du menu
VB .NET (Applications WINDOWS) TextBox Un Textbox est un contrôle sophistiqué qui correspond à un éditeur de texte comme Notepad. En effet, ce contrôle contient beaucoup de fonctionnalités qui proviennent en majorité de la classe TextboxBase.
VB .NET (Applications WINDOWS) En observant la figure précédente, nous remarquons que les fonctionnalités "Couper/Coller" avec le presse-papier (clipboard) sont déjà fournies Les touches de racourci Ctrl-X, Ctrl-V sont aussi fournies (note: on a redéfini Ctrl-C). Des fonctions pour manipuler le texte sélectionné, etc. Voici une liste particielle de ce qui est disponible: Copy, Cut, Paste, Select(start, length), SelectAll, SelectedText, SelectionLength, SelectionStart, ...
VB .NET (Applications WINDOWS) ListBox et Combo Les contrôles ListBox et ComboBox servent à afficher une liste de choix. Un ListBox permet de sélectionner plusieurs éléments et les choix sont toujours visibles. Un ComboBox possède une liste déroulante pour les choix. De plus, il est possible d’éditer un choix qui est ensuite ajouté à la liste.
VB .NET (Applications WINDOWS) Voici une forme qui permet de montrer quelques possibilités de la ListBox et du ComboBox:
VB .NET (Applications WINDOWS) Fonctionnement de cet exemple:
VB .NET (Applications WINDOWS) Exemple qui montre la possibilité de modifier la zone de texte du ComboBox et lorsque nous enfoncons la touche "return" (ou Enter ou Entrée), le texte est ajouté comme un nouveau choix et ce choix est sélectionné:
VB .NET (Applications WINDOWS) Code du programme lié à la Form:
VB .NET (Applications WINDOWS) Code du programme lié à la Form (suite):
VB .NET (Applications WINDOWS) WebControl Tous les contrôles et les composantes logicielles ActiveX, COM ou .NET ne sont pas tous disponibles dans les listes du menu "Customize Toolbox ..." sous les onglets COM et .NET. Par exemple, la partie d'Internet Explorer qui affiche les pages Web est un contrôle contenu dans le fichier normalement installé dans le répertoire: C:\winnt\system32\shDocvw.dll. Si nous voulons l'utiliser, nous devons insérer ce contrôle dans le ToolBox en suivant les étapes suivantes:
VB .NET (Applications WINDOWS) Sélectionner le menu Customize Toolbox.
VB .NET (Applications WINDOWS) Pressez le bouton Browse.
VB .NET (Applications WINDOWS) Insertion du nouveau contrôle dans le Tool Box.
VB .NET (Applications WINDOWS) Dans l’exemple suivant nous avons créé une forme avec une boîte de texte servant à contenir une adresse URL (de page Web quelconque), un contrôle WebBrowser (ou Explorer) et un bouton GO:
VB .NET (Applications WINDOWS) Code associé au bouton GO:
VB .NET (Applications WINDOWS) Après avoir introduit une adresse URL valide et pressé la touche GO:
VB .NET (Applications WINDOWS) TabControl Le contrôle TabControl permet de créer une forme qui contient plusieurs onglets. Les onglets sont en réalité des contrôles de type TabPage (page) qui sont eux-mêmes dérivés de la classe Panel. Un panel est un contrôle qui gère des bordures et des barres de défilement. Les onglets sont très utiles pour offrir plusieurs informations à l’utilisateur dans un même espace à l'écran. Les contrôles agissent souvent comme des conteneurs pouvant recevoir d'autres contrôles (ControlContainer). La propriété Controls d'un contrôle donne la liste de tous les contrôles contenus dans le contrôle parent.
VB .NET (Applications WINDOWS) Voici une forme contenant un contrôle TabControl avec 2 onglets et un contrôle de type panel, à droite. Pour utiliser la propriété AutoScroll=True avec un panel (ou Page), on place d'abord les contrôles sur une forme avec le TabControl et le Panel agrandi :
VB .NET (Applications WINDOWS) Redimensionnement des contrôles
VB .NET (Applications WINDOWS) Résultat initial de l’exécution
VB .NET (Applications WINDOWS) TreeView Le contrôle TreeView sert à afficher des arborescences (des arbres). La figure suivante montre la fenêtre de l'application Explorer. La section de gauche (avec les + et les - ) est réalisée avec un contrôle TreeView:
VB .NET (Applications WINDOWS) Exemple de programme: Le programme suivant montre un arbre avec tous ses noeuds développés et un TextBox:
VB .NET (Applications WINDOWS) Le code suivant montre comment initialiser la structure des noeuds qui sont des objets TreeNodes et comment capter le noeud sélectionné avec un double-click:
VB .NET (Applications WINDOWS) La figure suivante montre dans ObjectBrowser toutes les classes qui sont utiles dans le contexte des arbres:
VB .NET (Applications WINDOWS) Progress bar La barre de progrès peut être utile pour signaler à un utilisateur la progression d'une opération qui peut prendre un temps non négligeable. Voici un exemple de forme dans laquelle nous avons placé un contrôle ProgressBar:
VB .NET (Applications WINDOWS) Dans le code suivant de la forme nous initialisons les paramètres du contrôle ProgressBar, et signalons ensuite l'avancement des opérations (PerformStep):