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

Вниз

Переопределение клавиши TAB   Найти похожие ветки 

 
lightix   (2004-07-21 09:04) [0]

Как можно для всего приложения переопределить, что для перехода между визуальными компонентами должна быть нажата клавиша Enter вместо TAB ?
C++ Builder 5.0


 
Sandman25 ©   (2004-07-21 09:05) [1]

Form.KeyPreview
OnKeyDown
ActiveControl
WM_NEXTCTLDLG


 
lightix   (2004-07-21 09:08) [2]

А без KeyDown можно как то глобально переопределить?
У меня был даже где то пример но я его потерял :(
Просто когда KeyPreview = true то не обрабатываются OnKeyDown на самих компонентах.


 
lightix   (2004-07-21 09:17) [3]

Вот так вот у меня работает, но как то кривовато
if(Key == VK_RETURN)
FindNextControl(ActiveControl, true, true, false)->SetFocus();


 
Dummes   (2004-07-21 09:51) [4]

Переходить к следующему полю ввода по Enter
http://delphi4all.narod.ru/alg/justify.h  

Компоненты ввода Memo, Edit и RichEdit имеют функцию отмены. Этот пример показывает, как определить, возможна ли отмена, и как отменить последнее действие.
procedure TForm1.FormCreate(Sender: TObject);
begin
 Form1.KeyPreview := true;
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
 Shift: TShiftState);
var
 c: TControl;
begin
 if Key <> 13 then Exit;
 repeat
   c := Form1.FindNextControl(Form1.ActiveControl, true, true, true);
   (c as TWinControl).SetFocus;
 until c is TEdit;
end;


 
Anatoly Podgoretsky ©   (2004-07-21 09:55) [5]

Нет только в рамках приложения, это грубейшее нарушение интферфейса Виндоус


 
Dummes   (2004-07-21 10:20) [6]

А как этот способ?...

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


 
Dummes   (2004-07-21 10:53) [7]

Используйте приведенный код в обработчике события компонента Edit OnKeyPress.

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
If Key = #13 Then
Begin
SelectNext(Sender as tWinControl, True, True );
Key := #0;
end;
end;

Это заставляет клавишу Enter вести себя подобно клавише Tab. После этого выберите на форме все элементы управления (за исключением кнопок), у которых вы хотели бы видеть такую функциональность, и в Инспекторе Объектов сошлитесь в обработчике события OnKeyPress на созданную процедуру EditKeyPress. Теперь каждый компонент, который вы выбрали, будет воспринимать
клавишу Enter как Tab. Если вы хотели видеть данную функциональность на уровне формы (по сравнению с элементами управлениями), сотрите в Инспекторе Объектов у всех элементов обработчики событий OnKeyPress и сошлитесь на созданную процедуру EditKeyPress в
обработчике OnKeyPress _формы_. Затем измените Sender на ActiveControl и установите свойство формы KeyPreview в True:

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
If Key = #13 Then
begin
SelectNext(ActiveControl as tWinControl, True, True );
Key := #0;
end;
end;

Это позволит любому элементу на форме (по возможности) воспринимать клавишу Enter как клавишу Tab.



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

Форум: "Основная";
Текущий архив: 2004.08.01;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.05 c
14-1089386907
rOOse
2004-07-09 19:28
2004.08.01
HTML формы


1-1090298570
cvg
2004-07-20 08:42
2004.08.01
Как все-таки выйти из цикла, если форма не в фокусе?


14-1089692960
Def
2004-07-13 08:29
2004.08.01
Память и сворачивание приложения


14-1089294654
Nick-From
2004-07-08 17:50
2004.08.01
Косяки в Excel


14-1089806379
}|{yk
2004-07-14 15:59
2004.08.01
Альтернативные броузеры подросли на 0,84%





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