Форум: "Начинающим";
Текущий архив: 2006.06.11;
Скачать: [xml.tar.bz2];
ВнизОшибка закрытия основной формы из другой... Найти похожие ветки
← →
rra © (2006-05-25 11:04) [0]Всем привет!
Есть 2 формы. В основной идет вызов 2-й модальной формы слудующим образом:
procedure TmForm.FormActivate(Sender: TObject);
begin
fmUserSelect := TfmUserSelect.Create(self);
fmUserSelect.ShowModal;
fmUserSelect.Free;
end;
Во 2 форме в обработчике нажатия кнопки идет проверка каких-то условий и в случае невыполнения - полностью выход из программы:
procedure TfmUserSelect.Button_OkClick(Sender: TObject);
begin
...
if ...
then ...
else
begin
fmUserSelect.Close;
mForm.Close;
end;
end;
Так вот при выполнении закрытия основной формы выдает ошибку: "Cannot change Visible in OnShow or OnHide" и в отладчике выделяется строка: fmUserSelect.Free; из
procedure TmForm.FormActivate
Не могу понять, почему? Такая конструкция у меня используется в нескольких программах и работает нормально. Что не так, подмогните, плз!
← →
Сергей М. © (2006-05-25 11:11) [1]procedure TfmUserSelect.Button_OkClick(Sender: TObject);
begin
...
if ...
then ...
else
begin
Close;
Application.Terminate;
end;
end;
← →
rra © (2006-05-25 11:15) [2]Спасибо...жестко, но действенно)...
← →
Desdechado © (2006-05-25 11:34) [3]Совсем не понимаю, зачем при получении фокуса первой формой поверх нее вдруг должна (еще и модально!) выдрыгиваться другая форма.
А ошибка происходит из-за твоего непонимания событийной природы винды.
Когда ты закрываешь вторую форму управление должно передаваться на fmUserSelect.Free, но при этом у тебя происходит попытка закрытия первой формы одновременно.
Т.е., простыми словами, ты пытаешься показать форму 1 (обработчик FormActivate) и одновременно пытаешься ее зарыть (обработчик кнопки 2-й формы). В этом и конфликт.
Поменяй логику программы.
Например, закрывай 2-ю форму, возвращая ModalResult (например, mrCancel). После чегоif( fmUserSelect.ShowModal = mrCancel ) then Application.Terminate;
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.06.11;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.013 c