Insérer des controles a l'execution

cs_Stephane Messages postés 550 Date d'inscription vendredi 5 janvier 2001 Statut Membre Dernière intervention 23 septembre 2006 - 5 janv. 2002 à 21:55
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 - 8 juil. 2006 à 15:38
Bonjour,

j'aurais voulu savoir si c'est possible et comment mettre des controles (de base) dans une form en execution.
attention il ne faut pas que c'est controle soit indexé parce que en fait c'est pour reconstituer la feuille a partir d'un exe alors si je mettais déjà des contrôle indexé, il faudrait que je l'ai mettent dans tous les controle conteneur (je sais pas si vous avez compris) enfin ce n'est qu'une explication du but.

merci a tous pour vos réponses

4 réponses

PatriceVB Messages postés 562 Date d'inscription dimanche 16 décembre 2001 Statut Modérateur Dernière intervention 26 décembre 2007
5 janv. 2002 à 23:37
Tu peux utiliser l'api CreateWindow en spécifiant le type de fenêtre que tu veux créer TextBox, CommandButton. Mais ceci implique d'utiliser les techniques de sous-classements pour récupérer les évènements correspondants à ces controles.
@+
0
cs_Stephane Messages postés 550 Date d'inscription vendredi 5 janvier 2001 Statut Membre Dernière intervention 23 septembre 2006
6 janv. 2002 à 18:50
merci, entre temp y a qqn (je me rappelle deja plus de son nom) qui a mis une source et ca marche super

a+
0
borntoclimb Messages postés 98 Date d'inscription vendredi 4 janvier 2002 Statut Membre Dernière intervention 7 mars 2006 4
6 janv. 2002 à 18:56
Le pb n'est pas trés clair, j'avais laissé une petite doc la dessus si ça peut t'être utile...

------------
Ajouter un control dynamiquement (at runtime)
le control doit être déclaré si il n'est pas déja utilisé dans le projet.
Si il est ajouté aux composants mais non utilisé, il ne faut pas choisir l'option "Remove info about unused ActiveX" dans les propriétés du projet.

Pour Commencer il faut référencer le control:
Dim WithEvents ctlDynamic As VBControlExtender
Dim WithEvents ctlDynaWeb As VBControlExtender
Dim WithEvents ctlCommand As VB.CommandButton

Pour declarer un Control:
Licenses.Add "MSComctlLib.TreeCtrl" // pour un treeview

Pour l'ajouter ensuite:
Set NomControl = Controls.Add("ProgId","Name", container)
Set ctlDynamic = Controls.Add("MSComctlLib.TreeCtrl","myctl", Form1) //le treeview
Set ctlDynaWeb = Controls.Add("Shell.explorer.2", "myctlweb", Form1) //WebBrowser
Set ctlCommand = Controls.Add("VB.CommandButton", "ctlCommand1", Form1) //un Button

Le deuxiéme exemple montre qu'il n'est pas toujours facil de deviner le ProgId d'un control. Pour les OCX c'est souvent le nom du fichier OCX + "Lib." + le nom du Control (expl "MSComctl.ocx"). Une autre solution consiste à ajouter le control dans une form "at design time", d'editer le form.frm dans un editeur de text et de trouver la ligne:

Begin SHDocVwCtl.WebBrowser WebBrowser1 //pour SHDocVw.dll

Si on utilise "SHDocVwCtl.WebBrowser" comme progid pour le WebBrowser, Visual Basic donne le bon ProgId en message d'erreur... (La demarche est un peu tordue)

Certain control ne demande pas de déclaration (Commandbutton, TextBox...)

Pour acceder aux propriétés du control:
ctlDynamic.Visible = True //Le control créé est invisible par defaut

Supprimer un Control Ajouté dynamiquement
Form1.Controls.Remove "myctl"
0
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 1
8 juil. 2006 à 15:38
pour résumer le tout j'ai fait un tutoriel, donc pour ceux qui passe sur cette page et qui sont interessés, regardez dans mes sources.

Ciaò
[mailto:madmatt_12@msn.com MadMatt]
www.madmatt.fr.st
0
Rejoignez-nous