Je suis en train d'essayer de créer une petite webapp et je rencontre une difficulté lorsque j'essaye d'utiliser des events sur une petite fenêtre qui se lance à partir de la fenêtre principale. Je vous mets le code ici:
Code : Tout sélectionner
;EnableExplicit
#Window = 0
#window1 = 1
#Menu = 0
Enumeration
#btn
#btn2
#btn3
#Str1
#Str2
#sound1
EndEnumeration
Global ww, hh
Define desktop = ExamineDesktops()
ww = DesktopWidth(desktop)
hh = DesktopHeight(desktop)
If ww < 400 Or hh < 400 : End : EndIf
Declare Handler2()
Procedure open_window_login()
OpenWindow(#Window1, 0, 0, 130, 110, "login test", #PB_Window_ScreenCentered | #PB_Window_TitleBar)
StringGadget(#Str1, 5, 5, 120, 30, "Nickname", #PB_String_PlaceHolder)
StringGadget(#Str2, 5, 40, 120, 30, "Password", #PB_String_PlaceHolder)
ButtonGadget(#btn2, 5, 75, 60, 30, "Ok")
ButtonGadget(#btn3, 65, 75, 60, 30, "Cancel")
BindGadgetEvent(#PB_Event_Gadget, @Handler2())
EndProcedure
Procedure Handler2()
Debug "#btn2 = " + #btn2
Debug "#btn3 = " + #btn3
Event = EventGadget()
Debug "Event = " + Event;C'est ici que ça ne va pas. Le gadget n'est jamais égal à 2 et je ne comprends pas pourquoi.
Select Event
Case #btn2
MessageRequester("Button click event on gadget #btn2")
Case #btn3
MessageRequester("Button click event on gadget #btn3");Ça ne passe jamais par là...
EndSelect
EndProcedure
Procedure Handler()
DisplayPopupMenu(#Menu, WindowID(#Window))
EndProcedure
Procedure EventsMenu()
Select EventMenu()
Case 0 To 2
MessageRequester("Menu")
Case 3
open_window_login();C'est ce choix qu'il faut tester.
Case 4
PlaySound(#sound1)
EndSelect
EndProcedure
If ww < hh
OpenWindow(#Window, 0, 0, ww, hh, "test.sb", #PB_Window_Background)
Else
OpenWindow(#Window, 0, 0, 500, 770, "test.sb", #PB_Window_ScreenCentered | #PB_Window_TitleBar)
EndIf
ButtonGadget(#btn, 5, 5, 30, 30, Chr($2630))
GadgetToolTip(#btn, "Menu")
If CreatePopupMenu(#Menu)
MenuItem(0, "New")
MenuItem(1, "Open")
MenuItem(2, "Save as")
MenuItem(3, "login");C'est ce choix qu'il faut tester.
MenuItem(4, "Play sound")
EndIf
If InitSound()
LoadSound(#sound1, "./res/Recording_10.mp3")
EndIf
BindGadgetEvent(#btn, @Handler())
BindEvent(#PB_Event_Menu, @EventsMenu())
Je précise, qu'avant j'avais déjà programmé quelques petit utilitaires en Purebasic et que je me servais de l'outil EventDesigner pour gérer mes Events. Et du coup, je ne sais pas vraiment comment ça fonctionne et ça me pose un problème en Spiderbasic car je n'ai plus ni Formdesigner ni Eventdesigner.
Si vous avez un lien vers un tuto sur les Events, je suis preneur. Ou un exemple de code assez complet qui me permettrait de comprendre?
Je vous remercie d'avance pour vos réponses.