habe gestern ein wenig mit Events gespielt - sowie dynamisch eine neue Oberfläche per Button Click definiert.
Ich habe einfach alles gelöscht mit FreeGadget - dann einen Button den es schon gab mit Copy und Paste neu angelegt. Nur feuert er mir hier dann ein falsches Event -nämlich Hello World anstelle das Close Event.
Kommentiere ich dies noch ein:
Code: Alles auswählen
Procedure Free_Gadget_Event(EventType)
FreeGadget(#PB_All)
;Textfeld = TextGadget(#PB_Any, 0, 0, 204, 112, "Warte bis Close Button erscheint")
;SetGadgetColor(Textfeld, #PB_Gadget_BackColor,RGB(64,128,128))
Funktioniert alles wie erwartet. Weiß hier jemand den Grund?
Form:
Code: Alles auswählen
Global MainForm
Global Button_Hello, Button_Close, Textfeld, Button_Free_Gadget
Declare Hello_Ereignis(EventType)
Declare Close_Ereignis(EventType)
Declare Free_Gadget_Event(EventType)
Procedure OpenMainForm()
MainForm = OpenWindow(#PB_Any, 0, 0, 200, 140, "Regel Generator", #PB_Window_SystemMenu)
Button_Hello = ButtonGadget(#PB_Any, 0, 112, 100, 25, "Hello")
Button_Close = ButtonGadget(#PB_Any, 101, 112, 100, 25, "Close")
Textfeld = TextGadget(#PB_Any, -4, 0, 204, 112, "Dies ist ein Event Test")
SetGadgetColor(Textfeld, #PB_Gadget_BackColor,RGB(64,128,128))
Button_Free_Gadget = ButtonGadget(#PB_Any, 42, 49, 100, 25, "FreeGagdet()")
EndProcedure
Procedure MainForm_Events(event)
Select event
Case #PB_Event_CloseWindow
ProcedureReturn #False
Case #PB_Event_Menu
Select EventMenu()
EndSelect
Case #PB_Event_Gadget
Select EventGadget()
Case Button_Hello
Hello_Ereignis(EventType())
Case Button_Close
Close_Ereignis(EventType())
Case Button_Free_Gadget
Free_Gadget_Event(EventType())
EndSelect
EndSelect
ProcedureReturn #True
EndProcedure
Code:
Code: Alles auswählen
IncludeFile("Form.pbf")
Global CloseVar.l
CloseVar = -1
OpenMainForm()
; Die übliche Haupt-Ereignisschleife, die einzige Änderung ist der automatische Aufruf der
; für jedes Fenster generierten Ereignis-Prozedur.
Repeat
If CloseVar <> 1
event = WaitWindowEvent()
MainForm_Events(event)
EndIf
Until Event = #PB_Event_CloseWindow Or CloseVar = 1; Beenden, wenn eines der Fenster geschlossen wird.
; --------------------------------------------
;-------------Ereignissprozeduren-------------
;---------------------------------------------
Procedure Free_Gadget_Event(EventType)
FreeGadget(#PB_All)
;Textfeld = TextGadget(#PB_Any, 0, 0, 204, 112, "Warte bis Close Button erscheint")
;SetGadgetColor(Textfeld, #PB_Gadget_BackColor,RGB(64,128,128))
Delay(3000)
Button_Close = ButtonGadget(#PB_Any , 101, 112, 100, 25, "Close")
;SetGadgetText(Textfeld,"Button Da!")
EndProcedure
Procedure Hello_Ereignis(EventType)
MessageRequester("Hello", "Hello World!!")
EndProcedure
Procedure Close_Ereignis(EventType)
;SetGadgetText(Textfeld,"Bla Bla")
CloseVar = 1
EndProcedure