VB6 TypeOf inutilisable

Résolu
jlemay2105 Messages postés 9 Date d'inscription samedi 31 octobre 2009 Statut Membre Dernière intervention 12 juin 2010 - 10 juin 2010 à 15:15
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 - 12 juin 2010 à 00:30
Bonjour à tous,

j'ai commencé un stage il y a de ça 5 semaines où je dois apporter des modifications à une application en VB6. Donc, je n'ai que 5 semaines d'expérience avec ce langage un peu dépassé, alors soyez compréhensif svp.

Mon Problème:
Le programme est orienté objet et à un moment donné, j'aurais besoin d'utiliser le mot clé TypeOf. Le truc est que je ne parvient pas à l'obtenir dans les choix lorsque je fais Ctrl+Espace. Me manque-t-il une référence? Est-ce je peux toujours employer TypeOf? Sinon, y a-t-il une alternative? J'ai googlé sur le sujet et personne ne semble avoir ce problème.

J'utilise VB6 SP6 sous XP Pro.

Merci à l'avance

11 réponses

lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 27 août 2013 7
11 juin 2010 à 08:58
Bonjour,

Pourtant j'ai testé ceci dans un nouveau projet vb6, juste un commandbutton (Vb6.0 SP6):

Private Sub Command1_Click()
Dim ctl As Control
For Each ctl In Me.Controls
If TypeOf ctl Is CommandButton Then
MsgBox ctl.Caption
End If
Next ctl
End Sub

Le prog m'affiche bien la messagebox avec la caption "commanbutton1"..
Peut-être une option à décocher, vu que j'ai aussi vb2003 et 2005 d'installés..

L'expérience, c'est une connerie par jour, mais jamais la même..
3
jlemay2105 Messages postés 9 Date d'inscription samedi 31 octobre 2009 Statut Membre Dernière intervention 12 juin 2010 1
11 juin 2010 à 03:25
HAHAHA, merci Mayzz, je pouvais bien chercher.

Comme je déteste googlé et trouver exactement le même problème qui n'a jamais été répondu ou qui a été résolu par son créateur qui ne laisse pas sa solution... pour ceux que ça intéresse, on peut pas mal faire l'équivalent avec ceci:

If(TypeName(<objet>) = "<nom de la classe>") Then
  <votre code>
End If
1
lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 27 août 2013 7
10 juin 2010 à 15:39
Bonjour,

Oui tu peux l'employer, du moins as-tu essayé ou fais une recherche sur ce site??

Un truc de ce style devrait fonctionner :

Dim ctl As Control
For Each ctl In Me.Controls
If TypeOf ctl Is CommandButton Then
ton code
End If
Next ctl


L'expérience, c'est une connerie par jour, mais jamais la même..
0
jlemay2105 Messages postés 9 Date d'inscription samedi 31 octobre 2009 Statut Membre Dernière intervention 12 juin 2010 1
10 juin 2010 à 15:48
Merci de ta réponse rapide,

comme j'ai dit, j'ai googlé et je n'ai trouvé aucune info par rapport à mon problème.

Un truc de ce style devrait fonctionner :

Dim ctl As Control
For Each ctl In Me.Controls
If TypeOf ctl Is CommandButton Then
ton code
End If
Next ctl

C'est ça, ça ne marche pas. VB ne reconnait pas le mot clé "TypeOf", de là ma question: Me manque-t-il une référence ou est-ce que TypeOf devrait être dans mes librairies par défaut?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 27 août 2013 7
10 juin 2010 à 15:56
Logiquement il n'y a rien à rajouter, cela fait partie des opérateurs de base.


L'expérience, c'est une connerie par jour, mais jamais la même..
0
jlemay2105 Messages postés 9 Date d'inscription samedi 31 octobre 2009 Statut Membre Dernière intervention 12 juin 2010 1
10 juin 2010 à 16:02
C'est bizarre, parce qu'il reconnaît "TypeName", mais pas "TypeOf".
Encore plus bizarre, même s'il ne reconnaît pas "TypeOf", lorsque je tape ce mot clé au complet, que je le sélectionne puis que je pèse F1, la documentation de MSDN me donne la doc à son sujet. Malheureusement, rien d'utile.
0
lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 27 août 2013 7
10 juin 2010 à 16:05
Mais quand tu dis qu'il ne reconnaît pas, c'est à dire??
As-tu au moins essayé de l'exécuter, tu as un message d'erreur??


L'expérience, c'est une connerie par jour, mais jamais la même..
0
jlemay2105 Messages postés 9 Date d'inscription samedi 31 octobre 2009 Statut Membre Dernière intervention 12 juin 2010 1
10 juin 2010 à 16:31
J'ai effectivement essayé.

Syntaxes essayées
If (TypeOf(ctrl) Is clsCbo) Then
If (TypeOf ctrl Is clsCbo) Then
If TypeOf(ctrl) Is clsCbo Then
If TypeOf ctrl Is clsCbo Then


Il est à noter que ctrl est de type parent de clsCbo. clsCbo implémente clsControl.

Lorsque je tape l'une de ces lignes puis que je pèse ENTER, j'ai le message d'erreur suivant

Compile error:

Expected: Variable
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
11 juin 2010 à 01:33
TypeOf n'existe pas en VB6, c'est du .Net !


Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
jlemay2105 Messages postés 9 Date d'inscription samedi 31 octobre 2009 Statut Membre Dernière intervention 12 juin 2010 1
12 juin 2010 à 00:17
Hey lokokun,

je voulais simplement te dire que c'est toi qui avait raison finalement. J'essayais de trouver TypeOf dans les méthodes disponibles quand en fait, ce n'est pas une méthode, mais un mot clé. On doit donc l'utiliser sans les parenthèse.
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
12 juin 2010 à 00:30
Ah bah désolé, je pensais vraiment ce que je disais, en générale je teste avant de poster, mais la je suis sous un OS 64bits et donc pas d'install de vb6 possible, désolé de vous avoir induit en erreur ^^


Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
Rejoignez-nous