Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Tekstimenu VB:llä

Jakke1 [08.03.2008 02:59:51]

#

Kts. https://www.ohjelmointiputka.net/koodivinkit/24319-pascal-tekstimenu

Onnistuuko sama MITENKÄÄN vb6:lla? =o

Merri [09.03.2008 11:22:00]

#

Vaikka mikä onnistuu, en nyt ihan tiedä mimmoinen tuo pascaliviritelmä on, mutta tässä on jotain (joka tosin toimii vain jos formilla ei ole mitään kontrolleja jotka voivat saada fokuksen):

Option Explicit

Dim Current As Label
Dim Menu As New Collection

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    Dim lngNewIndex As Long
    If KeyCode = vbKeyLeft Then
        lngNewIndex = ((Current.Tag + Menu.Count - 2) Mod Menu.Count) + 1
        Current.BackColor = vbHighlightText
        Current.ForeColor = vbHighlight
        Set Current = Menu(lngNewIndex)
        Current.BackColor = vbHighlight
        Current.ForeColor = vbHighlightText
    ElseIf KeyCode = vbKeyRight Then
        lngNewIndex = (Current.Tag Mod Menu.Count) + 1
        Current.BackColor = vbHighlightText
        Current.ForeColor = vbHighlight
        Set Current = Menu(lngNewIndex)
        Current.BackColor = vbHighlight
        Current.ForeColor = vbHighlightText
    End If
End Sub

Private Sub Form_KeyPress(KeyAscii As Integer)
    If KeyAscii = vbKeyReturn Then
        KeyAscii = 0
        MsgBox "Nykyinen valinta on " & Current.Tag
    End If
End Sub

Private Sub Form_Load()
    Dim lngA As Long
    For lngA = 0 To 4
        Menu.Add Me.Controls.Add("VB.Label", "Menu" & Menu.Count + 1)
        With Menu(Menu.Count)
            .AutoSize = True
            .Caption = vbNewLine & Space$(5) & "Valikko " & Menu.Count & Space$(5) & vbNewLine
            .BackColor = vbHighlightText
            .ForeColor = vbHighlight
            .Move 150 + .Width * lngA, 150
            .Tag = Menu.Count
            .Visible = True
        End With
    Next lngA
    Set Current = Menu(1)
    Current.BackColor = vbHighlight
    Current.ForeColor = vbHighlightText
End Sub

Jakke1 [10.03.2008 21:02:16]

#

Kiitos! Vielä kun saisi sen valikon siis 1 on ylhäällä ja vitonen alhaalla.. Ja kun painaa alaspäin, se menee alempaan, ja kun oikeaa nuolinäppäintä sen teksti muuttuu vaikka siniseksi tms.. Jos viitsit tehdä, kiitos. Joojoo ei mitää sotaa nyt, kunhan kysyin..;D

Merri [10.03.2008 22:41:34]

#

No vaihtaminen vbKeyLeftin ja vbKeyRightin osalta ei pitäisi olla vaikea toimenpide, samoin kuin ei myöskään Moven muuttaminen. Kokeile :)

nomic [11.03.2008 14:46:09]

#

Merri kirjoitti:

Kokeile :)

Tämä on semmoinen asia, jota suosittelisin muillekin. Minulle ainakin ohjelmointi on melkoisesti kokeilemista, jos asia on uusi. Tietysti jos ei tiedä mistä lähteä liikkeelle, voi kysyä muilta neuvoa. Mutta soveltamalla esimerkkejä, omaa tietoutta, päättelyä - näin päästään jo aika pitkälle.

Mitä tulee Jaken pyyntöön, niin:
-VbKeyUp/-Down -härpättimet vaihdat Merrin mainitsemien VbKeyLeftiin ja Rightiin.
-Luo kontrollit aina toisten alle: käytä komponentin top-omituisuutta ja heightiä hyväksesi. Esimerkiksi: menu(index).top = menu(index-1).top + 32
-Ja jotta väri muuttuisi esimerkiksi siniseen: menu(index).backcolor = rgb(0, 0, 255)
Tuo tietysti pitää tehdä ehdon sisälle. Mutta toivottavasti tämä hieman valotti asioita. Suoraa koodia en tahtoisi antaa, koska minusta saat enemmän koodaamisesta irti, jos olet itse rakentanut koodin. :)

Vastaus

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

Tietoa sivustosta