Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Silmukan pyörittäminen kahden napinpainalluksen välisen ajan (vb6)

Sivun loppuun

jukuri [12.02.2005 15:52:09]

#

Miten tehdään tällainen silmukka:

- Homma aloitetaan kun käyttäjä painaa nappia ja
- lopetetaan kun käyttäjä painaa samaa nappia uudelleen

Eli asiat tapahtuvat niinkauan kun nappi on "pohjassa"

sqwiik [12.02.2005 16:07:05]

#

Laita formille Timer-komponentti, jonka Enabled-lippua käännät pois/päälle kun nappia painetaan. Timerissa on sitten se koodi, joka suoritetaan.

Sub NappiKlik()
  If Timeri.Enabled Then Timeri.Enabled = False Else Timeri.Enabled = True
End Sub

KeKimmo [12.02.2005 16:07:39]

#

Voisit laittaa Form_MouseDownin enabloimaan Timerin ja Form_MouseUpin disabloimaan sen. Sitten vaan tunget koodisi timeriin.

EDIT: Äh, pitäisi nukkua enemmän. Käsitin, että luupin halutaa pysyvän käynnissä niin kauan kun nappi on pohjassa.
EDIT2: Ja tuota sqwiikin kertomaa tapaa käyttäisin itsekin.

Blaze [12.02.2005 16:18:27]

#

Et osaa myöskään kirjoittaa ketjuille otsikoita (vaihdoin).

Antti Laaksonen [12.02.2005 16:44:47]

#

Toteutus riippuu myös siitä, minkälaisesta hommasta on kysymys. Jos jotain esim. lasketaan silmukassa, silmukan ehdoksi voi laittaa tietyn muuttujan arvon tai juuri nappulan otsikon. Kuitenkin silmukkaan täytyy muistaa lisätä DoEvents, jotta ohjelma ei jumiudu. Tässä vielä esimerkki, joka laskee kokonaislukujen juurien summia.

Private Sub Command1_Click()
    Dim x As Long, y As Single
    If Command1.Caption = "Aloita" Then
        Command1.Caption = "Lopeta"
        x = 0
        While Command1.Caption = "Lopeta"
            y = x ^ (1 / 2) + x ^ (1 / 3) + x ^ (1 / 4) + x ^ (1 / 5)
            DoEvents
            Caption = x
            x = x + 1
        Wend
    Else
        Command1.Caption = "Aloita"
    End If
End Sub

Private Sub Form_Load()
    Command1.Caption = "Aloita"
End Sub

jukuri [12.02.2005 17:11:41]

#

Kiitoksia vastauksista. Juuri tällaista Antin tekemää kaipasin. Joo jumissa olin. Mitähän tämä DoEvents tekee noinniinku lyhyesti kerrottuna?

Metabolix [12.02.2005 17:16:16]

#

Käsittelee ohjelmalle lähetetyt viestit kuten napinpainallukset.

Lumi-ukkeli [12.02.2005 20:34:29]

#

Joo voi olla ihan hyvä toi Antin juttu, tai siis ei ehkä välttämättä toimi siinä tilanteessa, mutta mistä minä tiiän mihin sinä sitä tarvit...

No oma ehdotukseni olis näin:

Dim kaynnissa as boolean

Private Sub Command1_Click()
    kaynnissa = Not(kaynnissa)
    Do while kaynnissa
        'koodia
        DoEvents
    Loop
End Sub

En ole ihan varma toimiiko se nuin, mutta voithan sitä kokeilla.

Mod. edit: muistetaan ne kooditagit ja sisennykset, jookos?


Sivun alkuun

Vastaus

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

Tietoa sivustosta