OVH Cloud OVH Cloud

Fenêtre parent

13 réponses
Avatar
Philippe HALET
Bonjour à tous,

Voici le problème: j'ai une application composée d'une fenêtre principale et
d'une série de fenêtres filles. Les fenêtres filles sont ouverte de la
manière suivante:

frmFille vbModeless, Me

Lorsqu'après avoir utilisé la fenêtre fille on la quitte (appel à Unload Me)
il arrive que la fenêtre parent ne soit plus au premier plan: je désirerai
l'y remettre. Comment faire? Je n'arrive pas à trouver le moyen de retrouver
l'info sur la fenêtre parent et encore moins comment l'exploiter....

Merci d'avance pour votre aide!

Philippe

10 réponses

1 2
Avatar
Jacques
Bonjour,

Philippe HALET wrote:
Bonjour à tous,

Voici le problème: j'ai une application composée d'une fenêtre principale et
d'une série de fenêtres filles. Les fenêtres filles sont ouverte de la
manière suivante:

frmFille vbModeless, Me

Lorsqu'après avoir utilisé la fenêtre fille on la quitte (appel à Unload Me)
il arrive que la fenêtre parent ne soit plus au premier plan: je désirerai
l'y remettre. Comment faire? Je n'arrive pas à trouver le moyen de retrouver
l'info sur la fenêtre parent et encore moins comment l'exploiter....

Merci d'avance pour votre aide!

Philippe




La fenêtre parent est elle une MDIForm ?
Les fenêtres filles sont elles des MDIChild ?
ou sont elles toutes des fenêtres 'standard' ?

--
Cordialement,

Jacques.
Avatar
Philippe HALET
Ce sont des fenêtres standard créée à l'aide de "Add/Form" dans une
application "Standard EXE".

Merci,

Philippe



"Jacques" wrote in message
news:
Bonjour,

Philippe HALET wrote:
> Bonjour à tous,
>
> Voici le problème: j'ai une application composée d'une fenêtre


principale et
> d'une série de fenêtres filles. Les fenêtres filles sont ouverte de la
> manière suivante:
>
> frmFille vbModeless, Me
>
> Lorsqu'après avoir utilisé la fenêtre fille on la quitte (appel à Unload


Me)
> il arrive que la fenêtre parent ne soit plus au premier plan: je


désirerai
> l'y remettre. Comment faire? Je n'arrive pas à trouver le moyen de


retrouver
> l'info sur la fenêtre parent et encore moins comment l'exploiter....
>
> Merci d'avance pour votre aide!
>
> Philippe
>

La fenêtre parent est elle une MDIForm ?
Les fenêtres filles sont elles des MDIChild ?
ou sont elles toutes des fenêtres 'standard' ?

--
Cordialement,

Jacques.


Avatar
Jacques
Philippe HALET wrote:
Ce sont des fenêtres standard créée à l'aide de "Add/Form" dans une
application "Standard EXE".


Lorsqu'après avoir utilisé la fenêtre fille on la quitte (appel à Unload





Me)

il arrive que la fenêtre parent ne soit plus au premier plan: je





désirerai

l'y remettre. Comment faire? Je n'arrive pas à trouver le moyen de





retrouver




Quelle est la fenêtre qui passe au premier plan ?
une autre fenêtre fille déja chargée ?

--
Cordialement,

Jacques.
Avatar
Jacques
Philippe HALET wrote:
Ce sont des fenêtres standard créée à l'aide de "Add/Form" dans une
application "Standard EXE".

Merci,

Philippe



"Jacques" wrote in message
news:

Bonjour,

Philippe HALET wrote:

Bonjour à tous,

Voici le problème: j'ai une application composée d'une fenêtre





principale et

d'une série de fenêtres filles. Les fenêtres filles sont ouverte de la
manière suivante:

frmFille vbModeless, Me

Lorsqu'après avoir utilisé la fenêtre fille on la quitte (appel à Unload





Me)

il arrive que la fenêtre parent ne soit plus au premier plan







A tout hasard, ajoute :

frmParent.SetFocus

avant le

Unload Me

des feuilles 'filles'


--
Cordialement,

Jacques.
Avatar
scraper
Bonjour Philippe HALET, dans le message
news:424ad100$0$333$
tu disais :


Ce sont des fenêtres standard créée à l'aide de "Add/Form" dans une
application "Standard EXE".



peut être comme ceci ?

'Dans un module
Private Declare Function SetWindowPos Lib "user32" _
(ByVal hwnd As Long, ByVal hWndInsertAfter As Long, _
ByVal x As Long, ByVal y As Long, ByVal cx As Long, _
ByVal cy As Long, ByVal wFlags As Long) As Long

Const SWP_NOMOVE = &H2
Const SWP_NOSIZE = &H1
Const SWP_NOACTIVATE = &H10
Const SWP_SHOWWINDOW = &H40
Const HWND_TOPMOST = -1
Const HWND_NOTOPMOST = -2
Const Flags = SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE

Public Function SetTopMostWindow(Window As Form, Topmost As Boolean) As Long

If Topmost = True Then
SetTopMostWindow = SetWindowPos(Window.hwnd, HWND_TOPMOST, 0, 0, 0,
0, Flags)
Else
SetTopMostWindow = SetWindowPos(Window.hwnd, HWND_NOTOPMOST, 0, 0,
0, 0, Flags)
End If

End Function

'Dans ton code
SetTopMostWindow frmMain, True

