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 Sub
Kiitoksia 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 Sub
En 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.