• Aucun résultat trouvé

Une application Windows ( Form et Button )

Une première application Windows est idéale pour étudier l’usage du Form et du Button, ainsi que quelques points importants de la programmation visuelle sous l’environnement VB.Net.

Au départ, VB.Net étant chargé, il s’agit de faire le choix de créer un Nouveau projet. Un premier formulaire s’ouvre alors et il ne faut pas accepter les informations proposées par défaut, mais plutôt le compléter avec des informations pertinentes. Outre de choisir le type de projet et son modèle, il faut désigner l’endroit de stockage des fichiers, le nom du dossier et le nom de la solution, c'est-à-dire le nom de l’application.

Types de projets

VB en ce qui nous concerne

Modèles

Application Windows

Nom du dossier

Emplacement du dossier

Nom de l’application

Autoriser la création du dossier

Sauf s’il existe déjà

Après la validation de ces informations, VB.Net présente l’environnement de travail déjà observé. Les différents points des menus et outils divers sont abordés lorsqu’ils s’avèrent nécessaires. Pour l’instant, il importe de savoir comment obtenir la boîte à outils (menu Affichage/Boîte à outils ou bien par le bouton mis en évidence ci-dessous), et où nommer les objets utilisés dans l’application.

Boîte à outils

Les composants visuels

Les fichiers de la solution

dont les Références et le Form

Cliquer ce bouton pour faire apparaître la boîte à outils.

Cette fenêtre présente les propriétés de l’objet sélectionné. Il faut l’utiliser pour nommer les objets visuels dès qu’ils sont déposés.

C’est ici aussi que sont nommés significativement les Forms et les fichiers.

La sélection du fichier Form1.vb dans l’explorateur de solution provoque l’affichage du bouton qui permet l’accès à la feuille de code.

Comme déjà observé précédemment, d’entrée de jeu la feuille de code propose l’écriture d’une classe. Cela signifie que l’application composée du Form et de son code sera une instance de cette classe lors de l’exécution, c'est-à-dire un objet au sens de la POO.

Cette classe est Public et porte le nom du formulaire. Elle hérite de Form, de la collection des Forms, de la librairie

System.Windows. Cet héritage est réalisé dans le fichier Form1.Designer.vb écrit par le Concepteur Windows Form. Mais ces aspects ne sont pas pertinents pour l’instant.

En revenant à l’écran précédent par l’onglet [Design] et, après sélection du Form, il convient de lui donner un nom significatif dans la fenêtre des propriétés, soit FBase pour cette application.

Le Form étant sélectionné par un clic dans l’onglet [Design], il est possible d’en changer le nom dans la fenêtre

des propriétés.

Le fichier Form1.vb étant sélectionné dans l’explorateur de solutions, il est possible d’en changer le nom dans la

fenêtre des propriétés.

Ne pas confondre nom de fichier et nom d’objet ! Tous deux ont leur importance et méritent de recevoir un nom représentatif de leur rôle dans le projet.

Les noms attribués aux objets sont directement utiles dans le code et mieux ils sont représentatifs de l’objet, et plus facilement ils sont retrouvés par le programmeur parmi la multitude d’objets que peuvent contenir certaines applications.

Il est également permis de renommer le formulaire directement dans la

Sauf définition explicite, et à défaut d’une procédure Main() dans un module, c’est le premier formulaire (Form1) qui est le maître de l’application, c’est l’objet de démarrage. Dès lors qu’il est renommé FBase, par exemple, ou simplement que le développement du projet n’a pas débuté par le formulaire d’ouverture, il convient de désigner l’objet de démarrage dans les propriétés du projet (menu Projet/Propriétés du projet …). C’est aussi l’occasion de supprimer l’importation automatique de la librairie Microsoft.VisualBasic qui n’est idéalement utilisée qu’en cas de besoins par la commande Imports.

Pour continuer cette première application, il faut adapter la taille du formulaire, donner le texte de sa barre de titre (propriété Text), y placer un bouton, le nommer et lui attribuer le texte qui convient.

Après le choix d’un composant dans la boîte à outils (par un clic), sa mise en place sur le formulaire, l’attribution de son nom dans la fenêtre des propriétés et le réglage de sa propriété Text, la programmation visuelle est terminée. Il faut maintenant passer à la programmation événementielle. Il faut pour cela retourner à la feuille de code et utiliser ses listes déroulantes. Celle de gauche permet le choix de l’objet qui doit réagir à un événement, et celle de droite permet le choix de l’événement auquel doit répondre le code. La liste de droite propose les événements appropriés à l’objet sélectionné à gauche.

Et voici la procédure événementielle en place. Le nom de l’événement associé au nom du bouton est visible sous deux formes : BFin_Click est le nom de la procédure et BFin.Click est le nom de l’événement. C’est le mot clé

Handles qui réalise ici l’association entre la procédure et l’événement. Il ne manque plus que le code.

Il faut donc, pour parachever l’application, écrire le code de la procédure événementielle et compléter la feuille de code par les Imports éventuels et les déclarations d’options.

Voici le programme complet :

Option Explicit On ' Obligation de déclarer toutes les variables

Option Strict On ' L'interdiction des conversions implicites des données oblige ' le programmeur à utiliser des fonctions de conversions, ce qui ' améliore la sécurité des données, mais peut alourdir le code

