Нежданный фокус...

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
ELC
Начинающий
Начинающий
 
Сообщения: 18
Зарегистрирован: 30.10.2005 (Вс) 21:03
Откуда: Москва

Нежданный фокус...

Сообщение ELC » 15.12.2005 (Чт) 23:39

Подскажите пожалуйста решение простой, на первый взгляд, проблемы. Суть вкратце такова:
я использую события KeyDown и KeyUp, для изменения картинок на форме (к примеру). Собственно клавиши на клавиатуре при этом используются следующие:
<Right> <Left> <Up> <DownArrow> (те самые стрелочки :-) )

И все у меня работало прекрасно, до тех пор, пока на форме не появились кнопки (CommandButton). Как только я их помещаю на форму события KeyDown и KeyUp для клавиш со стрелками перестают обрабатываться! И нажатие этих клавиш приводит к смене фокуса между кнопками (CommandButton).

КАК сделать так чтобы фокус перестал менятся для кнопок и обработчик моих клавиш снова заработал???
На берега Эквадора выбросило тонны кокаина. А как повезло Вам?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 16.12.2005 (Пт) 3:31

Поставить форме keypreview=true?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

ELC
Начинающий
Начинающий
 
Сообщения: 18
Зарегистрирован: 30.10.2005 (Вс) 21:03
Откуда: Москва

Сообщение ELC » 16.12.2005 (Пт) 16:35

уже стоит....
если keypreview = false, то вообще ничего не работает!

Блин, ну подскажите же что-нибудь интересное!!!!
На берега Эквадора выбросило тонны кокаина. А как повезло Вам?

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 16.12.2005 (Пт) 16:44

TabStop=False для всех кнопок на данной форме

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 16.12.2005 (Пт) 17:36

лучше отлавливать событие GotFocus кнопок

ELC
Начинающий
Начинающий
 
Сообщения: 18
Зарегистрирован: 30.10.2005 (Вс) 21:03
Откуда: Москва

Сообщение ELC » 16.12.2005 (Пт) 18:04

TabStop=False для всех кнопок на данной форме


при этом перемещение фокуса запрещатся клавишей Tab, но ни как не стралками :-(

лучше отлавливать событие GotFocus кнопок


если можно поясни как? а то либо у меня руки кривые, либо одно из двух :-)
На берега Эквадора выбросило тонны кокаина. А как повезло Вам?

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 16.12.2005 (Пт) 18:21

Ты кнопки убери и используй вместо них лейблы.
Изображение

ELC
Начинающий
Начинающий
 
Сообщения: 18
Зарегистрирован: 30.10.2005 (Вс) 21:03
Откуда: Москва

Сообщение ELC » 16.12.2005 (Пт) 18:46

Ты кнопки убери и используй вместо них лейблы.


не... так не интересно....
вопрос собственно принципиальный.

ВОЗМОЖНО ЛИ ТАК? или нет?

если нет, то наверное, лучше использовать menu bar....

но очень хочится, чтобы все-таки кнопочки былы :-)
На берега Эквадора выбросило тонны кокаина. А как повезло Вам?

GAGArin
Неистовый флудер
Неистовый флудер
 
Сообщения: 1777
Зарегистрирован: 23.12.2002 (Пн) 12:46
Откуда: я тут взялся, не знаю...

Сообщение GAGArin » 16.12.2005 (Пт) 20:20

Sirik писал(а):лучше отлавливать событие GotFocus кнопок

Я правильно понимаю что нужно смотреть с какой кнопки пришел фокус, и соответственно догадываться что было нажато?

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 16.12.2005 (Пт) 20:30

похоже, батенька, что-то вы не так делаете :?
код в студию :!:

Код: Выделить всё
Option Explicit

Private Sub Command1_Click()
Debug.Print "Command1_Click"
End Sub

Private Sub Command1_GotFocus()
Debug.Print "Command1_GotFocus"
End Sub

Private Sub Command2_Click()
Debug.Print "Command2_Click"
End Sub

Private Sub Command2_GotFocus()
Debug.Print "Command2_GotFocus"
End Sub

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Debug.Print "Form_KeyDown=" & KeyCode & ",Shift=" & Shift
End Sub


все отлавливается как надо :evil:

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 17.12.2005 (Сб) 11:08

а если кнопок 100 ? лучше через for c eatch

ELC
Начинающий
Начинающий
 
Сообщения: 18
Зарегистрирован: 30.10.2005 (Вс) 21:03
Откуда: Москва

Сообщение ELC » 17.12.2005 (Сб) 12:25

:x :x :x :x :x :x :x :x

похоже, батенька, что-то вы не так делаете Confused


похоже я действительно что-то не так делаю....
добавил модуль с указанным выше кодом - все как было так и осталось :-)

:?:

КАК ЭТО СДЕЛАТЬ?
На берега Эквадора выбросило тонны кокаина. А как повезло Вам?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 17.12.2005 (Сб) 12:47

Естественно, раз ты добавил в модуль...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 17.12.2005 (Сб) 13:20

а может лучше поставить хук?

ELC
Начинающий
Начинающий
 
Сообщения: 18
Зарегистрирован: 30.10.2005 (Вс) 21:03
Откуда: Москва

Сообщение ELC » 17.12.2005 (Сб) 18:38

угу...... заработало :-)

только всеравно СТРЕЛКАМИ МЕНЯЕТСЯ ФОКУС на кнопках.....

:roll:
На берега Эквадора выбросило тонны кокаина. А как повезло Вам?

Drag
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 85
Зарегистрирован: 29.01.2005 (Сб) 23:54
Откуда: Москва

Сообщение Drag » 03.01.2006 (Вт) 11:53

Берешь одну ненужную кнопку(допустим, ComTmp), помещаешь за пределы формы и пишешь в код формы:

Private Sub ComTmp_LostFocus()
ComTmp.SetFocus
End Sub


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 51

    TopList