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

Вниз

Как связать объекты?   Найти похожие ветки 

 
UserL   (2002-03-14 12:22) [0]

Доброе время суток!!!
Вопрос в следующем. Создаются динамически два объекта, один из которых подразумеваеться главным. Причем они друг с другом ничем не связаны, и главность условная, просто для того, чтоб не главный объект знал что делаеться с главным и наоборот. Как отдать главному объекту указатель на второй (менее главный) объект?


 
DieHard ©   (2002-03-14 12:32) [1]


Type
TNotMainObject = class;

TMainObject = class (...)
private
FNotMainObject:TNotMainObject;
...
public
...
property NotMainObject:TNotMainObject read GetNotMainObject write SetNotMainObject;
...
end;

TNotMainObject = class (...)
private
FMainObject:TMainObject;
...
public
...
property MainObject:TMainObject read GetMainObject write SetMainObject;
...
end;



 
DieHard ©   (2002-03-14 12:34) [2]

Ну конечно соответсвующие методы GetXXX и SetXXX обращаются к соответствующим полям


 
UserL   (2002-03-14 13:23) [3]

И как сделать чтоб к примеру удаляя главный объект, второй объект тоже удалился? Я не совсем понял. Извеняюсь за свою необразованность.


 
DieHard ©   (2002-03-14 13:28) [4]

destructor TMainObject.Destroy;
begin
if Assigned(FNotMainObject) then FNotMainObject.Free;
inherited;
end;


 
Владислав ©   (2002-03-14 13:34) [5]

Можно использовать в качестве родителя твоего класса класс TComponent. Там это уже реализовано.


 
_Mike_   (2002-03-14 14:15) [6]

При создании "главного" объекта указывать владельцем form1,
а при создании "другого" - "главный" объект. Тогда при закрытии
формы все объекты корректно удалятся. Другой обращается к главному так:
(owner as tMain).left
а наоборот так:
(controls[0] as tOther).left

Например, вот так:

PROCEDURE tForm1.FormCreate(sender: tObject);
BEGIN
// создадим "главный" объект
main:=tMain.Create(form1);
WITH main DO BEGIN
left:=8;
top:=8;
//...
END;

// создадим "другой" объект
other:=tOther.Create(main);
WITH other DO BEGIN
left:=8;
top:=8;
//...
END;

END;



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

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

Наверх




Память: 0.48 MB
Время: 0.009 c
3-90775
lel
2002-02-27 16:37
2002.03.28
DataModule премущества и недостатки, если они есть конечно???


4-91106
MrAngel
2002-01-21 12:06
2002.03.28
Использование функции GetDesktopWnd


14-91050
Дмитрий
2002-02-14 11:48
2002.03.28
Мистика


14-91037
.: Joiro :.
2002-02-12 21:31
2002.03.28
Кто хочет стать вампиром?


1-90912
Сержжж
2002-03-18 11:25
2002.03.28
Не работает Delpi 5 в XP