~ Edito ~
12/03/2006 @ 13:39
Depuis la dernière mise à jour (qui remonte à... oulala plusieurs mois), un petit ménage de printemps s'impose. Ca tombe bien, c'est presque la période. Au menu, et progressivement sur les jours à venir, rafraîchissement de plusieurs fonctions et procédures, nouvelles APIs et nouveaux programmes.
~ Rechercher ~
~ Annuaire VB ~
~ Partenaires ~
|
Visual Basic 7.0 beta 1
(Microsoft Visual Studio .NET)
Les
nouveautés de la version 7.0 (.NET) de Visual Basic sont nombreuses et le
changement avec la version précédente est très important. En fait, depuis la
version 3.0 (n'ayant pas eu l'occasion de travailler sur des versions
inférieures), jamais une nouvelle version n'a vraisemblablement connu autant de
changement.
Cette page n'essaye pas de lister de manière exhaustive les nombreuses possibilités
qui apparaissent avec cette version, d'une part, parce que je
ne les ai pas toutes testés, d'autre part, parce qu'il faudrait quelques dizaines de
pages en plus pour vraiment tout détailler (remarquez, cela viendra
peut-être). Enfin, nous n'en sommes encore qu'à une
version beta 1 qui est toujours en développement et qui n'est pas encore
supportée par Microsoft. Ainsi, toutes les informations données ici ne sont pas
à prendre comme références ou définitives (il n'y a toutefois pas de raison que
cela change beaucoup). Vous pouvez consulter deux copies d'écran avec
les liens ci-dessous :
Copie d'écran 1 (110 ko) * Code
Copie d'écran 2 (99 ko) * Feuille
Migration
Lors de l'ouverture de vos projets VB 6.0 dans la
nouvelle version, un assistant vous propose de convertir votre projet. Cela est
nécessaire pour pouvoir alors travailler dessus. Suivant la taille de votre
projet, sa compléxité et la puissance de votre machine comptez tout de même
quelques minutes d'attente. N'espérez pas pouvoir lancer votre application
directement après la reprise de votre ancien projet. En effet, à moins que
celui-ci soit très simple, ou réponde parfaitement aux caractéristiques
d'évolutions recommandées par Microsoft, il y aura des erreurs à
corriger.
L'interface
L'environnement de développement est maintenant unique pour
tous les langages. Une seule et même interface pour écrire du VB, C++, HTML,
... L'avantage
de ce système permet de disposer de nombreuses fonctionnalités qui n'étaient
jusqu'à présent pas accessible directement depuis VB. La
fenêtre de projet devient plus détaillée et montre à présent le détail des
fonctions, procédures, variables, ... d'un fichier.

