Création / suppression dynamique d’objets textbox, listbox, combobox, picturebox (set controls)

Soyez le premier à donner votre avis sur cette source.

Snippet vu 6 444 fois - Téléchargée 19 fois

Contenu du snippet

A tout ceux qui ont besoin de créer un objet de plus pendant le code !
en 3 ligne de code vous pouvez créer tout type d'objets :
Dim ma As VB.TextBox
Objet_add ma, TextBox_, form1, 100, 400, 2000, 700, true
ma.text = "Text1"

je m'en suis surtout servie la dernière fois pour créer un Picturebox temporaire !

Dim picture_temp As VB.PictureBox
Objet_add picture_temp, PictureBox_, ma_form, 120, 600, , , False
....
....
Objet_remove picture_temp, ma_form

Source / Exemple :


Public Sub Objet_add(mon_objet As Object, ByVal mon_type_objet As Objet_add_, ma_form_desti As Form, ByVal X%, ByVal Y%, Optional ByVal lx%, Optional ByVal ly%, _
                     Optional visible As Boolean = True, Optional ByVal nom_de_mon_objet$ = "")
' créer dynamiquement des objets !
' exemple :
 ' Dim ma As VB.TextBox
 ' Objet_add ma, TextBox_, form1, 100, 400, 2000, 700, true
 ' ma.text = "Text1"
 
 
If nom_de_mon_objet$ = "" Then nom_de_mon_objet$ = Nom_to_aleatoire$

Select Case mon_type_objet
       Case TextBox_
        Set mon_objet = ma_form_desti.Controls.Add("VB.Textbox", nom_de_mon_objet$)
        mon_objet.Width = lx%: mon_objet.Height = ly%
       Case ListBox_
        Set mon_objet = ma_form_desti.Controls.Add("VB.Listbox", nom_de_mon_objet$)
        mon_objet.Width = lx%: mon_objet.Height = ly%
       Case Combobox_
        Set mon_objet = ma_form_desti.Controls.Add("VB.Combobox", nom_de_mon_objet$)
        mon_objet.Width = lx%
       Case CommandButton_
        Set mon_objet = ma_form_desti.Controls.Add("VB.CommandButton", nom_de_mon_objet$)
        mon_objet.Width = lx%: mon_objet.Height = ly%
       Case CheckBox_
        Set mon_objet = ma_form_desti.Controls.Add("VB.CheckBox", nom_de_mon_objet$)
        mon_objet.Width = lx%: mon_objet.Height = ly%
       Case DirListBox_
        Set mon_objet = ma_form_desti.Controls.Add("VB.DirListBox", nom_de_mon_objet$)
        mon_objet.Width = lx%: mon_objet.Height = ly%
       Case DriveListBox_
        Set mon_objet = ma_form_desti.Controls.Add("VB.DriveListBox", nom_de_mon_objet$)
        mon_objet.Width = lx%
       Case FileListBox_
        Set mon_objet = ma_form_desti.Controls.Add("VB.FileListBox", nom_de_mon_objet$)
        mon_objet.Width = lx%: mon_objet.Height = ly%
       Case Frame_
        Set mon_objet = ma_form_desti.Controls.Add("VB.Frame", nom_de_mon_objet$)
        mon_objet.Width = lx%: mon_objet.Height = ly%
       Case HScrollBar_
        Set mon_objet = ma_form_desti.Controls.Add("VB.HScrollBar", nom_de_mon_objet$)
        mon_objet.Width = lx%: mon_objet.Height = ly%
       Case Image_
        Set mon_objet = ma_form_desti.Controls.Add("VB.Image", nom_de_mon_objet$)
        mon_objet.Width = lx%: mon_objet.Height = ly%
       Case Label_
        Set mon_objet = ma_form_desti.Controls.Add("VB.Label", nom_de_mon_objet$)
        mon_objet.Width = lx%: mon_objet.Height = ly%
       Case Line_
        Set mon_objet = ma_form_desti.Controls.Add("VB.Line", nom_de_mon_objet$)
       Case OptionButton_
        Set mon_objet = ma_form_desti.Controls.Add("VB.OptionButton", nom_de_mon_objet$)
        mon_objet.Width = lx%: mon_objet.Height = ly%
       Case PictureBox_
        Set mon_objet = ma_form_desti.Controls.Add("VB.PictureBox", nom_de_mon_objet$)
        mon_objet.Width = lx%: mon_objet.Height = ly%
       Case Shape_
        Set mon_objet = ma_form_desti.Controls.Add("VB.Shape", nom_de_mon_objet$)
        mon_objet.Width = lx%: mon_objet.Height = ly%
       Case VScrollBar_
        Set mon_objet = ma_form_desti.Controls.Add("VB.VScrollBar ", nom_de_mon_objet$)
        mon_objet.Width = lx%: mon_objet.Height = ly%
        
