AMIBEN
Messages postés28Date d'inscriptionmercredi 2 juin 2004StatutMembreDernière intervention19 novembre 2008
-
18 déc. 2007 à 22:16
AMIBEN
Messages postés28Date d'inscriptionmercredi 2 juin 2004StatutMembreDernière intervention19 novembre 2008
-
30 déc. 2007 à 21:49
Bonjur,
voici mon probleme:
sous vba (solidworks), je parviens a creer dynamiquement des controles "CheckBox." dans une frame par l'intermediaire du code suivant:
Dim Macmd As Control
Set Macmd = frm1.Frame1.Controls.Add("Forms.CheckBox.1")
Macmd.Left = 210
Macmd.Top = v_top
Macmd.Width = 11
Macmd.Height = 13
Macmd.Font.Size = 9
Macmd.Value = True
cela fonction tres bien, mais le probleme est que si l'utilisateur active ou desactive le controle, je ne sais pas comment recupere l'information(Value True ou Value False)
j'espere etre assez claire.
Pour information le code me sert aussi a creer des zones de texte, des zones de liste modifiable et des labels.
si qq pouvait m'aider, merci d'avance.
Kevin.Ory
Messages postés840Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention 7 janvier 200911 18 déc. 2007 à 23:43
Pour vérifier leurs états, soit tu va les trouver dans la collection de controles du conteneur, ou bcp mieux, tu créé une List (je suis sur VB.NET moi, et je connais pas VBA, mais j'espère que ca pourra t'être utile) :
Private Sub cmdchk_Click()
MsgBox "C'est le contrôle " & cmdchk.name
End Sub
cela fonctionne bien mais le probleme maintenant, c'est que le Private Sub cmdchk_click, ne fonctionne que sur le dernier CheckBox inserer,
alors que je souhaite pouvoir le faire sur tous les CheckBox inserer.
Ami ben
Vous n’avez pas trouvé la réponse que vous recherchez ?
AMIBEN
Messages postés28Date d'inscriptionmercredi 2 juin 2004StatutMembreDernière intervention19 novembre 2008 30 déc. 2007 à 21:49
J'ai enfin trouver la facon de recupere l'information si un controle est active ou desactivé, voici la methode:
il faut creer un module de classe.
Public WithEvents groupecheckbox As MSForms.checkbox
'si action sur groupe de chk
Private Sub groupecheckbox_Click()
Set swApp = Application.SldWorks ' solidworks
Set part = swApp.ActiveDoc ' document actif
Dim vi
vi = 0
While vi <> frm1.Frame1.Controls.Count 'Debut de boucle de ts les controles
If frm1.Frame1.Controls.Item(vi) = "Faux" Then 'Si controle a pour valeur "Faux" (seule checkbox peuve avoir cette valeur)
frm1.Frame1.Controls.Item(vi - 2).Enabled = False 'alors desactive les 2 controles precedents
frm1.Frame1.Controls.Item(vi - 1).Enabled = False
End If 'fin de si "faux"
If frm1.Frame1.Controls.Item(vi) = "Vrai" Then ' si controle a valeur "Vrai"
frm1.Frame1.Controls.Item(vi - 2).Enabled = True ' active les 2 controles precedents
frm1.Frame1.Controls.Item(vi - 1).Enabled = True
End If 'fin de si "vrai"
vi = vi + 1 'incremente pour controler ts les controles
Wend ' fin de boucle
End Sub
ensuite sur la feuille userfrom:
Dim checkbox() As New Classe1
Set cmdchk = frm1.Frame1.Controls.Add("Forms.CheckBox.1", "chk" & nom_chk) 'crer un chk sur frame1
Dim nb_chks As Integer
Dim ctrl_chk As Control
nb_chks = 0
For Each ctrl_chks In frm1.Controls
If TypeName(ctrl_chks) = "CheckBox" Then
nb_chks = nb_chks + 1
ReDim Preserve checkbox(1 To nb_chks)
Set checkbox(nb_chks).groupecheckbox = ctrl_chks
End If
Next
et cela fonctionne pour solidworks.
si le code n'est pas tres claire, je vais bientot depose un code pour creer des proprietes personnalises pour solidworks,
suivant les indication d'un fichier ini et divers petite option.