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

Empêcher l'ouverture d'une fenêtre

7 réponses
Avatar
Goebbles
J'utilise VB 6. J'ai développé une application à multiples fenêtres. Dans
ma programmation, je dois faire référence à un objet appartenant à une autre
fenêtre.
Malheureusement, cette dernière s'ouvre automatiquement aussitôt que cette
référence est atteinte. Y a-t'il un moyen d'empêcher l'ouverture
intempestive de cette fenêtre?

Merci

7 réponses

Avatar
LE TROLL
Bonjour,

Je ne comprends pas, quand on appelle un objet appartenant à une autr
fenêtre, ça ne l'ouvre pas pour autant (show)???

MsgBox Form2.Text1

On peut lire certes le contenu de l'objet ici, mais ça n'ouvre pas la
fenêtre ???

--
Site éditeur MES ROMANS édités
http://www.manuscritdepot.com/a.joseph-attila-pusztay.1.htm
Site de MES LOGICIELS
http://irolog.free.fr
mon adresse EMail
http://irolog.free.fr/ecrire/index.htm
------------------------------------------------------------------------------------
"Goebbles" a écrit dans le message de
news:
J'utilise VB 6. J'ai développé une application à multiples fenêtres.
Dans
ma programmation, je dois faire référence à un objet appartenant à une
autre
fenêtre.
Malheureusement, cette dernière s'ouvre automatiquement aussitôt que cette
référence est atteinte. Y a-t'il un moyen d'empêcher l'ouverture
intempestive de cette fenêtre?

Merci


Avatar
Fred
dans : news:,
Goebbles écrivait :

J'utilise VB 6. J'ai développé une application à multiples fenêtres.
Dans ma programmation, je dois faire référence à un objet appartenant
à une autre fenêtre.
Malheureusement, cette dernière s'ouvre automatiquement aussitôt que
cette référence est atteinte. Y a-t'il un moyen d'empêcher
l'ouverture intempestive de cette fenêtre?



Je ne vois pas trop comment ceci peut se produire sinon dans le cas
suivant.
La feuille cible n'est pas encore chargée et donc la première référence
à un de ses contrôle provoque l'appel de la procédure Form_Load.
Et dans cette procédure il y a une instruction du style Form.Visible =
True
Est-ce le cas ?

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT
Avatar
Driss HANIB
bonjuur Goebbles,

ne peux tu pas la charger dès le début et la cacher : Fenetre.Hide

Driss

"Goebbles" a écrit dans le message de
news:
J'utilise VB 6. J'ai développé une application à multiples fenêtres.


Dans
ma programmation, je dois faire référence à un objet appartenant à une


autre
fenêtre.
Malheureusement, cette dernière s'ouvre automatiquement aussitôt que cette
référence est atteinte. Y a-t'il un moyen d'empêcher l'ouverture
intempestive de cette fenêtre?

Merci


Avatar
Goebbles
Salut Fred

Désolé pour le manque de détails. Trop le soucis très concis mais tu as très
bien deviné. Il s'agit exactement de ça.

Quelque précisions de plus et pour répondre à Driss :
Je ne peux pas charger la fenêtre cible au début et la cacher par la suite.
L'appel de la procédure Form_Load de cette fenêtre doit être réalisé par
l'utilisateur et, habituellement, à plusieurs reprises au cours du
déroulement de l'application. Ce qui implique qu'elle doit également être
fermée (non chargée en mémoire et non visible). Je ne connais pas le moyen
de connaître le statut de cette fenêtre, un moyen qui justement ne provoque
pas l'appel à la procédure Form_Load de la fenêtre cible. Dans le cas où la
fenêtre cible est déjà chargée, il n'y a pas de problème, mais dans le cas où
elle est fermée, je tiens à ce quelle demeure fermée.

Et merci encore pour l'intérêt que vous portez à cette requête.

Goebbles

"Fred" a écrit :

dans : news:,
Goebbles écrivait :

> J'utilise VB 6. J'ai développé une application à multiples fenêtres.
> Dans ma programmation, je dois faire référence à un objet appartenant
> à une autre fenêtre.
> Malheureusement, cette dernière s'ouvre automatiquement aussitôt que
> cette référence est atteinte. Y a-t'il un moyen d'empêcher
> l'ouverture intempestive de cette fenêtre?

Je ne vois pas trop comment ceci peut se produire sinon dans le cas
suivant.
La feuille cible n'est pas encore chargée et donc la première référence
à un de ses contrôle provoque l'appel de la procédure Form_Load.
Et dans cette procédure il y a une instruction du style Form.Visible =
True
Est-ce le cas ?

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT




Avatar
LE TROLL
Ah, ça doit sans doute être un problème d'intelligence de ma part, mais bon,
même en lisant plusieurs fois ça reste ténébreux, d'autant que tu as peut
être un problème de code là, peut être qu'en mettant de façon différente on
aurait autre chose, serait-il possible de voir le code en cause ???
Il y a entre "autres", une façon de savoir où l'on en est, c'est de faire
une variable public boolean pour chaque feuiille (car de mémoire le public
ne s'indice pas il me semble):
Dim f1ouvert as boolean, f2ouver as boolean
Quand la feuille est appelée elle met la variable à true, et quand la
feuille se ferme, dans sa procédure de fermeture elle met la variable à
false, comme ça on sait où on en est... Exemple pour mono-utilisateur
évidemment...
Ben oui, l'utilisateur... mais c'est toi qui l'a écrit quand même, on
appelle d'abord une feuille (j'ai pas dit "afficher"), avant d'accéder à ses
objets, normalement, faudrait voir tes écrits... On pourrait presque croire
que ton programme est hanté :o)

