Problème d'utilisation des Events

Rubriques generale concernant SpiderBasic
jph
Messages : 68
Inscription : dim. 17/juil./2022 16:02

Problème d'utilisation des Events

Message par jph »

Bonjour,

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())
C'est dans la procédure Handler2() que ça ne va pas et je ne sais pas pourquoi?

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.