Users control imbriqués.

Résolu
PeTeRsLaStAr Messages postés 158 Date d'inscription samedi 22 juin 2002 Statut Membre Dernière intervention 27 juin 2015 - 21 nov. 2005 à 17:55
PeTeRsLaStAr Messages postés 158 Date d'inscription samedi 22 juin 2002 Statut Membre Dernière intervention 27 juin 2015 - 22 nov. 2005 à 16:01
Bonjour.

Dans mon projet, je travaille avec 2 usrs controls (en vb6)
Un conteneur (qu'on va appeler A), et un autre dans le conteneur (qu'on va appeler B).

Si dans A je mets une fonction de type

FonctionA
b.appelFonctionB

ça marche.

Par contre, dans mon code, (peut être que ce n'est pas possible)
si je mets un fonction B qui fait

FonctionB
a.appelFonctionA

ça ne marche pas...

Quel est le moyen pour pouvoir appeler ma fonction dans mon conteneur, à partir de mon usrControl B ?

(désolé si j'ai pas été clair... redemandez moi si c le cas..;)

****************************************************
Il n'y a pas de pb sans solutions : il faut juste trouver le temps pour les chercher

12 réponses

PeTeRsLaStAr Messages postés 158 Date d'inscription samedi 22 juin 2002 Statut Membre Dernière intervention 27 juin 2015 1
22 nov. 2005 à 15:27
J'ai solutionné le pb.
Je n'ai pas utilisé ta fonction car je ne sais pas si cela joue ou pas, mais il s'agissait d'un UserControl dans un autre UserControl (c'est à dire qu'il n'y a pas de forms...). Et en faisant 'MyUsrControl as new a', MyUsrControl. (Control+Espace) ne me donnait que mes fonctions publiques...

J'ai utilisé une autre chose que je ne connaissais pas.

En gros, dans mon UC b, j'ajoute une ligne

Public Event MaFonctionPublique(ByVal str As String)

Ensuite, là ou je le veux dans mon code, je marque
RaiseEvent MaFonctionPublique(MaVariableQueJeVoulaisRecupererDeB)

Et enfin, dans mon UsrControl A, j'ai un nouvel évenement de créé,

A_MaFonctionPublique(ByVal str As String)

et là je peux enfin faire

A.MonControl.text = str

Et là ça marche...
J'espère que ce code pourra servir à d'autres utilisateurs.
Merci qd mm pour ton aide Vpoyo et DarkSidious :)

****************************************************
Il n'y a pas de pb sans solutions : il faut juste trouver le temps pour les chercher
3
cs_vpoyo Messages postés 363 Date d'inscription vendredi 14 février 2003 Statut Membre Dernière intervention 20 avril 2010 6
21 nov. 2005 à 18:13
ben ca ne marchera pas car ton "a" n'est pas référencer dans B.

au niveau de B je pense qu'un petit Me.Parent devrait retourner a
0
PeTeRsLaStAr Messages postés 158 Date d'inscription samedi 22 juin 2002 Statut Membre Dernière intervention 27 juin 2015 1
21 nov. 2005 à 19:10
En fait le souci
ce que je vois bien a.FonctionA dans l'appel de B...
le souci bien pas de là

Le souci vient du fait que qd je l'appelle, il crache en disant qu'il est impossible d'utiliser ça avec la méthode 'with'.

J'essaie dès demain ta proposition avec le Me.parent...

****************************************************
Il n'y a pas de pb sans solutions : il faut juste trouver le temps pour les chercher
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
21 nov. 2005 à 20:43
Déclare ta fonction dans un module...

_____________________________________________________________________
DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) tout en français : www.ProgOtoP.com/popapi/
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PeTeRsLaStAr Messages postés 158 Date d'inscription samedi 22 juin 2002 Statut Membre Dernière intervention 27 juin 2015 1
22 nov. 2005 à 14:39
Ok. Alors les solutions (enfin surtout la notino de modèle) m'ont été utiles.
Il me reste un souci maintenant...

Comment manipuler un objet ?
Je m'explique...

Dans ma fonction je fais la chose suivante :
a.MonObject.OnClick->Declenche une fonction qui va dans b

b.MaFonction...

Maintenant j'aimerais bien faire la chose suivante
a.MonAutreObject=b.MaFonction2 (appelée par b.MaFonction)

