Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1864 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [Fin] Gérer les évenements sur des boutons créés dynamiquement

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Fin] Gérer les évenements sur des boutons créés dynamiquement

n°1382705
Paul Hood
Posté le 07-06-2006 à 11:25:40  profilanswer
 

Bonjour,
 
Après avoir créé dynamiquement un bouton, je voudrais gérer les événements qui peuvent se produire dessus.
 
----
Je créé un bouton dans une userform à l'initialisation :
 
set MonBouton = userform1.controls.add("Forms.CommandButton.1" )
 
et je veux afficher un msgbox quand je clic sur ce bouton
----
 
Comment je fais pour créé le code lié à l'événement Click du bouton ?
 
 
Merci d'avance.


Message édité par Paul Hood le 13-06-2006 à 16:00:15
mood
Publicité
Posté le 07-06-2006 à 11:25:40  profilanswer
 

n°1385202
thefrereto​ck
Posté le 10-06-2006 à 19:14:04  profilanswer
 

Question indiscrete qui n'a rien a voir.........ca te sert à quoi de créer un bouton à l'ouverture d'une form?

n°1385342
otobox
Maison fondée en 2005
Posté le 11-06-2006 à 10:19:06  profilanswer
 

Peut être que le plus simple serait de créer ton bouton directement sur ta form et de jouer sur sa propriété visible/invisible ?
Si ce bouton doit avoir plusieurs fonctions suivant le contexte où tu appelles ta form, tu peux ensuite jouer sur la propriété caption et ensuite, dans le code bouton_click() tu fais un test pour déterminer quelle procédure lancer.
Exemple, dans form_initialize():
si openargs="" alors bouton.visible=false
si openargs="ModeModif" alors bouton.visible=true bouton.caption="Modifier"
si openargs="ModeConsultation" alors bouton.visible=true bouton.caption="Fermer"
 
et dans bouton.clic():
si bouton.caption="Modifier" alors appeller ModifierDonnees
sinon fermer le formulaire
 
kenavo,
 
Jean-Marc


---------------
OtObOxBlOg - - - Etre seul à avoir tort  c'est plus difficile, mais c'est bien plus beau que d'avoir raison avec une bande de cons
n°1385587
Paul Hood
Posté le 12-06-2006 à 09:05:00  profilanswer
 

Je suis en train de me faire une appli pour gérer mes photos.
 
J'ai besoin de pouvoir créer dynamiquement des objets "pictures" en fonction d'une sélection d'iamges.
C'est-à-dire que je ne connais pas d'avance le nombre d'images à afficher et je ne veux pas être limité en créant statiquement mes objets images par avances.
 
J'ai trouvé une piste mais avec une command que mon VBA ne connaît pas c'est "Designer"
      Set Usf = ThisWorkbook.VBProject.VBComponents("Userform1" )
      Set btn = Usf.Designer.Controls.Add("Forms.CommandButton.1" )
En plus avec la possibilité de générer du code.
 
Le seul HIC... c'est que le code est réellement écrit dans mon module et si je sauve le fichier mon code est sauvegardé aussi..et donc le coup d'après BOUM ca plante puisque le code existe déjà...
 
Peut-être existe-t-il une piste par les modules de classes ...mais là... je rame un peu beaucoup et j'avance doucement.
 
Merci pour vos idées

n°1386214
kiki29
Posté le 13-06-2006 à 08:07:28  profilanswer
 

Sous VB6 à titre d'exemple
   Créer un Bouton command1 en faire une copie  
   Répondre oui à "créer un groupe de contrôles"
   Supprimer ce bouton et conserver Command1(0)
   


Option Explicit
Dim NbCmdButton As Integer
Dim NbPicture As Integer
 
Private Sub cmdAdd_Click()
    NbCmdButton = Command1.UBound
    NbCmdButton = NbCmdButton + 1
     
    NbPicture = Picture1.UBound
    NbPicture = NbPicture + 1
     
    Load Command1(NbCmdButton)
    Command1(NbCmdButton).Top = Command1(NbCmdButton - 1).Top + Command1(NbCmdButton - 1).Height + 30
    Command1(NbCmdButton).Caption = "command1(" & NbCmdButton & " )"
    Command1(NbCmdButton).Visible = True
     
    Load Picture1(NbPicture)
    Picture1(NbPicture).Top = Picture1(NbPicture - 1).Top + Picture1(NbPicture - 1).Height + 30
    Picture1(NbPicture).Visible = True
