Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.05.08;
Скачать: CL | DM;

Вниз

Переназначить функцию кнопки TAB на ENTER...   Найти похожие ветки 

 
lightix   (2003-04-23 17:13) [0]

Есть такая проблема - юзера привыкли ходить по полям кнопкой ENTER, а по умолчанию эту функцию выполняет TAB.
Как переназначить кнопки для всего приложения (формы) или может можно для всех форм сразу?
Прописывание SetFocus"a на каждом элементе по нажатию VK_RETURN не предлагать.
Пытался на уровне формы в OnKeyDown сделать
if (Key==VK_RETURN)
Key=VK_TAB;
Не работает почему-то :( Да и это не совсем то чего хотелось бы. Нужно именно назначить кнопке ENTER выполнение этой функции.
Помогите толковым советом.


 
Skier ©   (2003-04-23 17:26) [1]

Обработку TAB см. в
procedure TCustomForm.CMDialogKey(var Message: TCMDialogKey);
Надеюсь дальнейшие действия понятны...


 
AlexKr   (2003-04-23 17:29) [2]

Попробуй так:

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if (Key=#13) then Perform(WM_NEXTDLGCTL,integer(false),
integer(false));
end;


 
default ©   (2003-04-23 17:32) [3]

можем вообще ничего не предлагать


 
NickBat ©   (2003-04-23 17:39) [4]

Отучать надо пользователей-отучать. В конце концов работают в виндоус.


 
lightix   (2003-04-23 17:46) [5]

AlexKr ©, дело в том что Form1::OnKeyPress не срабатывает когда я нахожусь в TEdit ...... Так бы и Key=VK_TAB сработало ....

Skier ©, Что то я такого в хелпе найти не могу :((


NickBat ©, я бы с удовольствием, да нельзя ... Жалуются они ...



 
Skier ©   (2003-04-23 17:50) [6]

>lightix

> Что то я такого в хелпе найти не могу :((

VCL source code. Forms.pas


 
lightix   (2003-04-23 17:57) [7]

Ага, понял, нашел, разобрался ;)
Только на какое событие повесить SelectNext(...) ? В какой момент его вызывать? Например если в TForm::OnKetDown то не работает ...


 
Skier ©   (2003-04-23 18:07) [8]

1)
procedure TYourForm.CMDialogKey(var Message: TCMDialogKey);
begin
if Message.CharCode <> VK_TAB then inherited;
end;

2)TYourForm.KeyPreview := True;

3)TYourForm.OnKeyDown(...)
begin
if Key = VK_RETURN then SelectNext(ActiveControl, ssShift in Shift , True);
end;


 
Игорь Шевченко ©   (2003-04-23 18:09) [9]

А лучше через хук сделать...который WH_GETMESSAGE. И в сообщениях WM_KEYDOWN и WM_KEYUP транслировать Tab в Enter. Разумеется, не все подряд.


 
Viktor   (2003-04-24 02:12) [10]

KeyPreview := True

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then
begin
Key := #0;
Perform(CM_DialogKey, VK_TAB, 0);
end;
end;



Страницы: 1 вся ветка

Текущий архив: 2003.05.08;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.018 c
1-23182
scorpi
2003-04-24 18:31
2003.05.08
Глобальная переменная


14-23310
aga
2003-04-18 21:31
2003.05.08
Предложение...


1-23137
Fighter
2003-04-28 09:42
2003.05.08
Прокрутка в TScrollBox


8-23236
reticon
2003-01-27 00:59
2003.05.08
можно ли поместить bmp в dll???


14-23300
Ihtiandr
2003-04-22 18:25
2003.05.08
FastReport 2.47 and FibPlus