Problème de création dynamique d'un groupe de contrôle

The big - 10 oct. 2001 à 17:35
Mousy Messages postés 26 Date d'inscription jeudi 9 février 2006 Statut Membre Dernière intervention 28 février 2006 - 26 févr. 2006 à 12:21
Ce que je souhaite réaliser a l'air simple cependant je n'y arrive pas ..
je souhaite créer un groupe de control de maniére dynamique, des SSPanel ( sheridan) avec VB6 ces contrôles sont ensuite placer sous un fond d'écran .
Je veux que ces contrôles arrivent à réagir un évenement(ici le click)...
J'arrive a crer les objets et l'évenement ( sans passer par des groupes car ceux ci ne génére pas d'événement de maniére dynamique , le compilateur refuse le withevents)
cependant l'évenemt ne s'applique qu'au dernier objet créer...
j'aimerais savoir quoi faire pour arriver à mes fins...
quelle est l'option à remplir pour débloquer la situation.
voici le code source :

Option Explicit
Dim WithEvents Panel_Bornes As VBControlExtender
Dim i As Integer
Public Rec_Etat As Recordset

Public Sub Creer_Nouvelle_Borne(ByVal num As Long)

Dim j As Long

i = i + 1
Set Rec_Etat = Bd.OpenRecordset("select num_auto , etatauto from detail_indispo " _
& " WHERE num_auto = " & num)

Set Panel_Bornes = Me.Controls.Add("Threed.SSPanel", "Borne_" & i)

Panel_Bornes.Visible = True

'Panel_Bornes(i).Caption = "Dynamic CommandButton"
Panel_Bornes.Top = 5000
Panel_Bornes.Left = 5000
Panel_Bornes.DragMode = 1
Panel_Bornes.Tag = num
Panel_Bornes.Caption = ""
Panel_Bornes.Width = 255
Panel_Bornes.Height = 255
Panel_Bornes.ToolTipText = " borne n°" & num
If Rec_Etat.EOF And Rec_Etat.BOF Then
Panel_Bornes.ForeColor = &HFFFF& 'jaune
Panel_Bornes.BackColor = &HFFFF& 'jaune
Else
j = Rec_Etat("etatauto")
Select Case j 'Rec_Etat("etatauto")
Case 0
Panel_Bornes.ForeColor = &HC000& 'vert
Panel_Bornes.BackColor = &HC000& 'vert
Case 1, 3, 4, 5
Panel_Bornes.ForeColor = &HFF& 'orange
Case 2
Panel_Bornes.ForeColor = &HC000& 'rouge
End Select
End If

End Sub

Public Sub Panel_Bornes_ObjectEvent(Info As EventInfo)
' Programme les événements du contrôle avec Select Case.
Select Case Info.Name
Case "Click"
MsgBox " a marche"
' Gère l'événement Click ici.
' Autres cas montrés
Case Else ' Événement inconnu

' Gère les événements inconnus ici.
End Select
End Sub

3 réponses

ZackyBambou Messages postés 11 Date d'inscription lundi 20 janvier 2003 Statut Membre Dernière intervention 15 mars 2005
5 nov. 2004 à 17:17
ZackyBambou

Salut The Big !

Oué j'ai chercher aussi. Par contre sur MSDN il y a plusieurs articles énumérant les différences entre VB et VB.net !

Je vais tenter de te faire un résumé... c'est quand même simple !
Si je suis trop mauvais... je te réfère à M Bill ce sera peut-être mieux !

Or ! Tu te dois de prévoir une fonction qui recevera le handle des controles créés dynamiquement. Dans le cas où j'ai 2 boutons créés en code soit : button 1 et button 2... je vais les associer à la procédure AllBtn...

Commençons vite ...

On cré dans une procédure quelconque les 2 boutons soit :

Private WithEvents Btn1 as new Button()
Private WithEvents Btn2 as new Button()

'Tu lui attribue les propriétés que tu veux pour le nom et etc...

Ensuite lorsque tout est à ton goût et avant de sortir de la procédure de création des boutons... tu DOIS lui assigné la procédure souhaité... Fais-le ainsi !

AddHandler Btn1.Click, AddressOf AllBtn
AddHandler Btn2.Click, AddressOf AllBtn

Bon le plus gros est fait... la procédure asteur !

Private Sub AllBtn (ByVal sender as Object, ByVal e as System.EventArgs)

'Ici sender = à l'objet qui à caller la procédure... fais le code que tu souhaites !

end sub

J'espère que ça t'a aider... j'ai souvent trouvé de bonne piste ici et je renvois la balle !

Good luck
0
Mousy Messages postés 26 Date d'inscription jeudi 9 février 2006 Statut Membre Dernière intervention 28 février 2006
26 févr. 2006 à 11:59
merci, encore un post qui m'a servi :)
0
Mousy Messages postés 26 Date d'inscription jeudi 9 février 2006 Statut Membre Dernière intervention 28 février 2006
26 févr. 2006 à 12:21
maintenant j'ai une autre difficulté:


dans un cas identique à ci dessus, j'ajoute dynamiquement des listbox au lieu de boutons. Si je click sur un des listbox , ma procédure (qui pour le moment m'affiche un messagebox) fonctionne bien .
Maintenant comment alors détecter sur quel item de la listbox on a cliqué?

merci de votre aide
0
Rejoignez-nous