Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Je n'arrive pas à trouver la syntaxe

5 réponses
Avatar
André
Bonjour,

Je travaille avec une feuille MDI parent, dans cette=20
feuille j'ai deux menu un menu ouvrir (qui me permet=20
d'ouvrir des objets d=E9ja cr=E9=E9 par le deuxi=E8me=20
menu 'cr=E9er')
Je voudrais quand j'ai cr=E9=E9 un nouvel objet par le=20
programme, mettre =E0 jour la zone de liste ouverte par le=20
menu ouvrir quand je quite le menu cr=E9er.

Je m'explique j'ai une feuille MDI parent son nom est=20
frmBudget. Sur cette feuille j'ai un menu mnuOpen qui=20
m'affiche une liste cboCpt, dans laquelle je choisi un=20
compte, quand je clique sur ce compte, il lance une=20
feuille fille et me permet de faire des op=E9rations sur ce=20
compte.

Par le menu cr=E9er je peux cr=E9er un nouveau compte. Jusque=20
la tout ce passe bien, mais je voudrais que la liste=20
cboCpt soit mise =E0 jour d=E8s que je cr=E9e un nouveau compte.

Je ne parviens pas a trouver la syntaxe me permettant =E0=20
partir du menu cr=E9er se touvant sur la feuille budget=20
(mdiparent) =E0 mettre la liste cboCpt lanc=E9e par le menu=20
open se trouvant lui aussi sur la feuille mdiparent.

J'ai essay=E9 comme avant en VB5.0 frmbudget!cboCpt.additem
("valeur") mais cela ne marche pas.
j'ai essay=E9 me.frmbudget.cboCpt.additem("valeur")

Rien =E0 faire je n'arrive pas =E0 trouver la syntaxe,=20
quelqu'un pourrait-il m'aider j'ai pass=E9 en revue tout le=20
forum je n'ai pas trouv=E9 ou alors pas compris (je suis=20
novice en vb.net)

Andr=E9

5 réponses

Avatar
Zazar
Bonjour,

Je ne parviens pas a trouver la syntaxe me permettant à
partir du menu créer se touvant sur la feuille budget
(mdiparent) à mettre la liste cboCpt lancée par le menu
open se trouvant lui aussi sur la feuille mdiparent.

J'ai essayé comme avant en VB5.0 frmbudget!cboCpt.additem
("valeur") mais cela ne marche pas.
j'ai essayé me.frmbudget.cboCpt.additem("valeur")



Cette question a déjà été posée de nombreuses fois : faîtes une recherche
dans les archives.

--
Zazar
Avatar
André
Je sais mais je ne trouve pas ...

-----Message d'origine-----
Bonjour,

Je ne parviens pas a trouver la syntaxe me permettant à
partir du menu créer se touvant sur la feuille budget
(mdiparent) à mettre la liste cboCpt lancée par le menu
open se trouvant lui aussi sur la feuille mdiparent.

J'ai essayé comme avant en VB5.0 frmbudget!




cboCpt.additem
("valeur") mais cela ne marche pas.
j'ai essayé me.frmbudget.cboCpt.additem("valeur")



Cette question a déjà été posée de nombreuses fois :


faîtes une recherche
dans les archives.

--
Zazar


.



Avatar
Zazar
> Je sais mais je ne trouve pas ...


ok.

Je ne parviens pas a trouver la syntaxe me permettant à
partir du menu créer se touvant sur la feuille budget
(mdiparent) à mettre la liste cboCpt lancée par le menu
open se trouvant lui aussi sur la feuille mdiparent.

J'ai essayé comme avant en VB5.0 frmbudget!




cboCpt.additem
("valeur") mais cela ne marche pas.
j'ai essayé me.frmbudget.cboCpt.additem("valeur")





Alors le principe, quand on a un objet a de type A et un object b de type B
et qu'on veut que a fasse une action sur b, c'est qu'il faut que a connaisse
b.
En vb6 ou antérieur, connaître le nom du type B suffisait.
Sous .NET, il faut passer l'objet b à l'objet a.

Première méthode : créer une méthode dans la classe A

