Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1255 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Comment creer dynamiquement un objet

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Comment creer dynamiquement un objet

n°190559
ioio
./ioio --force --nodeps
Posté le 06-08-2002 à 11:00:30  profilanswer
 

je souhaiterai pouvoir créer un Label (par exemple) directement a partir du code, sans passer par l'étape de dessin sur le formulaire. J'emploi ce code, mais j'ai obtien une erreur de variable non définie
 

Code :
  1. Private Sub Form_Initialize()
  2.   Dim Lb As Label
  3.   Lb.Left = 0
  4.   Lb.Width = 1000
  5.   Lb.Height = 500
  6.   Lb.Caption = "ceci est un test"
  7. End Sub


 
que ce soit dans form_initialize(), ou form_load(), j'ai toujour le meme probleme...  :heink:


Message édité par ioio le 06-08-2002 à 11:02:21
mood
Publicité
Posté le 06-08-2002 à 11:00:30  profilanswer
 

n°190754
macray
Posté le 06-08-2002 à 15:25:47  profilanswer
 

essaye sur www.vbfrance.com  !

n°190773
Kyle_Katar​n
Posté le 06-08-2002 à 15:43:12  profilanswer
 

Utilise plutot load et unload.

n°190785
macray
Posté le 06-08-2002 à 15:53:51  profilanswer
 

Kyle_Katarn a écrit a écrit :

Utilise plutot load et unload.




 
ce n'est pas un problème d'emplacement et d'évement, c'est un problème dans le code,  
 
ERREUR D'EXECUTION 91 VARIABLE OBJET OU VRAIABLE BLOC WITH NON DEFINI
 
 
je viens de le tester, maintenant il faut trouver l'erreur ! ;)

n°190888
ioio
./ioio --force --nodeps
Posté le 06-08-2002 à 17:13:42  profilanswer
 

macray a écrit a écrit :

 
 
ERREUR D'EXECUTION 91 VARIABLE OBJET OU VRAIABLE BLOC WITH NON DEFINI
 
je viens de le tester, maintenant il faut trouver l'erreur ! ;)




 
le probleme est surtout qu'il manque quelque chose, mais quoi ...

n°190891
Styx0
Aware, abware !
Posté le 06-08-2002 à 17:14:52  profilanswer
 

euh , jvais peut etre me gourrer, mais l'erreur n'est elle pas évidente ?!?
 
y a pas d'allocation d'objet dans le code présenté dans le topic
 
il manque pas un "Set" non ?!?

n°190898
macray
Posté le 06-08-2002 à 17:20:00  profilanswer
 

non, c'est inutile, parfois, il ne le faut pas ! ;)

n°190932
Styx0
Aware, abware !
Posté le 06-08-2002 à 17:33:19  profilanswer
 

bon toujours sans chercher en fesant un exemple mais en creusant dans ma ptite caboche : je dirais qu'il faut l'ajouter à la collection de controle de la form en cours ?
 
(pasque bon fo bien dire à un moment ou à un autre que le label que l'on créé est enfant de la form en cours)
 
de plus l'ajout dans la collection renvoi un objet de type controle mais instancié lui (d'où le "pas besoin du set" )
 
euh yabon ?

n°191293
ki2koo
Posté le 07-08-2002 à 09:43:52  profilanswer
 

ioio a écrit a écrit :

je souhaiterai pouvoir créer un Label (par exemple) directement a partir du code, sans passer par l'étape de dessin sur le formulaire. J'emploi ce code, mais j'ai obtien une erreur de variable non définie
 

Code :
  1. Private Sub Form_Initialize()
  2.   Dim Lb As Label
  3.   Lb.Left = 0
  4.   Lb.Width = 1000
  5.   Lb.Height = 500
  6.   Lb.Caption = "ceci est un test"
  7. End Sub


 
que ce soit dans form_initialize(), ou form_load(), j'ai toujour le meme probleme...  :heink:




 
 
tu dois créer une groupe de label genre tableau de label ensuite tu fais ca :
 

Code :
  1. for i = 1 to (autant que tu veux)
  2. load lb(i)
  3. lb(i).visible=true
  4. lb(i).top =1200 ...
  5. next i


 
sachant que lb(0) doit se trouver sur ta feuille...
 
si tu ne ve le veux pas
tu le mets en invisible...
 
voila


---------------
Je Suis En Phase Creative...
n°534320
Mr yvele
yvele n'est plus.
Posté le 08-10-2003 à 13:45:38  profilanswer
 

Styx0 a écrit :

bon toujours sans chercher en fesant un exemple mais en creusant dans ma ptite caboche : je dirais qu'il faut l'ajouter à la collection de controle de la form en cours ?
 
