CreateObject

Calade - Modifié par jordane45 le 27/11/2014 à 14:39
 Calade - 28 nov. 2014 à 07:59
Bonjour,

Je me permets de rebondir sur la question d'un membre sur la création d'un objet à l'intérieur d'un usercontrol conteneur ayant une Picture Box. C'est donc elle qui est le conteneur et non le usercontrol.

La solution qu'on lui avait donné était:
set MyObject.Container = MyUserControl


Mon problème est que je possède plusieurs PictureBox et que mon objet appartient à l'un d'entre eux connu par son index.
La solution ci-dessus ne pouvant pas marché, j'ai déporter le SET à l'intérieur de mon Control et exposé celui-ci à l'aide d'une méthode:

Dans mon Prog:
' MyObject est un commadbutton créé classiquement par glisser-déposer dans l'IDE de mon application (pas de mon UserControl).
UserControl.Attach(MyObject)

et dans mon UserControl
Public Sub Attach(byref oBj as Object)
   set oBj.Container = MyPictureBox(1)
End Sub

et j'obtiens une magnifique Erreur 425 Utilisation d'Objet Incorrecte

J'en ai déduit (peut-être à tort) que l'objet devait être créé dans mon UserControl.

J'ai donc Modifié ma méthode:
Public Sub Attach(Byref Obj as object)
   set obj = CreateObject("CommandButton")
end sub

Là j'obtiens une erreur 429 Le Composant ActiveX ne peut créer l'objet
et que j'essaie avec VB.CommandButton, VBRUN.Commandbutton, rien à faire. un F2 me dit que le commandbutton appartient à VB, mais ça ne marche pas.

J'ai donc essayé de créer un UserControl nommé CmdButton
et modifié ma sub
Public Sub Attach(Byref oBj as Object)
   set obj = CreateObject("MyProject.CmdButton")
   obj.visible = True
end sub

et il me répond que l'objet ne gère pas cette propriété (je n'ai ajouté aucune propriété/méthode) dans cmdButton, je voulais simplement voir si je pouvais le créer.
Là je peux le créer puisque l'erreur se produit le Visible = True.
Est-ce que cela vient de là ?

Voilà, j'espère avoir été claire car c'est assez compliqué (du moins pour moi).

EDIT: Ajout des balises de code !

3 réponses

Whismeril Messages postés 19027 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 656
Modifié par Whismeril le 27/11/2014 à 14:31
Bonjour

Je me permets de rebondir sur la question d'un membre...

Ha oui? il aurait fallu répondre à ce sujet alors ou au moins mettre un lien vers la dite discussion

Penser aux balises de coloration syntaxique: bouton <>, préciser le langage :<code csharp>.
Quand la solution est trouvée, mettre la discussion Résolue.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
27 nov. 2014 à 20:36
Bonjour,
un usercontrol n'est pas un container. Il est avant tout une application exécutable, qui peut (et tel est assez souvent le cas) être composée d'un ou plusieurs objets conteneurs. Il n'en est pas un conteneur lui-même pour autant.
0
Bonjour ucfoutu et merci de ta réponse,

Pour être plus précis, mon UserControl est censé remplacer le SSTab natif qui n'est pratiquement pas paramétrable comme je le souhaiterais.

Il est constitué de x bandes de labels (les Tabs), chacun associé (par un index) à une PictureBox.

D'où mon problème pour poser mes différents contrôles dans les PictureBox adquates.

J'ai bien mis la propriété ContainerControl de mon UserControl (celui qui contient tous les labels et autres PictureBox) à True. Mais évidemment cela ne résout rien.
En fait arriver à créer à l'exécution ces contrôles (CreateObject) devrait me permettre de m'en sorti. Mais le MSDN est très vague et l'exemple totalement inutile ici.
0
Rejoignez-nous