wenn man sich in der Hilfe die Ausführungen zur Ereignisprogrammierung (WaitWindowEvent(), EventGadget() usw.) durchliest, wirkt es auf den ersten Blick recht einfach. Aber auch wirklich nur auf den ersten Blick, weil die Beispiele dort so simpel sind, wie sie es in einer konkreten Anwendung nie sind. Also:
Ich habe eine Repeat-Until-Schleife geschrieben, der Grundstruktur aber noch etwas hinzugefügt:
Code: Alles auswählen
Repeat
Ek=WaitWindowEvent() ; Ereigniskonstante
If Ek=#PB_Event_Gadget
Select EventGadget()
Case #Op_1
…
Case #Op_2
…
Case #Chb_1
…
…
Default
…
EndSelect
Else
…
EndIf
Until Ek=#PB_Event_CloseWindow
Was mir Kopfzerbrechen bereitet, ist der Default-Part. Nach meinem Verständnis dürfte er nie angesprungen werden. Denn der If-Part wird nur ausgeführt, wenn ein Gadget angeklickt wurde. O-Ton der Hilfe:
Das hört sich für mich so an, daß ein #PB_Event_Gadget-Ereignis dann und nur dann auftritt, wenn ein Gadget angeklickt wurde. Wenn ein Gadget angeklickt wurde, dann gibt EventGadget() die Nummer des angeklickten Gadgets zurück. Was eigentlich nach dieser Theorie nicht sein kann, ist, daß ein #PB_Event_Gadget-Ereignis auftritt und EventGadget() -1 zurückgibt; denn kein angeklicktes Gadget kann die Nummer -1 haben.Nach dem Auftreten eines #PB_Event_Gadget Ereignisses … wird diese Funktion verwendet, um herauszufinden, bei welchem Gadget das Ereignis ausgelöst wurde.
Genau das passiert aber bei mir. Wenn man in den Default-Zweig Debug Ek und Debug EventGadget() schreibt, wirft der Debugger als Ergebnis 13100 (Id für #PB_Event_Gadget) und -1 aus. Das läßt nur den Schluß zu, daß das Ereignis #PB_Event_Gadget auch dann eintritt, wenn gar kein Gadget angeklickt wurde.
Wo liegt mein Denkfehler?
Vielen Dank