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() не судьба вызвать, да?
|
|
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;//незабудь!!!
|
|
|