Si je passe par une fonction dans mon module (qui ferait un genre d'appel à une fonction dans A qui mettrait à jour des objets), le pb est le mm qu'auparavant : 'Variable Objet ou bloc Width non défini'

En gros, je suppose qu'il faudrait que j'arrive à passer un objet 'graphique' cette fois ci, de mon interface A, en type public, ce qui serait jouable en .Net... (en déclarant les types à la mano). Mais en VB, est ce possible ?

Ou y a til une autre solution qui m'échappe ?

****************************************************
Il n'y a pas de pb sans solutions : il faut juste trouver le temps pour les chercher
0
cs_vpoyo Messages postés 363 Date d'inscription vendredi 14 février 2003 Statut Membre Dernière intervention 20 avril 2010 6
22 nov. 2005 à 14:52
si MonAutreObjet est un membre de a et public (du moins tu y a accès) donc définit dans la classe A,
que MaFonction2 soit une méthode public ou accessible défini dans la classe B
et que cette fonction retourne un objet du même type que MonAutreObjet

alors je ne vois pas pourquoi ca pourrais poser problème et aussi bien en vb.net qu'en vb6
0
PeTeRsLaStAr Messages postés 158 Date d'inscription samedi 22 juin 2002 Statut Membre Dernière intervention 27 juin 2015 1
22 nov. 2005 à 14:57
Je parle d'éléments graphiques là, hein, comme un textBox par exemple...

Le souci, c'est que qd je fais A.(plus control espace pour voir toutes mes fonctions hein), je vois effectivement toutes mes fonctions 'publiques'.
Par contre, je vois pas mes objets, comme par exemple A.MonTxtBox

Tu situes le pb ?

****************************************************
Il n'y a pas de pb sans solutions : il faut juste trouver le temps pour les chercher
0
cs_vpoyo Messages postés 363 Date d'inscription vendredi 14 février 2003 Statut Membre Dernière intervention 20 avril 2010 6
22 nov. 2005 à 15:03
élément graphique ou pas un objet reste un objet

ton textbox (en général) est défini dans une form, c'est form est d'ailleurs un classe fille de la classe Form de base

si tu fais maForm. (+ctrl espcace) tu verras que textBox y est déclaré, pourquoi parce que c'est un sous objet de ta form (qu'on appelera F)

si tu veux y accéder depuis l'extérieur il faut récupérer une instace de cette form et la caster en F, tu auras accès a ton textBox. car celui ci est un membre de F et non de Form
0
cs_vpoyo Messages postés 363 Date d'inscription vendredi 14 février 2003 Statut Membre Dernière intervention 20 avril 2010 6
22 nov. 2005 à 15:34
De rien, c'est vrai que la solution des évènement me vient rarement à l'esprit, je m'en sert plus dans des prog multithreadés, là c'est super utile.

Sans vouloir te vexer, reprend bien les principes de la programmation objet, et du polymorphisme / héritage. Bien comprendre les mécanismes résoud énormément de problème et sans évènement ;).
0
PeTeRsLaStAr Messages postés 158 Date d'inscription samedi 22 juin 2002 Statut Membre Dernière intervention 27 juin 2015 1
22 nov. 2005 à 15:42
Heu, l'objet en Vb6....
tu me dirais en .Net je veux bien, mais en Vb6...

ça m'a bien fait rire qd en BTS j'ai fait du VB6 pour agrémenter les cours d'objet tiens...

PAs du C++, nan du vb6....

****************************************************
Il n'y a pas de pb sans solutions : il faut juste trouver le temps pour les chercher
0
cs_vpoyo Messages postés 363 Date d'inscription vendredi 14 février 2003 Statut Membre Dernière intervention 20 avril 2010 6
22 nov. 2005 à 15:57
C'est vrai que c'est pas un véritable langage objet, plutot un langage "bâtard" (excusez mon langage) entre langage procédural, évènementiel et objet. mais on arrive a appliquer pas mal de principe objet. c'est clair que vb.net ca n'a rien a voir, et franchement pour moi y a pas photo, je prend ^^
0
PeTeRsLaStAr Messages postés 158 Date d'inscription samedi 22 juin 2002 Statut Membre Dernière intervention 27 juin 2015 1
22 nov. 2005 à 16:01
Après en fonction de 'lurgence des projest', qd t'as déjà des dll avec du code nécessaire, et que tu exlpiques que pour passer au .Net il faut retranscrire une partie des dll car pas compilable en CLR... ben ça refroidis tout de sutie...

En fait dans mon taf, je fais une partie de vb6 et une partie en C#. Tjrs moins cool qd je suis dans la partie Vb6...

****************************************************
Il n'y a pas de pb sans solutions : il faut juste trouver le temps pour les chercher
0
Rejoignez-nous