Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Как работать когда много форм


Автор: MaksGSC 27.1.2010, 16:18
  Здравствуйте. Мне надо доработать программу (на Delphi 7). В том числе добавить несколько новых форм и в разное время показывать их закрывать, опять показывать ...
  Если показать форму Form.ShowModal, потом закрыть (на крестик сверху), потом опять показать, иногда срабатывает нормально, иногда пишет cannot focus a disabled or invisible window. 
  Расскажите как правильно открыть форму, потом закрыть ... избежать ошибок если она уже открыта, открыта модально.
  Может правилно ShowWindow(Form.Handle, SW_RESTORE/SW_HIDE) или его не надо вообще закрывать (просто прятать если оно еще может понадобиться).
  Проблема по работе, надо быстро сделать, а я в основном с php, дизайном работаю. С Delphi так глубоко не знаком. Зарание благодарен... 

Автор: Akella 27.1.2010, 17:34
Цитата(MaksGSC @  27.1.2010,  16:18 Найти цитируемый пост)
иногда пишет cannot focus a disabled or invisible window. 

Если перевести, то это означает, что ты пытаешься дать фокус ввода какому-то невидимому элементу (не обязательно окну)

Автор: MaksGSC 27.1.2010, 18:18
 Там на клик процедура делает только 

Begin
  Form.ShowModal;
end;

и ошибка после клика, из событий которые запускаются только OnShow заполнено, а в нем только Лабелы заполняются ((

вообще если надо часто открывать и закрывать форму правильно ли открывать ShowModal (мне нужен именно Modal), a закрывать Close или крестик???

Автор: Expier 27.1.2010, 19:53
если правильно тебя понял..

при клике, открытие формы..
Код

if not Assigned(FrMainForm) then
Application.CreateForm(TFrMainForm, FrMainForm);
FrMainForm.ShowModal;


при закрытий формы (onClose) не забудь освобождать память..
Код

Action:=caFree;


у меня без проблем работает..

Автор: MaksGSC 28.1.2010, 17:15
 Спасибо... Попробую )).

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)