Du skriver koden själv....... Du kan även använda ett formulär där du lägger din timer, även i en dll fil. Jag kollade på din kurs, Peter men jag förstår inte en sak. Hur vet loopen att den angivna tiden har gått? Vad är det som "spenderar" tiden? Förstår du vad jag menar? Dessutom så kan ju ingen annan kod exekveras medan loopen körs(kan kanske lösas genom att lägga den i en dll). Kan man inte läga en referens på något vis till en timer och använda den på det viset? Urk, jag känner att jag har lite fel på ett par punkter.. Du kan använda dig av API anropen SetTimer och KillTimer. Nackdelen är man inte kan debuga om man startat timern. Eftersom windows då anropar en funktion som inte finns, vilket får vb att krasha. Hej Frans. Du kan lägga nästan all kod i en klass modul.. men sista funktionen MÅTE ligga i en Bas modul, annars kommer inte koden att funka.. Du bör nämna att vb krashar om timer är startad och mån går in i Break mode. Efter som Windows anropar en funktion som inte längre finns i minnet... Tack för alla svar, det verkar so om det inte finns någon perfekt lösning på problemet överhuvudtaget. därför att timern är en activex controll inte dll ... Sv: Timer i Class
Kolla min kurs http://www.pellesoft.nu/login/articles/other/oo_grund.asp
Längst ner på den sidan hittar du en timer i en klass. Med events och allt.
/lycka tillSv: Timer i Class
Sv: Timer i Class
Det är denna subben jag snackar om:
<code>
Public Sub startTimer()
Dim s As Single 'Variabel för timern
ticking = True 'Variabel=true då timern tickar
While ticking = True 'Så länge som timern tickar
s = Timer 'Spar timer-tiden
'Så länge som tiden är mindre än starttid +
'TimerIntervallet så loopa. DoEvents låter
'Systemet exekvera viss kod. Annars verkar det
'Som systemet hänger sig.
While Timer < (s + timerInterval / 1000)
DoEvents
Wend
RaiseEvent Tick 'När tiden gått, trigga händelsen
Wend
End Sub
</code>
mvh FransSv: Timer i Class
Man kan ju lösa detta genom att kapsla koden i en ActiveX Dll.Sv: Timer i Class
Kursen är till för att visa på OOP programmering och inte hur man
bygger en timer på bästa sätt.
Jag ville bara visa på att så här kan man göra om man vill.
Du har delvis rätt att annan kod inte kommer att kunna exekvera.
Men koden i alla events kommer att kunna köras. Fast då exekveringen
sker i endast en tråd så kommer timern halta om exekveringstiden för
en händelse överstiger timer.intervall
Men man kan ju inte få allt.
Jag är hittils den enda som givit ett konkret förslag till lösning. Ni andra
har bara sagt att si eller så kan man göra, men inte viast hur.
/peterhSv: Timer i Class
Sedan tror jag iofs på att man lär sig mer om man får en teknik förklarad för sig och får lösa problemet själv istället för att få en lösning serverad..
<code>
'// Callback Module
'// Created : 000705 - Patrik Löwendahl (Cornerstone Advanced Consulting)
'// Last rev: 010419 - Patrik Löwendahl (Cornerstone Advanced Consulting)
'// Bugs :
'// Notes :
Option Explicit
'// Callback timer api's
Private Declare Function SetTimer Lib "user32" (ByVal hWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Private Declare Function KillTimer Lib "user32" (ByVal hWnd As Long, ByVal nIDEvent As Long) As Long
Dim cbID As Long '// Callback ID (handle)
'// Startup
'// Timeout - my god..
Sub StartCallBack(ByVal Timeout As Long)
'// Don't start the timer if already running.
If cbID = 0 Then
'// start callback timer
cbID = SetTimer(0, 0, Timeout, AddressOf CheckEvent_CBK)
End If
End Sub
'// shutdown
Sub StopCallback()
'// Don't stop the timer if it isn't running.
If cbID Then
'// safe release of the timer object...
KillTimer 0, cbID
cbID = 0
End If
End Sub
'// Changed? This function need to be in a Basic module otherwise the code will fail
Sub CheckEvent_CBK(ByVal hWnd As Long, ByVal uMsg As Long, ByVal idEvent As Long, ByVal SysTime As Long)
'// Look for the event, play it safe to not get any errors
MsgBox "tjohoo"
End Sub
</code>Sv: Timer i Class
För att undvika detta kan man kapsla koden i en ActiveX Dll.Sv: Timer i Class
Jag bara undrar...varför kan man inte lägga en referens till timerobjektet i klassen? Vad gör att man bara kan använda timern i ett formulär? Jag försöker inte hitta en lösning till mitt proiblem, jag vill bara förstå varför inte en referens är en lösnning :)
mvh FransSv: Timer i Class
OM du tar koden jag gav dig och kompilerar den till en dll kan du sätta referens till den och använda den som en timer..