Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.041 c
3-1093433284
stud
2004-08-25 15:28
2004.10.03
refresh в ибдатасет


3-1094470495
Heretic
2004-09-06 15:34
2004.10.03
Наверное сложный вопрос для понимания. :)


4-1093518577
D3viL
2004-08-26 15:09
2004.10.03
КАК УЗНАТЬ СЕРИЙНИК HDD?


4-1093797216
DeMoN_Astra
2004-08-29 20:33
2004.10.03
Диалоговое окно - Вопроса


14-1095006092
saNat
2004-09-12 20:21
2004.10.03
Rave Report





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский