На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Обязательно выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.

Этот раздел предназначен для вопросов, посвященных разработке компонентов, а также для тестирования собственных бесплатных компонентов с открытым исходным кодом.

Здесь запрещается:
1. Размещать ссылки на какие-либо коммерческие компоненты, реализующие требуемую функциональность.
2. Обсуждать и тестировать коммерческие компоненты или компоненты с закрытым кодом.
3. Давать ссылки на сайты с исходным кодом компонентов. Все тестируемые исходные коды должы быть размещены на сайте ИСХОДНИКИ.RU.
Модераторы: Rouse_, DimaBr
  
> Как определить события , OnChange и OnExpanding в компоненте
    В статье http://www.delphikingdom.com/asp/viewitem.asp?catalogid=771
    описывается создание компонента наподобие TComboBox, но в выпадающем списке находится TTreeView.

    Основной скелет компонента:

    ExpandedWrap disabled
      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.
      Например вот так:
      ExpandedWrap disabled
          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;

      аналогично для других свойств.

      Просто надо написать методы чтения-записи, переадресующие реальное хранение нужному объекту.
      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,2848 ]   [ 16 queries used ]   [ Generated: 5.05.24, 10:56 GMT ]