Re: Hinweise + Vorschläge f. bessere Befehls-Beschreibungen
Verfasst: 16.12.2018 00:11
Das deutsche PureBasic-Forum
http://forums.purebasic.com/german/
Code: Alles auswählen
EnableExplicit
Procedure ButtonHandlerA()
Debug "Click event on button #" + EventGadget()
Debug "Handled by ButtonHandler A"
EndProcedure
Procedure ButtonHandlerB()
Debug "Click event on button #" + EventGadget()
Debug "Handled by ButtonHandler B"
EndProcedure
Define Event.i
OpenWindow(0, 100, 100, 200, 90, "Click test", #PB_Window_SystemMenu)
ButtonGadget(0, 10, 10, 180, 30, "Button #0")
ButtonGadget(1, 10, 50, 180, 30, "Button #1")
BindGadgetEvent(0, @ButtonHandlerA())
BindGadgetEvent(0, @ButtonHandlerB())
BindGadgetEvent(1, @ButtonHandlerA())
BindGadgetEvent(1, @ButtonHandlerB())
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Gadget
Debug "Click event on button #" + EventGadget()
Debug "Handled by the event loop"
Debug ""
EndSelect
Until Event = #PB_Event_CloseWindow
Darum geht es an dieser Stelle nicht - sondern darum, dass in der Dokumentation die Möglichkeiten, die zur Verfügung stehen, eben auch dokumentiert sind.H.Brill hat geschrieben:Naja, ist ja auch eine Universal-Funktion, wie so manch andere.
Mit zusätzlichem [EventTyp] und EventGadget() in der Procedure
ist es ja möglich, das entsprechende Gadget und dessen Eventtype
raus zu filtern. Eigentlich würde da eine einzige Procedure für alle
Gadgets reichen.
Ich sehe es als zusätzliches Feature an, da man damit sich die ganze EventGadget - GeschichteNino hat geschrieben:BindEvent() etc.
Wie der folgende Code zeigt (getestet mit PB 5.70 unter Windows), kann anscheinend
- eine Prozedur mit mehreren Ereignissen verbunden sein,
- ein Ereignis an mehrere Proceduren gebunden sein,
- ein Ereignis, das an eine oder mehrere Prozeduren gebunden ist, außerdem auch in der Ereignisschleife abgefragt werden.
Ich beziehe mich vor allem auf den Zweck dieses Threads:H.Brill hat geschrieben:Ach so, ich dachte, du beziehst dich auf diese Aussage hier :
Hinweise + Vorschläge f. bessere Befehls-Beschreibungen etc.
Code: Alles auswählen
Case "oben"
Das hier funktioniert einwandfrei:Die PB 5.70 Hilfe hat geschrieben:Select bietet die Möglichkeit, eine schnelle Auswahl zu treffen. Das Programm führt den <Ausdruck1> aus und behält dessen Ergebnis im Speicher. Es vergleicht dann diesen Wert mit allen Werten aus den Case <Ausdrücken>, und wenn der Wert eines angegebenen Case <Ausdrucks> 'wahr' ergibt, führt es den zugehörigen Programmcode aus und verlässt die Select Struktur. Case unterstützt mehrfache Werte und Werte-Bereiche durch die Verwendung des optionalen To Schlüsselworts (nur numerische Werte). Wenn keiner der Case Werte 'wahr' ist, dann wird der Default Code (sofern definiert) ausgeführt.
Hinweis: Select akzeptiert auch Fließkommazahlen (Floats) als <Ausdruck1>, rundet diese jedoch auf die nächstgelegene Ganzzahl (Integer) ab (Vergleiche werden nur mit Ganzzahlen durchgeführt).
Code: Alles auswählen
Value.s = "exe"
Select Value
Case "exe", "dll", "lib"
Debug "Exe, Dll oder Lib"
Default
Debug "Etwas anderes"
EndSelect
Code: Alles auswählen
; Prüfung, ob ein Verzeichniseintrag vorhanden ist
; und wenn ja, ob das Verzeichnis vorhanden ist
; funktioniert so nicht
NewList verzeichnisse.s()
AddElement(verzeichnisse())
verzeichnisse() = "c:\windows"
AddElement(verzeichnisse())
verzeichnisse() = "c:\wintows"
AddElement(verzeichnisse())
For v = 0 To 2
SelectElement(verzeichnisse(), v)
verzeichnis.s = verzeichnisse()
If ExamineDirectory(0,verzeichnis.s,"")
Debug "Listeneintrag " +Str(v)+ ": Alles klar: Verzeichnis " +verzeichnisse()+ " existiert"
Else
Debug "Listeneintrag " +Str(v)+ ": Fehler: Verzeichnis " +verzeichnisse()+ " existiert nicht"
EndIf
Next
Code: Alles auswählen
ExamineDirectory(#Verzeichnis, "", "")