![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Передача фокуса ввода другому элементу нажатием Enter [D5, Win95/98]
Miss © (2002-06-10 12:46:00)Здравствуйте! Пожалуйста помогите! В одной из форм проекта располагается несколько DBEdit, при нажатии Enter фокус ввода передается следующему компоненту, например:
procedure TfmDrPRikaz.DBEdit1KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
DBEdit22.SetFocus;
end;
Нажатием кнопки на этой форме открывается еще одна форма, которая тоже содержит несколько DBEdit, но аналогичный код в обработчиках события OnKeyPress не работает, т.е. фокус ввода не передается другому элементу нажатием клавиши Enter?
Sava (2002-06-11 11:26:00) [1]
Можно еще модернезировать предложение Producer :
1. У формы KeyPreview := true;
2.
Procedure Tform1.FormKeyPress(Sender: TObject, var key: char);
begin
if key = #13 then
begin
key:=#0;
perform(wm_nextdlgctl,0,0);
end
end;
Miss (2002-06-11 10:37:00) [2]Thank! Вариант на KeyUp работает, а ch и правда не нужно
Song (2002-06-10 13:35:00) [3]TForm.KeyPreview в True
А дальше обрабатьывай TForm.onKeyDown
Producer (2002-06-10 13:34:00) [4]2 Yuri-7: Ну и причем здесь событие OnEnter?
Человек имел ввиду нажатие кнопкиEnter.
Теперь 2 Miss:
Делаешь общий обработчик события onKeyPress для нескольких компонентов (для тех, нажатие Enter на которых должно приводить к передаче фокуса ввода):
procedure TMyForm.EnterPress(Sender: TObject;
var Key: Char);
begin
if Key = #13 then
begin
Key := #0; // чтобы не "пикал"
SelectNext(Sender as TWinControl, true, true);
end;
end;
oss (2002-06-10 12:57:00) [5]вернее можешь цеплять куда угодно, главное Enter отлови
oss (2002-06-10 12:57:00) [6]вернее можешь цеплять куда угодно, главное Enter отлови
и ch тебе тоже не надо :))
Yuri-7 (2002-06-10 12:57:00) [7]Попоробуй обработку посадить на OnEnter
oss (2002-06-10 12:55:00) [8]на keyup
if #13=chr(key) then
FindNextControl(sender as TWinControl,true,false,false).setfocus
else ch:=true;