Вниз
Скачать: 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.023 c
15-1147256562
Megabyte
2006-05-10 14:22
2006.06.11
Ну кто так проектирует БД...


9-1131305633
DK2DK2DK2
2005-11-06 22:33
2006.06.11
ландшафт,Объясните


1-1146550657
ArchValentin
2006-05-02 10:17
2006.06.11
Проблемы со шрифтами в QuickReport


15-1147779662
dewas23
2006-05-16 15:41
2006.06.11
Какой прогой просмотреть путь пакета?


2-1148035612
Elen
2006-05-19 14:46
2006.06.11
Переопределение процедур меню другой программы




   Наверх