Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > фокус формы


Автор: Wedi 10.3.2019, 16:31
привет друзья!
если форма Form1 чистая то всё работает
если я добавляю в Form1 любой элемент кнопку картинку или ещё что-то
то нажатие кнопки не работает.
как вернуть фокус форме
или что сделать что бы всё работало само по себе?

Код

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
   If KeyCode = 32 Then
      MsgBox "нажат пробел"
   End If
End Sub

Автор: Akina 11.3.2019, 07:39
https://docs.microsoft.com/ru-ru/office/vba/api/access.form.keypreview

Автор: Guest45 26.3.2019, 14:37
Цитата(Wedi @ 10.3.2019,  16:31)
как вернуть фокус форме
 Form1.SetFocus
Не?..


Автор: Wedi 27.3.2019, 15:26
Guest45,в принципе KeyPreview решает проблему а вот с фокусом я так и не разобрался
куда это впихнуть ума не приложу Form1.SetFocus. хоть и попробовал в form_load его тиснуть
но результата нет кроме "Invalid procedure call or argument"

Автор: Guest45 27.3.2019, 15:49
Form_Load выполняется, когда форма еще не создана, - как же ей можно фокус передать? - конечно ошибка будет.
Попробуйте поставить в Form_Activate - эта процедура выполняется в момент развертывания формы, когда она уже готова.

А вообще, у объектов есть свойство TabIndex, которое определяет очередность получения ими фокуса.
Присвойте TabIndex = 0, и объект будет иметь фокус исходно, "по умолчанию".

Автор: Wedi 27.3.2019, 16:21
Guest45, а на кнопках другого значения TabIndex = 0 и нет
по умолчанию 0
в Form_Activate добавил но фокус всё равно на кнопке изначально появляется

вот код на форме кнопка:
Код

Option Explicit

Private Sub Command1_Click()
   End
End Sub

Private Sub Form_Activate()
   Form1.SetFocus
End Sub

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
   If KeyCode = 32 Then
      MsgBox "нажат пробел"
   End If
End Sub

Private Sub Form_Load()
   Form1.KeyPreview = True
End Sub


Добавлено через 13 минут и 59 секунд
да тут подумал немного
если сделать на форме картинку и передать фокус ей то всё получается
Код

Private Sub Command1_Click()
   Picture1.SetFocus
   End
End Sub


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)