Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.03;
Скачать: CL | DM;

Вниз

Parent   Найти похожие ветки 

 
webpauk   (2004-09-16 15:45) [0]

есть


TPopup = class

TmainMenuItem = class
public
  Popup: Tpopup
end;

Titem = class
public
  Popup: Tpopup
end;


как определить кому принадлежит Popup, когда его создают в разных классах?


 
olookin ©   (2004-09-16 15:46) [1]

какой-нибудь ClassName(Parent as TControl)?


 
Skier ©   (2004-09-16 15:50) [2]

>webpauk   (16.09.04 15:45)  

> как определить кому принадлежит Popup

Может Owner, а не Parent ?


 
webpauk   (2004-09-16 15:52) [3]

а подробней?!
У TPopup какое-то свойство должно быть?
пишется на WinApi


 
webpauk   (2004-09-16 15:53) [4]

private
  Owner:?
end;


 
афвуд   (2004-09-16 15:54) [5]


> кому принадлежит Popup


А какой смысл ты вкладываешь в эти слова?


 
webpauk   (2004-09-16 15:59) [6]

Вроде нашел:
if Self.ClassParent=TmainMenuItem then
if Self.ClassParent=Titem then


 
Skier ©   (2004-09-16 16:03) [7]

>webpauk   (16.09.04 15:59) [6]
Не то нашел.


 
webpauk   (2004-09-16 17:12) [8]

тогда как обратиться к свойствам родителя?


 
Amoeba ©   (2004-09-16 17:16) [9]

Для начала нужно иметь указатель на него.
Потомками каких классов являются классы, приведенные тобой?


 
webpauk   (2004-09-16 17:20) [10]

Tpopup может быть потомком
TmainMenuItem, Titem


 
webpauk   (2004-09-16 17:28) [11]

Оба класса TmainMenuItem, Titem создаются не как потомки, а объявляются как class


 
Skier ©   (2004-09-16 17:33) [12]

[10]-[11] очень на орех смахивает.


 
Amoeba ©   (2004-09-16 17:37) [13]


> webpauk   (16.09.04 17:28) [11]
> Оба класса TmainMenuItem, Titem создаются не как потомки,
> а объявляются как class

И чего ты еще хочешь получить со своими классами? Естественно, при таком проектировании, как у тебя, они не могут "знать", кому они "принадлежат", тем более, что они могут в принципе "принадлежать" одновременно более чем одному "владельцу". Так что при такой постановке задача решения не имеет. Пределывай свои классы. А как - думай сам. Тебе виднее.


 
Amoeba ©   (2004-09-16 17:39) [14]


> Skier ©   (16.09.04 17:33) [12]
> [10]-[11] очень на орех смахивает.

Обеими руками "за"!

LMD!


 
webpauk   (2004-09-16 18:01) [15]

Тогда подскажите как из созданного экземпляра класса обратиться к свойствам создателя


 
Amoeba ©   (2004-09-16 18:07) [16]

Прежде всего, созданный экземпляр класса должен иметь указатель на "создателя". А где он у тебя?

LMD! Нет больше слов, одни буквы остались...


 
webpauk   (2004-09-16 18:18) [17]

Ну предположим
type
TmainMenuItem = class;

TPopup = class
private
 Parent: ^TmainMenuItem ;
 procedure Length;
end;

TmainMenuItem = class
public
 Width: Integer;
 procedure AddPopup(Popup: Tpopup);
end;

procedure TmainMenuItem .AddPopup(Popup: Tpopup);
begin
  Width:=100;
  Popup:=TPopup.Create;
  Popup.Parent:=@Self;
end;

procedure TPopup.Length;
begin
 Length:=Parent.Width; //?! - ничего не выходит
end;


 
Gero ©   (2004-09-16 19:45) [18]


> Parent: ^TmainMenuItem ;

Parent: TMainMenuItem;

> Popup.Parent:=@Self;

Popup.Parent := Self;

> procedure Length;

function Length: Integer;

> procedure TPopup.Length;
> begin
>  Length:=Parent.Width;
> end;

function TPopup.Length: Integer;
begin
 Result := Parent.Width;
end;

Это так, по мелочам. А вобще конструкция организована не лучшим образом.



Страницы: 1 вся ветка

Текущий архив: 2004.10.03;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.057 c
14-1095408397
wicked
2004-09-17 12:06
2004.10.03
Знатокам C++


14-1095147454
Starter
2004-09-14 11:37
2004.10.03
StarCraft Expansion


14-1094841853
Knight
2004-09-10 22:44
2004.10.03
Подайте хакеру на маму...


1-1095169175
Vilkkkka
2004-09-14 17:39
2004.10.03
класс Frame не изменяется


3-1094535962
Senator
2004-09-07 09:46
2004.10.03
RxDBLookupCombo