Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.12;
Скачать: CL | DM;

Вниз

Свойство TDataSet в компоненте   Найти похожие ветки 

 
Darlock   (2002-12-03 18:31) [0]

Написал я свой компонент, одно из published свойств имеет тип TDataSet - так вот когда я бросаю компонент на форму и присваиваю ему это свойство (выбрав из списка) - все хорошо, но стоит мне только удалить выбранный компонент (типа TQuery) как мой компонент начинайт заливаться ошибками. Подскажите плз, как быть?


 
Юрий Зотов ©   (2002-12-03 18:49) [1]

type
TMyComp = class(...)
private
FDataSet: TDataSet;
procedure SetDataSet(const Value: TDataSet);
protected
procedure Notification
(AComponent: TComponent; Operation: TOperation); override;
published
property DataSet: TDataSet read FTDataSet write SetTDataSet;
end;

procedure TMyComp.Notification
(AComponent: TComponent; Operation: TOperation);
begin
inherited;
if (Operation = opRemove) and (AComponent = FDataSet) then
DataSet := nil
end;

procedure TMyComp.SetDataSet(const Value: TDataSet);
begin
if FDataSet <> Value then
begin
if FDataSet <> nil then RemoveFreeNotification(FDataSet);
FDataSet := Value;
if FDataSet <> nil then FreeNotification(FDataSet)
end
end;

Этот стандартный код автоматически очищает ссылку на компонент при его удалении, даже если он лежит на другой форме или модуле данных. В Вашем коде остается только проверять FDataSet на nil при обращении к нему.


 
Юрий Федоров ©   (2002-12-03 18:50) [2]

Посмотри TComponent.FreeNotification
По нему обниливай ссылку на Dataset(если разрушен он), а в коде
везде проверяй Dataset на nil.
Вроде так


 
Darlock   (2002-12-03 19:05) [3]

Спасибо огромное, завтра проверю.



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

Текущий архив: 2002.12.12;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.013 c
1-36245
Vladimir SOA
2002-12-02 08:35
2002.12.12
Установка Delphi 4.0 в Windows 2000/XP


7-36452
Алексей ВМ
2002-10-10 17:17
2002.12.12
To Александр Специлин.


6-36315
BarSuk2002
2002-10-18 10:11
2002.12.12
Как подстраховаться и закрыть возможные атаки по порту 23?


1-36154
LORD
2002-12-03 19:09
2002.12.12
Buffer + Tstream


1-36122
jen_bond
2002-12-03 12:51
2002.12.12
Эмуляция click