(pasque bon fo bien dire à un moment ou à un autre que le label que l'on créé est enfant de la form en cours)
 
de plus l'ajout dans la collection renvoi un objet de type controle mais instancié lui (d'où le "pas besoin du set" )
 
euh yabon ?


 
[:meganne]
 
j'ai axactement le meme probleme..  
tu as trouvé?

mood
Publicité
Posté le 08-10-2003 à 13:45:38  profilanswer
 

n°534355
drasche
Posté le 08-10-2003 à 14:13:57  profilanswer
 

bon
 
1) au moment du Form_Initialize et du Form_Terminate, l'interface visuelle n'existe pas. Donc pas la peine d'essayer de créer un contrôle à ce moment là. Enfin ça marchera peut-être mais parce que le Form_Load aura été forcé. Faites donc ces opérations dans les Load et Unload, ils sont prévus pour ça.
2) Set moncontrole = Controls.Add("nom_du_controle", "type_de_controle" )
3) moncontrole.Move(mes coordonnées)
4) moncontrole.Visible = True
 
Je crois que c'est tout.
 
Au moment du Unload:
1) Set moncontrole = Nothing
2) Controls.Remove("nom_du_controle" )
 
Edit: en fait il n'est pas utile de garder la référence à moncontrole pendant toute la vie de la form, elle est surtout nécessaire pour l'initialisation. Après vous en faites ce que vous voulez. Par contre, le Controls.Remove est indispensable au moment de l'Unload histoire de garder une gestion propre des ressources.


Message édité par drasche le 08-10-2003 à 14:15:30
n°534370
Mr yvele
yvele n'est plus.
Posté le 08-10-2003 à 14:25:25  profilanswer
 

drasche a écrit :

bon
 
1) au moment du Form_Initialize et du Form_Terminate, l'interface visuelle n'existe pas. Donc pas la peine d'essayer de créer un contrôle à ce moment là. Enfin ça marchera peut-être mais parce que le Form_Load aura été forcé. Faites donc ces opérations dans les Load et Unload, ils sont prévus pour ça.
2) Set moncontrole = Controls.Add("nom_du_controle", "type_de_controle" )
3) moncontrole.Move(mes coordonnées)
4) moncontrole.Visible = True


 
 :jap:  
 
 
faut pas déclarer moncontrole?
quelle est la difference entre moncontrole et "nom_du_controle"

n°534394
drasche
Posté le 08-10-2003 à 14:48:43  profilanswer
 

moncontrole doit bien entendu être déclaré As Control (j'aurais dû le préciser, tu as raison).
"nom_du_controle" est un identifiant unique pour le contrôle dans la collection des contrôles, et que tu dois à nouveau utiliser pour le détruire. Quand au type_de_controle, il vaut mieux mettre le projet en préfixe, par exemple: VB.TextBox. Si le contrôle fait partie de ton projet (donc un usercontrol créé par toi, alors ce sera le nom de ton projet.


Message édité par drasche le 08-10-2003 à 14:49:18
n°534411
Mr yvele
yvele n'est plus.
Posté le 08-10-2003 à 15:07:13  profilanswer
 

je capte que dalle.. ça marche pas.. y a surrement un probleme dans l'ordre des arguments.. :)  
 
par contre j'ai essayé ça :
 

Code :
  1. Private Sub Form_Load()
  2. Set ControleDynamique = Me.Controls.Add("VB.TextBox", "unNomAuPif" )
  3. ControleDynamique.Move 1000, 1000, 2000, 70
  4. ControleDynamique.Visible = True
  5. End Sub


 

Code :
  1. Option Explicit
  2. Dim WithEvents ControleDynamique As VB.TextBox


 
et ça rulz.. :)  
 
 
edit: par contre ce putain de TabString il veut pas me le prendre.. faut surrement l'integrer au projet.. comment faire?


Message édité par Mr yvele le 08-10-2003 à 15:08:37
n°534413
drasche
Posté le 08-10-2003 à 15:08:01  profilanswer
 

t'as inversé le nom du contrôle et le type :o

n°534416
Mr yvele
yvele n'est plus.
Posté le 08-10-2003 à 15:09:05  profilanswer
 

drasche a écrit :

t'as inversé le nom du contrôle et le type :o


 
oui..  :)  
j'ai édité, mais apres que tu ais posté!  :p
 
edit: merci au fait :jap:


Message édité par Mr yvele le 08-10-2003 à 15:13:15
n°534431
Mr yvele
yvele n'est plus.
Posté le 08-10-2003 à 15:17:16  profilanswer
 

