Partager via


Recommandations de mise à niveau : résoudre les propriétés par défaut sans paramètres

Mise à jour : novembre 2007

Dans Visual Basic 6.0, de nombreux objets exposent des propriétés par défaut, lesquelles peuvent être omises comme raccourci de programmation. Par exemple, TextBox possède la propriété par défaut Text ; donc, au lieu d'écrire :

MsgBox Form1.Text1.Text

vous utilisez le raccourci :

MsgBox Form1.Text1

La propriété par défaut est résolue au moment de la compilation du code. En outre, vous pouvez utiliser les propriétés par défaut avec les objets à liaison tardive, comme dans l'exemple suivant :

Dim obj As Object
Set obj = Form1.Text1
MsgBox obj

Dans l'exemple de liaison tardive, la propriété par défaut est résolue au moment de l'exécution, et MsgBox affiche pour la propriété par défaut de TextBox la valeur Text1.

Visual Basic 2008 ne prend pas en charge les propriétés par défaut sans paramètre et, par conséquent, n'autorise pas ce raccourci de programmation. Lorsque votre projet est mis à niveau, Visual Basic 2008 résout les propriétés par défaut sans paramètre ; toutefois, les cas d'emploi de liaison tardive s'appuyant sur une résolution au moment de l'exécution ne peuvent pas être résolus automatiquement. Dans ces cas-là, vous devez changer vous-même le code. Le fait que beaucoup de bibliothèques implémentent des propriétés par défaut à l'aide d'une propriété nommée _Default constitue une complication supplémentaire. _Default agit comme un proxy, en passant des appels à la vraie propriété par défaut. Ainsi, lorsque votre projet sera mis à niveau, certaines propriétés par défaut seront résolues en _Default. Le code continuera à fonctionner comme avant, mais il sera moins compréhensible que du code écrit explicitement avec la propriété réelle. Voilà pourquoi vous devez éviter d'utiliser des propriétés par défaut sans paramètres dans votre code Visual Basic 6.0. Au lieu d'écrire :

Dim obj As Object
Set obj = Me.Text1
'BAD: Relying on default property
MsgBox obj
'BAD: Relying on default property
MsgBox Me.Text1

utilisez :

Dim obj As TextBox
Set obj = Me.Text1
'GOOD: Default property is resolved
MsgBox obj.Text
'GOOD: Default property is resolved
MsgBox Me.Text1.Text

Si Visual Basic 2008 ne prend pas en charge les propriétés par défaut sans paramètre, il prend en charge les propriétés par défaut avec paramètre. Pour comprendre ce qui différencie ces deux types de propriétés par défaut, retenez que les propriétés par défaut avec paramètres ont toujours un index. La propriété par défaut de l'objet ADO recordset, collection Fields, en est un exemple. Le code :

Dim rs As ADODB.Recordset
rs("CompanyName") = "SomeCompany"
rs!CompanyName = "SomeCompany"

est en réalité un raccourci de :

Dim rs As ADODB.Recordset
rs.Fields("CompanyName").Value = "SomeCompany"
rs.Fields!CompanyName.Value = "SomeCompany"

Dans ce cas, la propriété Fields est paramétrée et son utilisation est valide dans Visual Basic 2008 ; toutefois, la propriété par défaut de la propriété Fields, Value est sans paramètre et, de ce fait, l'utilisation correcte dans Visual Basic 2008 est :

Dim rs As ADODB.Recordset
rs("CompanyName").Value = "SomeCompany"
rs!CompanyName.Value = "SomeCompany"

Cet exemple ainsi que la plupart des autres propriétés par défaut sont résolus pour vous lors de la mise à niveau du projet ; les résoudre dans Visual Basic 6.0 est donc simplement une bonne pratique de programmation. Toutefois, vous devez éviter d'utiliser les propriétés par défaut avec les types de données Object et Variant ; ces types ne pouvant pas être résolus, vous devez corriger vous-même le code dans le projet mis à niveau.

Voir aussi

Autres ressources

Recommandations de mise à niveau relatives au langage