Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Destroy компонента при TForm.Free [D6, 2000]


Neo Trinitron ©   (2006-05-23 11:32:00) 

Есть форма, на ней грида. Нужно чтобы выполнился деструктор гриды при уничтожении формы. В OnClose формы пишу:


   Action:=caFree;


Однако деструктор гриды не вызывается, если я явно его не вызову. Почему? По идее при разрушении формы вызываются деструкторы всех компонентов на ней...


Neo Trinitron   (2006-05-23 12:46:00) [1]

Amoeba ©, спасибо! Всё получилось! Буду знать теперь.


Elen   (2006-05-23 12:46:00) [2]


> Neo Trinitron ©

Извини за глупый вопрос, но зачем сбрасывать фильтр если уничтожаеш форму? (т.е. закрываеш все как есть)


Desdechado   (2006-05-23 12:43:00) [3]

компонент самописный?
а деструктор специально не перекорываешь?


Amoeba   (2006-05-23 12:42:00) [4]

А вот и причина!

> public
>    constructor Create(AOwner: TComponent);override;
>     destructor Destroy;

Где override в объявлении деструктора? Деструкторы всегда виртуальные ведь!


Neo Trinitron   (2006-05-23 12:38:00) [5]

ЮЮ, прямо над Вашим постом ответ на Ваш вопрос...


Neo Trinitron   (2006-05-23 12:37:00) [6]

>ну-ка, ну-ка
>код в студию


 public
   constructor Create(AOwner: TComponent);override;
   destructor Destroy;
.......................
destructor TDBGridEhFilter.Destroy;
begin
  with DataSource.DataSet do begin
     Filtered:=false;
     Filter:='';
  end; {with}
  inherited Destroy;
end;
..........................


Desdechado   (2006-05-23 12:34:00) [7]

> По задумке в деструкторе вызывается
ну-ка, ну-ка
код в студию


Neo Trinitron   (2006-05-23 12:30:00) [8]

> при удалении парента деструктор грида обязательно вызовется.

Вот! И я так знаю, но увы, не работает! По задумке в деструкторе вызывается очистка фильтра приатаченого датасета (который не разрушается), а он не чистится если явно не указываю Destroy...


ЮЮ   (2006-05-23 12:30:00) [9]

>Однако деструктор гриды не вызывается
Откуда такое умозаключение?


Ega23   (2006-05-23 11:46:00) [10]


> В смысле? С палитры компонентов перетащил на форму.
>


Тогда - врёшь, при удалении парента деструктор грида обязательно вызовется.


Neo Trinitron   (2006-05-23 11:42:00) [11]

> Компонент создан в DesignTime или в RunTime?

В DesignTime

>Как создавал грид?
В смысле? С палитры компонентов перетащил на форму.


Ega23   (2006-05-23 11:39:00) [12]

Как создавал грид?


Amoeba   (2006-05-23 11:39:00) [13]


> Нужно чтобы выполнился деструктор гриды при уничтожении
> формы.

Компонент создан в DesignTime или в RunTime?


umbra   (2006-05-23 11:37:00) [14]


> Однако деструктор гриды не вызывается, если я явно его не
> вызову.

с чего Вы это взяли?


Наверх

Титульная страница Поиск, карта сайта Написать письмо