Консультация № 179228
26.06.2010, 04:01
45.00 руб.
0 4 0
VB6. В таблице MsFlexGrid нужно реализовать переходы на строку выше и ниже по клавишам стрелок вправо и влево при достижении крайних правых и левых ячеек строки. По событиям нажатия KeyDown на клавиши стрелок (надо "LEFT" и "RIGHT") процедура MSFlexGrid1_KeyDown не срабатывает. Она работает только при нажатии других клавиш. Пробовала поймать события через Hook, но получаю не те коды, которые описаны в справке, причем значения wParam и lParam не отличимы друг от друга для разных стрелок ("LEFT" и "RIGHT"), при нажатии на стрелку приходит два сообщения с одинаковым кодом &H111, так что события KeyDown и KeyUp тоже неразличимы. Что делать?

Обсуждение

давно
Профессионал
848
1596
29.06.2010, 16:06
общий
Воспользуйтесь VSFlexGrid из ComponentOne Studio.
Более гибкий контролл. В нем все работает.
Код:
Private Sub VSFlexGrid1_KeyDown(KeyCode As Integer, Shift As Integer)
If VSFlexGrid1.Row = VSFlexGrid1.Rows - 1 Then
VSFlexGrid1.Row = 1
End If
If VSFlexGrid1.Col = VSFlexGrid1.Cols - 1 Then
VSFlexGrid1.Col = 1
End If
End Sub

В MsFlexGrid видимо MSFlexGrid1_KeyDown работает только при редактировании ячейки.
Неизвестный
29.06.2010, 20:06
общий
Спасибо за совет, но что такое VSFlexGrid из ComponentOne Studio? У меня нет его в настройках References.

MSFlexGrid1_KeyDown работает видимо на тех клавишах, которые не обрабатываются самим элементом MSFlexGrid1.

(MSFlexGrid1 не представляет возможности редактировать ячейки, для этого написана целая программа.)
давно
Профессионал
848
1596
29.06.2010, 22:08
общий
Нужно установить набор контролов ComponentOne Studio. В нем есть контрол VSFlexGrid.
К сожалению ComponentOne Studio является не бесплатным пакетом... Где скачать данный продукт думаю вас сориентирует Google
Неизвестный
02.07.2010, 18:41
общий
Увы, платный - нет, работаю на производстве. Покупать за свой счет, да еще за 20 тысяч, не хочу, а с приобретением на работе - не получится, начальник не подъемный. Но все равно спасибо за информацию.
Форма ответа