Timer et procedure

Résolu
cs_andrebernard Messages postés 404 Date d'inscription lundi 9 juin 2003 Statut Membre Dernière intervention 4 septembre 2013 - 18 sept. 2007 à 12:43
cs_andrebernard Messages postés 404 Date d'inscription lundi 9 juin 2003 Statut Membre Dernière intervention 4 septembre 2013 - 18 sept. 2007 à 17:39
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

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
18 sept. 2007 à 16:57
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
1
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
18 sept. 2007 à 14:04
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


 
0
GEDDi Messages postés 206 Date d'inscription lundi 22 novembre 1999 Statut Membre Dernière intervention 3 juillet 2008
18 sept. 2007 à 14:14
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
0
GEDDi Messages postés 206 Date d'inscription lundi 22 novembre 1999 Statut Membre Dernière intervention 3 juillet 2008
18 sept. 2007 à 14:16
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 )
0

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

Posez votre question
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
18 sept. 2007 à 14:20
Merci...

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
cs_andrebernard Messages postés 404 Date d'inscription lundi 9 juin 2003 Statut Membre Dernière intervention 4 septembre 2013 1
18 sept. 2007 à 14:44
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
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
18 sept. 2007 à 17:09
Comme d'habitude....perfect...

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
cs_andrebernard Messages postés 404 Date d'inscription lundi 9 juin 2003 Statut Membre Dernière intervention 4 septembre 2013 1
18 sept. 2007 à 17:39
Je te remercie beaucoup PCPT.
C'est exactement ce que je voulais.

Merci aussi à tous de votre aide
Bonne soirée
0
Rejoignez-nous