Главная страница
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.028 c
3-22949
_toltec
2003-04-20 20:09
2003.05.08
Несколько вопросов о SQL


1-23209
Viktor1
2003-04-24 15:37
2003.05.08
Как в Edit1 выровнять текст по центру относительно верх-низ.


1-23112
Sour
2003-04-27 13:32
2003.05.08
Почему на канве Tbitmap ничего не рисуется?


14-23377
vopros
2003-04-21 17:36
2003.05.08
Возьму талантливую девушку на содержание


14-23290
Alex134
2003-04-22 14:15
2003.05.08
Что такое ASP.NET и .NET ?