Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.031 c
14-1089079484
Думкин
2004-07-06 06:04
2004.07.25
С днем рождения! 6 июня


1-1089748982
far
2004-07-14 00:03
2004.07.25
Файлы ресурсов для компонентов


4-1086780359
RoadStar
2004-06-09 15:25
2004.07.25
Как рисовать на чужом окне?


1-1089350175
Kaginava
2004-07-09 09:16
2004.07.25
таймер в потоке


1-1089636739
Aleksandr.
2004-07-12 16:52
2004.07.25
Есть ли надежный метод отличить строку OEM от ANSI?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский