FORM TOPMOST RELATIF

Silmon Messages postés 85 Date d'inscription mardi 6 janvier 2004 Statut Membre Dernière intervention 7 mai 2007 - 6 janv. 2004 à 22:54
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 7 janv. 2004 à 17:03
SIMON LEBON:
Je cherche un moyen de presenter une form placée toujours au premier plan par rapport a une autre form.

Je connais l'api SetwindowsPos avec topmost, mais je veux que ma forme ne sois pas visible au premier plan si j'active une autre aplication.

Par exemple la form 'Rechercher' de Word reste au dessus de l'ecran, mais disparait si on ouvre un autre programme.
Est-ce que quelqu'un peut m'aider

4 réponses

cs_doggy Messages postés 50 Date d'inscription jeudi 26 décembre 2002 Statut Membre Dernière intervention 12 janvier 2004
6 janv. 2004 à 23:58
La solution la plus simple que je connaisse est de placer un timer sur la form ...interval = 100 par exemple

Private Sub Timer1_Timer()
ZOrder
End Sub

ça replace constamment la form au premier plan ... sans gêner les autres applications ...

@+
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
7 janv. 2004 à 06:51
Cette fenetre est dite modale !

tant qu'elle n'a pas été masquée, les autres fenêtres ne réagissent pas. (Comme quand tu utilises un MsgBox)

pour cela, fais simplement :

Form2.Show VbModal


By Renfield

[mailto:thomas_reynald@msn.com thomas_reynald@msn.com]

Aucune touche n'a ete blessee lors de la saisie de ce texte.......... ;)
0
Silmon Messages postés 85 Date d'inscription mardi 6 janvier 2004 Statut Membre Dernière intervention 7 mai 2007
7 janv. 2004 à 16:22
SIMON LEBON
Désolé les gars, mais ça ne marche pas.

L'idée du timer est bonne, mais la form au premier plan prend aussi le focus.

Quand à .shw vbmodal, il empeche tout simplement que la form en dessous devient active.

SVP, regarder Word et sa fenetre de recherche de mot. La fenetre de recherche est toujours visible au premier plan mais n'empeche pas la fenetre principal de prendre le focus.
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
7 janv. 2004 à 17:03
SetWindowPos est bien la solution a utiliser, couplée avec un Timer.

Il ne faut pas utilise TOPMOST mais spécifier l'ordre des fenetres entre elles
ici j 'ai un Timer (interval raisonnable !) dans Form2, et dans Form1, je fais Form2.show.....

Const SWP_NOSIZE = &H1
Const SWP_NOMOVE = &H2
Const SWP_NOACTIVATE = &H10
Const SWP_SHOWWINDOW = &H40
Private Declare Sub 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)

Private Sub Timer1_Timer()
    SetWindowPos Form1.hWnd, Me.hWnd, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE
End Sub


By Renfield

[mailto:thomas_reynald@msn.com thomas_reynald@msn.com]

Aucune touche n'a ete blessee lors de la saisie de ce texte.......... ;)
0
Rejoignez-nous