Hit-Parade .VB Research Center . Compteur
Accueil ~  Code ~  Programmes ~  Api ~  Forum ~  Cours ~  Livres ~  Quiz ~  Annuaire
~ 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 ~
 Rechercher un site :
  

~ 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!

Visual Basic Research Center - (c) 2000/2002 -  Webmaster : docvb (chez) free (point) fr