--
Site éditeur MES ROMANS édités
http://www.manuscritdepot.com/a.joseph-attila-pusztay.1.htm
Site de MES LOGICIELS
http://irolog.free.fr
mon adresse EMail
http://irolog.free.fr/ecrire/index.htm
------------------------------------------------------------------------------------
"Goebbles" a écrit dans le message de
news:
Salut Fred

Désolé pour le manque de détails. Trop le soucis très concis mais tu as
très
bien deviné. Il s'agit exactement de ça.

Quelque précisions de plus et pour répondre à Driss :
Je ne peux pas charger la fenêtre cible au début et la cacher par la
suite.
L'appel de la procédure Form_Load de cette fenêtre doit être réalisé par
l'utilisateur et, habituellement, à plusieurs reprises au cours du
déroulement de l'application. Ce qui implique qu'elle doit également être
fermée (non chargée en mémoire et non visible). Je ne connais pas le
moyen
de connaître le statut de cette fenêtre, un moyen qui justement ne
provoque
pas l'appel à la procédure Form_Load de la fenêtre cible. Dans le cas où
la
fenêtre cible est déjà chargée, il n'y a pas de problème, mais dans le cas

elle est fermée, je tiens à ce quelle demeure fermée.

Et merci encore pour l'intérêt que vous portez à cette requête.

Goebbles

"Fred" a écrit :

dans : news:,
Goebbles écrivait :

> J'utilise VB 6. J'ai développé une application à multiples fenêtres.
> Dans ma programmation, je dois faire référence à un objet appartenant
> à une autre fenêtre.
> Malheureusement, cette dernière s'ouvre automatiquement aussitôt que
> cette référence est atteinte. Y a-t'il un moyen d'empêcher
> l'ouverture intempestive de cette fenêtre?

Je ne vois pas trop comment ceci peut se produire sinon dans le cas
suivant.
La feuille cible n'est pas encore chargée et donc la première référence
à un de ses contrôle provoque l'appel de la procédure Form_Load.
Et dans cette procédure il y a une instruction du style Form.Visible >> True
Est-ce le cas ?

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT






Avatar
Fred
dans : news:,
Goebbles écrivait :

Salut Fred



Salut,

Désolé pour le manque de détails. Trop le soucis très concis mais tu
as très bien deviné. Il s'agit exactement de ça.

Quelque précisions de plus et pour répondre à Driss :
Je ne peux pas charger la fenêtre cible au début et la cacher par la
suite. L'appel de la procédure Form_Load de cette fenêtre doit être
réalisé par l'utilisateur et, habituellement, à plusieurs reprises au
cours du déroulement de l'application. Ce qui implique qu'elle doit
également être fermée (non chargée en mémoire et non visible). Je ne
connais pas le moyen de connaître le statut de cette fenêtre, un
moyen qui justement ne provoque pas l'appel à la procédure Form_Load
de la fenêtre cible. Dans le cas où la fenêtre cible est déjà
chargée, il n'y a pas de problème, mais dans le cas où elle est
fermée, je tiens à ce quelle demeure fermée.



Tu peux utiliser ce que Driss suggère. Tu empêches la fermeture en
interceptant le QueryUnload et en utilisant un Hide.
Ton problème, c'est le traitement que tu fais dans le Load. Pourquoi ne
pas le faire dans une autre procédure de feuille que tu rends publique
et donc appelable depuis n'importe où ?
Sinon tu peux aussi regarder du côté de la collection globale Forms qui
peut te permettre de déterminer si la feuille est chargée ou non.

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT
Avatar
Goebbles
Salut

OK. Merci à tous
J'ai respecté vos suggestions. Je charge ma fenêtre à l'ouverture du
programme
et je la cache par la suite. J'ai modifié ma programmation pour que
l'utilisateur du programme n'est plus à fermer cette fenêtre et voilà.
Merci également pour la suggestion portant sur "collection globales Forms".
Je vais y jeter un oeil.

"Fred" a écrit :

dans : news:,
Goebbles écrivait :

> Salut Fred

Salut,

> Désolé pour le manque de détails. Trop le soucis très concis mais tu
> as très bien deviné. Il s'agit exactement de ça.
>
> Quelque précisions de plus et pour répondre à Driss :
> Je ne peux pas charger la fenêtre cible au début et la cacher par la
> suite. L'appel de la procédure Form_Load de cette fenêtre doit être
> réalisé par l'utilisateur et, habituellement, à plusieurs reprises au
> cours du déroulement de l'application. Ce qui implique qu'elle doit
> également être fermée (non chargée en mémoire et non visible). Je ne
> connais pas le moyen de connaître le statut de cette fenêtre, un
> moyen qui justement ne provoque pas l'appel à la procédure Form_Load
> de la fenêtre cible. Dans le cas où la fenêtre cible est déjà
> chargée, il n'y a pas de problème, mais dans le cas où elle est
> fermée, je tiens à ce quelle demeure fermée.

Tu peux utiliser ce que Driss suggère. Tu empêches la fermeture en
interceptant le QueryUnload et en utilisant un Hide.
Ton problème, c'est le traitement que tu fais dans le Load. Pourquoi ne
pas le faire dans une autre procédure de feuille que tu rends publique
et donc appelable depuis n'importe où ?
Sinon tu peux aussi regarder du côté de la collection globale Forms qui
peut te permettre de déterminer si la feuille est chargée ou non.

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT