Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6 yksinkertainen "toggle"

viljami [04.02.2009 14:04:47]

#

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

Grez [04.02.2009 15:12:25]

#

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

viljami [04.02.2009 15:40:24]

#

Juu viimeisin on ehkä tässätapauksessa mulle paras, koska tällaisia toggleja tulee 1...16 niin ei tarvisi jokaiselle tehdä omaa muuttujaa...

Kiitos

Grez [04.02.2009 16:04:01]

#

No voihan ne muuttujatkin olla taulukossa, tuskin kuitenkaan sentään oot jokaiselle namiskuukkelille kirjoittamassa koodia copy&paste tyylillä erikseen.

setä [04.02.2009 16:33:35]

#

Kenties on kätevämpi käyttää namiskuukkelin Caption-ominaisuutta textboxin sijaan.

Merri [04.02.2009 17:38:40]

#

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ä.

Vastaus

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

Tietoa sivustosta