@Sommertv
Zitat:
Lässt sich eine for - next Schleife auch auf diese Weise beeinflussen?
Ja mann kann so ganze Proceduren automatisch aufrufen (auch For Next Schleifen),
zudem ist es auch möglich mehere Timer zu verwenden.
Edit: wenn mann in einer Schleife einen Abbruch machen möchte gibt es dafür den Befehl Break, das gilt für alle Schleifen in Purebasic
Code:
For t=0 to 100
If Stop
Break
Endif
next
hier ein Beispiel:
Code:
EnableExplicit
Enumeration
#Counter
#String0
#BtnStart
#BtnStop
#BtnReset
#MeinTimer
#MeinTimer2
EndEnumeration
Define.l Event, EventWindow, EventGadget, EventType, EventMenu,Start,Zahl, StopFlag,Eintrag,t
Procedure Open_Counter()
OpenWindow(#Counter, 853, 168, 600, 440, "Counter")
StringGadget(#String0, 0, 5, 240, 25, "0")
ButtonGadget(#BtnStart, 0, 30, 80, 25, "Start")
ButtonGadget(#BtnStop, 80, 30, 80, 25, "Stop")
ButtonGadget(#BtnReset, 160,30,80,25, "Reset")
AddWindowTimer(#Counter, #MeinTimer, 500) ;1000ms= 1sec
AddWindowTimer(#Counter, #MeinTimer2, 2500) ;1000ms= 1sec
EndProcedure
Open_Counter()
; Event Schleife
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Timer
If EventTimer()=#MeinTimer
If Start
SetGadgetText(#String0,Str(Zahl))
If StopFlag = 1
Zahl+1
EndIf
Else
SetGadgetText(#String0,Str(Zahl))
EndIf
Eintrag+25 : If Eintrag> 255 : eintrag=0 : EndIf
ElseIf EventTimer()=#MeinTimer2
SetWindowColor(#Counter,RGB(200,200,eintrag))
For t =0 To 5
If StopFlag=0
Debug "schleife wurde unterbrochen"
Break
EndIf
Debug "mache irgendwas"
Next
Endif
Case #PB_Event_Menu
EventMenu = EventMenu()
Case #PB_Event_Gadget
EventGadget = EventGadget()
If EventGadget = #String0
ElseIf EventGadget = #BtnStart
Start=#True
StopFlag = 1
ElseIf EventGadget = #BtnStop
Start=#False
StopFlag = 0
ElseIf EventGadget = #BtnReset
Start=#False : Zahl = 0
EndIf
Case #PB_Event_CloseWindow
EventWindow = EventWindow()
If EventWindow = #Counter
CloseWindow(#Counter)
End
EndIf
EndSelect
ForEver