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

Comment savoir si une form est affichée ?

8 réponses
Avatar
Antoine Dinimant
J'ai une appli avec une fenêtre principale et une fenêtre annexe qui
s'affiche de manière non-modale. Cet affichage est déclenché par un
form.Show, et refermer par un Unload Me.

Comment la fenêtre principale peut-elle savoir si la fenêtre annexe est
chargée/visible ou non chargée/déchargée ?

Je peux bien sûr mettre un flag sur le Form_Load et le Form_Unload, mais
avant je voudrais savoir s'il n'y a rien de standard pour cela...

Je précise que je ne peux pas utiliser form.visible puisque cela
déclenche le Form_Load (et qu'en plus cela ne me donnerait pas ce qui
m'intéresse).

Merci de vos infos !

Antoun

8 réponses

Avatar
le_troll
Bonsoir,

Je peut être pas tout compris là, mis comme c'est ta form1 qui s'ouvre
au lancement, c'est bien de la form 1 que tu vas donner l'ordre à la form 2
de s'afficher, donc à partir de ce moment tu as le moyen de savoir si elle
est affichée (en chargeant une variable)...

--
Merci, @+, bye, Joe
troll75 AROBASE iFrance POINT com
------------------------------------------
Ce message est plein de virus "certifiés"
Le_Troll, éleveur de Trolls depuis César, qui disait:
Avec une hache, celui qui tient le manche a toujours raison !
------------------------------------------


"Antoine Dinimant" a écrit dans le message de news:

J'ai une appli avec une fenêtre principale et une fenêtre annexe qui
s'affiche de manière non-modale. Cet affichage est déclenché par un
form.Show, et refermer par un Unload Me.

Comment la fenêtre principale peut-elle savoir si la fenêtre annexe est
chargée/visible ou non chargée/déchargée ?

Je peux bien sûr mettre un flag sur le Form_Load et le Form_Unload, mais
avant je voudrais savoir s'il n'y a rien de standard pour cela...

Je précise que je ne peux pas utiliser form.visible puisque cela
déclenche le Form_Load (et qu'en plus cela ne me donnerait pas ce qui
m'intéresse).

Merci de vos infos !

Antoun



Avatar
Antoine Dinimant
le_troll a écrit:
Bonsoir,

Je peut être pas tout compris là, mis comme c'est ta form1 qui s'ouvre
au lancement, c'est bien de la form 1 que tu vas donner l'ordre à la form 2
de s'afficher, donc à partir de ce moment tu as le moyen de savoir si elle
est affichée (en chargeant une variable)...



yes. Mais je me dis qu'il doit bien y avoir un moyen standard plutôt que
d'alourdir mon code avec une énième variable booléenne...
Avatar
François Picalausa
Hello,

Tu peux parcourir la collection Forms de l'objet VB qui ne contient que les
forms chargées:
Dim MyForm As Form

For Each MyForm In Forms
If MyForm Is Form1 Then
Msgbox "Form1 est chargée"
End If
Next MyForm



--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net

"Antoine Dinimant" a écrit dans le message de
news:
le_troll a écrit:
Bonsoir,

Je peut être pas tout compris là, mis comme c'est ta form1 qui
s'ouvre au lancement, c'est bien de la form 1 que tu vas donner
l'ordre à la form 2 de s'afficher, donc à partir de ce moment tu as
le moyen de savoir si elle est affichée (en chargeant une
variable)...



yes. Mais je me dis qu'il doit bien y avoir un moyen standard plutôt
que d'alourdir mon code avec une énième variable booléenne...


Avatar
Antoine Dinimant
> Tu peux parcourir la collection Forms de l'objet VB qui ne contient que les
forms chargées:
Dim MyForm As Form

For Each MyForm In Forms
If MyForm Is Form1 Then
Msgbox "Form1 est chargée"
End If
Next MyForm



Merci, c'est exactement ce que je cherchais !

btw, en cherchant ça, je me posais des questions sur les propriétés
form.hDC et form.hWnd... la MSDN est assez elliptique à ce sujet, mais
est-ce que cela n'aurait un rapport avec le fait de savoir si une form
est affichée et si elle est modale ou non ? c'est juste pour faire
avancer ma culture VB...
Avatar
François Picalausa
Hello,

hWnd et hDC ont avoir avec Windows.
hWnd est un handle vers la fenêtre. C'est un identifiant unique.
Tu peux passer ce handle a diverses API qui permettent de modifier la form,
un textbox, ...
Un exemple parmis d'autres d'utilisation d'hWnd:
http://groups.google.com/groups?selmãV%24gTJSEHA.2716%40tk2msftngp13.phx.gb
Pour tout savoir sur les windows:
http://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/windowing/windows/aboutwindows.asp

hDC est un handle vers un Device Context. Il s'agit d'une surface de traçage
qui peut être utilisée par GDI.
TextOut, Arc, ... sont autant de fonctions qui peuvent être employées avec
le DC. Celà permet aussi de créer des surfaces de traçage en mémoire pour du
double buffering par exemple.
Exemple d'utilisation:
http://apisvb.europe.webmatrixhosting.net/article.aspx?articleid=Arc%20-%20exemple%20d'utilisation&articletype=sample
Pour tout savoir sur les DC:
http://msdn.microsoft.com/library/en-us/gdi/devcons_25pv.asp

--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net

"Antoine Dinimant" a écrit dans le message de
news:
Tu peux parcourir la collection Forms de l'objet VB qui ne contient
que les forms chargées:
Dim MyForm As Form

For Each MyForm In Forms
If MyForm Is Form1 Then
Msgbox "Form1 est chargée"
End If
Next MyForm



Merci, c'est exactement ce que je cherchais !

btw, en cherchant ça, je me posais des questions sur les propriétés
form.hDC et form.hWnd... la MSDN est assez elliptique à ce sujet, mais
est-ce que cela n'aurait un rapport avec le fait de savoir si une form
est affichée et si elle est modale ou non ? c'est juste pour faire
avancer ma culture VB...


Avatar
Antoine Dinimant
Merci beaucoup François !

(...)
Un exemple parmis d'autres d'utilisation d'hWnd:
http://groups.google.com/groups?selmãV%24gTJSEHA.2716%40tk2msftngp13.phx.gb



Google me dit que ce message n'existe pas... pourtant, il me semblait
que Google gardait tout sans limite de temps ?
Avatar
François Picalausa
Hello,

"Antoine Dinimant" a écrit dans le message de
news:
Google me dit que ce message n'existe pas... pourtant, il me semblait
que Google gardait tout sans limite de temps ?



Google fonctionne bien... par contre, je devrais prendre de meilleurs cours
de copier-coller, j'avais oublié le l final.
L'url est donc:
http://groups.google.com/groups?selmãV%24gTJSEHA.2716%40tk2msftngp13.phx.gbl

--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net
Avatar
sebcou
Salut !

Perso j'utilise une fonction pour ça, tu peux l'adapter à tes besoins
(je passe ici le nom de la fenêtre en string, on pourrait faire mieux) :

Public Function IsFormLoaded(FormName As String) As Boolean

Dim AForm As Form

For Each AForm In Forms
If UCase(AForm.Name) = UCase(FormName) Then
IsFormLoaded = True
Exit Function
End If
Next

IsFormLoaded = False
End Function

@+
Seb


"Antoine Dinimant" a écrit dans le message de
news:
J'ai une appli avec une fenêtre principale et une fenêtre annexe qui
s'affiche de manière non-modale. Cet affichage est déclenché par un
form.Show, et refermer par un Unload Me.

Comment la fenêtre principale peut-elle savoir si la fenêtre annexe


est
chargée/visible ou non chargée/déchargée ?

Je peux bien sûr mettre un flag sur le Form_Load et le Form_Unload,


mais
avant je voudrais savoir s'il n'y a rien de standard pour cela...

Je précise que je ne peux pas utiliser form.visible puisque cela
déclenche le Form_Load (et qu'en plus cela ne me donnerait pas ce qui
m'intéresse).

Merci de vos infos !

Antoun