Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Auto-Sulku

Sivun loppuun

finkamo [15.03.2005 06:20:19]

#

Terve...
haluan etta Form1 sulkea automaattisesti 5 minuntia kultua? mutta miten?

nomic [15.03.2005 06:46:07]

#

mä haluun kans semmoisen joka räjäyttäisi kaikki maailman seinät!

Dim vanhaaika As Date, nykyinenaika As Date, erotus As Date
Dim teksti As Variant

Private Sub Form_Load()
    vanhaaika = Time 'aloitusaika talteen
End Sub

Private Sub Timer1_Timer()
    nykyinenaika = Time 'päivitetään aikaa
    erotus = vanhaaika - nykyinenaika 'katotaas kauan on mennyt
    teksti = erotus 'otetaan käyttöön väliaikainen muuttuja, suoraan erotuksella en saanut toimimaan niin pitää käyttää hömpötyksiä :(
    If teksti = "0:05:00" Then 'jos teksti on tämä,
        End 'sitten lopetellaan...
    End If
End Sub

Antti Laaksonen [15.03.2005 06:55:50]

#

Tässä tulee toisenlainen toteutus. Timer-funktio palauttaa keskiyöstä kuluneiden sekuntien määrän, ja kun tämmöisten aikojen erotus on 5 * 60 = 300 sekuntia, viisi minuuttia on kulunut. Ajan kuluminen tarkistetaan sekunnin välein Timer-kontrollissa.

Option Explicit
Dim alku As Long

Private Sub Form_Load()
    Timer1.Interval = 1000
    alku = Timer
End Sub

Private Sub Timer1_Timer()
    If Timer - alku >= 5 * 60 Then
        Unload Me
    End If
End Sub

finkamo [15.03.2005 07:19:39]

#

jumachukka taa toimi!... yeah! thx!!!! ;)

tejeez [15.03.2005 08:23:05]

#

Kaikissa noissa timer-jutuissa on se ongelma et jos se käynnistetään vähä ennen keskiyötä ni voi toimia vähä kummallisesti :x

finkamo [15.03.2005 08:38:44]

#

mitasitten jos kayttaisin Do While...Loopin... toimiko han se?

BadSource [15.03.2005 08:55:44]

#

Timer onkin hanurista juuri tuon keskiyöstä laskun takia. Käyttää mieluummin Now-, FormatDateTime- ja DateAdd-funktioita.

Option Explicit

Private alku As Date
Private laskuri As Integer

Private Sub Form_Load()
    alku = Now
    Me.Timer1.Interval = 1000
    laskuri = 5
    Me.Timer1.Enabled = True
    Me.Caption = "Laskuri(" & laskuri & ")"
End Sub

Private Sub Timer1_Timer()
    If DateAdd("s", 5, alku) <= Now Then
        MsgBox "viisi sekunttia sitten oli " & FormatDateTime(alku, vbLongTime) _
          & vbCrLf & " ja nyt on " & FormatDateTime(Now, vbLongTime)
        End
    Else
        laskuri = IIf(laskuri > 0, laskuri - 1, 5)
        Me.Caption = "Laskuri(" & laskuri & ")"
    End If
End Sub

Lumi-ukkeli [15.03.2005 11:56:19]

#

MIkä vika tässä olis?

Private Sub Form_Load()
Timer1.Interval = 1000
Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
Static i as long
If i = 300 Then
Timer1.Enabled = False
Unload Form1
Else
i = i + 1
End If
End Sub

esakom [15.03.2005 12:19:13]

#

ei kai mikään =)

paitsi että sisennykset on kadonnu...

lainaus:

Käyttää mieluummin Now-, FormatDateTime- ja DateAdd-funktioita

ihan turhaa...

BadSource [15.03.2005 14:26:32]

#

lainaus:

ihan turhaa...

Ehkä 5 sekunnin/minuutin vuoksi, mutta opetellaan käyttämään niitä VB:n suomia mahdollisuuksia.

Kun vertailut tekee Now:lla, niin vuorokauden vaihtumiset ei tunnu missään. DateAdd taas on todella helppo lisättäessä aikaan jotain, kun vain käyttää määreitä y(ear), m(onth), d(ay), h(our), m(inute) ja s(econd). FormatDateTime taas nimensä mukaan muuttaa ajan tai päivämäärän muotoilua.

Nämä, ja paljon muuta, löytyy myös putkan mainioista oppaista täältä.

esakom [15.03.2005 15:00:39]

#

Olen ihan samaa mieltä BadSource, noi on tosi hyviä funktioita ja säästävät paljon päänvaivaa monessa haastavammassa tilanteessa, ne nyt ei vaan mun mielestä olleet tarpeellisia tähän nimenomaiseen tapaukseen.

Microsoftin pojat on kyllä mielestäni tehneet hyvää työtä kun ovat kyseiset funktiot älynneet kirjoitella.

tesmu [15.03.2005 15:20:53]

#

Lumi-ukkeli kirjoitti:

MIkä vika tässä olis?

Private Sub Form_Load()
Timer1.Interval = 1000
Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
Static i as long
If i = 300 Then
Timer1.Enabled = False
Unload Form1
Else
i = i + 1
End If
End Sub

tekisin tuon vähän eri tavalla

Private Sub Form_Load()
Timer1.Interval = 1000
Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
Static i as long
i=i+1
select case i
case 300
unload form1
end select
End Sub


mutta sama periaate on molemmissa ;) :)


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta