Форум: "Основная";
Текущий архив: 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.044 c