Timer et procedure [Résolu]

Signaler
Messages postés
406
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
4 septembre 2013
-
cs_andrebernard
Messages postés
406
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
4 septembre 2013
-
Bonjour à tous

Je voudrais utiliser un timer pour faire clignoter un controle.
Seulement le probleme, c'est que je ne comprend pas, comment transmetre à la sub le nom du controle que je voudrais qui clignote, sans mettre ce nom en PUBLIC
Etant donné que le timer est une SUB, je ne peut pas l'incorporer dans une autre.
Comment faire pour lui transmettre le nom du controle qui est dans un groupe de controle ?
Car ce qui est dessous ne marche pas :

Public Sub Timer1_Timer(Controle as Object)
 num = num + 1 If num <10 Then Controle.Visible Not (Controle.Visible)
End Sub

Merci
Bonne journée

8 réponses

Messages postés
13281
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
30
salut,

j'vois pas trop l'intérêt de vouloir absolument se passer d'une variable en (Déclarations) (Général), ou en public mais bon...
voici une possibilité, il y en a beaucoup d'autres...

'   1 groupe de X boutons,
par défaut
'   1 timer, par défaut
Option Explicit
Private mMyObject As Object 'objet PRIVé

'   PROPRIéTé AVEC
GESTION NOTHING + RESTAURATION VISIBILITé
Public Property Get MyObject() As Object
    Set MyObject = mMyObject
End Property
Public Property Let MyObject(nValue As Object)
    If Not mMyObject Is Nothing Then mMyObject.Visible = True
    Set mMyObject = nValue
End Property

'INIT
Private Sub Form_Load()
    Me.MyObject = Nothing
    Timer1.Interval = 200
End Sub
Private Sub Form_Unload(Cancel As Integer)
    Me.MyObject = Nothing
    Timer1.Enabled = False
End Sub

'  
CLICK
Private Sub Command1_Click(Index As Integer)
    Me.MyObject = Command1(Index)
End Sub

'  
TIMER
Private Sub Timer1_Timer()
    If Not (Me.MyObject Is Nothing) Then Me.MyObject.Visible = Not (Me.MyObject.Visible)
End Sub

++
PCPT [AFCK]
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
12
Salut,

Ben cela dépernd de ton contrôle...Quand tu tapes :

Contrôle As .....(tu as une liste qui s'affiche et là tu choisis le type de contrôle(CommandButton, ComboBox...etc....)

Voici un petit bout de code pour faire clignoter un Label :

Private Sub Timer1_Timer()


If Label1.Visible Then
   Label1.Visible = False
Else
   Label1.Visible = True
End If


End Sub


A+
Exploreur

 Linux a un noyau, Windows un pépin


 
Messages postés
209
Date d'inscription
lundi 22 novembre 1999
Statut
Membre
Dernière intervention
3 juillet 2008

Bonjour,

Si tu es sous VB tu peux utiliser la propriété 'Tag' de ta Form qui peut contenir du texte.
Ce texte représente le nom de ton controle par exemple 'Command1'
Apres dans ta sub

Private Sub Timer1_Timer()
Dim o As Control
Dim szName As String
szName = Me.Tag '// là où tu as stocké le nom du contôle que tu veux cacher/afficher
For Each MyControl In Controls
    If MyControl.Name = "CommandButton2" Then
        MyControl.Visible = Not MyControl.Visible
    End If
Next
End Sub

Puis dans ta Formx tu mets ceci :
Me.Tag = "CommandButton2"

Ceci aura pour effet de rechercher un controle "CommandButton2" et de le planquer ou afficher à chaque tour dans ton timer :)

--=:: Gérôme GUILLEMIN
Messages postés
209
Date d'inscription
lundi 22 novembre 1999
Statut
Membre
Dernière intervention
3 juillet 2008

A Exploreur :

If Label1.Visible Then
   Label1.Visible = False
Else
   Label1.Visible = True
End If

Peut etre remplacé par simplement ceci :
Label1.Visible = Not Label1.Visible

Enjoy!

--=:: Gérôme GUILLEMIN ( Auteur du langage FBSL )
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
12
Merci...

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
Messages postés
406
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
4 septembre 2013
1
Geddi


Elle est bien la combine de repérer l'objet clignotant par son TAG
Je la retiens
Merci

Exploreur



Oui, mais mon probleme est, que le nom du controle n'est jamais le meme.


C'est pourquoi j'aurais voulu une espece de variable et mettre le controle dedans.


Pour l'instant je suis passé par une variable PUBLIC objet



Public ControleSelectionner As Object
Set ControleSelectionner = Bouton(0)



Public Sub Timer1_Timer(Index As Integer)
 
 If ControleSelectionner <> Bouton(0) Then
  ControleSelectionner.Visible = Not (ControleSelectionner.Visible)
 End If
 
End Sub

A chaque fois que je clique sur un controle :

Private Sub Label_Click(Index As Integer)
 Set ControleSelectionner = Label(Index)
End Sub

Donc ça marche à peu pres, mais j'aurais aimé que la variable objet ne soit pas public et pouvoir la passer au timer en parametre.




Mais bon si c'est pas possible, je la laisserais PUBLIC
Merci de votre aide
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
12
Comme d'habitude....perfect...

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
Messages postés
406
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
4 septembre 2013
1
Je te remercie beaucoup PCPT.
C'est exactement ce que je voulais.

Merci aussi à tous de votre aide
Bonne soirée