Black Friday = Pricewatch Bekijk onze selectie van de beste Black Friday-deals en voorkom een miskoop.
Toon posts:

[VB6] Timers en actie daarop

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi allemaal,

Misschien een rare titel maar ik had een vraag, Als ik een Timer gebruik met 30 seconden, dan wil ik na die 30 seconden een actie uitvoeren en de timer disablen. Nu deed ik dit via een tweede timer. Maar is er ook een manier om dit in een timer te gebruiken?

Zoiets als :
Visual Basic:
1
If Timer.interval = 30 seconden Then ... 


Of is dit helemaal niet mogelijk? Klinkt een beetje als een n00b maar VB6 is lang geleden voor mij :)

Thanks

  • LED-Maniak
  • Registratie: Oktober 2003
  • Laatst online: 19:57
Jeetje, een beetje googlen en je heb het letterlijk op de eerste pagina dus 2 seconde werk |:(

Mitsubishi externe temperatuur sensor (Home Assistant compatible): V&A - ClimaControl - Ook voor Panasonic & LG.


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
In het timer event kun je toch gewoon mytimer.enabled = false doen en je code uitvoeren :?
Visual Basic:
1
2
3
4
Private Sub MyTimer_Timer()
    MyTimer.Enabled = False
    DoSomething()
End Sub
LED-Maniak schreef op zondag 14 september 2008 @ 01:04:
Jeetje, een beetje googlen en je heb het letterlijk op de eerste pagina dus 2 seconde werk |:(
Allemaal leuk en aardig, maar erg constructief is je post niet als je niet aangeeft waarop je hebt gezocht. En dat valt dus onder niet constructieve replies. Doe voortaan gewoon een TR of zeg niks. Je hoeft niet te posten hoor ;)

[ Voor 57% gewijzigd door RobIII op 14-09-2008 01:29 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • danslo
  • Registratie: Januari 2003
  • Laatst online: 22:09
Inderdaad wat RobIII zegt, daarvoor wel even je interval van die timer op 30000 zetten (milliseconden).

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
cls schreef op zondag 14 september 2008 @ 01:33:
Inderdaad wat RobIII zegt, daarvoor wel even je interval van die timer op 30000 zetten (milliseconden).
En enablen ;) Maar beide lijkt me vanzelfsprekend :X

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • ThunderNet
  • Registratie: Juni 2004
  • Laatst online: 14-11 15:23

ThunderNet

Flits!

Als je in de design-mode dubbelklikt op je timer-icoontje. Dan kom je automatisch in de juiste sub aan die hij dan voor je aanmaakt.

Heb je liever vooraf, of achteraf, dat ik zeg dat ik geen flauw idee heb wat ik doe?


Verwijderd

Topicstarter
Mhh jah, maar hoe ga ik dan in die timer terug tellen van 30 naar 0 en dan bij 0 de actie van de timer uitvoeren, normaliertijd deed ik die via 2 a 3 timers, maar nu wil ik kijken of dit via 1 kan..

Ik snap er weinig van haha, excuses voor het zo dom overkomen en zo vragend, ik had al zitten neuzen op google maar dat wil niet echt

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op zondag 14 september 2008 @ 02:50:
Mhh jah, maar hoe ga ik dan in die timer terug tellen van 30 naar 0 en dan bij 0 de actie van de timer uitvoeren, normaliertijd deed ik die via 2 a 3 timers, maar nu wil ik kijken of dit via 1 kan..
Eh, dat is andere informatie die je even 'vergeten' bent in je TS te vermelden?

Enniehoe; je maakt een globale var binnen dat form, telt die af in je timer event (die dus 1 sec. bedraagt??) en als je var 0 is disable je de timer. Redelijk basic stuff als je het mij vraagt.

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Option Explicit

Private Seconds As Integer

Private Sub Form_Load()
    Seconds = 30
    Timer1.Interval = 1000 'Iedere seconde een keer afgaan
    Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
    Seconds = Seconds - 1
    Label1.Caption = "Nog " & Seconds & " seconden..."
    If Seconds = 0 Then
        Timer1.Enabled = False
        DoSomething
    End If
End Sub


Overigens als je "exact" 30 seconden wil dan zou ik het sowieso anders doen, die timer garandeert namelijk niet precies te zijn...

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Option Explicit

Private EventStart As Date

Private Sub Form_Load()
    EventStart = DateAdd("s", 5, Now)
    Timer1.Interval = 250  '4 keer per seconde afgaan zodat we het label met een 'preciesie' van 250msec bijwerken.
    Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
    Label1.Caption = "Nog " & DateDiff("s", Now, EventStart) & " seconden..."
    If Now >= EventStart Then
        Timer1.Enabled = False
        DoSomething
    End If
End Sub

Mocht de timer nu, om welke reden dan ook, een keer of 5 niet op tijd firen dan krijg je je uiteindelijke event toch nog (ongeveer) op het gewenste moment, in plaats van dat je een skew krijgt.

So much voor het voorkauwen vandaag. De rest (if anything) mag je zelf uitvogelen. Ik kan dan ook niet meer zeggen dan neem eens een cursusje programmeren ;)

[ Voor 25% gewijzigd door RobIII op 14-09-2008 03:02 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1