Главная страница
    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.011 c
3-22989
Andy Verinov
2003-04-17 00:09
2003.05.08
Вешается BDE от большого числа запросов?


14-23386
down
2003-04-21 20:54
2003.05.08
посмотрите, какое красивое извращение


6-23256
CYBERDANYA
2003-03-12 22:56
2003.05.08
Proxy на Indy в Delphi 6


3-22984
Tundra
2003-04-17 15:03
2003.05.08
Вопрос по Oracle - кто нибудь подскажите ?


3-22972
Jaxtor
2003-04-17 11:22
2003.05.08
Параметры, InsertSQL в IBDataSet





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский