2010-11-26 22 views
0
Public Sub subkeydown(txt As TextBox, lst As ListBox, KeyCode As Integer) 

    On Error Resume Next 

    lstfstrec = True 

    If txt.Text = "" Then lst.Visible = False: Exit Sub 
    If KeyCode = 40 Then 
    lst.Selected(lst.ListIndex + 1) = True ': Exit Sub 
    'MsgBox lstMedicine.ListIndex 
    End If 
    If KeyCode = 38 Then lst.Selected(lst.ListIndex - 1) = True ': Exit Sub 

End Sub 

J'ai une fonction nommée subkeydown() dans mon projet (voir ci-dessus), qui est appelée lorsque l'utilisateur appuie sur la flèche haut ou flèche vers le bas clés. Lorsque la fonction est appelée, l'événement click de ListBox est déclenché. Le ListBox contient le nom du produit de médecine et est lié à une base de données, ainsi je veux appeler l'événement Click quand l'utilisateur clique sur le ListBox mais pas automatiquement.Manipulation des touches haut et bas flèche dans une zone de liste dans VB6

+1

Vous ne devriez pas avoir à sélectionner l'élément de liste vous-même - la flèche vers le haut et la flèche vers le bas changeront la sélection de ListBox, et traiteront le dépassement/dépassement de capacité pour vous, tant qu'il a le focus. Est-ce réellement un problème de mise au point? – gkrogers

Répondre

0

Vous pouvez définir un indicateur « isUpDownClicked » true en cliquant sur le haut/bas bouton, et dans votre sous List_Click vous quittez sous lorsque le drapeau est vrai, comme:

Option Explicit 
Dim lstfstrec As Boolean 
Dim isUpDownClicked As Boolean 

Public Sub subkeydown(txt As TextBox, lst As ListBox, KeyCode As Integer) 

    On Error Resume Next 

    lstfstrec = True 

    If txt.Text = "" Then lst.Visible = False: Exit Sub 
    If KeyCode = 40 Then 
     lst.Selected(lst.ListIndex + 1) = True ': Exit Sub 
     'MsgBox lstMedicine.ListIndex 
    End If 
    If KeyCode = 38 Then lst.Selected(lst.ListIndex - 1) = True 
End Sub 

Private Sub CommandUp_Click() 
    isUpDownClicked = True 
    subkeydown Text1, lstMedicine, 38 
End Sub 
Private Sub CommandDown_Click() 
    isUpDownClicked = True 
    subkeydown Text1, lstMedicine, 40 
End Sub 

Private Sub Form_Load() 
    lstMedicine.AddItem "1" 
    lstMedicine.AddItem "2" 
    lstMedicine.AddItem "3" 
End Sub 

Private Sub lstMedicine_Click() 
    If isUpDownClicked Then 
     isUpDownClicked = False 
     Label1.Caption = "no" 
     Exit Sub 
    End If 

    Label1.Caption = "lst_Click" 
End Sub