Hi, a few days ago I was just trying to imitate the behavior of a modal dialog box.
This was the result:
Code: Select all
; DIALOG EMULATION
;- Window Constants
;
Enumeration
#Window_0 = 1
#Window_1
#Window_2
EndEnumeration
;- Gadget Constants
;
Enumeration
#Button_0
#Button_1
#Button_2
#Button_3
EndEnumeration
Procedure Open_Window_0()
If OpenWindow(#Window_0, 237, 44, 519, 410, "Main", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
ButtonGadget(#Button_0, 200, 360, 140, 30, "Show Dialog!")
EndIf
EndProcedure
Procedure Open_Window_1(parentid)
If OpenWindow(#Window_1, 357, 104, 308, 202, "Dialog", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar, WindowID(parentid) )
ButtonGadget(#Button_1, 120, 160, 60, 30, "&OK")
ButtonGadget(#Button_2, 70, 50, 160, 30, "Other Dialog!")
EndIf
EndProcedure
Procedure Open_Window_2(parentid)
If OpenWindow(#Window_2, 403, 117, 226, 179, "Other Dialog", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar, WindowID(parentid) )
ButtonGadget(#Button_3, 70, 140, 90, 30, "Close")
EndIf
EndProcedure
Procedure StartModal(diagid, parentid)
Select diagid
Case #Window_1
Open_Window_1(parentid)
Case #Window_2
Open_Window_2(parentid)
EndSelect
DisableWindow(parentid, 1)
EndProcedure
Procedure StopModal(diagid, parentid)
CloseWindow(diagid)
DisableWindow(parentid, 0)
EndProcedure
; ------------------------------------------------------------------
Open_Window_0()
Repeat
EventID = WaitWindowEvent()
Window = EventWindow()
Select EventID
Case #PB_Event_Gadget
Select EventGadget()
Case #Button_0
StartModal(#Window_1, #Window_0)
Case #Button_1
StopModal(#Window_1, #Window_0)
Case #Button_2
StartModal(#Window_2, #Window_1)
Case #Button_3
StopModal(#Window_2, #Window_1)
EndSelect
Case #PB_Event_CloseWindow
Select Window
Case #Window_0 : Quit = 1
Case #Window_1 : StopModal(#Window_1, #Window_0)
Case #Window_2 : StopModal(#Window_2, #Window_1)
EndSelect
EndSelect
Until Quit = 1
Fabio