public sub SetObjectB(b as B)
end sub
L'objet de type a contient alors une référence vers l'objet de type B, et il
peut donc le manipuler à volonté sous condition que B expose bien les
méthodes publiques nécessaires à A (au hasard, une méthode pour ajouter un
élément à une liste).

Petite amélioration : si on est sûr que a devra se servir de b, on peut
créer un constructeur de A qui prend en paramètre un objet de type B.

Ca c'est le cas de base mais ce n'est pas génial comme approche : le code
n'est pas réutilisable et tout changement dans la classe B va devoir être
répercuté sur la classe A. Pour éviter ce problème, on va se poser la
question : qu'est ce A a besoin de connaître de B ?
Une fois qu'on a la réponse, on crée une interface I, on fait implémenter I
par B, et au lieu de passer B à A, on lui passe un I. Et le tour est joué!

Voilà pour le cas général, essayez maintenant de le mettre en pratique dans
votre situation et revenez si vous rencontrez des problèmes.
Bon courage,

--
Zazar
Avatar
André
Merci pour votre aide, je vais essayer

-----Message d'origine-----
Je sais mais je ne trouve pas ...


ok.

Je ne parviens pas a trouver la syntaxe me permettant






à
partir du menu créer se touvant sur la feuille budget
(mdiparent) à mettre la liste cboCpt lancée par le






menu
open se trouvant lui aussi sur la feuille mdiparent.

J'ai essayé comme avant en VB5.0 frmbudget!




cboCpt.additem
("valeur") mais cela ne marche pas.
j'ai essayé me.frmbudget.cboCpt.additem("valeur")





Alors le principe, quand on a un objet a de type A et un


object b de type B
et qu'on veut que a fasse une action sur b, c'est qu'il


faut que a connaisse
b.
En vb6 ou antérieur, connaître le nom du type B


suffisait.
Sous .NET, il faut passer l'objet b à l'objet a.

Première méthode : créer une méthode dans la classe A

public sub SetObjectB(b as B)
end sub
L'objet de type a contient alors une référence vers


l'objet de type B, et il
peut donc le manipuler à volonté sous condition que B


expose bien les
méthodes publiques nécessaires à A (au hasard, une


méthode pour ajouter un
élément à une liste).

Petite amélioration : si on est sûr que a devra se


servir de b, on peut
créer un constructeur de A qui prend en paramètre un


objet de type B.

Ca c'est le cas de base mais ce n'est pas génial comme


approche : le code
n'est pas réutilisable et tout changement dans la classe


B va devoir être
répercuté sur la classe A. Pour éviter ce problème, on


va se poser la
question : qu'est ce A a besoin de connaître de B ?
Une fois qu'on a la réponse, on crée une interface I, on


fait implémenter I
par B, et au lieu de passer B à A, on lui passe un I. Et


le tour est joué!

Voilà pour le cas général, essayez maintenant de le


mettre en pratique dans
votre situation et revenez si vous rencontrez des


problèmes.
Bon courage,

--
Zazar



.



Avatar
Patrick Philippot
Zazar wrote:
Alors le principe, quand on a un objet a de type A et un object b de
type B et qu'on veut que a fasse une action sur b, c'est qu'il faut
que a connaisse b.
En vb6 ou antérieur, connaître le nom du type B suffisait.
Sous .NET, il faut passer l'objet b à l'objet a.



Bonjour,

Pour compléter cette excellente explication, j'ajouterai ceci. En VB6,
les manipulations que vous décrivez sont réalisables parce qu'il est
possible de déclarer des variables gobales ou parce que VB6 traite
certaines données comme des variables globales. En .Net, vous êtes dans
un environnement purement objet et il n'y a donc plus de notion de
procédures globales ou de variables globables (même si la notion de
module persiste mais ce n'est qu'un leurre - de manière sous-jacente VB
.Net crée des classes pour les procédures déclarées dans des modules).

Si vous prenez ce point en compte, vous vous rendrez compte que vous
devez passer, comme le décrit zazar, les informations nécessaires d'un
objet à l'autre. Cela peut paraître une contrainte nouvelle mais c'est
au contraire un moyen de produire des designs plus souples et plus
faciles à maintenir.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr