• Aucun résultat trouvé

IFT 1175 - VB6 vs VB.NET

N/A
N/A
Protected

Academic year: 2022

Partager "IFT 1175 - VB6 vs VB.NET"

Copied!
5
0
0

Texte intégral

(1)

IFT 1175 / A04 Page 1

IFT 1175 - VB6 vs VB.NET

Voici une liste qui met en valeur des modifications devant être apportées dans le traitement des tâches entre l'environnement de travail de VB.NET par rapport à ce que vous avez déjà vu en VB6 régulier. Il y a effectivement beaucoup de différences et seront présentées ici seulement les plus importantes dans chaque domaine.

Ce document peut être utile pour ceux qui n'ont pas vu VB6 pour mettre en valeur certains points particuliers de VB.NET

Les propriétés/méthodes/événements modifiés

Certains membres (propriétés, méthodes. événements) communs à plusieurs contrôles ont été modifiés, soit dans leur nom, soit dans leur fonctionnement.

• L'événement DblClick est devenu DoubleClick

• La propriété Locked est devenue ReadOnly. Attention : une nouvelle propriété Locked empêche qu'un contrôle ne soit déplacé au moment du design.

• La propriété Caption est remplacée par Text.

• L'événement Change a été remplacé par plusieurs variantes : ChangedText, ChangedValue, Scroll et parfois abolie selon le type de contrôle.

• La propriété Alignment est remplacée par TextAlign, ou CheckAlign selon le cas.

• La propriété Index est abolie car les groupes de contrôles ne sont plus supportés. Voir plus loin.

• Les événements GotFocus et LostFocus sont renommés Enter et Leave.

• La méthode SetFocus est renommée Focus.

• L'événement Validate est renommé Validating.

• Les propriétés reliées à la police utilisée (FontName, FontBold, etc.) ne sont plus accessibles qu'au travers la propriété Font (Font.Name, Font.Bold, etc.).

Les feuille

Les feuilles sont des objets graphiques munies d'une page de code. Voici les principales modifications qu'on y a apportées.

• Les contrôles non visibles à l'utilisateur, comme le Timer, les «ToolTip ou les boîtes de dialogue, ne sont plus placés sur la feuille elle-même mais dans une «annexe», une bande horizontale au bas de celle-ci. D'où une meilleure visibilité du contenu «spatial» de la feuille.

• Comme précédemment, l'affichage d'une feuille se fait au moyen de sa méthode Show mais celle-ci est accompagnée d'une méthode ShowDialog qui l'affiche comme une boîte de dialogue modale.

(2)

IFT 1175 / A04 Page 2

• La commande Unlaod Feuille est remplacée par la méthode Feuille.Close().

• La page de code contient maintenant toute une partie de code qui auparavant était sous- jacente. On pouvait d'ailleurs la «lire» en ouvrant un fichier «UneFeuille.frm» avec un éditeur de texte. La feuille format .NET contient donc une déclaration de classe qui «hérite»

de la classe générale System.Windows.Forms.Form ainsi qu'un texte escamotable identifié par le titre «Code généré par le concepteur Windows Form» précédé par un «+» dans la marge de gauche. C'est ce code qui est exécuté lors de la création de la feuille.

• L'éditeur de code permet de placer du texte entre les bornes «#Region» et «#End Regien» à la manière des traitements de texte en mode plan. Cette section de code peut être déployée en cliquant sur le «+» qui devient un «-» ou être masquée en cliquant sur le «-». Vous pouvez analyser ce code mais il vous est grandement déconseillé de le modifier directement.

• On ne peut plus placer deux contrôles portant le même nom et donc créer des groupes de contrôles. .Net ne les supporte pas. On peut cependant utiliser une voie détournée grâce à la (nouvelle) fonctionnalité de Handles des procédures événementielles.

o Une procédure événementielle s'écrit différemment. Par exemple, pour l'événement Click d'un bouton de commande «Bouton1», on trouvera

Private Sub Bouton1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Bouton1.Click

o Le nom de la procédure ne détermine plus le type d'événement et peut être remplacé par un nom quelconque.

o C'est le ou les paramètres qui suivent la clause Handles qui désignent quels sont les événements qui sont gérés par la procédure. Ainsi, un bouton de commande btnQuit et un élément de menu mnuQuit peuvent être programmés en commun en utilisant Private Sub UnNom( ... ) Handles btnQuit.Click, mnuQuit.Click.

