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).
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.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 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.
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.