Checkbox à la volée

Résolu
Conradd Messages postés 37 Date d'inscription vendredi 3 décembre 2004 Statut Membre Dernière intervention 17 septembre 2007 - 9 juin 2005 à 15:37
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 - 10 juin 2005 à 20:31
Est-ce qu'il est possible de créer et d'ajouter des CheckBox sur un form par le code ?



Je m'explique, je tape dans une BDD et je veux avoir une Checkbox par champ disponible dans une table de la BDD.



Mais je n'arrive pas à créer un checkbox par champ et à l'appliquer sur mon form.



Help me

8 réponses

cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
9 juin 2005 à 20:12
Salut,

Voilà un exemple que j'ai ressorti de mes cartons vb6. Ne sachant pas si tu utilises DAO ou ADO, l'exemple est basé sur un accès DAO à la base de données mais c'est adaptable. En espérant que ça pourra répondre à ta question.

Une form où tu colles le code suivant :

Option Explicit
Dim chk() As CheckBox


Private Sub Form_Load()
Dim db As Database
Dim fld As Field
Dim i As Integer


Set db = OpenDatabase("c:\temp\bd1.mdb")

For Each fld In db.TableDefs("Table1").Fields
ReDim Preserve chk(i)
Set chk(i) = Me.Controls.Add("vb.checkbox", "chk" & i, Me)
chk(i).Caption = fld.Name
If i > 0 Then chk(i).Top = chk(i - 1).Top + 350
chk(i).Visible = True
i = i + 1
Next


End Sub


Pour tester l'état de tes checkbox, ça sera

if chk(TonIndex).checked = true then ....

Bien sur, tu remplaces
"c:\temp\bd1.mdb" par le chemin de ta base et "Table1" par le nom de ta table mais je pense que tu l'auras compris.

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
3
cs_drahcir Messages postés 745 Date d'inscription mardi 30 novembre 2004 Statut Membre Dernière intervention 15 septembre 2009 4
9 juin 2005 à 15:43
Salut,


Me.Controls.Add(
New System.Windows.Forms.CheckBox)


@+
0
Conradd Messages postés 37 Date d'inscription vendredi 3 décembre 2004 Statut Membre Dernière intervention 17 septembre 2007
9 juin 2005 à 16:27
Je programme sous VB6.0, est-ce qu'il faut que j'ajoute un composant ou une référence pour utiliser ta commande Drahcir ?
0
cs_drahcir Messages postés 745 Date d'inscription mardi 30 novembre 2004 Statut Membre Dernière intervention 15 septembre 2009 4
9 juin 2005 à 16:59
Désolé, j'ai bien un vb 6.0 d'installé mais je ne l'utilise quasiment pas.....

J'ai cherché un peu mais en vain......

Sorry
@+
0

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

Posez votre question
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
9 juin 2005 à 20:17
Petite modif,

pour les checkbox, plutôt que
if chk(TonIndex).checked = true then ....
c'est
if chk(TonIndex).value = checked then ....

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0
Conradd Messages postés 37 Date d'inscription vendredi 3 décembre 2004 Statut Membre Dernière intervention 17 septembre 2007
10 juin 2005 à 09:34
Ca marche très très bien, merci Drahcir pour ton aide et merci à toi, CanisLupus pour ta solution.



J'ai juste adapté le code parce que je travaille en ADO mais ça résout mon problème.



Grand merci.
0
Conradd Messages postés 37 Date d'inscription vendredi 3 décembre 2004 Statut Membre Dernière intervention 17 septembre 2007
10 juin 2005 à 10:41
Dernière question pour peaufiner :



Je créée un Frame pour chaque table de ma BDD, je le place sur mon
form, je lis ensuite tous les champs de cette table et je les pose sur
mon form à l'intérieur du frame.



Pourtant, quand j'affiche le form, tous les frames de table sont bien là, mais vides.



Je n'ai pas vu de notions de container pour les frames, encore moins de méthode Add, quelqu'un a une idée ?
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
10 juin 2005 à 20:31
Pour faire la même chose avec une frame, toujours issu de mes vieux cartons, en rouge les modifs :

Option Explicit
Dim chk() As CheckBox


Private Sub Form_Load()
Dim db As Database
Dim fld As Field
Dim i As Integer


Set db = OpenDatabase("c:\temp\bd1.mdb")

For Each fld In db.TableDefs("Table1").Fields
ReDim Preserve chk(i)
Set chk(i) = Me.Controls.Add("vb.checkbox", "chk" & i, Me.Frame1)
chk(i).Caption = fld.Name
If i = 0 Then
chk(i).Top = 350
chk(i).Left = 350
Else
chk(i).Top = chk(i - 1).Top + 350
chk(i).Left = chk(i - 1).Left
End If
chk(i).Visible = True
i = i + 1
Next


End Sub


Pour tester l'état des checkbox, ça ne change pas. D'autre part, j'ai mis 350 comme valeur mais tu peux augmenter ou diminuer, à toi de voir ce qui te va le mieux.

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0
Rejoignez-nous