Onko konkareilla ehdotusta miten ns. toggle buttonin sais helposti tehtyä. olen itte käyttäny tähän tämmöstä vähän monimutkasempaa koodia, mutta tuntuis että tähänkin on yksinkertainen koodi tarjolla vb:ssä?
Dim i as Integer Private Sub Command1_Click() Select Case i Case 0 Text1.Text = "Eka valinta" i = 1 Case 1 Text1.Text = "Toka valinta" i = 0 End Select End Sub
Private b as Boolean Private Sub Command1_Click() b = Not b Text1.Text = Iif(b,"Eka valinta","Toka valinta") End Sub
Jos välttämättä haluat tehdä togglen kokonaisluvulla (Integer) niin esim:
Private i as Integer Private Sub Command1_Click() i = 1 - i Text1.Text = Choose(i+1,"Eka valinta","Toka valinta") End Sub
Sitten horror-viritys, jos et halua erillistä muuttujaa:
Private Sub Command1_Click() If Text1.Text = "Toka valinta" Then Text1.Text = "Eka valinta" Else Text1.Text = "Toka valinta" End If End Sub
Juu viimeisin on ehkä tässätapauksessa mulle paras, koska tällaisia toggleja tulee 1...16 niin ei tarvisi jokaiselle tehdä omaa muuttujaa...
Kiitos
No voihan ne muuttujatkin olla taulukossa, tuskin kuitenkaan sentään oot jokaiselle namiskuukkelille kirjoittamassa koodia copy&paste tyylillä erikseen.
Kenties on kätevämpi käyttää namiskuukkelin Caption-ominaisuutta textboxin sijaan.
Tässä on tapa jolla voi tehdä koodia joka tavallaan kommentoi itse itsensä:
Option Explicit Private Enum Arvot [Arvo 1] = 1 [Arvo 2] [Arvo 3] End Enum Private Arvo([Arvo 1] To [Arvo 3]) As Boolean Private Function Vaihda(ByVal I As Arvot) As Boolean Arvo(I) = Not Arvo(I) Vaihda = Arvo(I) End Function Private Sub Command1_Click() MsgBox IIf(Vaihda([Arvo 1]), "Eka", "Toka") End Sub
Arvo-taulukosta voi tarkistaa kunkin arvon tilanteen, Vaihda-funktio vaihtaa arvon ja palauttaa sen arvon, mikä mahdollistaa sen näppärän käytön IIf-funktion kanssa, olkootkin että If Then Else olisi paljon tehokkaampi.
If Vaihda([Arvo 1]) Then MsgBox "Eka" Else MsgBox "Toka"
Vaihtamalla Arvo 1, Arvo 2 jne. tilalle jotakin kuvaavampaa saa jo ihan kivasti dokumentoitua koodia kirjoittamatta riviäkään varsinaisia kommentteja. Tosin pitää sitten muistaa laittaa välilyönti ettei VB vie pois selventäviä []-merkkejä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.