Классы в Дельфи
во-первых, никак. Храни в TMyClass2 указатель на объект TMyClass1
Во-вторых, то, что ты написал, это не класс, а запись.
Во-вторых, то, что ты написал, это не класс, а запись.
1) прочитать хоть одну книжку по ООП
2) понять, какую ерунду ты написал
3) уйти в монастырь
2) понять, какую ерунду ты написал
3) уйти в монастырь
конечно, я быстро набирал, ошибся. Имеется ввиду =class
Может быть, , ты знаешь ответ на вопрос? Если отправляешь к книжке, скажи, в каком разделе копать
Может быть, , ты знаешь ответ на вопрос? Если отправляешь к книжке, скажи, в каком разделе копать
см п.2
похоже ты путаешь поле и inner class, которых в делфе вроде нету (если в .NET не добавили - я там еще не копался)
похоже ты путаешь поле и inner class, которых в делфе вроде нету (если в .NET не добавили - я там еще не копался)
хм, я не слышал выражение "inner class", но такие конструкции
есть даже в самых первых версиях дельфи. Это иннер класс или нет?
Далее, п.2. В каком месте я написал ерунду? То, что в принципе невозможно из реализации TMyClass2 "видеть" поля и методы TMyClass1, в котором он содержится?
TForm1 = class (TForm)
...
Button1: TButton
...
есть даже в самых первых версиях дельфи. Это иннер класс или нет?
Далее, п.2. В каком месте я написал ерунду? То, что в принципе невозможно из реализации TMyClass2 "видеть" поля и методы TMyClass1, в котором он содержится?
как ты себе это представляешь? откуда внутренний класс вообще должен догадываться, куда его приспичет засунуть очередному программеру?
как ты себе это представляешь? откуда внутренний класс вообще должен догадываться, куда его приспичет засунуть очередному программеру?
Пример: MyButton1: TMyButton находится на MyForm1: TMyForm
Где-то в реализации класса TMyButton = class (TButton) пишем:
procedure TMyButton.SomeProc;
begin
(Self.Parent as TForm).Caption := 'Привет любимому папе от сына!'
end;
Соответственно, при создании экземпляра класса TMyForm=class(TForm) надо указать:
procedure TMyForm.Create;
begin
...
MyButton := TMyButton.Create(self);
MyButton1.Parent := self;
MyButton1.Caption := 'Привет сыну от папочки';
end;
Что скажешь?
потому что в классе TButton есть элемент Parent. Если ты в классе TMyClass2 сделаешь такое поле, а при инициализации объекта MyClass2, скажем, из конструктора класса TMyClass1 не забудешь передать в это поле указатель Self, то и ты сможешь обращаться к хозяину.
Кстати, по секрету: не помню, как это обычно делается в Дельфи, но вовсе не обязательно в классе TForm1 должен быть объект TMyButton1. Parent кнопки - это вовсе не родительский класс, а форма, на которую эту кнопку ткнули. Может, в Delphi случайно эти две вещи (класс-контейнер и форма-контейнер) совпадают, но в MFC, например, это не так.
Кстати, по секрету: не помню, как это обычно делается в Дельфи, но вовсе не обязательно в классе TForm1 должен быть объект TMyButton1. Parent кнопки - это вовсе не родительский класс, а форма, на которую эту кнопку ткнули. Может, в Delphi случайно эти две вещи (класс-контейнер и форма-контейнер) совпадают, но в MFC, например, это не так.
все, уже сделал в классе TMyClass2
Cработало.
Owner - тот, кто отвечает за освобождение памяти своего сына
Parent - это компонент, на котором визуализируется сынок.
я уже подумывал, можно ли реализовать через Интерфейсы..
TMyClass2 = class
Papa: TObject;
Cработало.
Owner - тот, кто отвечает за освобождение памяти своего сына
Parent - это компонент, на котором визуализируется сынок.
я уже подумывал, можно ли реализовать через Интерфейсы..
Оставить комментарий
Corrector
допустим, есть два класса, TMyClass1 и TMyClass2. Один из классов является полем другого класса:type TMyClass1 = record
public
MyClass2: TMyClass2
end;
Из TMyClass1 я могу обратиться к полям MyClass2, а как сделать наоборот? вызвать из MyClass2 поля TMyClass1 ?