Eviter de répéter le nom d'un textbox

Signaler
Messages postés
576
Date d'inscription
samedi 14 octobre 2006
Statut
Membre
Dernière intervention
27 janvier 2014
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
Bonjour,

je souhaiterai éviter de répéter à chaque fois le nom de mon textbox. Par exemple, en supposant que mon textbox s'appelle text1 lorsque je veux faire
.BackColor &HFFFF&
dans son gotfocus je suis obligé de faire
text1.BackColor &HFFFF&
et de faire encore
text1.BackColor = &HFFFFFF
dans son lostfocus.

En somme je souhaiterai savoir si dans un évènement de text1, je peux appeller ou utiliser text1 sans le nommer.

Merci d'avance.

Cordialement.

5 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
233
Bonjour
Je ne comprends pas trop (sur la seule base de ton seul exemple) ce que tu veux faire et son intérêt réel.

Mais voilà qui y répoànd :
Private qui As TextBox

Private Sub Text1_GotFocus()
  Set qui = ActiveControl
  qui.BackColor = &HFFFF&
End Sub

Private Sub Text1_LostFocus()
  qui.BackColor = &H80000003
End Sub

____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
233
Je te propose également de t'entrainer à comprendre ceci, que je viens de m'amuser à faire (en prévision de ce que je devine qui va maintenant venir)

Sur un Form, 3 textboxes (Text1, Text2 et Text3)
Private Sub Text1_LostFocus()
  toto
End Sub

Private Sub Text2_GotFocus()
  toto
End Sub

Private Sub Text2_LostFocus()
  toto
End Sub
Private Sub Text3_GotFocus()
  toto
End Sub

Private Sub Text3_LostFocus()
  toto
End Sub

Private Sub toto()
  Static titi As TextBox
  If titi Is Nothing Then
     Set titi = ActiveControl
     titi.BackColor = &HFFFF&
  Else
     If titi = ActiveControl Then
        titi.BackColor = &HFFFF&
     Else
        titi.BackColor = &H80000003
        Set titi = ActiveControl
        titi.BackColor = &HFFFF&
     End If
  End If
End Sub

lance et passe donc d'une textbox à l'autre.
Ceci étant dit :
1) je n'ai fait ceci que pour m'amuser et- pour répondre à ta demande, telle qu'elle est, sans aucune autre considération d'intérêt ...
2) je te rappelle, "à tout hasard", que VB6 te permet la gestion des groupes de contrôles indexés. Tu devrais t'y intéresser de près.

____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
233
Copier-coller incomplet dans mon dernier code. Manque, bien sûr :

Private Sub Text1_GotFocus()
 toto
End Sub


Mais j'insiste : une telle gymnastique est avantageusement remplacée par un groupe te textboxes indexées.
____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
233
Pour t'en donner une petite idée :
voici les rares lignes de code qu'il te faudrait, quel que fût le nombre des textboxes du groupe text1 :
Private Sub Text1_GotFocus(Index As Integer)
 Text1(Index).BackColor = &HFFFF&
End Sub

Private Sub Text1_LostFocus(Index As Integer)
  Text1(Index).BackColor = &H80000003
End Sub

Elles seraient toutes gérées comme tu l'as demandé.

____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
233
et si tu ne veux voir apparaître nulle part le mot Text1 au sein de ces 2 procédures évènementielles ====>> tu conjugues avec mon tout premier code.
Ainsi, donc :
Private qui As TextBox
Private Sub Text1_GotFocus(Index As Integer)
 Set qui = ActiveControl
 qui.BackColor = &HFFFF&
End Sub

Private Sub Text1_LostFocus(Index As Integer)
  qui.BackColor = &H80000003
End Sub


____________________
Utiliser le bouton "REPONSE ACCEPTEE" sur une réponse exacte facilite les recherches ultérieures d'autres forumeurs. PENSEZ-Y SVP