Verfasst: 09.10.2005 15:47
Nein, das geht nicht.
Das deutsche PureBasic-Forum
https://www.purebasic.fr/german/
Möglich ist so ziemlich alles, aber es ist nicht nötig. Kiffi hat Dirhiltwin hat geschrieben:... meine erste Frage hat leider keiner beantwortet - ist es irgendwie möglich, dass man
EventGadgetID() so manipulieren, dass es entweder keinen Wert zurückgibt, oder einen vorgegebenen wie z.B. 15397 oder #Button_Start?
Wie Kiffi schon sagte, hier fehlt der Check ob (Wait)WindowEventAND51 hat geschrieben:Code: Alles auswählen
Repeat If GetGadgetState(6629) = 1 And EventGadgetID() = 6629 text$=InputRequester("input","Bitte Text eingeben","default wert") EndIf ; ; weiterer Code ; Delay(Random(2)) Until WindowEvent() = #PB_Event_CloseWindow
Code: Alles auswählen
Procedure EventGadget_ID(Merken.b)
Static GID
if Merken or EventGadgetID() <> GID
GID = EventGadgetID()
else
GID = -1
endif
ProcedureReturn GID
EndProcedure
Code: Alles auswählen
AktCountdownStatus=1
Counter=1000000
If OpenWindow(0,0,0,120,60,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"Countdown") And CreateGadgetList(WindowID(0))
AddKeyboardShortcut(0,#PB_Shortcut_Escape,27)
If TextGadget(1,5,8,WindowWidth()-10,20,Str(Counter),#PB_Text_Center)
If ButtonGadget(2,20,30,WindowWidth()-40,22,"Start")
ActivateGadget(2)
Repeat
Delay(10)
If AktCountdownStatus=2
Counter - 1
SetGadgetText(1,Str(Counter))
EndIf
Event = WindowEvent()
If Event=#PB_Event_Gadget
If EventGadgetID()=2
AktCountdownStatus + 1
If AktCountdownStatus=2
SetGadgetText(2,"Stop")
ElseIf AktCountdownStatus = 3
SetGadgetText(2,"Reset")
Else
AktCountdownStatus = 1
SetGadgetText(2,"Start")
Counter=1000000
SetGadgetText(1,Str(Counter))
EndIf
EndIf
EndIf
Until Event=#PB_Event_CloseWindow Or (Event=#PB_Event_Menu And EventMenuID()=27)
EndIf
EndIf
CloseWindow(0)
EndIf
End
Code: Alles auswählen
If OpenWindow(0,0,0,120,60,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"Countdown") = 0 : End : EndIf
If CreateGadgetList(WindowID(0)) = 0 : End : EndIf
AddKeyboardShortcut(0, #PB_Shortcut_Escape, 27)
TextGadget(1, 5, 8, WindowWidth() - 10, 20, Str(Counter), #PB_Text_Center)
ButtonGadget(2, 20, 30, WindowWidth() - 40, 22, "Start")
ActivateGadget(2)
AktCountdownStatus.l = 1
Counter.l = 0
CountDelay.l = 10
Repeat
If AktCountdownStatus = 2
While ElapsedMilliseconds() > AktDelay
Counter + 1
AktDelay + CountDelay
Wend
SetGadgetText(1, Str(Counter))
EndIf
EventID.l = WindowEvent()
Select EventID
Case #PB_Event_Gadget
If EventGadgetID() = 2
AktCountdownStatus + 1
If AktCountdownStatus = 2
AktDelay = ElapsedMilliseconds() + CountDelay
SetGadgetText(2, "Stop")
ElseIf AktCountdownStatus = 3
SetGadgetText(2, "Reset")
Else
AktCountdownStatus = 1
SetGadgetText(2,"Start")
Counter = 0
SetGadgetText(1, Str(Counter))
EndIf
EndIf
Case 0
Delay(1)
EndSelect
Until EventID = #PB_Event_CloseWindow Or (EventID = #PB_Event_Menu And EventMenuID() = 27)
CloseWindow(0)
Nunja, auf Genauigkeit war's ja auch nicht programmiert - war ja nur'n Beispiel für 3 Funktionen bei ein und demselben einem Button.NicTheQuick hat geschrieben:So finde ich es schöner und vor allem genauer:
Das wäre eine Möglichkeit, aber so ist das ganze auch mehrnco2k hat geschrieben:ich würde den zähler in einen thread packen, dann kann man WaitWindowEvent() für das fenster verwenden.
c ya,
nco2k