Главная страница
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.013 c
1-55507
avkiev
2003-07-03 15:37
2003.07.17
Как инициализировать переменную типа IStream ?


14-55839
VK
2003-07-01 22:13
2003.07.17
RXLib


7-55862
Salvator
2003-05-06 23:11
2003.07.17
Перехват IE


3-55456
Kpax
2003-06-25 10:26
2003.07.17
TDBComboBox или?...


14-55710
Думкин
2003-06-26 07:26
2003.07.17
Флеш