Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.17;
Скачать: CL | DM;

Вниз

Немодальные формы, caFree и if Assign(MyForm) ...????   Найти похожие ветки 

 
simeon   (2003-07-03 19:26) [0]

Проблема:
Есть *немодальные* формы кот-е создаются при необходимости. Убиваются на OnClose через Action := caFree;
Если потом (после убийства) запросить
if Assign(MyForm) then
MyForm.Caption := "bla-bla-bla" ...
то переодичски можно получить AV.
Как справится с ситуацией, FreeAndNil(MyForm) не вызвать, ибо неизвестен момент убийства?


 
Serginio   (2003-07-03 19:30) [1]

Либо записывать Self при создании например в TList и удалять из него при уничтожении. Либо напрямую в Destroy MyForm:=nil;


 
Serginio   (2003-07-03 19:45) [2]

Вернее создать наследника от TForm содержащее поле в котором содержится ссылка на Объект .
pMyForm=^TForm;
TMyForm= Class(TForm);
private
fPOwnerForm:pMyForm
public
Coctructor.Create(AOwner: TComponent; var OwnerForm:TMyForm); override;
Destructor destroy; Override;
//--------------------
//--------------------------------
constructor TMyForm.Create(AOwner: TComponent; var OwnerForm:TMyForm);
begin
inherited Create(AOwner);
fPOwnerForm:=@OwnerForm;
end;

destructor TMyForm.Destroy;
begin
fPOwnerForm^:=Nil;
inherited Destroy;
end;


 
Serginio   (2003-07-03 19:52) [3]

Вернее
constructor TMyForm.Create(AOwner: TComponent; var OwnerForm:TMyForm);
begin
OwnerForm:=inherited Create(AOwner);
fPOwnerForm:=@OwnerForm;
end;
Что бы затем просто вызвать.
TMyForm.Create(Application, MyForm);



 
Anatoly Podgoretsky ©   (2003-07-03 20:06) [4]

Зачем вообще нужна глобальная переменная, форма доступна через объект Screen.



Страницы: 1 вся ветка

Текущий архив: 2003.07.17;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.016 c
14-55833
Blackweber
2003-07-01 10:49
2003.07.17
как запустить из батника несколько екзешников, без явного указани


11-55482
mike.dld
2002-11-09 15:42
2003.07.17
StringGrid


1-55642
DeDok
2003-07-04 09:13
2003.07.17
Toolbar как в Visual.NET


14-55834
PlaTinum
2003-07-01 20:16
2003.07.17
Raport


1-55597
Ross
2003-07-03 13:51
2003.07.17
Создание и удаление файла