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"
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
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.
Et osaa myöskään kirjoittaa ketjuille otsikoita (vaihdoin).
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 SubKiitoksia vastauksista. Juuri tällaista Antin tekemää kaipasin. Joo jumissa olin. Mitähän tämä DoEvents tekee noinniinku lyhyesti kerrottuna?
Käsittelee ohjelmalle lähetetyt viestit kuten napinpainallukset.
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 SubEn ole ihan varma toimiiko se nuin, mutta voithan sitä kokeilla.
Mod. edit: muistetaan ne kooditagit ja sisennykset, jookos?
Aihe on jo aika vanha, joten et voi enää vastata siihen.