Головна сторінка
Top.Mail.Ru Яндекс.Метрика
Форум: "Основна";
Поточний архів: 2002.01.08;
Завантажити: [xml.tar.bz2];

Вниз

Circular class reference Знайти схожі гілки


oomneeq   (2001-12-14 21:26) [0]

така проблема
T1 = class
F: T2;
end;
T2 = class
F: T1;
end;
вирішується так
T2 = class;
T1 = class
F: T2;
end;
T2 = class
F: T1;
end;
Питання: Чи є рішення для випадку, коли класи T1 і T2
розташовані в різних unit "ах?
У мене чогось не виходить: <



Иван Шихалев   (2001-12-14 22:03) [1]

Ні звичайно. А навіщо?

Можна лише оголосити предка T2 в області видимості для T1.



oomneeq   (2001-12-17 12:00) [2]

Питання вобщето не пусте.
Хочеться, щоб класи мали взаімоссилкі один на одного, але за деякими міркувань не можуть бути поміщені в один модуль - вони є TForm.
Поки я це роблю через посередника - якийсь клас, який знає обох,
а кожен з них знає його. Через цього посередника вони і доступать одне до одного.
Підкиньте ідейку безпосереднього знайомства вищевказаних класів.
Ну хоч натякніть куди копати :)



Fellomena   (2001-12-17 12:36) [3]

Не можу сказати точно як в Delphi це можна зробити, але в C ++ є таке поняття як дружні класи,
тобто класи, оголошені як дружні мають доступ до всіх полів (методам?) іншого класу, навіть до тих, що
в Privat секції опис. Я знаю, що в Delphi все класи, розташовані в одному юніте вважаються дружніми, але ось як
зробити теж для різних юнітів ???




Иван Шихалев   (2001-12-17 19:17) [4]

Проблема в тому, що класи повинні бути описані в секції interface (До речі, доступ до приватних полів, на кшталт б, і не обговорювалося), а циклічні посилання в цій секції категорично заборонені. Найбільш коректний спосіб:

unit Unit1; interface uses ; type TForm1 = class (TForm) fldForm2: TForm; procedure doSomeThing; end; implementation uses Unit2; procedure TForm1.doSomeThing; begin (FldForm2 as TForm2) .TForm2OnlyProperty: = AnyValue; fldForm2.TFormProperty: = AnotherValue end; end.

І абсолютно аналогічно - Unit2, тільки одиничку з двоечку місцями поміняти.



сторінки: 1 вся гілка

Форум: "Основна";
Поточний архів: 2002.01.08;
Завантажити: [xml.tar.bz2];

наверх









Пам'ять: 0.56 MB
Час: 0.026 c
1-22180
Нафаня
2001-12-21 11:07
2002.01.08
Проблемка!


3-21942
оборот
2001-12-03 12:19
2002.01.08
Добрі люди допоможіть з збереженої процедурою.


1-22226
Харчування
2001-12-15 13:06
2002.01.08
Чому не працює цей простий код ...


3-21990
SkyR
2001-12-04 03:58
2002.01.08
Проблема з LookUp - полями


14-22398
Jey
2001-11-10 18:55
2002.01.08
Тут ось закортіло IRC клієнт зробити ....





африкаанс албанський арабська вірменин азербайджанець баскський білоруський болгарська каталонський Китайська (спрощене письмо) Китайський традиційний) хорватський чеська данську мову нідерландський Ukranian естонець Філіппінська фінську мову французький
галісійська грузинський німецький грецький гаїтянський креольський давньоєврейську хінді угорський ісландський індонезієць ірландський італійський японський корейський латиська литовець македонець малайський мальтійський норвежець
перс полірування португальська румунський російська сербський словацький словенський іспанська суахілі шведську мову тайський турецька український урду в'єтнамський валлійський ідиш бенгальський боснійський
кебуано есперанто гуджараті хауса хмонг ігбо яванський каннада кхмерская Лао латинь маорі маратхі монгольський непальська панджабі сомалійський тамільська телугу йоруба
зулуський
Англійська Французький Німецький Італійський Португальська Русский Іспанська