Problème de perte de variable.

Résolu
Messages postés
38
Date d'inscription
mardi 1 août 2006
Statut
Membre
Dernière intervention
9 juillet 2013
-
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
-
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

Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
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)

++
Messages postés
630
Date d'inscription
vendredi 5 mai 2006
Statut
Membre
Dernière intervention
17 février 2007

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 .
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
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 !

++
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
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)

++
Messages postés
630
Date d'inscription
vendredi 5 mai 2006
Statut
Membre
Dernière intervention
17 février 2007

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.
Messages postés
38
Date d'inscription
mardi 1 août 2006
Statut
Membre
Dernière intervention
9 juillet 2013

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  
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
19
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
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Salut,

dans les déclarations :
Public MaVar As String

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

puis

Print#1, MaVar

++
Messages postés
38
Date d'inscription
mardi 1 août 2006
Statut
Membre
Dernière intervention
9 juillet 2013

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
Messages postés
630
Date d'inscription
vendredi 5 mai 2006
Statut
Membre
Dernière intervention
17 février 2007

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).
Messages postés
38
Date d'inscription
mardi 1 août 2006
Statut
Membre
Dernière intervention
9 juillet 2013

Et oui malheureusement il s'agit bien d'une TextBox.

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

MaVar = ConfEditFrm.SSTab1.TleTxt.Text !

A tester ;)


++
Messages postés
38
Date d'inscription
mardi 1 août 2006
Statut
Membre
Dernière intervention
9 juillet 2013

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
Messages postés
630
Date d'inscription
vendredi 5 mai 2006
Statut
Membre
Dernière intervention
17 février 2007

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.
Messages postés
38
Date d'inscription
mardi 1 août 2006
Statut
Membre
Dernière intervention
9 juillet 2013

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.