Public Class FBase

Private Sub BFin_Click(ByVal sender As Object, ByVal e As System.EventArgs)

Handles BFin.Click End ' Voici le code événementiel de ce premier programme

End Sub End Class

Et à l’exécution, un clic du bouton Fin arrête l’application :

Ce premier programme est composé de deux objets visuels (un Form et un Button) et d’une procédure événementielle. Quelques particularités de ces composants méritent d’être observées.

Les propriétés, méthodes et événements d’un objet sont génériquement appelés membres de l’objet. Ils sont très nombreux et leur étude systématique ne présente guère d’intérêts. L’étude de tous les composants visuels proposés est également fastidieuse et superflue puisqu’ils sont presque tous d’un usage très semblable au niveau de la programmation. C’est pourquoi ces pages ne présentent qu’un échantillonnage de ces composants et pour chacun, quelques membres de chaque sorte, parmi les plus employés. De plus, lorsque des membres ont le même nom dans plusieurs objets, ils ont la même signification et les explications les concernant ne sont pas répétées.

C’est ainsi qu’une des deux propriétés utilisées dans le programme précédent se retrouve dans tous les objets et l’autre dans tous les objets disposant d’une zone d’affichage de texte. Ces propriétés sont Name et Text.

Deux propriétés pour commencer :

NameetText

Name

Tous les objets doivent être nommés d’une façon représentative de leur rôle dans l’application. Il convient en outre de préfixer le nom d’une ou deux lettres rappelant le type de l’objet. C’est pourquoi le formulaire de l’application précédente a été nommé FBase (avec F comme Form) et le bouton a été nommé BFin (avec B comme Button). L’avantage de cette nomenclature est de permettre la différenciation claire des objets dans la liste déroulante de gauche lorsqu’on se propose d’écrire leur code événementiel. Il est ainsi facile de faire la différence entre une TextBox

nommée TNomPers contenant le nom d’une personne et une ListBox nommée LBNomPers contenant les noms de toutes les personnes.

Text

Presque tous les objets disposant d’une zone d’affichage de texte ont une propriété Text. C’est elle qui contient le texte affiché. Pour un Button, ce texte est celui qui est affiché sur le bouton. Pour le Form, c’est le texte de la barre de titre. Pour un TextBox, c’est son contenu.

Propriétés généralement associées à la propriété Text : BackColor

,

ForeColor

et

Font

BFin.BackColor = System.Drawing.Color.White ' Couleur du fond

BFin.ForeColor = System.Drawing.Color.Black ' Couleur du texte

BF

' de taille 10

in.Font = New System.Drawing.Font("Courier New", 10) ' Police Courier New

Attention, ces mêmes propriétés réglées au niveau du Form n’affectent pas la barre de titre. A tester au cas par cas. Il a déjà été question des Imports dans ce cours. Voici un exemple : le code précédent peut s’écrire plus simplement si la déclaration Imports System.Drawing est placée à la suite des lignes d’options.

BFin.BackColor = Color.White ' Affectation d’une propriété

BFin.ForeColor = Color.Black

BFin.Font = New Font("Courier New", 10) ' Instanciation d’un objet ' Font

Il faut noter qu’il n’est pas possible dans ce cas d’utiliser l’économiseur de dactylographie With parce que

System.Drawing n’est pas un objet ou une variable de type structure mais un espace de noms, une librairie.

Quelques propriétés communes à la plupart des composants visuels

Location

Cette propriété contient les coordonnées en pixels du coin supérieur gauche d’un objet par rapport au coin correspondant de l’objet qui le contient. Ces coordonnées sont accessibles en lecture via les deux sous propriétés X et Y

et modifiables par le réglage des propriétés Left et Top exposées ci-après. La ligne de code suivante affiche les coordonnées du bouton BFin du programme précédent, exprimées en pixels et par rapport au coin supérieur gauche du formulaire FBase.

MessageBox.Show(CType(BFin.Location.X, String) & " " & CType(BFin.Location.Y, String))

Left et Top

Ces propriétés contiennent respectivement la distance en pixels du bord gauche et la distance du bord supérieur d’un objet par rapport aux bords correspondants de l’objet qui le contient. En exprimant ces deux distances, la ligne de code suivante est tout à fait équivalente à la précédente.

MessageBox.Show(CType(BFin.Left, String) & " " & CType(BFin.Top, String))

Width et Height

Ces propriétés contiennent respectivement la largeur et la hauteur de l’objet exprimées en pixels. La ligne de code suivante affiche la largeur et la hauteur du bouton BFin.

MessageBox.Show(CType(BFin.Width, String) & " " & CType(BFin.Height, String))

Enabled

Cette propriété, qui peut être affectée d’une des valeurs True et False, ne cache pas l’objet mais en autorise ou interdit l’utilisation.

BFin.Enabled = True ' BFin utilisable

Visible

La propriété Visible permet de montrer ou cacher un objet à volonté selon la valeur qu’on lui affecte : True ou

False. La première ligne de code ci-dessous montre le bouton BFin du formulaire FBase et la suivante l’efface. Par défaut, un composant visuel est toujours visible.

BFin.Visible = True ' BFin visible

BFin.Visible = False ' BFin invisible

Quelques méthodes communes à la plupart des composants visuels