Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.025 c
14-1089778010
АлексейК
2004-07-14 08:06
2004.08.01
Диагноз или ...?


1-1089909244
kiki
2004-07-15 20:34
2004.08.01
Как обработать комбинацию клавишь?


9-1082207751
AlexNx
2004-04-17 17:15
2004.08.01
Алгоритм попадания точки


14-1089436517
YurikGL
2004-07-10 09:15
2004.08.01
LCD и ЭЛТ


8-1084647905
Agent[007]
2004-05-15 23:05
2004.08.01
MP3 в API




   Наверх