Вниз
Скачать: 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.022 c
14-1089555184
Makssimm
2004-07-11 18:13
2004.08.01
как один комп через другой выходить в интернет заставить?


14-1089965311
IgorG
2004-07-16 12:08
2004.08.01
узнать имя и пароль пользователя


3-1089030444
ligor
2004-07-05 16:27
2004.08.01
SQL-расширения IB 1.5


1-1089726665
Unknown user
2004-07-13 17:51
2004.08.01
Подскажите способ быстрой загрузки обычного текста


14-1089882872
peypivo
2004-07-15 13:14
2004.08.01
просмотр фильмов




   Наверх