Problème de perte de variable.

Résolu
cs_zedude33 Messages postés 38 Date d'inscription mardi 1 août 2006 Statut Membre Dernière intervention 9 juillet 2013 - 16 août 2006 à 18:07
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 - 17 août 2006 à 00:39
Bonjour à tous,
Je suis débutant en programmation sous VisualBasic6 et mon problème est le suivant :
J'ai crée une TexBox nommée TleTxt sur une TabStrip nommée SSTab1 dans Form nommée ConfEditFrm.
Dans ma ConfEditFrm j'ai créé une commande nommée EditCmd. Cette commande me permet d'éditer avec Print#1. Le problème est que je n'arrive pas à récupérer TleTxt.Text pour l'éditer avec cette commande. La variable semble se perdre. J'ai pourtant tout déclaré Public mais il m'est bien sûr impossible de déclarer TleTxt.Text !
Comment faire ?

Merci
@+ Thierry

15 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
16 août 2006 à 19:30
Pour ta question sur la variable Titre, cela dépend.

Tu la récupère de ta Form nommée ConfEditFrm, l'utilises-tu dans une autre Form ?

Ensuite pour ton histoire de TextBox, quand tu tapes
ConfEditFrm.
après avoir tapé le point, il doit te proposé le nom de ta textbox (en tapant les premières lettres)

++
3
Dolphin Boy Messages postés 630 Date d'inscription vendredi 5 mai 2006 Statut Membre Dernière intervention 17 février 2007
16 août 2006 à 19:37
Bon, déjà, il y a une différence entre TabStrip (référence vb6 : Microsoft Windows Common Controls 6.0) et SSTab (réference vb6 : Microsoft Tabbed Dialog Control 6.0).
Personnellement je préfère le SSTab car on n'est pas obligé de gérer l'affichage du contenu de chaque Tab comme avec le TabStrip. Mais c'est une affaire de gout.


De toutes manières, j'ai testé les 2 solutions, il est inutile (en VB6) de préfixer la textbox avec le nom du Tab control. Cette dernière a pour conteneur la form où elle se trouve (même si tu mets le tout dans une frame).

Dans tous les cas (si tous les controles se trouvent sur la même form) cet exemple me renvoit le contenu de la textbox :

Private Sub EditCmd_Click()
MsgBox Me.TleTxt.Text
End Sub

Donc, si c'est bien du VB6, la vérité est ailleurs .
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
16 août 2006 à 19:42
Salut Dolphin Boy,

je confirme, pas besoin de préfixer..

Par contre concernant le TabStrip, en VBA, tu peux naviguer entre chaque onglet, comment faire en VB6 (j'ai abandonner depuis, mais j'aimerai bien savoir) ;)

Merci à toi !

++
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
16 août 2006 à 20:26
Il n'est pas indexé ton contrôle ??
Si c'est le cas,
MsgBox Me.TleTxt(N°).Text
^^ les index commencent à 0

Sinon, pour Public Titre As String qui a été déclaré dans (Général) ;
remplace Public par Dim, cette variable sera accessible dans toutes les procédures de la Form

