![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как связать объекты?
UserL © (2002-03-14 12:22:00)Доброе время суток!!!
Вопрос в следующем. Создаются динамически два объекта, один из которых подразумеваеться главным. Причем они друг с другом ничем не связаны, и главность условная, просто для того, чтоб не главный объект знал что делаеться с главным и наоборот. Как отдать главному объекту указатель на второй (менее главный) объект?
_Mike_ (2002-03-14 14:15:00) [1]При создании "главного" объекта указывать владельцем 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;
Владислав (2002-03-14 13:34:00) [2]Можно использовать в качестве родителя твоего класса класс TComponent. Там это уже реализовано.
DieHard (2002-03-14 13:28:00) [3]destructor TMainObject.Destroy;
begin
if Assigned(FNotMainObject) then FNotMainObject.Free;
inherited;
end;
UserL (2002-03-14 13:23:00) [4]И как сделать чтоб к примеру удаляя главный объект, второй объект тоже удалился? Я не совсем понял. Извеняюсь за свою необразованность.
DieHard (2002-03-14 12:34:00) [5]Ну конечно соответсвующие методы GetXXX и SetXXX обращаются к соответствующим полям
DieHard (2002-03-14 12:32:00) [6]
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;