Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.01.08;
Скачать: [xml.tar.bz2];




Вниз

Circular class reference 


oomneeq   (2001-12-14 21:26) [0]

Такая проблема
T1=class
F:T2;
end;
T2=class
F:T1;
end;
решается так
T2=class;
T1=class
F:T2;
end;
T2=class
F:T1;
end;
Вопрос: Есть ли решение для случая, когда классы T1 и T2
расположены в разных unit"ах?
У меня чего-то не получается :<



Иван Шихалев   (2001-12-14 22:03) [1]

Нет, конечно. А зачем?

Можно лишь объявить предка T2 в области видимости для T1.



oomneeq   (2001-12-17 12:00) [2]

Вопрос вобщето не праздный.
Хочется, чтоб классы имели взаимоссылки друг на друга, но по некоторым соображениям не могут быть помещены в один модуль - они есть TForm.
Пока я это делаю через посредника - некий класс, который знает обоих,
а каждый из них знает его. Через этого посредника они и доступаются друг к дружке.
Подбросьте идейку непосредственного знакомства вышеуказанных классов.
Ну хоть намекните куды копать :)



Fellomena   (2001-12-17 12:36) [3]

Не могу сказать точно как в Delphi это можно сделать, но в C++ есть такое понятие как дружественные классы,
т.е. классы, объявленные как дружественные имеют доступ ко всем полям (методам ?) другого класса, даже к тем, что
в Privat секции описанны. Я знаю, что в Delphi все классы, расположенные в одном юните считаются дружественными, но вот как
сделать тоже для разных юнитов ???



Иван Шихалев   (2001-12-17 19:17) [4]

Проблема в том, что классы должны быть описаны в секции interface (кстати, доступ к приватным полям, вроде б, и не обсуждался), а циклические ссылки в этой секции категорически запрещены. Наиболее корректный способ:


unit Unit1;

interface

uses
<стандартный набор модулей>;

type
TForm1 = class(TForm)
fldForm2 :TForm;
procedure doSomeThing;
end;

implementation

uses
Unit2;

procedure TForm1.doSomeThing;
begin
(fldForm2 as TForm2).TForm2OnlyProperty := AnyValue;
fldForm2.TFormProperty := AnotherValue
end;

end.


И совершенно аналогично - Unit2, только единичку с двоечкой местами поменять.




Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.01.08;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.72 MB
Время: 0.024 c
1-22239           Gayrus                2001-12-17 03:52  2002.01.08  
TStatusBar


1-22063           Art                   2001-12-18 15:12  2002.01.08  
А можно заблокировать доступ к папке,что-то типа fmShareExclusive ,но для папки???


1-22209           Kost                  2001-12-14 14:10  2002.01.08  
Пользовался кто нибудь функцией PaintTo для прорисовки WinControl ов на канвас битмэпа? Помогите! У меня ничего не получается.


1-22205           Denis Proshkin        2001-12-15 12:46  2002.01.08  
QReport - много данных


1-22217           greenrul              2001-12-16 02:13  2002.01.08  
TreeView - парочка вопросов