2016-09-16 8 views
0

Я строю (в Delphi XE7) настраиваемый элемент управления на основе TGroupBox. Он содержит среди других элементов управления TButtonedEdit.Как узнать, когда пользователь нажал кнопку TButtonedEdit.OnRightButton?

constructor TMyControl.Create(aOwner: TComponent); 
VAR myIcon: TIcon; 
begin 
inherited Create(aOwner); 
... 
edtPath:= TButtonedEdit.Create(Self); 
WITH edtPath DO 
    begin 
    Parent    := Self; 
    RightButton.Glyph.OnClick:= MyOwnHandler;  <- Here error: "Cannot access protected symbol TEditButton.Glyph" 
    RightButton.OnRightButtonClick:= MyOwnHandler; <- Here error: "Undeclared identifier: 'OnRightButtonClick'" 
    end; 
end; 

Как узнать, когда пользователь нажал кнопку RightButton?

GetOnRightButtonClick и SetOnRightButtonClick являются частными. То же самое для RightButton.Glyph.OnClick.

ответ

2

Нет причин для доступа RightButton или что-либо помимо самого элемента управления. Просто назначьте обработчик событий непосредственно на TButtonedEdit.OnRightButtonClick. Любые события, которые вы находите в свойствах элемента управления, предназначены только для внутреннего использования самим элементом управления. Эти события не публикуются, поэтому вы не должны пытаться их использовать.

WITH edtPath DO 
begin 
    Parent    := Self; 
    OnRightButtonClick:= MyOwnHandler; 
end; 
+0

Hi Jerry. Это также не сработает. Я получаю: «Необъявленный идентификатор:« OnRightButtonClick »« – Ampere

+0

@SolarWind Посмотрите в свой инспектор объектов для одного из этих элементов управления TButtonedEdit. В частности, события. Вы видите такое событие «OnRightButtonClick»? –

+0

Да. Я на самом деле это вижу! Я также вижу OnLeftButtonClick. – Ampere