Feuille Modale

cs_xavier77 Messages postés 95 Date d'inscription jeudi 27 décembre 2001 Statut Membre Dernière intervention 17 avril 2013 - 14 mai 2003 à 17:07
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 14 mai 2003 à 21:38
Salut,
J'aimerais savoir s'il existe un moyen de déterminer si la form qui est affichée à l'écran est modale ou non de façon à ouvrir l'autre form en conséquence....

Merci de votre aide

@+

1 réponse

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
14 mai 2003 à 21:38
places ca dans un module....

Public Const GWL_STYLE = (-16)
Public Const WS_DISABLED = &H8000000
Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long

' le premier parametre est le handle (Form1.hwnd) d'un fenetre dont tu es sur qu'elle n'est pas modale
' le second, s'il est specifié, est le handle de la fenetre a tester , la fonction renvoie alors Vrai ou Faux , selon si elle est modale
'sinon, renvoie simplement True , si il y a une ( n'importe laquelle !) fenetre modale...
Public Function IsAnyModal(NonModal As Long, Optional TestHwnd As Long = -1) As Boolean
    'recupere le style de la feuille non modale
    Dim WinStyle As Long
    
    WinStyle = GetWindowLong(NonModal, GWL_STYLE)
    If (WinStyle And WS_DISABLED) = WS_DISABLED Then
        'une feuille modal est presente
        If TestHwnd = -1 Then
            'on atteste de la presence d'une feuille modale
            IsAnyModal = True
        Else
            ' on verifie si c'est la fenetre a tester...
            WinStyle = GetWindowLong(TestHwnd, GWL_STYLE)            IsAnyModal Not ((WinStyle And WS_DISABLED) WS_DISABLED)
        End If
    Else
        'pas de feuille modale
        IsAnyModal = False
    End If
End Function


le principe est très bete : quand un form modal est affichée , toutes les autres fenetres ont le Style Disabled défini.
il suffit de tester le style d'une fenetre (non modale !!) pour savoir si une fenetre modale est affichée.

j'ai ajouté aussi une option , savoir si une fenetre particuliere est modale...
-----------------------------------------------------------------------
By Renfield

thomas_reynald@msn.com

Aucune touche n'a été bléssée lors de la saisie de ce texte..........
0
Rejoignez-nous