Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.05.08;
Скачать: [xml.tar.bz2];

Вниз

Переназначить функцию кнопки 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.014 c
3-22977
airb
2003-04-17 14:18
2003.05.08
DBChart


1-23200
Бух
2003-04-25 00:22
2003.05.08
Два строки в заголовке стринггрида


4-23422
Silver_
2003-03-10 12:37
2003.05.08
Переделка одной клавиши в другую (Hook)


4-23420
Sergeys
2003-03-09 23:40
2003.05.08
Как можно передать сообщение своей проге....


7-23411
Maxim2030
2003-03-17 10:08
2003.05.08
Dll не загружается





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский