Du hast da einen Fehler gemacht, sodass deine Variable meinText.s eigentlich nie gefüllt wird.
Code: Alles auswählen
Case 3
If GetGadgetText(1)<>""
meinText.s=GetGadgetText(2)
Problem hierbei ist : 1 ist der Button, nicht das StringGadget. Und da der Button einen Text enthält wird diese Bedingung nie erreicht !
Code: Alles auswählen
Case 1
CloseWindow(1)
HideWindow(0, 0)
UnbindGadgetEvent(2, @gadgetEvent_newWindow())
UnbindGadgetEvent(3, @gadgetEvent_newWindow())
Wenn man ein Fenster schliesst, werden alle Gadgets darauf ebenfalls geschlossen. Somit kommt es hier zu einer Fehlermeldung.
UnBindGadgetEvent() muss VOR dem CloseWindow() kommen.
Code: Alles auswählen
Declare.s gadgetEvent_newWindow()
[...]
Procedure.s gadgetEvent_newWindow()
Hier ist das .s die Ursache für die Fehlermeldung. Es darf nicht sein. Rückgabewert ist und bleibt Integer.
Um das ganze dann für Dich funktionsfähig zu machen, hast du den richtigen Ansatz bereits drin. Die globale Variable
meinText.s.
Und um dieses kleine Beispiel komplett mit "Callbacks" zuzupflastern hier ein komplett geändertes Beispiel :
Code: Alles auswählen
EnableExplicit
Global meinText.s
Declare newWindow()
Enumeration Windows 1
#Window_Main
#Window_New
EndEnumeration
Enumeration Gadgets 1
#Button_NewWindow
#String
#Button_Ok
EndEnumeration
Procedure Events_Gadgets()
Select EventGadget()
Case #Button_NewWindow
newWindow()
Case #Button_Ok
If GetGadgetText(#String)<>""
meinText.s=GetGadgetText(#String)
CloseWindow(1)
HideWindow(0, 0)
Debug "Mein Text lautet : " + meinText.s
meinText = ""
EndIf
EndSelect
EndProcedure
Procedure Event_CloseWindow()
Select EventWindow()
Case 0
End
Case 1
UnbindGadgetEvent(2, @Events_Gadgets())
UnbindGadgetEvent(3, @Events_Gadgets())
CloseWindow(1)
HideWindow(0, 0)
EndSelect
EndProcedure
Procedure newWindow()
OpenWindow(1, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
StringGadget(#String, 10, 10, 100, 20, "", 0)
ButtonGadget(3, 120, 10, 100, 20, "OK", 0)
BindGadgetEvent(3, @Events_Gadgets())
EndProcedure
Define Event
If OpenWindow(0, 0, 0, 300, 100, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ButtonGadget(#Button_NewWindow, 75, 10, 150, 20, "Button other Window", 0)
BindGadgetEvent(#Button_NewWindow, @Events_Gadgets())
BindEvent(#PB_Event_CloseWindow, @Event_CloseWindow())
Repeat
Event = WaitWindowEvent()
ForEver
EndIf
Ich hoffe, dass ist Dir nicht zu kompliziert
