Вниз
Скачать: CL | DM;

Destroy компонента при TForm.Free   Найти похожие ветки 

 
Neo Trinitron ©   (2006-05-23 11:32) [0]

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


   Action:=caFree;


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


 
umbra ©   (2006-05-23 11:37) [1]


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

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


 
Ega23 ©   (2006-05-23 11:39) [2]

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


 
Amoeba ©   (2006-05-23 11:39) [3]


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

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


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

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

В DesignTime

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


 
Ega23 ©   (2006-05-23 11:46) [5]


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


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


 
Neo Trinitron ©   (2006-05-23 12:30) [6]

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

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


 
ЮЮ ©   (2006-05-23 12:30) [7]

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


 
Desdechado ©   (2006-05-23 12:34) [8]

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


 
Neo Trinitron ©   (2006-05-23 12:37) [9]

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


 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;
..........................


 
Neo Trinitron ©   (2006-05-23 12:38) [10]

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


 
Amoeba ©   (2006-05-23 12:42) [11]

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

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

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


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

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


 
Neo Trinitron ©   (2006-05-23 12:46) [13]

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


 
Elen ©   (2006-05-23 12:46) [14]


> Neo Trinitron ©

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



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

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.024 c
6-1139391853
WebSQLNeeder
2006-02-08 12:44
2006.06.11
Как програмно через TWebBrowser нажать на кнопку во ФЛЕШ?!


5-1132898095
DimaBr
2005-11-25 08:54
2006.06.11
Вызов редактора суб-компонента


3-1145431067
qazwsx
2006-04-19 11:17
2006.06.11
Коннектор к мускулу


1-1146730752
SergeyG
2006-05-04 12:19
2006.06.11
При сохранении графического файла в формате .jpg


5-1133363632
tyo
2005-11-30 18:13
2006.06.11
компиляция *.dpk с командной строки




   Наверх