Форум: "Основная";
Текущий архив: 2003.07.17;
Скачать: [xml.tar.bz2];
ВнизНемодальные формы, 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c