cs_ElPiojo
Messages postés23Date d'inscriptionlundi 20 décembre 2004StatutMembreDernière intervention22 février 2005
-
28 janv. 2005 à 10:09
crenaud76
Messages postés4172Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 9 juin 2006
-
28 janv. 2005 à 21:29
Bonjour,
J'ai un petit probleme de creation d'objet de class. J'ai commencé à en faire un mais j'ai vraiment du mal à comprendre comment on construit et surtout comment on utilise les property (let, get) et pareil pour les methodes.
Si vous pouviez m'expliquer ou me dire ou je peux aller chercher des tutoriaux.
cs_ElPiojo
Messages postés23Date d'inscriptionlundi 20 décembre 2004StatutMembreDernière intervention22 février 2005 28 janv. 2005 à 13:37
Bravo, c'est tout ! Ecris un bouquin ptit gars, t'es clair, concis, chose que je n'ai pu trouvé dans les bouquins et autres docs mis à ma disposition, la preuve j'ai résolu tous mes problémes, alors que ma demande elle, n'etait pas forcement claire.
Encore merci
crenaud76
Messages postés4172Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 9 juin 200628 28 janv. 2005 à 13:23
Pour faire une propriété, deux solutions :
1-Ajouter une variable public à ton module : Public NomProp As String par exemple
2- Utiliser Property Get/Let/set en déclarant une variable privée à ton module de classe:
Private pNomProp As String
Property Get NomProp() As String
NomProp = pNomProp
End Property
Property Let NomProp(ByVal Value As String)
pNomProp = Value
End Property
Dans les deux cas tu accèdes à la propriété depuis l'extérieur (un autre module ayant accès à une isntance de ta classe) de la même facon.
NomObjet.NomProp = "Hello"
Ou
Msgbox NomObjet.NomProp
Les différences :
1- ta propriété est forcément en lecture et en écriture.Si tu changes la valeur de la propriété, tu ne peux rien faire de valorisant dessus.
2- Ta propriété peut être en lecture et en écriture (Property Get ET Property Let), en lecture seule (Property Get uniquement), en ecriture seulement (Property Let seulement). De plus au changement de valeur de la propriété (dans le property Let, donc) tu peux ajouter du code. Modifer la valeur d'une autre propriété par exemple, ou générer un EVT de ton objet, etc ...
A noter l'existance de Property Set (en lieu et place de Property Let) qui s'emplois si le type de la propriété est un type objet. Cela donne alors :
Private pNomProp As TextBox
Property Get NomProp() As String
NomProp = pNomProp
End Property
Property Set NomProp(ByVal Value As TextBox)
Set pNomProp = Value
End Property
Pour finir, le type retourné par le Property Get doit être rigoureusement le même que le type du derneir argument du Property Let/Set, sinon VB ne compilera pas le module.
C'est OK ?
Si tu as besoin de plus d'explication ...
crenaud76
Messages postés4172Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 9 juin 200628 28 janv. 2005 à 13:28
Et je me suis planté dans le dernier code. C'est ceci ...
Private pNomProp As TextBox
Property Get NomProp() As TextBox Set NomProp = pNomProp
End Property
Property Set NomProp(ByVal Value As TextBox)
Set pNomProp = Value
End Property
crenaud76
Messages postés4172Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 9 juin 200628 28 janv. 2005 à 21:22
Je connais pas bien le QBasic, mais il exis teun Type en VB et je pense que c'est lui qsui resemble au Type de QBasic ! ! Les class sont de la programmation objet ! Qbasic, je doute fort qu'il soit de la partie !! Une classe c'est en quelque sorte un type, ormis le fait que chaque objet instancié à partir d'une classe supporte 2 types de membres : Les propriétés (Comme pour un type) mais aussi des méthodes (des fonctions ou procédures quoi !! Dans la class Form, tu as des propriétés Caption ou backcolor, mais tu as aussi des méthodes Load, refresh, etc ...
crenaud76
Messages postés4172Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 9 juin 200628 28 janv. 2005 à 21:29
Elpiojo < Merci du compliment ! Disons que j'adore la programmation (en général et en VB en particulier) et j'ai un petit passé comme formateur (vaguement encore actuellement), alors ça aide, je crois