Visual Basic: Статьи


Автор статьи: Беседин Игорь

Как выполнить подпрограмму с помощью "горячих клавиш"?

    В некоторых программах на Command Button расположена надпись с какой-либо подчеркнутой буквой, и при нажатии на эту букву выполняется то же самое, что и при нажатии на этот объект. Этот же эффект можно реализовать на VB, но для начала разберемся что к чему.

    У Command Button есть свойство Caption - это то, что отображается на самом объекте. Вставив в это свойство знак &, мы в результате получим подчеркивание следующего символа - клавишу быстрого ("горячего") доступа.

    Теперь для реализации кода нужно вставить объект: Command Button (с любым именем) и присвоить свойству Form1.KeyPreview=True (этим мы будем передавать все нажатые клавиши в событие Form_KeyPress). И, наконец, вставляем код.

Function RunKey(Key As Integer)
On Error Resume Next
Dim Object As Object
Dim A As Integer
For Each Object In Me.Controls
A = InStr(Object.Caption, "&")

'Узнаем номер символа &.

If A > 0 Then
If UCase(Mid(Object.Caption, A + 1, 1)) = UCase(Chr(Key)) Then
Object.Value = True

'Присвоив значение True, мы активизируем событие Click
Exit Function
End If
End If
Next
End Function

Private Sub Command1_Click()
MsgBox "Вы вызвали выполнение этой подпрограммы"
End Sub

Private Sub Form_KeyPress(KeyAscii As Integer)
RunKey (KeyAscii)

'Вызываем функцию, и передаем ей значение нажатой клавиши
End Sub

     Этот код будет работать, при условии, что в Command1.Caption только один раз встречается символ &, в противном случае нужно будет изменить код нахождения символа - найти не первый встречаемый символ, а последний, т.е. вместо

A = InStr(Object.Caption, "&")

поставить

For i = Len(Object.Caption) - 1 To 1 Step -1
A = InStr(i, Object.Caption, "&")
If A > 0 Then Exit For
Next

или в VB 6.0

A=Len(Object.Caption) - Instr(StrReverse(Object.Caption),"&")

    Так, что выбирайте.

При любом воспроизведении этой статьи (и других статей с этого сайта) ставьте ссылку на сайт www.igoryksoft.narod.ru