Вниз
Скачать: CL | DM;

Взаимозависимые классы   Найти похожие ветки 

← →
Kost   (2004-07-12 07:13) [0]

Ребята, помогите решить проблему:
Есть два класса, описанные в разных
модулях. Описание их в одном модуле
объективно невозможно.
Необходимо, чтобы они были взаимозависимы.
Как избавиться от ошибки "circular unit reference"?


← →
Думкин ©   (2004-07-12 07:57) [1]

> Kost   (12.07.04 07:13)
> Описание их в одном модуле объективно невозможно.

Почему?


← →
Kost ©   (2004-07-12 08:07) [2]

Потому что один из классов является формой.
И очень хочется использовать методы визуальной среды
размещения на форме компонентов.


← →
evvcom ©   (2004-07-12 08:14) [3]


> Как избавиться от ошибки "circular unit reference"?

Если юзание одного из них переместить из интерфейсной части модуля в implementation uses, то ошибка исчезнет.


← →
Kost ©   (2004-07-12 08:27) [4]

Перемещение невозможно. Классы-взаимозависимы!


← →
Anatoly Podgoretsky ©   (2004-07-12 08:37) [5]

Kost ©   (12.07.04 08:07) [2]
И чем это противоречит объежинению в одном модуле?


← →
ЮЮ ©   (2004-07-12 08:53) [6]

>Потому что один из классов является формой.

Тогда второиу не стоит знать о первом более того, что он TForm.
А если ему обязательно надо знать, что первый - TSuperPuperForm, то ему, однозначно, место в одном unit-е


← →
Kost ©   (2004-07-12 08:59) [7]

У каждого из классов есть по внутренней форме - они понятно в одном модуле. Теперь каждый из классов хочет знать друг о друге.
Не буду же я в одном модуле лепить две формы и креэйтить их в ручную!


← →
Anatoly Podgoretsky ©   (2004-07-12 09:05) [8]

Kost ©   (12.07.04 08:59) [7]
Нестыковочка, по твоим словам выходит, что у тебя не одна форма, а две или более в каждом модуле, тогда это означает, что они создаются вручную, на твоем жаргоне креэйтся.


← →
Kost ©   (2004-07-12 09:11) [9]

Anatoly Podgoretsky ©  
Извините за настойчивость. А никак нельзя, чтобы кажадая форма как обычно была привязана к своему модулю, но как-то организовать, чтобы эта форма видела класс из другого модуля, а тот класс эту форму?


← →
ЮЮ ©   (2004-07-12 09:20) [10]

См. evvcom ©   (12.07.04 08:14) [3]

В том случае, если видимости достаточно в методах, то перенести
в uses implementation-секции модуля


← →
evvcom ©   (2004-07-12 09:28) [11]

А если видимость нужна также и в интерфейсной части, то в интерфейсной делать MyVar: TForm; далее [3]; а уже в реализации MyVar as TMySuperPuperForm


← →
Программер ©   (2004-07-12 18:06) [12]

IMHO Ошибка проектирования надо читать рефакторинг Фаулера. Можно и попростому - юзай интерфейсы они рулез. Можешь связывать что хочешь с чем хочешь.



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

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.047 c
3-1088357295
3APA3A
2004-06-27 21:28
2004.07.25
Сообщение EXCEPTION а


6-1085736921
ГудБой
2004-05-28 13:35
2004.07.25
Доскажите компонент, для реализации шлюзя (прокси,фаервола)


14-1089017822
Сергей Г
2004-07-05 12:57
2004.07.25
Переведи


3-1088335340
Vemer
2004-06-27 15:22
2004.07.25
Подгонка высоты ячеек в QReport...


3-1088593282
Darthman
2004-06-30 15:01
2004.07.25
Firebird (Interbase) хочу через insert вставить дату




   Наверх