Классы в Дельфи
Во-вторых, то, что ты написал, это не класс, а запись.
2) понять, какую ерунду ты написал
3) уйти в монастырь
Может быть, , ты знаешь ответ на вопрос? Если отправляешь к книжке, скажи, в каком разделе копать
похоже ты путаешь поле и inner class, которых в делфе вроде нету (если в .NET не добавили - я там еще не копался)
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;
Что скажешь?
Кстати, по секрету: не помню, как это обычно делается в Дельфи, но вовсе не обязательно в классе TForm1 должен быть объект TMyButton1. Parent кнопки - это вовсе не родительский класс, а форма, на которую эту кнопку ткнули. Может, в Delphi случайно эти две вещи (класс-контейнер и форма-контейнер) совпадают, но в MFC, например, это не так.
TMyClass2 = class
Papa: TObject;
Cработало.
Owner - тот, кто отвечает за освобождение памяти своего сына
Parent - это компонент, на котором визуализируется сынок.
я уже подумывал, можно ли реализовать через Интерфейсы..
Оставить комментарий
Corrector
допустим, есть два класса, TMyClass1 и TMyClass2. Один из классов является полем другого класса:type TMyClass1 = record
public
MyClass2: TMyClass2
end;
Из TMyClass1 я могу обратиться к полям MyClass2, а как сделать наоборот? вызвать из MyClass2 поля TMyClass1 ?