Консультация № 141305
04.08.2008, 13:29
0.00 руб.
0 2 0
Добрый день!
Такая задача: создается свой класс, в нем есть, допустим, кнопка. Для кнопки создаются события, которые должны влиять на действия этого класса. Для этого создается просто дочерний класс этой кнопки с объявлением этих самых событий. Однако как обращаться к методам первого класса?!
Или может просто можно сделать эти события прям из главного класса, но чтоб они реагировали на нажатие кнопки?!

Приложение:
TKnopkaBtn = class (TBitBtn)
procedure OnLBtnClick(Var Msg: TWMMouse); message WM_LBUTTONDOWN;
procedure OnRBtnClick(Var Msg: TWMMouse); message WM_RBUTTONDOWN;
End;
TKnopka = class
Btn: TKnopkaBtn;
<..>
End;

Обсуждение

Неизвестный
14.08.2008, 14:36
общий
наверно, проще как и принято в ООП, к членам и методам класса обращаются с указанием их класса:
class1.btn1
class1.edit1
.............
Form2.Button1
Неизвестный
14.08.2008, 15:21
общий
Спасибо, однако вы, по-видимому, не поняли столь неточную постановку вопроса. Поясню на примере:
создаем два класса, экземпляры одного из которых будут входить в состав второго.
x = class(TButton)
Procedure OnClick(Var Msg: TMessage); message WM_LBUTTONDown;
end;
y = class
Btn: x;
S: String;
constructor create;
end;
Теперь вопрос: как из процедуры OnClick получить строку y.S без обращения напрямую к объекту? Дело в том, что объект после создания живет своей жизнью и ссылка на него нигде не хранится:) Потому и возникает подобный вопрос. От жадности. Жалко памяти на то, чтоб в каждом из экземпляров x хранить ссылку на родительский y.
Форма ответа