(Public, c'est pour être accessible par plusieurs Forms ou Modules)

++
3

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

Posez votre question
Dolphin Boy Messages postés 630 Date d'inscription vendredi 5 mai 2006 Statut Membre Dernière intervention 17 février 2007
16 août 2006 à 20:50
zedude33> on ne s'énerve pas et je pense que le dernier post de <mortalino> est une bonne piste.

mortalino> pour la différence entre TabStrip et SSTab on en rediscute en dehors de ce post si tu veux.
3
cs_zedude33 Messages postés 38 Date d'inscription mardi 1 août 2006 Statut Membre Dernière intervention 9 juillet 2013
16 août 2006 à 22:55
Bingo !
Mon contrôle était indexé ! Index 8 du coup Titre = ConfEditFrm.TleTxt(8).Text fonctionne du feux de Dieu !

MERCI ! ET ENCORE MERCI !

Mais au fait, un index sert à quoi si ce n'est à cramer un après-midi à se prendre la tête ?

@+Thierry  
3
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
17 août 2006 à 00:39
Un index, ça peut être utile pour boucler plusieurs textbox à la fois

For I = 0 to NombreDeTextbox

textbox(I).text = CStr(i)

Next


Mais si on n'en a pas besoin, vaut mieux le virer et ne rien mettre....

Comme tu dis, on peut se prendre la tête, même en sachant qu'il y en a un  ¦¬)

MPi
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
16 août 2006 à 18:17
Salut,

dans les déclarations :
Public MaVar As String

Dans une procédure de ta Form :
MaVar = ConfEditFrm.TleTxt.Text

puis

Print#1, MaVar

++
0
cs_zedude33 Messages postés 38 Date d'inscription mardi 1 août 2006 Statut Membre Dernière intervention 9 juillet 2013
16 août 2006 à 18:36
Merci pour ta réponse mias ça ne fonctionne pas


Erreur de compilation:
Methode ou membre de données introuvable.

avec le .Text de ConfEditFrm.TleTxt.Text en surbrillance

Au niveau des déclarations, j'ai dans Général :
Option Explicit
Public Titre As String

Public Sub Form_Load()
Titre = ConfEditFrm.TleTxt.Text


End Sub


@+ Thierry
0
Dolphin Boy Messages postés 630 Date d'inscription vendredi 5 mai 2006 Statut Membre Dernière intervention 17 février 2007
16 août 2006 à 18:44
Salut, question bête : c'est sur que c'est une textbox ? pas un Label ? car, dans ce cas c'est caption qu'il faut utiliser à la place de text (bizarrerie du vb6 corrigée en vb.net).
0
cs_zedude33 Messages postés 38 Date d'inscription mardi 1 août 2006 Statut Membre Dernière intervention 9 juillet 2013
16 août 2006 à 18:55
Et oui malheureusement il s'agit bien d'une TextBox.

@+ Thierry
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
16 août 2006 à 18:57
peut-etre comme ceci alors :

MaVar = ConfEditFrm.SSTab1.TleTxt.Text !

A tester ;)


++
0
cs_zedude33 Messages postés 38 Date d'inscription mardi 1 août 2006 Statut Membre Dernière intervention 9 juillet 2013
16 août 2006 à 19:16
Hello,

Toujours le même message d'erreur :
Erreur de compilation:
Methode ou membre de données introuvable.

mais avec le .TleTxt  de  Titre = ConfEditFrm.SSTab1.TleTxt.Text

La TextBox semble pourtant bien déclarée.

Une petite question :
Public Titre As String doit dépendre de (Général)(Déclarations) ou bien doit-il appartenir a un module ?

Merci
@+ Thierry
0
Dolphin Boy Messages postés 630 Date d'inscription vendredi 5 mai 2006 Statut Membre Dernière intervention 17 février 2007
16 août 2006 à 19:41
Good idea <mortalino> et je rajouterai que s'il ne se propose pas de liste de choix après le point (pb de config de l'IDE) un Ctrl + Space joue le même rôle.
0
cs_zedude33 Messages postés 38 Date d'inscription mardi 1 août 2006 Statut Membre Dernière intervention 9 juillet 2013
16 août 2006 à 20:16
Bon on ne va pas s'enerver.
Je passe à côté de quelque chose et j'aimerai bien savoir quoi.
Tout d'abord,  en réponse à Dolphin Boy, tu as raison il s'agit d'une SSTab1.
Je ne travaille que sur une seule et unique Form.
Public Titre As String a été déclaré dans (Général).
En réponse à mortalino j'ai effectivement les propositions qui s'affichent après le point de ConfEditFrm. ce qui me permet d'ecrire ceci:

Public Sub Form_Load()
Titre = ConfEditFrm.TleTxt
End Sub

Lors de l'exécution j'ai un message d'erreur :
Erreur de compilation :
Cet argument n'est pas facultatif.
avec .TleTxe en surbrillance.

Et si j'ai :

Private Sub EditCmd_Click()
MsgBox Me.TleTxt.Text
End sub

Lors de l'execution, en actionnant la commande j'ai :

Erreur de compilation :
Méthode ou membre de données introuvable.
avec le .Text de MsgBox Me.TleTxt.Text en surbrillance.

Je ne comprends pas pourquoi.
0
Rejoignez-nous