Page 1 sur 1

Re: Fenetre Modal

Publié : mar. 23/févr./2016 15:26
par falsam
Une fenêtre modale ce n'est pas ça Spock. Une fenêtre modale est une fenêtre qui se superpose à une autre et qui contient un bouton ou un événement pour la fermer.

Ce n'est pas ce que fait ton code.

Exemple de fenêtre modale

Code : Tout sélectionner

Procedure ModalWindow()
  OpenWindow(1, 0, 0, 300, 200, "Fenetre modale", #PB_Window_SystemMenu | #PB_Window_WindowCentered, WindowID(0))
  DisableWindow(0, #True)
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow
        CloseWindow(1)
        DisableWindow(0, #False)
        Break
    EndSelect
  ForEver
EndProcedure

OpenWindow(0, #PB_Ignore, #PB_Ignore, 640, 480, "Main", #PB_Window_SystemMenu)
ButtonGadget(0, 400, 200, 150, 30, "Ouvre la fenetre modale")

Repeat
  Select WaitWindowEvent()
    Case #PB_Event_CloseWindow
      Break
    Case #PB_Event_Gadget
      If EventGadget() = 0
        ModalWindow()
      EndIf
  EndSelect
ForEver

Re: Fenetre Modal

Publié : mar. 23/févr./2016 16:23
par Anonyme2
Je suis presque d'accord avec Spock sauf que l'on ne devrait pas pouvoir donner le focus à la fenêtre principale, seuls sont pris en compte les événements de la fenêtre 0 dans ce cas, il faut donc un bouton ou un moyen de fermer cette fenêtre avant d'accéder à la fenêtre 1.
Donc d'accord avec Falsam :mrgreen:
Je ne suis pas contrariant

J'utilise la croix de la fenêtre modale

Fenêtre modale Wikipédia
https://fr.wikipedia.org/wiki/Fen%C3%AAtre_modale

Code : Tout sélectionner

OpenWindow(1, 0, 0, 319, 185, "Fenetre principale",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)


OpenWindow(0, 0, 0, 219, 85, "Fenetre modale",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
SetWindowLong_(WindowID(0),#GWL_EXSTYLE,GetWindowLong_(WindowID(0),#GWL_EXSTYLE)|#WS_EX_TOOLWINDOW)
ResizeWindow(0,#PB_Ignore,#PB_Ignore,220,100); : ShowWindow_(WindowID(0),#SW_SHOW)
EnableWindow_(WindowID(1), 0) ; <----- voila ce qui rend modal ! :D
EnableWindow_(WindowID(0), 1) ; <----- voila ce qui rend modal ! :D

Repeat
      Select WaitWindowEvent()
            Case #PB_Event_CloseWindow
                  Select EventWindow()
                        Case 0
                              EnableWindow_(WindowID(1), 1)
                              CloseWindow(0)
                              
                        Case 1
                              Break
                  EndSelect
      EndSelect
      
ForEver
On peut remplacer

Code : Tout sélectionner

EnableWindow_(WindowID(1), 0)
EnableWindow_(WindowID(0), 1)

par

Code : Tout sélectionner

DisableWindow(1, #True)
DisableWindow(0, #False)
comme le code de Falsam

Re: Fenetre Modal

Publié : mer. 24/févr./2016 9:23
par Mesa
Que les débutants en programmation, étudient l'excellent code de falsam (plus haut).
WIKIPEDIA: Fenêtre modale

Une fenêtre modale est, dans une interface graphique, une fenêtre qui prend le contrôle total du clavier et de l'écran. Elle est en général associée à une question à laquelle il est impératif que l'utilisateur réponde avant de poursuivre, ou de modifier quoi que ce soit.
Voir ici https://fr.wikipedia.org/wiki/Fen%C3%AAtre_modale pour les types et le rôle des fenêtres modales.

Le messagerequester est une fenêtre modale:

Code : Tout sélectionner

;-----> AJOUT
MessageRequester("Votre attention SVP ! ! !", "MessageRequester est une fenêtre modale")

;code falsam
Procedure ModalWindow()
	OpenWindow(1, 0, 0, 300, 200, "Fenetre modale", #PB_Window_SystemMenu | #PB_Window_WindowCentered, WindowID(0))
	DisableWindow(0, #True)
	Repeat
		Select WaitWindowEvent()
			Case #PB_Event_CloseWindow
				CloseWindow(1)
				DisableWindow(0, #False)
				Break
		EndSelect
	ForEver
EndProcedure

OpenWindow(0, #PB_Ignore, #PB_Ignore, 640, 480, "Main", #PB_Window_SystemMenu)
ButtonGadget(0, 400, 200, 150, 30, "Ouvre la fenetre modale")

Repeat
	Select WaitWindowEvent()
		Case #PB_Event_CloseWindow
			Break
		Case #PB_Event_Gadget
			If EventGadget() = 0
				ModalWindow()
			EndIf
	EndSelect
ForEver
M.

Re: Fenetre Modal

Publié : mer. 24/févr./2016 14:49
par Anonyme2
Spock a écrit :
Mesa a écrit :Que les débutants en programmation, étudient l'excellent code de falsam (plus haut).
ce qui par deduction veut dire que les autres codes sont de la merde ! :roll:
Ha, quel vilain ce mesa :mrgreen:

Re: Fenetre Modal

Publié : mer. 24/févr./2016 15:47
par Ollivier
Michael Douglas a écrit :une fenetre modal c'est une fenetre ou on bloque les events !!
Alors c'était dû à ça, ma grosse prise de tête en solitaire il y a 7 ans dans cet ancien sujet pour des fenêtres "modales" (requesters) non compatibles avec les threads... Quand je programmais deux alarmes (ou plus que deux) trop proches en temps l'une de l'autre, les requêtes devenaient ingérables, d'où une reprogrammation perso des requêtes "message" et "input".

Re: Fenetre Modal

Publié : jeu. 25/févr./2016 9:01
par Mesa
une fenetre modal c'est une fenetre ou on bloque les events !!
C'est faux et archi faux. Comment pourrait-on fermer une fenêtre dans ce cas ! ?

Tu induis en erreur les vrais débutants.
ce qui par deduction veut dire que les autres codes sont de la merde !
Je n'ai jamais dit ça. 8O
Par contre, tes déductions... :wink:

M.

Re: Fenetre Modal

Publié : jeu. 25/févr./2016 9:15
par Mesa
@ollivier: En effet, par définition, la "modalité" et les thread ne vont pas bien ensemble.
Disons, qu'on se lance dans des problèmes inutiles, comme tu l'as dit.
WIKIPEDIA: Fenêtre modale

Une fenêtre modale est, dans une interface graphique, une fenêtre qui prend le contrôle total du clavier et de l'écran. Elle est en général associée à une question à laquelle il est impératif que l'utilisateur réponde avant de poursuivre, ou de modifier quoi que ce soit.



M.

PS: Mes interventions, n'ont qu'un seul but: au hasard d'un thread, pointer du doigt des pièges de programmation afin d'aider le débutant et de l'encourager à poursuivre en programmation. Si vous n’êtes pas débutant, merci de ne prend les prendre en compte.

Re: Fenetre Modal

Publié : jeu. 25/févr./2016 10:34
par Ar-S
Spock a écrit : certes , au lieu de
une fenetre modal c'est une fenetre ou on bloque les events !!
j'aurai du ecrire :
une fenetre modal c'est une fenetre ou on bloque les events des autres fenetres !!
Oui je pense que la confusion vient de là.

Re: Fenetre Modal

Publié : mer. 09/mars/2016 20:02
par Jacobus
Salut les gros !
Je vois que même après des siècles d'absence je retrouve les mêmes chamailleries, avec les mêmes potos, c'est cool :)

Re: Fenetre Modal

Publié : jeu. 10/mars/2016 6:12
par Anonyme2
Jacobus a écrit :Salut les gros !
Tu m'as démasqué :mrgreen:

Salut Jacobus, vraiment content de lire un peu :D

Ca faisait un moment

Re: Fenetre Modal

Publié : jeu. 10/mars/2016 9:39
par Ar-S
Hey :) un nom sortie du passé. ça fait plaisir !
Bonjour Jacobus :P

Re: Fenetre Modal

Publié : jeu. 10/mars/2016 10:47
par Kwai chang caine
Le saumon......la riviere.....la source ..... :mrgreen:

Re: Fenetre Modal

Publié : ven. 11/mars/2016 8:00
par Jacobus
Kwai chang caine a écrit :Le saumon......la riviere.....la source ..... :mrgreen:
Bah, c'est le printemps, j'ai la queue qui frétille...

Re: Fenetre Modal

Publié : lun. 14/mars/2016 12:01
par Kwai chang caine
:lol: :lol:
Fait quand même attention aux gelées tardives :mrgreen: