[VB] Copie de controles dynamiquement

Copie de controles dynamiquement [VB] - VB/VBA/VBS - Programmation

Marsh Posté le 28-01-2003 à 10:34:14    

voila depuis hier je galère.
bon on vas prendre la base
un form avec un controle text1 et son index a 0
le but est de faire un load de se text1 en changeant son index bien sur.
Le principe est de conserver les noms des zones de saisies.
Mais voici le petit hic (il en fallait bien un quand meme)
On ne sait pas d'avance si nous aurons un text1, un combo1....
Actuellement je fait une recherche sur la collection controls mais je n'arrive pas a faire le load en créant une copie de l'objet ou en créant le control.
Premier cas :

Code :
  1. For Each Control In Form2.Controls
  2.     If Control.Container.Name = "frm_2" Then
  3.         Set txt_box = Control
  4.         Form2.Controls.Add "VB.TextBox", "Text1", Form2.frm_2
  5.         Load txt_box
  6.     End If
  7. Next Control


la il me dit que le control text1 existe déja (logique)
 
autre cas :

Code :
  1. For Each Control In Form2.Controls
  2.     If Control.Container.Name = "frm_2" Then
  3.         Set test = Control
  4.         Set tt = Control
  5.         Load test(1)
  6.     End If
  7. Next Control


la il sort erreur d'execution 344 "vous devez spécifier un index pour le groupe d'objet"
 
bien sur si je met "Load text1(1)" la il passe :/
 
Si quelqu'un a une idée ou juste une piste je prend :'(

Reply

Marsh Posté le 28-01-2003 à 10:34:14   

Reply

Marsh Posté le 28-01-2003 à 11:22:11    

si ma mémoire est bonne, ton Load Text1(1) crée le contrôle que tu désires.  Quant à faire une "copie" d'un objet, je n'en ai jamais fait et je me demande si c'est vraiment possible de copier un objet visuel.
 
Dans MSDN, il y a une technique décrivant ce que tu veux faire, et que tu trouveras dans la documentation relative à l'objet Winsock, qui, bien que pas vraiment visuel, peut être "empilé" sur ton array grâce à des load ou unload de l'élément voulu.  Va voir ces articles pour plus de détails.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 28-01-2003 à 11:26:49    

t'as mémoire est bonne.
mais mon problème c'est que dans la form que j'utilise actuellement j'ai bien un text1, mais dans l'application finale, je ne saurais pas combien j'aurais de text, de combo étant donné qu'ils seront créés dynamiquement d'apres d'autres paramètres  :(

Reply

Marsh Posté le 28-01-2003 à 11:59:29    

ok.  à mon avis tu ne pourras pas faire de copie.  Il te faudra initialiser les propriétés du TextBox nouvellement créé, je pense surtout aux coordonnées.  N'ayant jamais fait ce genre de choses sur un contrôle visuel, je ne sais pas à quel endroit il va apparaître.  Peut-être sera-t-il initialisé sur base de ton TextBox en index 0, ce qui faciliterait les choses, mais je n'en suis pas certain.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 28-01-2003 à 13:36:40    

oui oui ca c pas un probleme
le seul probleme c de le creer en passant par une variable (et la g pas le choix :/)
c juste l'index qui m'embete

Reply

Marsh Posté le 28-01-2003 à 13:43:16    

au fait, je n'ai pas compris pourquoi tu veux l'ajouter à la collection des contrôles, cette opération est implicite dans ce cas il me semble.  Et puis rien ne t'empêche de l'assigner à une variable, mais après création seulement.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 28-01-2003 à 13:53:18    

alors dans ma frame (ou form peut importe)
je vais avoir des controles textbox, combo .... mais je ne sais pas ce qu'il y aura etant donné que ceux ci seront créés au moment de l'exécution.
Tous ces controles sont sur une meme ligne (visuellement parlant)
L'utilisateur à l'aide d'un bouton sera en mesure de copier la ligne (toujours visuellement parlant)
D'ou l'interet de détecter les controles dans la frame (ca ca marche) et de faire un load sur le control détecté.
 
Prenons une variable test définie comme controle
Si je fait un load test, ca me met une erreur "objet déjà chargé" tout ce qu'il y a de plus logique.
Mais si je fait un load test(1) ou load test.index(1) ca ne marche pas et me met l'erreur 344 "vous devez spécifier un index pour le groupe d'objet"  
 
Voila le probleme :'(
Le but est de pouvoir faire des load de controles avec une fonction sachant que les noms ne seront pas connus à l'avance ://
 
Ahhhhh je viens d'avoir une idée :)
 
Edit : non ct pas une bonne idée


Message édité par fight le 28-01-2003 à 14:17:49
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed