aurelien2723
Messages postés181Date d'inscriptionjeudi 12 janvier 2006StatutMembreDernière intervention26 janvier 2011
-
14 févr. 2008 à 14:47
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 2018
-
15 févr. 2008 à 17:29
Bonjour,
j'ai une erreur folle en VB6.
J'ai une collection de label (appelé "carreau")
Je veux passer un des labels de ma collection à une fonction , qui prend donc un label en argument.
Private Sub BoutonRAZ_Click()
changerCase (Carreau(5))
End Sub
Public Function changerCase(tmp As Label)
If tmp.Caption = "X" Then
tmp.Caption = ""
Else: tmp.Caption = "X"
End If
End Function
A la compilation j'ai une erreur :
'erreur de type incompatible' !!!
pourquoi donc? l'élement de ma collection est bien un label...
Carreau 5 existe bien
NHenry
Messages postés15156Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention29 septembre 2024159 14 févr. 2008 à 16:06
Bonjour
ByRef ou ByVal, quelle différence :
ByRef passe le paramètre par référence, celui-ci peut être modifié par la fonction/procédure.
ByVal passe le paramètre par valeur, toute modification du paramètre dans la fonction/procédure ne modifie pas la valeur chez l'appelant.
Détail à ce sujet, un entier, string ou structure (Type) est envoyé directement, tandis qu'un objet (catégorie dont fait partie le Label) le paramètre est en fait une pointeur, donc passer un objet par référence ou valeur c'est presque la même chose, à l'exception près que par référence, on peut changer l'objet pointé (d'un Label à un autre Label par exemple) et qu ce soit modifier chez l'appelant.
Donc, pour changer le Caption, que ce soit par référence ou par valeur, cela ne change strictement rien.
Voilà déjà pour commencer.
Ensuite :
De quel type est Carreau() (si c'est des contrôles indexés, pas la peine de répondre à cette question)?
As-tu essayer en remplaçant "As Label" par "As Control" ou par "As Object" ?
Dans Word, j'Excel. (juste pour la citation)
VB (6, .NET1&2), C++, C#.Net1
Mon site