![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Создание и уничтожение дочерней формы
cyber-pilot © (2008-03-30 19:38:00)из основной формы создаю дочернюю:
if not Assigned(fmRefers) then
fmRefers := TfmRefers.Create(Self, FParam);
fmRefers.Show;
первый раз создается нормально, а после того как я ее закрываю и пытаюсь открыть снова условие не срабатывает, выдается ошибка.
Пробовал у дочерней формы писать так:
procedure TfmRefers.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
Self := nil;
end;
Не помогает. Как делать правильно?
cyber-pilot (2008-03-30 21:39:00) [21]
> либо использовать механизм Notification для того, чтобы
> ее обнилить
> при разрушении формы.
Я пока в этом слабо разбираюсь.
> Да, и конструктор Create(Self, FParam) - некошерный,
> лучше, скажем, CreateWithParam, хотя можно просто
> присвоить параметры и после обычного Create(Self).
Если вы имеете в виду переименовать Create в CreateWithParam, то это не самый лучший вариант, т.к. можно по ошибке вызвать простой Create. Присваивать параметры после создания формы мне тоже не нравится, т.к. можно забыть их присвоить, хотя пока я не вижу другого способа.
> Loginov Dmitry © (30.03.08 21:19) [2]
> > Self := nil;
>
> Обоснуй смысл сией манипуляции!
Хотел обнилить объект, чтобы потом можно было проверить существует он или нет.
Loginov Dmitry (2008-03-30 21:19:00) [22]> Self := nil;
Обоснуй смысл сией манипуляции!
Leonid Troyanovsky (2008-03-30 20:14:00) [23]
> cyber-pilot (30.03.08 19:38)
> Не помогает. Как делать правильно?
Либо не использовать ссылку fmRefers, что допустимо при Action := caFree,
либо использовать механизм Notification для того, чтобы ее обнилить
при разрушении формы.
Да, и конструктор Create(Self, FParam) - некошерный,
лучше, скажем, CreateWithParam, хотя можно просто
присвоить параметры и после обычного Create(Self).
--
Regards, LVT.