Da mir die Trennung nach "Events" mein Programm zu unübersichtlich machte habe ich den Event-Verteiler nach meinen Fenstern aufgebaut.
Beispiel:
Code: Alles auswählen
Repeat
Event.i = WaitWindowEvent()
Select WindowAktiv.i
;
;Hauptmenü
;
Case #ID_HauptmenueWindow
...
...
Case #ID_....
...
...
;
;Einrichten Sequenzer
;
Case #ID_EinrichtenSequenzerWindow
Select Event.i
Case #PB_Event_Menu
Gadget.i = GetActiveGadget()
Select Gadget.i
Case #ID_EinrichtenSequenzerEingabefeldSequenzernummer
KeyNumParGadget(Gadget.i, #ID_EinrichtenSequenzerShortcutReturn, .......
Case #ID_.....
....
EndSelect
Case #PB_Event_Gadget
Gadget.i = EventGadget()
ZahlentastaturAuswerten(Gadget.i)
Select Gadget.i
Case #ID_EinrichtenSequenzerButtonZurueck
EinrichtenSequenzerDatenuebernahme()
SpeichernSequenzerparameter()
CloseWindow(WindowAktiv.i) ;********************
WindowAktiv.i = Einrichtenmenue() ;********************
Case #ID_EinrichtenSequenzerEingabefeldSequenzernummer
....
EndSelect
Case #PB_Event_SysTray
Case #PB_Event_Timer
Case #PB_Event_CloseWindow
Case #PB_Event_Repaint
Case #PB_Event_SizeWindow
Case #PB_Event_MoveWindow
Case #PB_Event_MinimizeWindow
Case #PB_Event_MaximizeWindow
Case #PB_Event_RestoreWindow
Case #PB_Event_ActivateWindow
Case #PB_Event_WindowDrop
Case #PB_Event_GadgetDrop
EndSelect
....
....
Default
Delay(1)
EndSelect
Until Quit = #True
End
"CloseWindow(WindowAktiv.i)" schließt das (einzige geöffnete) Fenster und löst damit den Event_CloseWindow aus bevor durch die folgende
Anweisung "WindowAktiv.i = Einrichtenmenue()" wieder ein neues Fenster geöffnet wird.
Da zum Zeitpunkt der Abfrage "WaitWindowEvent()" kein Fenster mehr offen ist, steigt nun zeitweise der Compiler mit der Fehlermeldung
"ERROR Mindestens ein Fenster sollte geöffnet sein um diesen Befehl zu verwenden" aus.
Gibt es irgendeine Anweisung mit der festgestellt werden kann, ob überhaupt IRGENDEIN FENSTER (also KEIN BESTIMMTES FENSTER !!!) geöffnet ist welche man der WaitWindowEvent "vorschalten" kann?
Gruß
Daffy