Hej! Okej, försöker förtydliga mig. Skapa en form med följande:<br> Hej Det är väl bra att säga till om man inte förstår... (själv förstod jag inte heller förrens vid andra förklaringen) Svenpen, jag fattade inte heller först vad han menade, men sen när jag lästa hans nästa inlägg där han förklarade det bättre så fattade jag vad han menade. Om ingen hade skrivit att man inte fattade då hade han inte gett en bättre förklaring. Och då hade han inte fått nått svar. Har inte optimerat eller nåt sånt. Utan försökt göra ett litet exempel på hur man kan lösa problemet med now(). Skulle kunna använda Timer istället. Men slipper med Date oroa sig för tolvslaget. Tycker därför det är ett rätt bra exempel. Men kom gärna med synpunkter. Tack Thomas R Hej NewBie Tack allesammans!2 st "timers" med minne
Jag en nära nog extrem "newbie" när det gäller VB, men jag undrar om någon vänlig själ skulle kunna tipsa mig hur man kan gå tillväga.
Mitt problem är följande:
I VB6 vill jag skapa en liten applikation som innehåller 2 st timers som visar förfluten tid från det att man tryckt på en startknapp för respektive timer. Resultatet skall visas i en textbox eller label eller nåt annat kul. Men det svåra (för mig) är att jag vill att om timer 1 har gått tex 3 sekunder när jag startar timer 2, ska timer 1 stanna och komma ihåg dessa 3 sekunder och sedan fortsätta därifrån när jag startar den igen. Samma sak gäller även omvänt naturligtvis.
Förstår ni vad jag menar?
/Magnus som sliter sitt hår.Sv: 2 st
Jag har ett fönster innehållande 2 st textrutor:
Samt 2 st "på-knappar."
**************X
* *
*TEXT1 KNAPP1*
*TEXT2 KNAPP2*
* *
***************
När jag trycker på KNAPP1 ska Text1 börja räkna upp tiden 1 sekund, 2 sekunder osv, varje sekund.
Om jag sedan trycker på KNAPP2 ska TEXT1 sluta räkna upp tiden och TEXT2 ska istället börja räkna upp från 0 sekunder.
Om jag sedan trycker på KNAPP1 så ska TEXT1 fortsätta räkna upp tiden från där den stannade.
Och om jag trycker på KNAPP2 skall TEXT1 stanna igen och TEXT2 skall fortsätta från den tidpunkt där den stannade.
Tydligare så?Sv: 2 st
Text1<br>
Text2<br>
Command1<br>
Command2<br>
Timer1<br>
Timer2<br>
<br>
Sätt intervall=1000 och enabled=false på de båda timerarna.<br>
Sätt text=0 i textboxarna<br>
<br>
Sedan använder du denna koden:<br>
<code>
Private Sub Command1_Click()
Timer2.Enabled = False
Timer1.Enabled = True
End Sub
Private Sub Command2_Click()
Timer1.Enabled = False
Timer2.Enabled = True
End Sub
Private Sub Timer1_Timer()
Text1 = Text1 + 1
End Sub
Private Sub Timer2_Timer()
Text2 = Text2 + 1
End Sub
</code>
Denna metod är MYCKET oprecis, om du behöver precision i tiden får du använda dig av systemtiden.<br>
<br>
/JohanSv: 2 st
>Nej
>/peterh
Dj..... dålig stil . Om du har svårt för att fatta kan
lika bra ge fae... i att svara
:-(
Sven
Okidoki "newbie du kommer att få hjälp strax.
DsSv: 2 st
ThomasSv: 2 st
Svenpen sluta klaga.Sv: 2 st
Mitt bidrag:
'Kontroller på Form1
' Text1
' Text2
' Command1
' Command2
' Timer1
Option Explicit
Const ds = 24& * 60& * 60& 'Dygn till sekunder
Private mStartTime As Date
Private mTimerIndex As Integer
Private mTime(1 To 2) As Double
Private Sub Command1_Click()
If mStartTime Then
'Om timer startad, lägg till tid till summan
mTime(mTimerIndex) = mTime(mTimerIndex) + (Now() - mStartTime)
End If
If mTimerIndex = 1 Then
'Stoppar timer
mStartTime = 0
mTimerIndex = 0
Timer1.Enabled = False
Else
'Startat timer1
mStartTime = Now()
mTimerIndex = 1
Timer1.Interval = 200
Timer1.Enabled = True
End If
End Sub
Private Sub Command2_Click()
If mStartTime Then
'Om timer startad, lägg till tid till summan
mTime(mTimerIndex) = mTime(mTimerIndex) + (Now() - mStartTime)
End If
If mTimerIndex = 2 Then
'Stoppar timer
mStartTime = 0
mTimerIndex = 0
Timer1.Enabled = False
Else
'Startat timer2
mStartTime = Now()
mTimerIndex = 2
Timer1.Interval = 200
Timer1.Enabled = True
End If
End Sub
Private Sub Timer1_Timer()
Select Case mTimerIndex
Case 1
Text1 = Round((mTime(1) + (Now() - mStartTime)) * ds)
Text2 = Round(mTime(2) * ds)
Case 2
Text1 = Round(mTime(1) * ds)
Text2 = Round((mTime(2) + (Now() - mStartTime)) * ds)
Case Else
Text1 = Round(mTime(1) * ds)
Text2 = Round(mTime(2) * ds)
End Select
End SubSv: 2 st
Tack Erik B
Det är ju som sagt lite svårt att hjälpa om man inte förstår. Det är ju trots allt det man är här för. Så jag är ärlig och svarar på frågan bara.
Inget att blir sur för va SvempaPoon ? (eller ?)
/peterh
The big sourcerercoderSv: 2 st
Min jordnära lösning. Klistr in i en Form ,följ instruktionerna
Option Explicit
DefLng A-Z
'Label1 och Label2
'Command1 och Command2
'Timer1 Enabled = False, Interval = 448
'Timer2 Enabled = False, Interval = 448
'Interval 448 därför att säkert få träff varje sekund
Dim Start As Single, Elapsed
Dim Start2 As Single, Elapsed2
Private Sub Form_Load()
Command1.Caption = "Stop"
Command2.Caption = "Stop"
Label1 = "0":Label1.Tag = "0"
Label2 = "0":Label2.Tag = "0"
End Sub
Private Sub Command1_Click()
Command1.Caption = "Klocka 1 går"
Command2.Caption = "Stop"
Timer1.Enabled = True
Timer2.Enabled = False
Command1.Enabled = False
Command2.Enabled = True
Start = Timer
Label2.Tag = Label2
End Sub
Private Sub Command2_Click()
Command2.Caption = "Klocka 2 går"
Command1.Caption = "Stop"
Timer2.Enabled = True
Timer1.Enabled = False
Command2.Enabled = False
Command1.Enabled = True
Start2 = Timer
Label1.Tag = Label1
End Sub
Private Sub Timer1_Timer()
'Om midnatt passeras
If Start > Timer Then Start = Start - 86400
Elapsed = Timer - Start
Label1 = Elapsed + CLng(Label1.Tag)
End Sub
Private Sub Timer2_Timer()
'Om midnatt passeras
If Start2 > Timer Then Start2 = Start2 - 86400
Elapsed2 = Timer - Start2
Label2 = Elapsed2 + CLng(Label2.Tag)
End Sub
mvh
SvenTack så mycket!
Nu har jag fått alltihop att fungera.
Och hacka inte på varandra, det var bra att ni talade om att jag var otydlig. Jag hade så bråttom när jag skrev första gången.
Men än en gång, stort tack!
/Magnus