End Select
        
 mon_objet.Left = X%:  mon_objet.Top = Y%
 If visible = True Then mon_objet.visible = True
    
End Sub

Public Sub Objet_remove(mon_objet As Object, ma_form_ou_ce_touve_lobjet As Form) ', Optional ByVal nom_de_mon_objet$ = "")
  ma_form_ou_ce_touve_lobjet.Controls.Remove mon_objet
End Sub

Public Function Nom_to_aleatoire$(Optional ByVal Longueur_du_nom% = 8)
 Randomize
 For i% = 0 To Longueur_du_nom%
  Nom_to_aleatoire$ = Nom_to_aleatoire$ + Chr$(65 + Rnd * 25)
 Next i%
End Function

Conclusion :


petit cadeau la fonction Nom_to_aleatoire$ permet de créer aléatoirement un nom avec l'alphabet !

A voir également

Ajouter un commentaire

Commentaires

mimiZanzan
Messages postés
309
Date d'inscription
lundi 27 février 2006
Statut
Membre
Dernière intervention
17 décembre 2017
-
Bonjour rebixav,

Ta source est très simple et claire (niveau initié?), mais pour une création de contrôles plus complète et leur gestion, je conseille la source CRÉATION DE CONTRÔLES DYNAMIQUE que j'ai déposée le 19/05/2007. Elle se limite aux boutons,textboxs et labels, mais elle peut bien sûr être étendue à n'importe quel contrôle.
Voir aussi les sources:
GESTION USERFORM AVEC GROUPE DE BOUTONS DYNAMIQUES SOUS VBA
GESTION GROUPE DE TEXTBOXS DYNAMIQUES (VBA)
FORM AVEC BOUTONS DYNAMIQUES SOUS VB6

Cdt
rebixav
Messages postés
130
Date d'inscription
dimanche 16 décembre 2007
Statut
Membre
Dernière intervention
28 janvier 2013
-
merci, c'est très gentil on ne sait jamais si je transforme VB6 en VB2012 :)
...
au faite conait tu un endroit sur le Web ou on peut dévorer des belle class complete entièrement fait de A à Z
je m'explique je commence à peine à apprendre le principe class (je me sert depuis 20 ans de .bas et .frm)
et je vois que si on veut faire une class parfaite sur la souris, cela serais plutôt bien fichue !
genre :
mouse.X=500 ou x%=mouse.x
mouse.icone=...
mouse.bout1=true,...
etc...
mais comme je vient de le dire complete, j'ai regarder un peu comme cela sur le web avec les mot cél mouse(ou souris) et class, mais on trouve raement quelque chose de A à Z, il y a soit pas la molette, soit même des fois pas les boutons seulement un class sur la position de la souris(je ne trouve cela ridicule) ?!
...
et comme il faut enormément de temps pour faire des procédure et des class, j'aimerais mieux trouvé un endroit ou je peut pomper tout cela !
Je veut pas jouer mon faignant mais en ce moment je travail à 80% sur des procédure à garder, que sur mes programme à faire !
merci.
mimiZanzan
Messages postés
309
Date d'inscription
lundi 27 février 2006
Statut
Membre
Dernière intervention
17 décembre 2017
-
Bonjour,

Je ne comprends pas du tout ce que tu veux faire d'une classe pour la souris...
Par contre, je peux te renseigner sur la gestion des coordonnées du pointeur de la souris: on utilise la fonction API GetCursorPos, comme cela est fait dans mon code du 20/03/2011:

DÉPLACEMENT D'UN OBJET SHAPE DANS FEUILLE EXCEL

C'est en VBA Excel, mais facilement transposable en VB6.
En ce qui concerne l'apprentissage des classes, il existe sur le web plein de tutoriels et d'exemples.

Cdt
rebixav
Messages postés
130
Date d'inscription
dimanche 16 décembre 2007
Statut
Membre
Dernière intervention
28 janvier 2013
-
comme cela lorsque j'ai besoin de toucher la souris pour quoi que ce soit c'est !
Tient je viens d'avoir un nouveau problème à rapport justement à la souris, cela fait deux heures que je cherche et cela me pompe l'air !

http://www.vbfrance.com/forum/sujet-AUTRE-CHOSE-GETASYNCKEYSTATE-GETKEYSTATE-CONAITRE-ACTION-SUR-BOUTON_1614292.aspx
salut,
débutant en VB6, cete partie de la declaration me retourne une erreure :
compile error
User-defined type not defined

public sub Objet_add(....,ByVal mon_type_objet As Objet_add_,....

merci de me dire comment definir cette variable pour faire fonctionner ce code.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.