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

 
Как вызвать ACTION?
nikll
Отправлено: 02.07.2004, 13:44


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







Все привет, Помогите начинающему плиз...
На форме есть DBGrig, и ActionList. У ActionList есть Action1. Эту Action1 я вызываю по DBLClick на гриде. Я хочу, что бы это же действие выполнялось и при нажатии на Enter... Не могу понять как это можно сделать Само событие нажатия и определение нажатой клавиши сделать могу OnKeyPress или OnKeyDown, а заставить выполнить действие (метод, если я не ошибаюсь) не могу уже больше недели! Почему на одних событиях появляется выпадающий список действий, а на других нет?
И аналогичная проблема. Как сделать так чтобы после нажатия на Энтер фокус перемещался с одного объекта ввода данных на другой (не только табуляцией). Спасибо!
AVC
Отправлено: 02.07.2004, 14:04


Ветеран

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



CODE

void __fastcall TFMain::DBGrid1DblClick(TObject *Sender)
{
Action1->Execute();
}
//---------------------------------------------------------------------------
void __fastcall TFMain::DBGrid1KeyDown(TObject *Sender, WORD &Key,
     TShiftState Shift)
{
if (((TDBGrid*)Sender)->OnDblClick)
((TDBGrid*)Sender)->OnDblClick(Sender);
}
//---------------------------------------------------------------------------
void __fastcall TFMain::Action1Execute(TObject *Sender)
{
ShowMessage("I am here");
}
//---------------------------------------------------------------------------


Наличие элементов в выпадающем списке зависит от типа события TNotifyEvent и т.д.

С фокусом по Enter лучше использовать как в Windows'е — те по Tab, что бы не выбиваться из общего стиля. Заметил, что в моем приложении кроме меня этим ни кто не пользуется, а возни с правильной отработкой много.
nikll
Отправлено: 02.07.2004, 14:53


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







СПАСИБО!

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