Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС 2017
выпущен 15 марта!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

БОЛЬШОЙ FAQ ПО DELPHI



Освобождение экземпляров формы

Автор: Jeff Fisher

В нашем примере для решения задачи мы передаем конструктору переменную формы. Затем, при закрытии формы, мы сбрасываем эту переменную.

Естественно, эта технология подразумевает написание некоторого кода, поэтому, если вы не расположены к этому действию, пропустите мое дальнейшее повествование.


 TMyForm = class(TForm)
 ...
 
 private
   FormVar: ^TMyForm;
 public
   constructor Create(AOwner: TComponent; var AFormVar: TMyForm);
   destructor Destroy; override;
 end;
 
 constructor TMyForm.Create(AOwner: TComponent; var AFormVar: TMyForm);
 begin
   FormVar := @AFormVar;
   inherited Create;
   .....
 end;
 
 destructor TMyForm.Destroy;
 begin
   FormVar^ := nil;
   inherited Destroy;
 end;
 
 MyForm := TMyForm.Create(Self, MyForm);
 MyOtherForm := TMyForm.Create(Self, MyOtherForm);
 

Этот код при разрушении окна автоматически сбрасывает все, что вы передаете в AFormVar, в nil.

Как вы, наверное, заметили, частный член FormVar реально является указателем на указатель. Так, читая содержимое памяти, адрес которой содержится в FormVar, мы реально получаем переменную формы. Таким образом мы можем просто установить ее в nil.




<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ



Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS