Créer un objet
Le moyen le plus simple de créer un objet consiste à double-cliquer sur le contrôle dans la boîte à outils. Toutefois, pour tirer pleinement parti de tous les objets disponibles dans Visual Basic et dans d'autres applications, vous pouvez utiliser les fonctionnalités de programmation de Visual Basic pour créer des objets au moment de l'exécution.
1. Créer une référence d'objet avec une variable d'objet
2. Utilisez des modules de classe pour créer vos propres objets "à partir de zéro"
3. Créez votre propre collection à l'aide d'objets de collection
Des détails sur la manière d'accéder aux objets sont fournis dans d'autres chapitres. Par exemple, les fonctions CreateObject et GetObject sont abordées au chapitre 10, « Programmation avec des composants ».
Utiliser des variables d'objet
En plus de stocker des valeurs, les variables peuvent référencer des objets. Tout comme pour attribuer une valeur à une variable, vous pouvez affecter un objet à une variable pour les mêmes raisons :
1. Les noms de variables ont tendance à être plus courts et plus faciles à retenir que les valeurs qu'elles contiennent (ou, dans ce cas, les objets auxquels elles font référence).
2. Lors de l'exécution du code, les variables doivent être modifiées afin de référencer d'autres objets.
3. Faire référence à la variable contenant l'objet est plus efficace que référencer à plusieurs reprises l'objet lui-même.
L'utilisation de variables d'objet est la même que l'utilisation de variables normales, sauf qu'il existe une étape supplémentaire d'affectation de l'objet à la variable :
4. Déclarez d'abord les variables :
DimvariableAsclass
5. Affectez ensuite l'objet à la variable :
Définirvariable=objet
Déclarer des variables d'objet
La méthode de déclaration des variables d'objet est la même que pour déclarer d'autres variables, en utilisant Dim, ReDim, Static, PRivate et Public. La seule différence réside dans les paramètres facultatifs New keyword et Class, qui seront introduits plus loin dans ce chapitre. La syntaxe est :
{Dim|ReDim|Static|Private|Public}variableAs[New]classe
Par exemple, vous pouvez déclarer une variable objet qui fait référence à un formulaire dans votre application appelé frmMain :
DimFormVarAsNewfrmMain 'Déclarer un type comme frmMain
'variable objet.
Vous pouvez également déclarer une variable objet qui fait référence à n'importe quel formulaire de votre application :
DimanyFormAsForm 'Variables générales du formulaire.
De même, vous pouvez déclarer une variable objet pouvant référencer n’importe quelle zone de texte de votre application :
DimanyTextAsTextBox 'peut référencer n'importe quelle zone de texte
' (mais seulement une zone de texte).
Vous pouvez également déclarer une variable objet, qui peut référencer tout type de contrôle :
DimanyControlAsControl 'Variables de contrôle générales.
Notez que vous pouvez déclarer une variable de formulaire qui fait référence à un formulaire spécifique dans votre application, mais vous ne pouvez pas déclarer une variable de contrôle qui fait référence à un contrôle spécifique. Vous pouvez déclarer une variable de contrôle qui fait référence à un type spécifique de contrôle (tel qu'un TextBox ou un ListBox), mais pas un contrôle spécifique de ce type (tel qu'un txtEntry ou List1). Cependant, des contrôles spécifiques peuvent être affectés à des variables de ce type. Par exemple, un formulaire avec une list box lstSample pourrait être codé comme ceci :
DimobjDemoAsListBox
SetobjDemo=lstSample
Variable d'objet d'affectation
Utilisez l'instruction Set pour affecter l'objet à la variable objet :
Définirvariable=objet
Chaque fois que vous souhaitez qu'une variable objet fasse référence à un objet, vous pouvez utiliser l'instruction Set.
Parfois, vous pouvez utiliser des variables d'objet, en particulier des variables de contrôle, pour raccourcir directement le code que vous tapez. Par exemple, le code original ressemble à ceci :
IffrmAccountDisplay!txtAccountBalance.Text<0Then
frmAccountDisplay!txtAccountBalance.BackColor=0
frmAccountDisplay!txtAccountBalance.ForeColor=255
FinSi
Si vous utilisez des variables de contrôle, votre programme peut être considérablement raccourci :
DimBalAsTextBox
SetBal=frmAccountDisplay!txtAccountBalance
IfBal.Text <0Then
Bal.BackColor=0
Bal.ForeColor=255
FinSi
Types d'objets spécifiques et types d'objets généraux
Une variable d'objet spécifique doit faire référence à un type spécifique d'objet ou de classe. Une variable de formulaire spécifique ne peut référencer qu'un seul formulaire dans l'application (bien qu'elle puisse être référencée dans l'une des nombreuses instances de ce formulaire). De même, une variable de contrôle spécifique ne peut faire référence qu'à un type spécifique de contrôle dans l'application, tel qu'un TextBox ou un ListBox. Veuillez consulter un exemple, ouvrez un nouveau projet et placez une zone de texte dans le formulaire. Ajoutez le code suivant au formulaire :
PrivateSubForm_Click()
DimanyTextAsTextBox
SetanyText=Texte1
anyText.Text=Bonjour
EndSub
Exécutez l'application et cliquez sur le formulaire. La propriété Text de la zone de texte deviendra Hello.
Les variables d'objet générales peuvent faire référence à l'un des nombreux types d'objets spécifiques. Par exemple, une variable de formulaire général peut faire référence à n’importe quel formulaire de l’application ; une variable de contrôle général peut référencer n’importe quel contrôle sur n’importe quel formulaire de l’application. Veuillez consulter un exemple, ouvrez un nouveau projet et placez plusieurs contrôles Frame, Label et CommandButton dans n'importe quel ordre sur le formulaire. Ajoutez le code suivant au formulaire :
PrivateSubForm_Click()
DimanyControlAsControl
SetanyControl=Form1.Controls(3)
anyControl.Caption=Bonjour
EndSub
Exécutez le programme et cliquez sur le formulaire. Le titre du troisième contrôle que vous venez de placer sur le formulaire deviendra Bonjour.
Il existe quatre objets généraux dans Visual Basic :
Les variables d'objet générales sont utiles lorsqu'on ne sait pas au moment de l'exécution si la variable fait référence à un objet d'un type spécifique. Par exemple, si vous souhaitez écrire du code qui fonctionne sur n'importe quel formulaire de votre application, vous devez utiliser des variables de formulaire générales.
Notez que puisqu'il ne peut y avoir qu'un seul formulaire MDI dans l'application, il n'est pas nécessaire d'utiliser le type général MDIForm. Chaque fois que vous devez déclarer une variable de formulaire qui fait référence à un formulaire MDI, vous pouvez utiliser un type MDIForm spécifique (soit MDIForm1, soit le nom que vous spécifiez dans la propriété Name du formulaire MDI) au lieu du type MDIForm général. En fait, vous devez toujours utiliser un type MDIForm spécifique, car Visual Basic peut déterminer les propriétés et les méthodes qui font référence à un type de formulaire spécifique avant d'exécuter l'application.
Le type MDIForm général est fourni uniquement à des fins d'exhaustivité ; il sera utile dans les futures versions de Visual Basic d'avoir plusieurs formulaires MDI dans une seule application.
forme comme objet
Les formulaires sont le plus souvent utilisés pour construire des interfaces d'application, mais ils sont aussi souvent des objets appelés par d'autres modules de l'application. Les formulaires sont étroitement liés aux modules de classe. La principale différence entre les deux est que les formulaires sont des objets visuels, tandis que les modules de classe n'ont pas d'interface visuelle.
Ajouter des méthodes et des propriétés personnalisées
Des méthodes et propriétés personnalisées peuvent être ajoutées au formulaire et accessibles à partir d’autres modules de l’application. Pour créer de nouvelles méthodes pour un formulaire, ajoutez une procédure déclarée avec Public.
'Méthode pour personnaliser Form1.
PublicSubLateJobsCount()
.
'<déclarations>
.
EndSub
La procédure LateJobsCount peut être appelée depuis d'autres modules à l'aide de l'instruction suivante :
Form1.LateJobsCount
Créer de nouvelles propriétés pour un formulaire est aussi simple que de déclarer une variable publique dans le module de formulaire :
PublicIDNumberAsInteger
Les deux instructions suivantes peuvent être utilisées pour définir et renvoyer la valeur IDNumber de Form1 à partir d'autres modules :
Form1.IDNumber=3
Text1.Text=Form1.IDNumber
Vous pouvez également utiliser la procédure Propriété pour ajouter des propriétés personnalisées à un formulaire.
Détails Le chapitre 9, « Programmation avec des objets », fournit des informations détaillées sur la procédure Propriété.
Notez que vous pouvez appeler les variables ou les méthodes personnalisées du formulaire sans charger le formulaire, et que vous pouvez également définir les propriétés personnalisées du formulaire. Par conséquent, vous pouvez exécuter du code sur le formulaire sans le charger en mémoire. De même, référencer un contrôle sans référencer ses propriétés ou méthodes ne chargera pas le formulaire.
Utilisez le mot-clé Nouveau
Utilisez le mot-clé New pour créer un nouvel objet, qui est traité comme l'objet défini par sa classe. New peut être utilisé pour créer des instances de collections, de formulaires et de classes définies dans les modules de classe.
Utiliser le mot-clé Nouveau sur un formulaire
Les formulaires créés au moment de la conception sont des classes. De nouvelles instances de cette classe peuvent être créées à l'aide du mot-clé New. Pour voir ce processus en action, dessinez un bouton de commande et plusieurs autres contrôles sur le formulaire. Dans la fenêtre Propriétés, définissez la propriété Nom du formulaire sur Sample. Ajoutez le code suivant dans la procédure événementielle Click du bouton de commande :
DimxAsNewSample
x.Afficher
Exécutez l'application et cliquez plusieurs fois sur le bouton de commande. Écartez le formulaire le plus en avant. Le formulaire étant une classe dotée d’une interface visuelle, des copies supplémentaires sont visibles. Chaque formulaire possède les mêmes contrôles aux mêmes emplacements où le formulaire a été conçu.
Notez que pour que les variables de formulaire et les instances de formulaires chargés existent toujours, utilisez des variables statiques ou publiques au lieu de variables locales.
Vous pouvez également utiliser le mot-clé New avec l'instruction Set. Veuillez essayer le code dans la procédure événementielle Click du bouton de commande :
DimfAsForm1
Setf=NouveauFormulaire1
f.Caption=bonjour
f.Afficher
L'utilisation du mot-clé New avec l'instruction Set accélérera l'exécution, cette méthode est donc recommandée.
Utilisez le mot-clé New avec d'autres objets
Vous pouvez utiliser le mot-clé New pour créer des collections et des objets à partir de classes définies dans un module de classe. Utilisez l’exemple suivant pour illustrer ce processus de travail.
Cet exemple illustre comment le mot-clé New crée une instance d'une classe. Ouvrez un nouveau projet et dessinez un contrôle CommandButton sur Form1. Sélectionnez la commande Ajouter un module de classe dans le menu Projet pour ajouter un module de classe au projet. Définissez la propriété Name du module de classe sur ShowMe.
Le code suivant dans Form1 crée une nouvelle instance de la classe ShowMe et appelle une procédure contenue dans le module de classe.
PublicclsNewAsShowMe
PrivateSubCommand1_Click()
SetclsNew=NouveauMontrez-moi
clsNew.ShowFrm
EndSub
La procédure ShowFrm du module de classe crée une nouvelle instance de la classe Form1, affiche le formulaire, puis le réduit.
Sous-ShowFrm()
DimfrmNouveauAsForm1
SetfrmNew=NouveauForm1
frmNew.Afficher
frmNew.WindowState=1
EndSub
Pour appliquer cet exemple, exécutez l'application et cliquez plusieurs fois sur le bouton de commande. Vous verrez une icône de formulaire réduite apparaître sur le bureau à chaque nouvelle instance de la classe ShowMe.
Pour plus d'informations sur l'utilisation de New pour créer des objets, consultez le chapitre 10, « Programmation avec des composants ».
Nouvelles restrictions de mots clés
Le tableau suivant explique ce que vous ne pouvez pas faire avec le mot clé New.
Libérer la référence à l'objet
Chaque objet utilise de la mémoire et des ressources système. C'est une bonne pratique de programmation de libérer ces ressources rapidement lorsque l'objet n'est plus utilisé.
Utilisez Unload pour décharger un formulaire ou un contrôle de la mémoire.
Utilisez Nothing pour libérer les ressources occupées par les variables d'objet. Utilisez l'instruction Set pour affecter Nothing à la variable objet.
Pour plus d’informations, reportez-vous aux sections « Décharger l’événement » et « Rien » dans le « Manuel de référence du langage Visual Basic 6.0 ».
Passer l'objet à la procédure
Les objets peuvent être transmis aux procédures dans Visual Basic. Dans l’exemple de code suivant, on suppose que le formulaire possède un contrôle CommandButton :
PrivateSubCommand1_Click()
'Appelez le sous-programme Demo et transmettez-lui le formulaire.
DémoForm1
EndSub
PrivateSubDemo (xAsForm1)
'Centrez le formulaire sur l'écran.
x.Gauche=(Écran.Largeur-x.Largeur)/2
EndSub
Vous pouvez transmettre un objet à un paramètre par référence, puis définir le paramètre sur un nouvel objet dans la procédure. Pour voir cela en action, ouvrez le projet et insérez un deuxième formulaire. Placez une zone d'image dans chaque formulaire. Les valeurs des paramètres d'attribut qui doivent être modifiées sont indiquées dans le tableau suivant :
La procédure événementielle Form1_Click appelle la procédure GetPicture dans Form2 et lui transmet une zone d'image vide.
PrivateSubForm_Click()
Form2.GetPicturePicture1
EndSub
Le processus GetPicture dans Form2 attribue la propriété Picture de la zone d’image sur Form2 à la zone d’image vide sur Form1.
PrivateobjXapictureBox
PublicSubGetPicture(xAsPictureBox)
'Attribuez le cadre d'image transmis à la variable objet.
EnsembleobjX=x
'Attribuez la valeur de l'attribut Image à la zone d'image de Form1.
objX.Picture=image2.Picture
EndSub
Pour appliquer cet exemple, exécutez le programme et cliquez sur Form1. Vous verrez l’icône de Form2 apparaître dans la zone d’image de Form1.
Détails Les rubriques ci-dessus sont destinées à fournir une vue d'ensemble des objets. Pour plus de détails, consultez le chapitre 9, « Programmation avec des objets » et le chapitre 10, « Programmation avec des composants ».
->