Le code est affiché sous forme d'arborescence.
Devant chaque fonction il y a un petit (+) qui permet d'ouvrir ou de refermer le
code (pour ne laisser que l'entête). Cela permet de n'afficher que ce qui est
nécessaire.
Lors de la création de fenêtre, les composants qui
n'ont pas d'action directe avec l'utilisateur ne se placent plus sur la feuille,
mais une zone prévue à cet effet juste en dessous.

Le code
Pour tout
ceux qui avait une sérieuse connaissance du langage, une période d'adaptation de
quelques jours (accompagné éventuellement d'une formation de mise à niveau)
est nécessaire. Voici, pour vous familiariser, un petit exemple
de ce que vous obtenez (adaptation du programme "Horloge"):
Imports
System.ComponentModel Imports System.Drawing Imports
System.WinForms
Public Class
Form1 Inherits
System.WinForms.Form Private
stOldDate As String Private blMove As
Boolean Private sgL As
Integer Private sgT As Integer
Private sgX As Integer Private sgY As
Integer Public Sub
New() MyBase.New
Form1 = Me
'This call is required
by the Win Form Designer.
InitializeComponent
'TODO: Add any
initialization after the InitializeComponent() call
End Sub
'Form overrides
dispose to clean up the component list. Overrides
Public Sub Dispose()
MyBase.Dispose
components.Dispose End
Sub
# Windows Form Designer
generated code
Protected Sub
mnuPopup_Popup(ByVal sender As Object, ByVal e As
System.EventArgs)
End Sub
Protected Sub tmrHorloge_Tick(ByVal sender As
Object, ByVal e As
System.EventArgs) Call
MAJHorloge() End Sub
Private Sub
MAJHorloge() Dim stTmp As
String = "" Dim dtNow As
Date = Now If
mnuDate.Checked Then stTmp = format$(dtNow, "dd\/mm\/yy") & Chr(10)
& Chr(13) stTmp = stTmp
& format$(dtNow,
"hh:mm") If
mnuSecondes.Checked Then stTmp = stTmp & format$(dtNow,
":ss") If (stTmp <>
stOldDate)
Then
lblHorloge.Text =
stTmp
stOldDate = stTmp End
If End Sub
Public Sub dlgFont_Apply(ByVal sender As Object,
ByVal e As System.EventArgs) Handles
dlgFont.Apply
lblHorloge.Font =
dlgfont.Font
lblHorloge.ForeColor = dlgfont.Color End
Sub Public Sub
mnuPolice_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Handles mnuPolice.Click Dim
shReponse As
system.WinForms.DialogResult
dlgfont.ShowColor = True
dlgfont.ShowApply = True
shreponse =
dlgfont.ShowDialog() If
(shReponse = DialogResult.OK)
Then
lblHorloge.Font =
dlgfont.Font
lblHorloge.ForeColor =
dlgfont.Color End
If End Sub Public Sub
mnuQuitter_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Handles mnuQuitter.Click '
Fermeture de l'application
Me.Close() End Sub Public Sub
mnuDate_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles
mnuDate.Click
Me.mnuDate.Checked = Not
Me.mnuDate.Checked Call
Me.MAJHorloge() End Sub Public
Sub mnuSecondes_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Handles mnuSecondes.Click
Me.mnuSecondes.Checked = Not
Me.mnuSecondes.Checked Call
Me.MAJHorloge() End Sub Public
Sub lblHorloge_MouseDown(ByVal sender As Object, ByVal e As
System.WinForms.MouseEventArgs) Handles
lblHorloge.MouseDown
Me.lblHorloge.Cursor =
System.Drawing.Cursors.SizeAll
Me.blMove = True sgL =
Me.Left sgT =
Me.Top sgX =
e.X sgY =
e.Y End Sub Public Sub
lblHorloge_MouseUp(ByVal sender As Object, ByVal e As
System.WinForms.MouseEventArgs) Handles
lblHorloge.MouseUp Me.blMove
= False Me.lblHorloge.Cursor
= System.Drawing.Cursors.Default End
Sub Public Sub lblHorloge_MouseMove(ByVal sender As
Object, ByVal e As System.WinForms.MouseEventArgs) Handles
lblHorloge.MouseMove If
blMove
Then
' Déplacement de la
fenêtre
Me.Left = (e.X - sgX) +
sgL
Me.Top = (e.Y - sgY) +
sgT
' Enregistement de la nouvelle
position
sgL =
Me.Left
sgT = Me.Top End
If End Sub Public Sub
mnuToujoursVisible_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles
mnuToujoursVisible.Click
Me.TopMost = Not
Me.mnuToujoursVisible.Checked
Me.mnuToujoursVisible.Checked = Not
Me.mnuToujoursVisible.Checked End Sub End
Class
|
L'exemple
ci-dessus fait abstraction de la partie appelée "Windows Form Designer generated
code". Elle correspond à la représentation de la feuille sous forme de code.
Alors qu'auparavant elle n'était pas accessible directement (ou pouvait la voir
en allant directement dans le fichier ".frm"), on y a maintenant accès pour
éventuellement quelques retouches directes (bien que cela
ne soit pas recommandé).
La programmation orientée objet est plus poussée.
Comme vous pouvez le voir dans le code ci-dessus, la feuille est considérée
comme un objet qui vient de "System.WinForms.Form". Les évènements de la
souris viennent de "System.WinForms.MouseEventArgs" et les constantes du
curseur de la souris sont accessibles depuis
"System.Drawing.Cursors".
Des types d'applications supplémentaires sont
réalisables. * Console
Application - Pour faire des programmes qui retournent
des résultats directement dans une boîte DOS (par exemple). Des instructions
sont prévues pour écrire sur une sortie sélectionnée
: ... System.Console.WriteLine("Ecriture sur la sortie
standard.") ... J'ai pu faire le test avec cette
ligne de code (une seule suffit), et le résultat s'affiche correctement. Alors
qu'avec VB6 cette opération était très lourde (manipulation de fonctions
API en pagaille), VB7 gère cela naturellement. * Windows Service - Gestion de service. A la
création du projet un squelette est établi dans lequel vous n'avez plus qu'à
mettre les actions à effectuer. Les évènements "OnStart" et "OnStop" se
déclenchent au démarrage et à l'arrêt du service.
Les contrôles
Les contrôles ne sont pas en reste. Des propriétés
supplémentaires pour faciliter la vie du programmeur. Des évènements en plus,
pour mieux gérer l'interactivité avec les utilisateurs.
Attention cependant, car certains contrôles n'ont
pas été repris. Les "shape" et les "line", entre autres, disparaissent.
L'assistant de migration de projet les transforme en Label.
Quelques nouveaux contrôles : *
LinkLabel (un label pour faire des liens
hypertexte), * TrayIcon (icônes dans la barre des tâches), * Splitter
(gestion des divisions de feuilles)
Les "ToolTip" se représentent sous forme de
contrôle qui permet désormais de gérer entièrement leurs propriétés et leurs
interactions avec les autres contrôles.
De même pour les menus. L'ancien éditeur de
menu de VB6 fait place maintenant à deux contrôles, le "MainMenu" et le
"ContextMenu". La création se fait en dynamique sur la feuille.

Les fenêtres possèdent maintenant une propriété
"TopMost" pour pouvoir facilement leur dire quand rester systématiquement au
premier plan. Il y a également une propriété "Opacity" qui gère la
transparence de la fenêtre (pour voir au travers de celle-ci).
Le contrôle "TreeView" possède
un "éditeur de nodes", pour créer dynamiquement son contenu lors de la conception du
projet. Et ce n'est pas tout, puisque, le contrôle "ListView" possède la même
chose, un "éditeur de ListItem" et en plus un "éditeur de
ColumnHeader".
Le déboguage
Là encore du progrès, et ce n'est pas du luxe. Deux
points importants arrivent dans cette version. Comme dans Word, les erreurs sont
maintenant soulignées en temps réel.
 C'est valable pour
les appels de fonctions (nombre d'arguments incorrects), les affectations de
variables (type incorrect), ... En parallèle, la fenêtre "Task List" vous affiche
toutes les erreurs qui restent à corriger pour pouvoir exécuter le programme.
Comme certaines erreurs peuvent en entraîner d'autres, il est possible
d'en faire disparaître plusieurs d'un coup.
Cette fenêtre ("Task List") permet également
d'enregistrer vos propres tâches. Pour l'élaboration de projet important, cela
peut être très utile. Elle reprend de la même manière les commentaires du type
"/* TODO ..." qui figurent dans votre application.

En conclusion, cette prochaine version de
Visual Basic apporte de nombreuses fonctionnalités qui devraient ravir les
programmeurs habitués à ce langage. L'interface de développement permet de mieux
contrôler les projets. L'élaboration des fenêtres reste toujours aussi simple
malgré le nombre croissant de composants, de propriétés et de méthodes. Les
possibilités sont, d'après moi, passées du simple au double. Toutefois,
une bonne période d'adaptation peut s'imposer pour une grande majorité
des développeurs VB. Le langage a énormément évolué, aussi bien structurellement
que fonctionnellement. Le passage à une programmation objet avancée risque d'en
perturber plus d'un. Bref, Visual Basic .NET est une véritable
révolution dans le monde VB, préparez-vous au choc! |