o Pour gérer un groupe de boutons, on peut par exemple «rallonger» la clause Handles : ... Handles Bouton1.Click, Bouton2.Click, Bouton3.Click.

o La procédure reçoit toujours deux paramètres : sender et e.

o sender est une variable objet qui pointe sur l'objet qui a déclenché l'événement. On peut donc connaître le nom de ce contrôle avec If sender.name = .... Dans les cas précédents on obtiendrait "Bouton1" ou "Bouton2" ou "Bouton3" selon le cas.

o le paramètre e est un objet contenant sous forme de propriétés les données transmises par l'événement. En VB6, par exemple, la plupart des procédures événementielles n'avaient aucun argument. On les retrouve donc, dans VB.NET, avec un paramètre

«e» de type EventArgs qui n'a aucune propriété de données. Par contre, l'événement KeyPress venait avec un paramètre KeyAscii indiquant le caractère entré au clavier.

En VB.NET, l'objet «e» transmis sera de la classe KeyPressEventArgs incluant la propriété (lecture) e.KeyChar qui représente le caractère tapé et la propriété (lecture/écriture) e.Handled qui permet d'interrompre le traitement. du caractère.

Enfin, dernier exemple, l'événement MouseDown qui, en VB6 ramenait plusieurs paramètres retourne en VB.NET un objet nommé «e» de classe MouseEventArgs qui possède de nombreuses propriétés, comme e.Button, e.X, e.Y, etc.

(3)

IFT 1175 / A04 Page 3

• Toutes les propriétés et méthodes relatives à l'écriture ou au dessin sur une feuille ont disparu : on ne peut plus écrire (Print) ou dessiner (Point, Circle ...) directement sur la feuille. Ces opérations sont prises en charge par l'interface graphique GDI+ (voir plus loin).

Les contrôles

Plusieurs contrôles de VB6 ont été modifiés. Voici les éléments les plus visibles de ces changements spécifiques (excluant ceux vus précédemment).

• VB6 utilisait les «paramètres régionaux» de Windows pour déterminer le symbole décimal dans les contrôles. VB.Net offre en plus une interface de déploiement international permettant de formater individuellement les chaînes de caractères d'entrée-sortie dans un mode de «Globalisation», la même application pouvant afficher en différentes langues selon les paramètres locaux. :

CheckBox : l'événement Click est renommé CheckChanged. La propriété Value est renommée CheckState.

ComboBox et ListBox : Plusieurs membres ont varié.

o La propriété «tableau de valeurs» List est devenue une collection d'objets Items.

o La méthode AddItem est devenue Items.Add(...) et renvoie comme résultat l'indice du nouvel élément. La méthode Clear est devenue Items.Clear.

o La méthode RemoveItem est devenue Items.RemoveAt(...) avec un paramètre numérique et/ou Items.Remove(...) avec un paramètre String.

o ListCount est devenu Items.Count et ListIndex est devenu SelectedIndex.

o ItemData et NewIndex ne sont plus supportés. On doit gérer soi-même les valeurs associées.

ListBox : Multiselect est devenu SelectionMode. Le tableau Selected est devenu la collection SelectedItems. SelCount est devenu SelectedItems.Count.

• Le CommandButton est devenu Button. La propriété Value n'existe plus.

• Le contrôle Frame est devenu Panel.

ScrollBar : Max, Min, et Click sont devenus Maximum, Minimum, et Scroll. On ne peut plus avoir un «Maximum» inférieur à «Minimum».

• Le contrôle Menu s'ajoute automatiquement au haut de la fenêtre et permet d'entrer les textes affichés directement à l'endroit visé plutôt qu'en passant par la boîte de dialogue. Grande amélioration.

• Les OptionButton sont renommés RadioButton. Value et Click sont devenus Checked.et CheckedChanged.

TextBox : la propriété AcceptsReturn indique que la touche <Entrée> permet de changer de ligne si le contrôle est multiligne.

Timer : l'événement Timer est rebaptisé Tick

(4)

IFT 1175 / A04 Page 4

Types et variables

Plusieurs changement ont eu lieu dans la définition et la description des variables.

• Les valeurs entières dont Byte (1 octet, entre 0 et 255), Short (2 octets de moins à plus 32 767), Integer (4 Octets, entre moins et plus 2 147 483 648) et Long (8 octets, plus qu'il n'en faut).

• Le type Currency est abandonné.

• Le type Decimal s'ajoute pour les réels : 16 octets pouvant représenter plus de 60 décimales.

