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

Вниз

Переопределение клавиши 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.064 c
6-1086073893
Stop
2004-06-01 11:11
2004.08.01
idTCPServer, idTCPClient


3-1089385289
SOS
2004-07-09 19:01
2004.08.01
подскажите как задать параметр ADOQuery1.Parameters????


1-1089870421
Pavelkq
2004-07-15 09:47
2004.08.01
Страшные тормоза при работе программы.


1-1089904797
ko
2004-07-15 19:19
2004.08.01
Помогите с SaveDialog


14-1089620789
Dmitriy O.
2004-07-12 12:26
2004.08.01
Разработка компьютерной системы для полета на Марс