Навигация по компонентам
От: Паха Россия  
Дата: 19.04.02 00:46
Оценка:
Привет Всем!
Столкнулся вот с такой проблемкой: стандартная навигация по компонентам в Windows это нажатие <Tab>. У меня на форме много полей ввода TEdit и мне необходимо сделать переход и навигацию между ними по клавишам <стрелка вниз> <стрелка вверх> <Enter>. Причём в промежутке между Tedit-ами могут встретиться и другие компоненты.
Заранее благодарен.
ICQ # 275979538
Электронная карта Новокузнецка на <a href="www.GraD-NK.ru">www.GraD-NK.ru</a>
Re: Навигация по компонентам
От: AIR Россия  
Дата: 19.04.02 04:33
Оценка:
Здравствуйте Паха, Вы писали:

П>Привет Всем!

П>Столкнулся вот с такой проблемкой: стандартная навигация по компонентам в Windows это нажатие <Tab>. У меня на форме много полей ввода TEdit и мне необходимо сделать переход и навигацию между ними по клавишам <стрелка вниз> <стрелка вверх> <Enter>. Причём в промежутке между Tedit-ами могут встретиться и другие компоненты.
П>Заранее благодарен.
Работает нормально!


procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.KeyPreview := True;
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
Direct: Boolean;
begin
Case Key of
VK_UP: begin
Direct := False;
end;
VK_DOWN: begin
Direct := True;
end;
end;
if Sender is TWinControl then begin
FindNextControl(Form1.ActiveControl,Direct,False,False).SetFocus;
end;
Key := 0;
end;
Безвыходных ситуаций не бывает, это просто такое состояние головного мозга!!!
Re: Навигация по компонентам
От: AIR Россия  
Дата: 19.04.02 04:36
Оценка:
Здравствуйте Паха, Вы писали:

П>Привет Всем!

П>Столкнулся вот с такой проблемкой: стандартная навигация по компонентам в Windows это нажатие <Tab>. У меня на форме много полей ввода TEdit и мне необходимо сделать переход и навигацию между ними по клавишам <стрелка вниз> <стрелка вверх> <Enter>. Причём в промежутке между Tedit-ами могут встретиться и другие компоненты.
П>Заранее благодарен.Более правильно! Вообщем идея думаю понятна!

if (Sender is TWinControl) and ((Key=VK_UP) or (Key=VK_DOWN)) then begin
FindNextControl(Form1.ActiveControl,Direct,False,False).SetFocus;
Key := 0;
end;
Безвыходных ситуаций не бывает, это просто такое состояние головного мозга!!!
Re[2]: Навигация по компонентам
От: Паха Россия  
Дата: 19.04.02 07:24
Оценка:
Здравствуйте AIR.
Спасибо огромное. Всё получилось. Теперь вот в дополнение вопрос возник:
а как определить тип компонента, который активен в данный момент TEdit, TMemo, TButton....
Чтобы корректно обрабатывать нажатие <Enter> (или переходить на следующий компонент или выполнять какое-либо действие)?
ICQ # 275979538
Электронная карта Новокузнецка на <a href="www.GraD-NK.ru">www.GraD-NK.ru</a>
Re[3]: Навигация по компонентам
От: AIR Россия  
Дата: 19.04.02 08:21
Оценка: 3 (1)
Здравствуйте Паха, Вы писали:

П>Здравствуйте AIR.

П>Спасибо огромное. Всё получилось. Теперь вот в дополнение вопрос возник:
П>а как определить тип компонента, который активен в данный момент TEdit, TMemo, TButton....
П>Чтобы корректно обрабатывать нажатие <Enter> (или переходить на следующий компонент или выполнять какое-либо действие)?

var
S:String;
begin
S:='Unknown';
if Form1.ActiveControl.ClassName = 'TButton' then
S:='TButton';
if Form1.ActiveControl.ClassName = 'TEdit' then
S:='TEdit';
ShowMessage(Format('I: This is a %s class!',[S]));
{================================================}
S:='Unknown';
if Form1.ActiveControl is TButton then
S:='TButton';
if Form1.ActiveControl is TEdit then
S:='TEdit';
ShowMessage(Format('II: This is a %s class!',[S]));
end;
Безвыходных ситуаций не бывает, это просто такое состояние головного мозга!!!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.