Valeur du Focus

Résolu
SnapFAB Messages postés 61 Date d'inscription samedi 10 novembre 2007 Statut Membre Dernière intervention 5 mars 2011 - 1 déc. 2007 à 13:11
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 - 1 déc. 2007 à 19:17
Bonjour tout le monde !
J'ai encore un gros problème de débutant et après plusieurs recherches sur le forum et google je n'ai toujours pas trouvé de solution.

Donc voilà, j'ai une form avec plusieurs CommandButton nommer "Button1", "Button2", "Button3" ...

J'ai un Textbox nommer "Text1", et donc j'aimerai que le texte de mon textbox (text1.text=) récupere le focus actif. C'est à dire si le focus se trouve sur le Button2 j'aimerai l'affichage dans mon text1 de : "Button2".

Merci beaucoup pour votre aide.

Fabien

12 réponses

cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
1 déc. 2007 à 16:53
Salut et Salut Jmfmarques,

Tu ne veux pas saisir 50 fois le même code...Je comprend...L'astuce..?? Utilise un Timer, règle l'intervale = 100

Private Sub Timer1_Timer()


   Dim MyControl As Control
  
   For Each MyControl In Me
       If TypeOf MyControl Is CommandButton Then
          Text1.Text = ActiveControl.Name
       End If
   Next MyControl


End Sub
 


A+
Exploreur

 Linux a un noyau, Windows un pépin


 
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
1 déc. 2007 à 17:43
non...non...Il pauser sur ta form un contrôle Timer, tu doubleclick sur le contrôle et tu ajoutes le code donné...Dans ses propriétés du définit Interval = 100

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
1 déc. 2007 à 13:20
Bonjour,

intréresse-toi à l'évènement Gotfocus et à la propriété Name de ActiveControl

tous les mots en gras dans ma réponse ===>> lecture de ton aide en ligne sur ces mots
SnapFAB Messages postés 61 Date d'inscription samedi 10 novembre 2007 Statut Membre Dernière intervention 5 mars 2011
1 déc. 2007 à 14:35
J'ai bien lu l'aide, mais je reste bloquer, en faite j'en suis arriver à ce code :

Text1.Text = Me.ActiveControl.Name

et donc message d'erreur : "Object variable or With block variable not set"

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

Posez votre question
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
1 déc. 2007 à 15:05
1) dans quel évènement as_tu mis ce code ? (on ne le voit pas  !)


2) es-tu bien certain d'être sous VB6 et non sous VBA ?

ceci martche parfaitement sous VB6, dans la mesure (bien évidemment ) où esxiste une textbox nommée Text1 et un bouton de commande nommé command1

Private Sub Command1_GotFocus()
  Text1.Text = ActiveControl.Name
End Sub
SnapFAB Messages postés 61 Date d'inscription samedi 10 novembre 2007 Statut Membre Dernière intervention 5 mars 2011
1 déc. 2007 à 15:20
Je suis bien sur VB6 mais j'ai encore des sales manies de VBA dans la tête... (parfois ça marche bien ;-)

J'ai bien comrpis ta ligne de commande avec le GotFocus et effectivement elle marche mais j'ai du mal formuler ma question.
Car par la suite sur la même form je vais avoir 50 CommandButton, et avec ce code je vais donc devoir taper 50 private sub Command"x"_GotFocus.

Je cherche en faite un code qui permet de recuperer ActiveControl.Name à n'importe quel moment dans mon textbox et que mon textbox ce mette automatiquement à jour lors d'un changement de focus.

J'espère avoir été un peu plus clair.
En tout cas merci.
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
1 déc. 2007 à 16:52
Utilise alors un groupe de Commandbuttons indexé et envoie dans ta textbox activecontrol.name & "(" & index & ")"
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
1 déc. 2007 à 17:15
Salut exploreur...

Pas vraiment besoin d'un timer dès lors qu'il s'agit d'un bouton ayant le focus (et donc étant forcément passé par l'évènement GotFocus qui, lui, met à jour la textbox)

Si maintenant le fait d'avoir quelquechose du genre "toto(3)" dans la textbox n'est pas très "parlant", rien n'interdit alors d'utiliser la propriété tag pour y mettre du "plus parlant" et de l'utiliser ainsi :

Private Sub Command1_GotFocus(Index As Integer)
    text1.text = activecontrol.tag
End Sub
ou même du plus complet (les 2) :

text1.text = activecontrol.name & "(" & index & ")" & "    (" & activecontrol.tag & ")"
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
1 déc. 2007 à 17:26
Salut Jmfmarques,

Je suis tout à fait d'accord avec toi , c'était pour qu'il ne tape pas 50 fois : text1.text = activecontrol.tag, si ses boutons ne sont pas indéxés....

Personnelement, l'avantage que j'ai trouvé au timer, c'est qui ne se souçi de rien au niveau du code...Au pire, dans son apllication il enclenche le timer ou pas...

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
SnapFAB Messages postés 61 Date d'inscription samedi 10 novembre 2007 Statut Membre Dernière intervention 5 mars 2011
1 déc. 2007 à 17:39
Salut Exploreur, Re Jmfmarques

Exploreur t'as bien compris ce que je voulais, ne pas retaper 50 fois text1.text...


Ton idée semble beaucoup me plaire, mais malheureusement ça marche toujours pas
et donc toujours le même message d'erreur : "Object
variable or With block variable not set"

Mon problème de débutant : Quand dois je
lancer ta sub "Private Sub Timer1_Timer()" ?
Pour l'instant je l'ai lancer au Load de <st1:personname productid="la Form" w:st="on">la Form</st1:personname> ... ("Private Sub Form_Load()")


@+ et Merci bcp

Fabien
SnapFAB Messages postés 61 Date d'inscription samedi 10 novembre 2007 Statut Membre Dernière intervention 5 mars 2011
1 déc. 2007 à 18:42
Désolé pour mon dernier post, il est inutile car je ne connaissait pas le timer.
J'ai lu, j'ai compris, j'ai vaicu.

Merci exploreur ça marche à merveille !
++
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
1 déc. 2007 à 19:17
De rien...Au plaisir

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
Rejoignez-nous