'------
si ta fenêtre mère est frmMain

--

Attention ! Adresse mail invalide ...
Pour me contacter, cliquez sur le lien ci-dessous:
http://scraper.chez.tiscali.fr/contact.htm

scraper
Avatar
Philippe HALET
oui, une fenêtre d'une éventuelle autre application chargée et avec laquelle
on à travaillé durant l'utilisation de mon application (word par exemple)

Philippe

"Jacques" wrote in message
news:
Philippe HALET wrote:
> Ce sont des fenêtres standard créée à l'aide de "Add/Form" dans une
> application "Standard EXE".
>
>>>
>>>Lorsqu'après avoir utilisé la fenêtre fille on la quitte (appel à


Unload
>
> Me)
>
>>>il arrive que la fenêtre parent ne soit plus au premier plan: je
>
> désirerai
>
>>>l'y remettre. Comment faire? Je n'arrive pas à trouver le moyen de
>
> retrouver
>

Quelle est la fenêtre qui passe au premier plan ?
une autre fenêtre fille déja chargée ?

--
Cordialement,

Jacques.


Avatar
Philippe HALET
Jacques,

Le frmParent.SetFocus ne peut pas fonctionner car mes fenêtres filles
peuvent être appelées par différentes fenêtres parents...

Philippe



"Jacques" wrote in message
news:
Philippe HALET wrote:
> Ce sont des fenêtres standard créée à l'aide de "Add/Form" dans une
> application "Standard EXE".
>
> Merci,
>
> Philippe
>
>
>
> "Jacques" wrote in message
> news:
>
>>Bonjour,
>>
>>Philippe HALET wrote:
>>
>>>Bonjour à tous,
>>>
>>>Voici le problème: j'ai une application composée d'une fenêtre
>
> principale et
>
>>>d'une série de fenêtres filles. Les fenêtres filles sont ouverte de la
>>>manière suivante:
>>>
>>> frmFille vbModeless, Me
>>>
>>>Lorsqu'après avoir utilisé la fenêtre fille on la quitte (appel à


Unload
>
> Me)
>
>>>il arrive que la fenêtre parent ne soit plus au premier plan

A tout hasard, ajoute :

frmParent.SetFocus

avant le

Unload Me

des feuilles 'filles'


--
Cordialement,

Jacques.


Avatar
Jacques
Philippe HALET wrote:
Jacques,

Le frmParent.SetFocus ne peut pas fonctionner car mes fenêtres filles
peuvent être appelées par différentes fenêtres parents...

Philippe



Au chargement des feuilles filles :

frmFille.Tag = Cstr (Me.hWnd) ' La fenêtre fille stocke le Handle
de la fenêtre qui l'ouvre
frmFille.Show vbModeless


En modifiant le code de scraper (hWnd as long à la place de Window as
Form) :

Public Function SetTopMostWindow(hWnd as long, Topmost As Boolean) As Long

If Topmost = True Then
SetTopMostWindow = SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0,
Flags)
Else
SetTopMostWindow = SetWindowPos(hWnd, HWND_NOTOPMOST, 0, 0, 0,
0, Flags)
End If

End Function


et ajouter :

SetTopMostWindow cLng(Me.Tag), True

avant

Unload Me

des feuilles filles.

------------------------------

Si c'est OK, utiliser ensuite plutot une propriété perso, plutôt que Tag

Private m_MyParent as long

Property Get MyParent () as long
MyParent = m_MyParent
End Property

Property Let MyParent (hWnd as long)
m_MyParent = hWnd
End Property

Pas eu le temps de tester ...

--
Cordialement,

Jacques.
Avatar
Philippe HALET
Un grand merci Jacques et Scrapper... Je pense que vos idées sont les
bonnes!

Philippe

"Jacques" wrote in message
news:
Philippe HALET wrote:
> Jacques,
>
> Le frmParent.SetFocus ne peut pas fonctionner car mes fenêtres filles
> peuvent être appelées par différentes fenêtres parents...
>
> Philippe

Au chargement des feuilles filles :

frmFille.Tag = Cstr (Me.hWnd) ' La fenêtre fille stocke le Handle
de la fenêtre qui l'ouvre
frmFille.Show vbModeless


En modifiant le code de scraper (hWnd as long à la place de Window as
Form) :

Public Function SetTopMostWindow(hWnd as long, Topmost As Boolean) As Long

If Topmost = True Then
SetTopMostWindow = SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0,
Flags)
Else
SetTopMostWindow = SetWindowPos(hWnd, HWND_NOTOPMOST, 0, 0, 0,
0, Flags)
End If

End Function


et ajouter :

SetTopMostWindow cLng(Me.Tag), True

avant

Unload Me

des feuilles filles.

------------------------------

Si c'est OK, utiliser ensuite plutot une propriété perso, plutôt que Tag

Private m_MyParent as long

Property Get MyParent () as long
MyParent = m_MyParent
End Property

Property Let MyParent (hWnd as long)
m_MyParent = hWnd
End Property

Pas eu le temps de tester ...

--
Cordialement,

Jacques.


Avatar
scraper
Bonjour Jacques, dans le message
news:
tu disais :


En modifiant le code de scraper (hWnd as long à la place de Window as
Form) :



oops ! désolé, j'ai fait un copier coller de vieux projets :-(

--

Attention ! Adresse mail invalide ...
Pour me contacter, cliquez sur le lien ci-dessous:
http://scraper.chez.tiscali.fr/contact.htm

scraper
1 2