Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.219.22.107] |
|
Сообщ.
#1
,
|
|
|
В статье http://www.delphikingdom.com/asp/viewitem.asp?catalogid=771
описывается создание компонента наподобие TComboBox, но в выпадающем списке находится TTreeView. Основной скелет компонента: type TdkTreeBox = class; TdkListView = class(TCustomTreeView) private ... protected ... public constructor Create(AOwner: TComponent); override; end; TdkTreeBox = class(TCustomControl) private FPopupList: TdkListView; // ссылка на список ... protected ... public constructor Create(AOwner: TComponent); override; ... published ... end; Т.е. класс TdkTreeBox содержит в себе TdkListView, но не содержит некоторых событий которые необходимы. А именно в связи с малым опытом создания компонентов никак не пойму как в классе TdkTreeBox определить события например OnChange и OnExpanding класса TdkListView. Т.е. нужно чтоб TdkTreeBox имел события OnChange и OnExpanding класса TdkListView. |
Сообщ.
#2
,
|
|
|
Например вот так:
TdkTreeBox = class(TCustomControl) private FPopupList: TdkListView; // ссылка на список ... function GetOnChange: TOnChange; procedure SetOnChange( const Value: TOnChange ); protected ... public ... published ... property OnChange: TOnChange read GetOnChange write SetOnChange; end; ... function TdkTreeBox.GetOnChange: TOnChange; begin if FPopupList <> nil then Result := FPopList.OnChange else Result := nil end; procedure TdkTreeBox.SetOnChange( const Value: TOnChange ); begin if FPopupList <> nil then FPopList.OnChange := Value end; аналогично для других свойств. Просто надо написать методы чтения-записи, переадресующие реальное хранение нужному объекту. |