meme si j'ajoute un TabStrip à la main sur la Form ça marche pas.. :o
bordail
 
par contre ça :
 

Code :
  1. Option Explicit
  2. Dim WithEvents ControleDynamique As TabStrip


 
ça passe :o


Message édité par Mr yvele le 08-10-2003 à 15:24:24
n°534469
Mr yvele
yvele n'est plus.
Posté le 08-10-2003 à 15:58:43  profilanswer
 

hop j'ai touvé!  :o  
 

Set ControleDynamique = Me.Controls.Add("Comctl.tabstrip.1", "tabStripName" )


 
faut que je passe par Comctl.tabstrip.1
 
 
donc bon.. ça marche.. mais pas trop.. maintenant il me demande une chaine de licence pour mon composant.. :/
 
heu......... drasche!!  :whistle:
 
edit : Licenses.Add "Comctl.tabstrip.1", "heu.." (ça marche pas..)


Message édité par Mr yvele le 08-10-2003 à 16:02:25
n°534473
drasche
Posté le 08-10-2003 à 16:07:32  profilanswer
 

Pour la license c'est :dtc: parce que c'est un truc qui s'installe avec VB normalement. T'as quelle version? Si c'est l'étudiant , le contrôle n'est sûrement pas fourni avec :/
 
En gros la license t'empêche d'utiliser le contrôle au design time mais je vois pas pourquoi tu pourrais pas au runtime, sans doute parce que tu es en mode debug. Essaie de compiler ton truc puis de lancer l'exe pour voir ce qu'il te dit.


Message édité par drasche le 08-10-2003 à 16:08:27
n°534486
Mr yvele
yvele n'est plus.
Posté le 08-10-2003 à 16:18:25  profilanswer
 

j'ai generé le .exe mais il veut pas!!  :cry:  
 
pourtant dans la msdn y a ecrit que si on a le composant dans la boitie à outils, il ne devrait pas demander de licence key..
 
je l'utilise en le posant sur la form.. alors pourquoi je pourrai pas le créer dynamiquement..  [:mcwimpy4]

n°534501
drasche
Posté le 08-10-2003 à 16:25:24  profilanswer
 

alors là je peux t'assurer que la MSDN se trompe :D
 
tu peux très bien l'avoir dans ta toolbox et avoir le message d'insultes causant de la license, j'en ai fait l'expérience quand j'ai débuté en VB :ange:
 
En fait si tu peux le poser sur la form, je vois pas l'intérêt (pour un TabStrip) de l'allouer dynamiquement :??:

n°534511
Mr yvele
yvele n'est plus.
Posté le 08-10-2003 à 16:30:14  profilanswer
 

drasche a écrit :

alors là je peux t'assurer que la MSDN se trompe :D
 
tu peux très bien l'avoir dans ta toolbox et avoir le message d'insultes causant de la license, j'en ai fait l'expérience quand j'ai débuté en VB :ange:


 
ah? [:mcwimpy4]  
 

drasche a écrit :


En fait si tu peux le poser sur la form, je vois pas l'intérêt (pour un TabStrip) de l'allouer dynamiquement :??:


 
pour le sport..  :sol:  
et surtout pour faire plus propre.. bref.. je vais la poser sur la form.. c'est clair que ça va pas changer grand chose..
 
enfin bref.. ça m'a bien aidé à comprendre VB mirci :)

n°534528
drasche
Posté le 08-10-2003 à 16:37:28  profilanswer
 

euh pour faire plus propre, rien de mieux que la poser sur la form hein ;)  Les contrôles dynamiques, c'est plutôt quand tu sais pas à l'avance combien tu en auras (et une interface avec un tableau de TapStrips, ça doit être particulièrement dégueu :D)

n°534531
Mr yvele
yvele n'est plus.
Posté le 08-10-2003 à 16:39:55  profilanswer
 

hum.. rien de mieux qu'un tableau de tabstrip.. si ce n'est un tabstrip de tabstrips!  :D  
 
bref.. moi je vais me mettre au .NET, harko m'a motivé!  :)

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Comment creer dynamiquement un objet

 

Sujets relatifs
créer gestionnaire petites annonces[C && Windows] Creer un raccourci
comment creer un dossier sous delphi ???Cherche doc pour creer un comosant serveur avec VB pour appel ASP
Comment créer un lien ou une redirection vers une page asp...comment creer une base mysql sur multimania svp
Equivalent PHP de l'objet ASP Application + fonction flock()VB6 Comment creer un commandbutton par le code ?
creer une dialog box avec les templates[MS-DOS] Créer un dossier avec la date du jour
Plus de sujets relatifs à : Comment creer dynamiquement un objet


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR