C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Обработка события другим объектом, Как передать обработку события другому о
VovaN
Отправлено: 11.05.2005, 14:54


Дежурный стрелочник

Группа: Участник
Сообщений: 72



Проблема в следующем: Есть грид и эдит. В эдите стоит обработчик OnKeyUp(). Надо сделать, что если клавиши стрелки (код 37,38,39,40) то чтоб их обработал грид, иначе обрабатывает эдит.
Как перенаправить обработку от эдита к гриду?
Guest
Отправлено: 11.05.2005, 15:13


Не зарегистрирован







QUOTE

Как перенаправить обработку от эдита к гриду?

В EditOnKeyUp вызвать GridOnKeyUp
VovaN
Отправлено: 11.05.2005, 15:22


Дежурный стрелочник

Группа: Участник
Сообщений: 72



Так не получалось с самого начала.
Я пишу:
CODE

if ((Key>=37)&&(Key<=40))
   {
     SearchEdit->Visible=false;
     work_grid->Fields[col-1]->FocusControl();
     work_grid->OnKeyUp(Sender,Key,Shift);
   }

Выдает access violation.
Мне надо при нажатии на эту стрелки прятать эдит (он стоит поверх грида) и передвинуться по ячейкам в соответствии с нажатой клавишей (как это делает грид)
olegenty
Отправлено: 11.05.2005, 15:33


Ветеран

Группа: Модератор
Сообщений: 2412



а просто DataSource->Next/Prior() не судьба вызвать, да? smile.gif
AVC
Отправлено: 11.05.2005, 15:54


Ветеран

Группа: Модератор
Сообщений: 1583



А у грида это событие прописано?
или вызывайте явно эту функцию (обрботки OnKeyUp)

PS. В вызове
work_grid->OnKeyUp(Sender,Key,Shift);
очень лучше писать
work_grid->OnKeyUp(work_grid, Key, Shift);
GIZMO
Отправлено: 13.05.2005, 11:28


Машинист паровоза

Группа: Участник
Сообщений: 174



QUOTE (VovaN @ 11/05/2005, 14:54)
Проблема в следующем: Есть грид и эдит. В эдите стоит обработчик OnKeyUp(). Надо сделать, что если клавиши стрелки (код 37,38,39,40) то чтоб их обработал грид, иначе обрабатывает эдит.
Как перенаправить обработку от эдита к гриду?

CODE

...
if (Key == VK_UP || Key == VK_DOWN)) {
  SendMessage(Grid->Handle, WM_KEYDOWN, Key, 0); //Perform-?
...
Key = 0;//незабудь!!!



Вернуться в Вопросы программирования в C++Builder