Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ActiveControl - не срабатывает фокусировка в форме [D5]


kserg@ukr.net ©   (2002-03-12 12:39:00) 

В глав.форме на событие DblСlick на конкретном поле GRID-а вызывается модальная форма редактирования записи,
при этом я сразу перевожу фокус на cоот-щий нажатому полю Edit.Text.
Фокус устанавливаю перед открытием окна так:
if DBGridEh1.SelectedField.FullName="NMat" then fmEditCont.ActiveControl:= fmEditCont.NMat;

Проблема в том, что при первом вызове формы фокус упорно позиционируется на 1й EDIT, но при последующих вызовах формы
устанавливается правильно. В чём дело?

Заодно прошу объяснить, есть ли преимущества между использованием Form.ActiveControl или Edit.SetFocus
для первоначальной установки фокуса на нужный control?

Спасибо.


kserg@ukr.net   (2002-03-12 18:45:00) [1]

>Shaman_Naydak - понял.
Так в чём на твой взгляд проблема с первой фокусировкой?


Shaman_Naydak   (2002-03-12 18:39:00) [2]

SetFocus физически передает фокус в указанный контрол.
=> Если форма невидимая или контрол невидимый, то будет ексептион.
ActiveControl же более интеллектуальная штука и не будет ругаться, это так сказать пожелание: хочу фокус на тот контрол.. Если сейчас можно то переставит, если форма невидимая, то переставит когда будут отображать, Если нельзя переставить на контрол, ничего страшного


Johnmen   (2002-03-12 12:56:00) [3]

В OnShow формы :
if DBGridEh1.SelectedField.FieldName="NMat" then
<что-то>.SetFocus;


Наверх

Титульная страница Поиск, карта сайта Написать письмо