Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Обращение к классу [D6, WinXP]


Страницы:   1 2 3 4 5

webpauk ©   (2006-05-18 13:49:00) 

 TUser = class
 private
   fLabel: array of TLabel;
 public
   constructor Create;
   destructor Destroy; override;
   procedure DoSomething;
 end;


есть такой класс. А как из отдельно взятого fLabel обратиться к TUser.DoSomething?


Сергей М.   (2006-05-19 13:07:00) [1]


> webpauk   (19.05.06 12:21) [91]


> какой же он, блин, наследник?


Как это какой ?!

Точно такой же полноправный наследник ..


webpauk   (2006-05-19 12:21:00) [2]


> Сергей М. ©   (19.05.06 11:51) [90]

уже...
только какой же он, блин, наследник?
так - ни то, ни сё :)


Сергей М.   (2006-05-19 11:51:00) [3]


> webpauk   (19.05.06 11:47) [89]


Дык сделай его наследником Tcomponent ?

Что мешает-то ?


webpauk   (2006-05-19 11:47:00) [4]


> Сергей М. ©   (19.05.06 11:35) [88]

дык Tuser не наследник Tcomponent. Tuser = class


Сергей М.   (2006-05-19 11:35:00) [5]


> webpauk   (19.05.06 10:23) [87]


Ну если тебе хочется изобрести велосипед, то на здоровье)
Но при этом следовало хотя бы устранить путаницу в смысловом контексте выбранных тобой имен идентификаторов.


webpauk   (2006-05-19 10:23:00) [6]

да я понял...
даже с первого раза...

но если TUser = class, а не TUser = class(TComponent) , то решением будет мой вариант


Сергей М.   (2006-05-19 10:20:00) [7]


> webpauk   (19.05.06 09:44) [85]


Опять ты за свое ?)

Не нужно тебе никаких ClassCreated !

Тебе нужно узнать какому объекту класса TUser "принадлежит" тот или иной объект класса TIPLabel ? Вот для того св-во Owner и существует !

SomeUserObject := TUser.Create(..); //TUser = class(TComponent) !!
..
SomeIPLabelObject := TIPLabel.Create(SomeUserObject); //отныне владельцем только что созданного объекта класса TIPLabel становится ранее созданный объект класса TUser, ссылку на который ты передал параметром SomeUserObject !!

Все !

Теперь в любой момент обращение вида

TUser(SomeIPLabelObject.Owner).DoSomething

приведет к вызову метода DoSomething именно того объекта, который является владельцем объекта SomeIPLabelObject !


webpauk   (2006-05-19 09:44:00) [8]

Tgroup=class(TComponent) ~ fLabel.ClassCreated:=Self (ClassCreated: Tobject)


webpauk   (2006-05-19 09:41:00) [9]


> Сергей М. ©   (19.05.06 09:23) [83]

спасибо
вот это - позитив.


Сергей М.   (2006-05-19 09:23:00) [10]


> как обратиться к методам класса Tgroup через TipLabel?
>


В данной реализации - никак.

Сделай TGroup наследником TComponent и указывай TGroup-объект в качестве Owner'a для всех объектов TIPLabel, относящихся к данному TGroup-объекту.

Тогда обращение будет выглядеть след.образом

TGroup(fLabel.Owner).DoSomething


webpauk   (2006-05-18 18:07:00) [11]

а как обратиться к методам класса Tgroup через TipLabel?


webpauk   (2006-05-18 18:05:00) [12]

Form1.FLabel.Popup=Popup1
обратиться к свойствам Flabel из Popup.MenuItem1: Tlabel(Popup1.PopupComponent).в моем случае class TipLabel (Tlabel)- TipLabel(Popup1.PopupComponent).


saxon   (2006-05-18 18:01:00) [13]


> Form1.TipLabel(Popup1.PopupComponent).???.DoSomthing

Кроме Form1, больше ничего не понял :)

Что тут TipLabel - судя по семантике это функция (тогда что она возвращает)?
Popup1?
тем более Popup1.PopupComponent?


webpauk   (2006-05-18 17:56:00) [14]


> Сергей М. ©   (18.05.06 17:39) [74]

разъясни мне, тёмному, как обратиться к методам класса через Form1.fLabel


webpauk   (2006-05-18 17:54:00) [15]

 TGroup = class
 private
   fGroupName: String;
   fLabel: TIPLabel;
   fActive: Boolean;
   Items: array of TUser;
 public
   constructor Create;
   destructor Destroy; override;
   procedure DoSomthing;
 end;


Form1.TipLabel(Popup1.PopupComponent).???.DoSomthing


webpauk   (2006-05-18 17:51:00) [16]

виноват, чуть-чуть не так


webpauk   (2006-05-18 17:50:00) [17]


> Сергей М. ©   (18.05.06 17:39) [74]

да не стыдно мне

 TGroup = class;
 TUser = class
 private
   fLabel: TIPLabel;
   fStatus: Boolean;
   fDeleted: Boolean;
   fParent: TGroup;
 public
   constructor Create;
   destructor Destroy; override;
 end;


Покажи как правильно создать fLabel, чтобы, например, Form1.TipLabel(Popup1.PopupComponent).fParent.DoSomething;


Сергей М.   (2006-05-18 17:44:00) [18]


> webpauk


Только не говори, мол, я там ничего не понимаю - разговор с тобой в этом случае  в теме "Общее" тут же закончен.

И если ты ничерта не понимаешь в происходящем при вызове тобой конструктора тоно или иного объекта - давно уже добро пожаловать в "Начинающие" ... И без этого сраного гонора что ты сейчас демонстрируешь ...


Сергей М.   (2006-05-18 17:39:00) [19]


> webpauk   (18.05.06 17:31) [72]


Тебе не стыдно, а ? Не читать исх.тексты, которы у тебя перед носом, а ?


Сергей М.   (2006-05-18 17:37:00) [20]

Умываю руки.
Буратинам - читать букварь !


Страницы:   1 2 3 4 5

Наверх

Титульная страница Поиск, карта сайта Написать письмо