![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Взаимозависимые классы [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)
> Описание их в одном модуле объективно невозможно.
Почему?