Форум: "Основная";
Текущий архив: 2004.07.25;
Скачать: [xml.tar.bz2];
ВнизВзаимозависимые классы Найти похожие ветки
← →
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 вся ветка
Форум: "Основная";
Текущий архив: 2004.07.25;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.033 c