Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.03.28;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.239 c
3-90750
Елена
2002-02-19 14:31
2002.03.28
paradox.lck и pdoxusrs.lck


6-91025
Bobr
2002-01-14 17:50
2002.03.28
Как получить имя текущего пользователя в NT сервисе


1-91005
Dimitriy
2002-03-15 18:17
2002.03.28
Cursor


3-90759
TOLTEC
2002-03-01 17:44
2002.03.28
номер записи


14-91055
nikulin
2002-02-13 13:47
2002.03.28
Кто либо сдавал на MCSD?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский