Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Взаимозависимые классы [D5, Win2k]


Kost ©   (2004-07-12 07:13:00) 

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


Программер   (2004-07-12 18:06:00) [1]

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


evvcom   (2004-07-12 09:28:00) [2]

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


ЮЮ   (2004-07-12 09:20:00) [3]

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

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


Kost   (2004-07-12 09:11:00) [4]

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


Anatoly Podgoretsky   (2004-07-12 09:05:00) [5]

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


Kost   (2004-07-12 08:59:00) [6]

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


ЮЮ   (2004-07-12 08:53:00) [7]

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

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


Anatoly Podgoretsky   (2004-07-12 08:37:00) [8]

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


Kost   (2004-07-12 08:27:00) [9]

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


evvcom   (2004-07-12 08:14:00) [10]


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

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


Kost   (2004-07-12 08:07:00) [11]

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


Думкин   (2004-07-12 07:57:00) [12]

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

Почему?


Наверх

Титульная страница Поиск, карта сайта Написать письмо