; ; ------------------------------------------------------------ ; ; SpiderBasic - Multi window example file ; ; (c) Fantaisie Software ; ; ------------------------------------------------------------ ; ; In this example, we will use the 'module' feature to handle two windows in a clean way ; ; Declare the find window ; DeclareModule FindWindow ; DeclareModule is the module public items (here only 2 functions) Declare Open(ParentWindow) Declare Close() EndDeclareModule Module FindWindow ; Everything here is private to the module, so we can reuse the same variable names Global Window, CloseButton, FindField Procedure OnClose() Debug "Find field content: " + GetGadgetText(FindField) Close() EndProcedure Procedure Open(ParentWindow) If Not IsWindow(Window) Window = OpenWindow(#PB_Any, 10, 400, 300, 90, "Find...", #PB_Window_WindowCentered, WindowID(ParentWindow)) FindField = StringGadget(#PB_Any, 10, 10, 280, 30, "") CloseButton = ButtonGadget(#PB_Any, 10, 50, 100, 30, "Close") BindGadgetEvent(CloseButton, @OnClose()) Else SetActiveWindow(Window) EndIf SetActiveGadget(FindField) ; Always put the focus on the field EndProcedure Procedure Close() CloseWindow(Window) EndProcedure EndModule ; An now the main window ; DeclareModule MainWindow Declare Open() Declare Close() EndDeclareModule Module MainWindow Global Window Procedure OnFind() FindWindow::Open(Window) EndProcedure Procedure OnShortcut() Debug "Shortcut main: " + EventMenu() EndProcedure Procedure Open() Window = OpenWindow(#PB_Any, 10, 10, 500, 310, "Main") EditorGadget = EditorGadget(#PB_Any, 10, 10, 480, 250) FindGadget = ButtonGadget(#PB_Any, 10, 270, 150, 30, "Open find window") BindGadgetEvent(FindGadget, @OnFind()) EndProcedure Procedure Close() CloseWindow(Window) EndProcedure EndModule ; Open our main window ; MainWindow::Open()