AJOUTER DES TABLEAUX DE CONTRÔLE DYNAMIQUE SANS UTILISER "LOAD"
Tilois
Messages postés721Date d'inscriptiondimanche 10 juin 2001StatutMembreDernière intervention27 mars 2011
-
26 août 2003 à 15:06
Ce.plusplus
Messages postés47Date d'inscriptionjeudi 25 septembre 2003StatutMembreDernière intervention14 septembre 2012
-
30 mai 2008 à 09:23
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
Ce.plusplus
Messages postés47Date d'inscriptionjeudi 25 septembre 2003StatutMembreDernière intervention14 septembre 2012 30 mai 2008 à 09:23
On ne peut pas changer certaines propriétés..
par exemple :
With ObjPC
.Style = 1
.Visible = True
.top = top
.left = left
.Caption = name
.height = height
.width = width
End With
".Style = 1" ne peut être changé à l'execution, et cela provoque une erreur... donc si on veut un checkbox en forme de bouton, et bien on peut pas l'avoir :(
cs_nihaoma
Messages postés140Date d'inscriptionjeudi 2 mai 2002StatutMembreDernière intervention 2 février 2010 9 août 2005 à 15:40
bonjour à tous,
J'ai une petite question concernant la méthode Load, est-ce possible de charger par cette méthode tout d'un groupe d'objets simplement en chargeant une frame dans laquelle seront préalablement placés tous les objets à charger ?
merci pour vos réponse,
Noxid
Messages postés78Date d'inscriptionlundi 13 mai 2002StatutMembreDernière intervention 4 mai 2008 30 nov. 2003 à 16:00
Y'a un moyen de créer des Shape de cette facon SVP?
cs_Troopers
Messages postés81Date d'inscriptionlundi 18 février 2002StatutMembreDernière intervention29 août 2003 29 août 2003 à 16:30
Bazinou
Messages postés9Date d'inscriptionjeudi 3 juillet 2003StatutMembreDernière intervention26 mai 2004 29 août 2003 à 11:30
Idem, je ne suis pas très optimiste sur la question.
Etant donné qu'il faut que le contrôle soit déclaré durant la création pour pouvoir lui implémenter du code évènement, et qu'apparamment on ne peut créer de tableau de contrôles (sauf en posant des groupes de contrôles), je ne vois pas bien quelle pourrait être la porte de sortie.
Baz
borntoclimb
Messages postés98Date d'inscriptionvendredi 4 janvier 2002StatutMembreDernière intervention 7 mars 20064 29 août 2003 à 11:08
T'as raison, mais je ne pense pas que ce soit possible :(
Borntoclimb
cs_Bigonoff
Messages postés7Date d'inscriptionjeudi 12 juin 2003StatutMembreDernière intervention 8 octobre 2003 28 août 2003 à 12:17
Salut
------
Effectivement, le tableau n'est pas dynamique, ce n'était pas le but de l'explication. Le but était d'arriver à accéder aux contrôles par un index sans utiliser "load". Le reste me semblait secondaire, vu que je pense que celui qui veut créer des contrôles dynamiques sait gérer un tableau (ou une collection). J'ai donc placé le strict minimum, ce n'est pas un programme réel.
Les remarques sont toutefois fondées, mais je pense que le plus gros problème à résoudre est de savoir comment accérer aux événements des contrôles créés, comme le dit Bazinou. Si quelqu'un a une idée...
En effet, dans mon application, je n'utilisais que les propriétés, pas les contrôles, je n'ai donc pas remarqué ce problème.
A+
Bigonoff
cs_Troopers
Messages postés81Date d'inscriptionlundi 18 février 2002StatutMembreDernière intervention29 août 2003 27 août 2003 à 14:41
Bonjour!
Pour le tableau de références Leds(), il est possible de le remplacer par une collection: myCollection.Add LedDyn ce qui facilite la récupération d'objet: myCollection(sKey).Top ou myCollection(lIndex).Top
on peut également utiliser l'instruction for each ce qui n'est pas possible avec le tableau
borntoclimb
Messages postés98Date d'inscriptionvendredi 4 janvier 2002StatutMembreDernière intervention 7 mars 20064 27 août 2003 à 14:20
En fait je ne suis pas certain que cela soit vraiment dynamique. Puisque tu declares la taille de ton tableau directement, je pense que VB leurs alloue directement une place en memoire (á verifier). Une alternative serait de faire:
dim CtrlLabelDyn() as VB.Label
Ensuite tu utilises:
Redim Preserve CtrlLabelDyn(i)
i étant le numero du control. Ensuite tu fais un Set et tu changes les proprietes comme indique dans ton example.
Cela ne permet toujours pas d'avoir les evenement mais te permet d'ajouter un nombre X de control sans avoir á decider ce nombre avant de compiler le prog...
Borntoclimb
Bazinou
Messages postés9Date d'inscriptionjeudi 3 juillet 2003StatutMembreDernière intervention26 mai 2004 27 août 2003 à 10:56
Bjour
Un inconvénient tout de même à cette méthode : impossible de gérer des évènements pour les contrôles ajoutés, sauf pour le dernier qui reste attribué à LedDyn. C'est l'avantage du vrai groupe de contrôles, qui permet de définir un contrôle type avec ses évenements, puis d'ajouter dynamiquement d'autres contrôles sur le même modèle.
C'est dommage car une solution au problème m'intéressait aussi, dans le cas de plusieurs groupes d'OPTION indépendants dynamiques, où la méthode du Load ne suffit plus.
@+
cs_Bigonoff
Messages postés7Date d'inscriptionjeudi 12 juin 2003StatutMembreDernière intervention 8 octobre 2003 26 août 2003 à 17:39
Salut
------
Le gain, c'est que c'est pur dynamique, nul besoin de placer un objet à la création, ce qui n'est pas toujours possible.
Pour supprimer, ça fonctionne avec unload.
A+
Bigonoff
Afyn
Messages postés608Date d'inscriptionsamedi 3 août 2002StatutMembreDernière intervention22 décembre 2016 26 août 2003 à 17:27
Y at il un gain par rapport à l'instruction Load ?
Et ensuite si je veux supprimer un object ?
Bon, en tout cas c'est bien d'avoir exposé cette méthode.
A+
Afyn
Navedac
Tilois
Messages postés721Date d'inscriptiondimanche 10 juin 2001StatutMembreDernière intervention27 mars 20117 26 août 2003 à 15:06
Ca fait super longtemps que je cherchais un truc pareil pour avoir des noms uniques. C'est vraiment le pied. Merci bcp
30 mai 2008 à 09:23
par exemple :
With ObjPC
.Style = 1
.Visible = True
.top = top
.left = left
.Caption = name
.height = height
.width = width
End With
".Style = 1" ne peut être changé à l'execution, et cela provoque une erreur... donc si on veut un checkbox en forme de bouton, et bien on peut pas l'avoir :(
9 août 2005 à 15:40
J'ai une petite question concernant la méthode Load, est-ce possible de charger par cette méthode tout d'un groupe d'objets simplement en chargeant une frame dans laquelle seront préalablement placés tous les objets à charger ?
merci pour vos réponse,
30 nov. 2003 à 16:00
29 août 2003 à 16:30
cf: http://www.vbfrance.com/article.aspx?Val=10306
29 août 2003 à 11:30
Etant donné qu'il faut que le contrôle soit déclaré durant la création pour pouvoir lui implémenter du code évènement, et qu'apparamment on ne peut créer de tableau de contrôles (sauf en posant des groupes de contrôles), je ne vois pas bien quelle pourrait être la porte de sortie.
Baz
29 août 2003 à 11:08
Borntoclimb
28 août 2003 à 12:17
------
Effectivement, le tableau n'est pas dynamique, ce n'était pas le but de l'explication. Le but était d'arriver à accéder aux contrôles par un index sans utiliser "load". Le reste me semblait secondaire, vu que je pense que celui qui veut créer des contrôles dynamiques sait gérer un tableau (ou une collection). J'ai donc placé le strict minimum, ce n'est pas un programme réel.
Les remarques sont toutefois fondées, mais je pense que le plus gros problème à résoudre est de savoir comment accérer aux événements des contrôles créés, comme le dit Bazinou. Si quelqu'un a une idée...
En effet, dans mon application, je n'utilisais que les propriétés, pas les contrôles, je n'ai donc pas remarqué ce problème.
A+
Bigonoff
27 août 2003 à 14:41
Pour le tableau de références Leds(), il est possible de le remplacer par une collection: myCollection.Add LedDyn ce qui facilite la récupération d'objet: myCollection(sKey).Top ou myCollection(lIndex).Top
on peut également utiliser l'instruction for each ce qui n'est pas possible avec le tableau
27 août 2003 à 14:20
dim CtrlLabelDyn() as VB.Label
Ensuite tu utilises:
Redim Preserve CtrlLabelDyn(i)
i étant le numero du control. Ensuite tu fais un Set et tu changes les proprietes comme indique dans ton example.
Cela ne permet toujours pas d'avoir les evenement mais te permet d'ajouter un nombre X de control sans avoir á decider ce nombre avant de compiler le prog...
Borntoclimb
27 août 2003 à 10:56
Un inconvénient tout de même à cette méthode : impossible de gérer des évènements pour les contrôles ajoutés, sauf pour le dernier qui reste attribué à LedDyn. C'est l'avantage du vrai groupe de contrôles, qui permet de définir un contrôle type avec ses évenements, puis d'ajouter dynamiquement d'autres contrôles sur le même modèle.
C'est dommage car une solution au problème m'intéressait aussi, dans le cas de plusieurs groupes d'OPTION indépendants dynamiques, où la méthode du Load ne suffit plus.
@+
26 août 2003 à 17:39
------
Le gain, c'est que c'est pur dynamique, nul besoin de placer un objet à la création, ce qui n'est pas toujours possible.
Pour supprimer, ça fonctionne avec unload.
A+
Bigonoff
26 août 2003 à 17:27
Et ensuite si je veux supprimer un object ?
Bon, en tout cas c'est bien d'avoir exposé cette méthode.
A+
Afyn
Navedac
26 août 2003 à 15:06