Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.01.2010, 21:32   #1
UnChanter
Пользователь
 
Аватар для UnChanter
 
Регистрация: 14.12.2008
Сообщений: 65
По умолчанию Переход между компонентами

Есть на форме, допустим, 3 едита, нужно чтобы по нажатию в одном едите, Enter, фокус передавался во второй (как кнопкой Tab). Собственно тут всё понятно, в каждом едите OnKeyPress прописать переход. НО! можно ли как нибудь систематизировать это? т.е. чтобы написать отдельную процедуру, которая будет обрабатывать переход, а не писать в каждом едите.

И второй вопрос... Насколько я понял по нажатию на кнопку Tab фокус передаётся последующему компоненту, а вот как изменить какой компонент будет следующим? т.к. у меня не в том порядке нужно передавать фокус.
UnChanter вне форума Ответить с цитированием
Старый 10.01.2010, 23:25   #2
anGeee
Пользователь
 
Аватар для anGeee
 
Регистрация: 18.11.2008
Сообщений: 94
По умолчанию

Начну со второго вопроса.
У компонент есть свойство TabOrder. Там и указывается порядок элементов при табуляции.
Вот, а на счёт первого вопроса я не уверен, но попробую )
Можно написать один обработчик по нажатию клавиши для всех едитов. Так как в процедуру передаётся объект, вызвавший эту самую процедуру, то можно узнать его TabOrder. Допустим, запомнили в переменную i. Вот, и потом можно пробегаться по всем компонентам на форме, если они относятся к классу TEdit, то сравнивать его TabOrder с i+1 и передавать ему фокус )
зы Ещё в голову по ходу дела пришло эмулировать нажатие Tab'а ^^
anGeee вне форума Ответить с цитированием
Старый 11.01.2010, 01:08   #3
UnChanter
Пользователь
 
Аватар для UnChanter
 
Регистрация: 14.12.2008
Сообщений: 65
По умолчанию

за второй вопрос спасибо!

Код:
procedure TForm1.MyProc(Sender: TObject; var Key: Char);
begin
 if key=#13 then ShowMessage('Работает!!!');
....
// дальше понятно
end;

procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
 for i:=0 to Form1.ComponentCount-1 do
  if Components[i] is TEdit then
  with Components[i] as TEdit do OnKeyPress:=MyProc
end;
вот что получилось...
Спасибо!
UnChanter вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PageControl и запрет на переход между страницами Шульц Общие вопросы Delphi 5 04.11.2009 23:13
Переход между формами! Lemo Общие вопросы Delphi 5 05.02.2009 15:50
Переход между формами(( Lemo Общие вопросы Delphi 6 31.01.2009 22:06
Переход между компонентами stepchild Общие вопросы Delphi 5 29.05.2008 20:07
Как запретить переход между диалоговыми окнами. dnkR Общие вопросы Delphi 1 18.01.2007 06:59