• Le type String*n de longueur fixe est abandonné.

• Le type Char (1 caractère) est ajouté. Utile sous forme de tableau pour représenter des chaînes de longueur fixe.

• Le type Variant est abandonné. Peut être remplacé par Objet.

• Les types personnalisés sont remplacés par Structure nom ... End Structure

• On peut déclarer plusieurs variables à la fois : Dim J, K, L As Short

• Une variable déclarée (Dim) à l'intérieur d'une structure IF, Select, For ou Do n'existe qu'à l'intérieur de la structure.

• On peut déclarer une valeur initiale : Dim Montant As Single = 100.00.

• Les tableaux son déclarés avec uniquement l'index maximum pour chaque dimension : Dim MonTab(2,3) As Integer définit un tableau de trois lignes et quatre colonnes dont les indices vont de 0 à 2 et de 0 à 3.

• Les variables Tableaux sont des objets. Donc si vous faites Tablo2 = Tablo1 il s'ensuite que les deux variables désignent le même tableau. Si on veut une copie du tableau on utilise plutôt For...Next.

• Les chaînes de caractères sont maintenant traitées comme des objets. On peut donc utiliser leurs méthodes en remplacement des fonctions de traitement de caractères de VB6. Par exemple, l'énoncé S2 = S1.ToUpper équivaut à S2 = Ucase(S1). Plusieurs fonctions sont conservées (Replace, LCase, Mid, etc.). Cependant, chaque fois que l'on redéfinit la valeur de la chaîne, l'objet (instance) est détruit et un nouvel objet est créé. Ainsi

St1 = "ABC" ' crée un objet contenant la chaîne.

St2 = St1 ' St1 et St2 pointent vers le même objet.

St1 = "ABCD" ' St2 pointe toujours vers "ABC" mais St1 pointe vers "ABCD".

Les énoncés

Voici quelques modifications, généralement mineures, dans l'écriture des énoncés.

• Les opérateurs «+», «-», «*», «/», «\», «^» et «&» peuvent être joints au «=» de l'affectation pour agir sur le membre de gauche : «X += 1» équivaut à «X = X + 1». «Mt *= 1.15»

équivaut à «Mt = Mt * 1.15». Etc.

(5)

IFT 1175 / A04 Page 5

• Les procédures et fonctions exigent la présence de ByVal ou ByRef. La sortie peut se faire par l'instruction Return (pour une Sub) et par Return Valeur (pour une fonction). Cette dernière instruction place Valeur dans le paramètre de retour de la fonction avant de terminer celle-ci. Ceci s'applique aussi au procédures de type Property.

• La plupart des fonctions mathématiques ont été placées dans la classe d'objets System.Math et doivent donc être appelées avec le Namespace. On peut donc faire Math.Abs(...) pour obtenir la valeur absolue du paramètre, ou encore déclarer au haut du module Imports System.Math pour accéder directement à «Abs()».

Les erreurs

Même si une nouvelle structure (Try ,,, Catch ... Finally ... End Try) de gestion d'erreur a été développée dans VB.Net, les structures On Error continuent d'être supportées.

Les graphiques

Toute la gestion des graphiques a été concentrée dans les objets spécialisés du Namespace System.Graphics. Tous les contrôles qui pouvaient afficher des graphiques peuvent continuer de le faire, mais pas directement, uniquement au travers l'utilisation des ces nouveau éléments.

Références

Documents relatifs

Familiarisation avec l'environnement de travail. Exercices dirigés et réalisation du travail pratique no 1. ▫ Gestions d’erreurs et débogage. ▫ Programmation

Cocher oui, cocher non (CheckBox nommé chkCoche) : la case à cocher manque ici complètement de réaction car elle n’a pas été programmée… Il en va de même pour la bulle

Il «ajoute» le poste du premier employé dans la zone de liste déroulante, puis, pour chacun des autres employés (du deuxième au dernier), il n'ajoute le poste à la liste

[r]

Vous devrez définir une classe d'objets de type «Ballon» et utiliser cette classe pour manier des objets de ce type dans une application. Le

Ces deux distinctions nous semblent suffisantes dans le cadre de cette étude de la polysémie nominale ÉVÉNEMENT / OBJET , fondée d’une part sur les propriétés aspectuelles du

En outre, le « domaine de la face » est une branche particulière au sein de la pragmatique, et cela nous fait penser à Pénélope BROWN et Stephen LEVINSON ([1978] 2000). Sous cet

[r]