MSFlexGrid не реагирует на клавиши курсора

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

MSFlexGrid не реагирует на клавиши курсора

Сообщение NicSoft » 30.06.2008 (Пн) 21:12

Код: Выделить всё
Private Sub MSFlexGrid1_KeyDown(KeyCode As Integer, Shift As Integer)
    Select Case KeyCode
      Case 27     '// Esc
      Case 13 'Enter
      Case 38 'стрелка вверх
      Case 40 'стрелка вниз
    End Select
End Sub


Данное событие срабатывает при нажатии любых клавиш, за исключением стрелок.
Почему и как это лечится?
Если без API не обойтись, то что посоветуете, т.к. не хочется перегружать программу лишними таймерами, и т.п. Глобальный хук тут, как я понимаю, не нужен, и даже помешает, т.к. будет ловить клавиши и в других контролах

zHackLeX
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 283
Зарегистрирован: 23.10.2003 (Чт) 21:08

Сообщение zHackLeX » 30.06.2008 (Пн) 21:51

мдя.. и впрямь... (или вкривь?)

Ничего умнее сабклассинга WM_KEYDOWN сходу на ум не приходит...


Да, конечно, такой сабклассинг может потрепать нервы в ходе отладки...
There is no knowledge that is not power...

X,C,A,B,C,Z,X,A,B,C,Z....
Многие ли помнят? :)

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Сообщение Alexanbar » 01.07.2008 (Вт) 20:48

А зачем обрабатывать эти события?

Ведь есть, скажем, и другие интересные события:

EnterCell, LeaveCell

NicSoft
Обычный пользователь
Обычный пользователь
 
Сообщения: 80
Зарегистрирован: 05.04.2003 (Сб) 18:51
Откуда: Егорьевск

Сообщение NicSoft » 02.07.2008 (Ср) 8:02

А если, например, курсор находится на последней строке, и надо обработать нажатие клавиши "вниз", чтобы добавить новую строку? это очень удобно, и применяется во многих программах.
Вообще проблему уже решил через таймер и API

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 02.07.2008 (Ср) 8:18

А просто использовать KeyPress что не позволяет?
Весь мир матрица, а мы в нем потоки байтов!

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Сообщение Денис » 02.07.2008 (Ср) 9:20

Viper
А KeyPress же работает только с цифробуквенной частью клавиатуры...
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 02.07.2008 (Ср) 13:59

Упс... Автор изначально всех запутал, KeyUp и KeyDown прекрасно ловят стрелки. В отличии от KeyPress.
Весь мир матрица, а мы в нем потоки байтов!

NicSoft
Обычный пользователь
Обычный пользователь
 
Сообщения: 80
Зарегистрирован: 05.04.2003 (Сб) 18:51
Откуда: Егорьевск

Сообщение NicSoft » 02.07.2008 (Ср) 15:28

Viper писал(а):Упс... Автор изначально всех запутал, KeyUp и KeyDown прекрасно ловят стрелки. В отличии от KeyPress.

Я никого не путал - у меня KeyUp и KeyDown не ловят стрелки. Зачем бы я стал с API заморачиваться.
Может версии MSFlexGrid разные?

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 03.07.2008 (Чт) 8:25

Поставь форме свойтсво KeyPreview в True, и используй Form_KeyUp и Form_KeyDown для отлавливания нажатия управляющих клавиш.
Весь мир матрица, а мы в нем потоки байтов!

zHackLeX
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 283
Зарегистрирован: 23.10.2003 (Чт) 21:08

Сообщение zHackLeX » 03.07.2008 (Чт) 8:35

Поставь форме свойтсво KeyPreview в True, и используй Form_KeyUp и Form_KeyDown для отлавливания нажатия управляющих клавиш.


И форма не будет ловить стрелок, пока фокус на сетке...
There is no knowledge that is not power...

X,C,A,B,C,Z,X,A,B,C,Z....
Многие ли помнят? :)

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 03.07.2008 (Чт) 12:39

zHackLeX, и действительно...
Но как то же я раньше это делал? Средствами VB. Но это было, мягко говоря, давно и точно в VB5.
Весь мир матрица, а мы в нем потоки байтов!

zHackLeX
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 283
Зарегистрирован: 23.10.2003 (Чт) 21:08

Сообщение zHackLeX » 03.07.2008 (Чт) 12:45

Ну, не знаю как средствами VB. Может, ключевое слово (слова) "VB5"...

В любом случае, автор темы проблему-то решил.
Вообще конечно я не уверен что таймер+апи лучше чем сабкласс, как-то коряво смотрится на мой взгляд - но раз решил...
There is no knowledge that is not power...

X,C,A,B,C,Z,X,A,B,C,Z....
Многие ли помнят? :)

NicSoft
Обычный пользователь
Обычный пользователь
 
Сообщения: 80
Зарегистрирован: 05.04.2003 (Сб) 18:51
Откуда: Егорьевск

Сообщение NicSoft » 03.07.2008 (Чт) 15:25

zHackLeX
Можно примерчик с сабклассом? С удовольствием заменю на более приличный код.

zHackLeX
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 283
Зарегистрирован: 23.10.2003 (Чт) 21:08

Сообщение zHackLeX » 08.07.2008 (Вт) 22:30

пф. Лично мне очень не хочется "отправлять в поиск", но подходящего примера на руках сейчас нет(( сабклассер тем не менее на форуме есть!
There is no knowledge that is not power...

X,C,A,B,C,Z,X,A,B,C,Z....
Многие ли помнят? :)

old761
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 06.12.2007 (Чт) 18:48
Откуда: Луганск

Сообщение old761 » 09.07.2008 (Ср) 0:23

А другие клавиши обрабатываются или нет?

zHackLeX
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 283
Зарегистрирован: 23.10.2003 (Чт) 21:08

Сообщение zHackLeX » 09.07.2008 (Ср) 0:25

а что, не должны?

Впрочем - возьми, да проверь)
There is no knowledge that is not power...

X,C,A,B,C,Z,X,A,B,C,Z....
Многие ли помнят? :)


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

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

Сейчас этот форум просматривают: Google-бот и гости: 61

    TopList