End Sub
 
Private Sub cmdDel_Click()
    NbCmdButton = Command1.UBound
    NbPicture = Picture1.UBound
     
    If NbCmdButton > 0 Then Unload Command1(NbCmdButton)
    If NbPicture > 0 Then Unload Picture1(NbPicture)
End Sub
 
Private Sub Command1_Click(Index As Integer)
    '...
End Sub
 
Private Sub Form_Load()
Dim i As Integer
    NbCmdButton = Command1.Count
    NbPicture = Picture1.UBound
    For i = 1 To 4
        Load Command1(i)
        Command1(i).Top = Command1(i - 1).Top + Command1(i - 1).Height + 30
        Command1(i).Caption = "command1(" & i & " )"
        Command1(i).Visible = True
    Next
    For i = 1 To 2
        Load Picture1(i)
        Picture1(i).Top = Picture1(i - 1).Top + Picture1(i - 1).Height + 30
        Picture1(i).Visible = True
    Next
End Sub

Message cité 1 fois
Message édité par kiki29 le 13-06-2006 à 09:55:09
n°1386472
Paul Hood
Posté le 13-06-2006 à 13:29:04  profilanswer
 

kiki29 a écrit :

Sous VB6 à titre d'exemple
   Créer un Bouton command1 en faire une copie  
   Répondre oui à "créer un groupe de contrôles"
   Supprimer ce bouton et conserver Command1(0)
   


Option Explicit
Dim NbCmdButton As Integer
Dim NbPicture As Integer
 
Private Sub cmdAdd_Click()
    NbCmdButton = Command1.UBound
    NbCmdButton = NbCmdButton + 1
     
    NbPicture = Picture1.UBound
    NbPicture = NbPicture + 1
     
    Load Command1(NbCmdButton)
    Command1(NbCmdButton).Top = Command1(NbCmdButton - 1).Top + Command1(NbCmdButton - 1).Height + 30
    Command1(NbCmdButton).Caption = "command1(" & NbCmdButton & " )"
    Command1(NbCmdButton).Visible = True
     
    Load Picture1(NbPicture)
    Picture1(NbPicture).Top = Picture1(NbPicture - 1).Top + Picture1(NbPicture - 1).Height + 30
    Picture1(NbPicture).Visible = True
End Sub
 
Private Sub cmdDel_Click()
    NbCmdButton = Command1.UBound
    NbPicture = Picture1.UBound
     
    If NbCmdButton > 0 Then Unload Command1(NbCmdButton)
    If NbPicture > 0 Then Unload Picture1(NbPicture)
End Sub
 
Private Sub Command1_Click(Index As Integer)
    '...
End Sub
 
Private Sub Form_Load()
Dim i As Integer
    NbCmdButton = Command1.Count
    NbPicture = Picture1.UBound
    For i = 1 To 4
        Load Command1(i)
        Command1(i).Top = Command1(i - 1).Top + Command1(i - 1).Height + 30
        Command1(i).Caption = "command1(" & i & " )"
        Command1(i).Visible = True
    Next
    For i = 1 To 2
        Load Picture1(i)
        Picture1(i).Top = Picture1(i - 1).Top + Picture1(i - 1).Height + 30
        Picture1(i).Visible = True
    Next
End Sub



 
Le problème de VBA c'est qu'on ne peut pas créer de groupe de contrôles.
 
Sinon j'ai trouvé un autre truc avec WithEvents mais je ne gère que le dernier objet créé et pas l'ensemble des objets créés.
Je vais cherché un facon de faire autrement... des listes ou quelque chose comme ça !!!
 
Merci.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [Fin] Gérer les évenements sur des boutons créés dynamiquement

 

Sujets relatifs
gérér extension lors de uploadBoutons radio qui modifie un formulaire
gerer les ancres dynamiquementPersonnaliser des boutons avec Excel
évènements pour controles créés à l'éxecutionProblème de boutons flash (lien avec internet explorer)
repérer un champ javascript dynamiquementboutons radios afficher masquer
Plus de sujets relatifs à : [Fin] Gérer les évenements sur des boutons créés dynamiquement


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR