Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.09.2011, 19:58   #1
Dimasw
Пользователь
 
Регистрация: 12.09.2010
Сообщений: 69
По умолчанию переписать событие своего компонента

Подскажите плиз.
Создаю свой компонент
Код:
TTreeViewMarket = class(TTreeView)
в конструкторе определяю обработчик события OnChange
Код:
constructor TTreeViewMarket.Create(Owner: TComponent);
begin
  inherited Create(Owner);
  (Self as TTreeView).OnChange:=OnMyChange;
end;
Все работает, но теперь возникает вопрос: Если этот компонент потом я ложу на форму и определяю ему обработчик события OnChange во время разработки то срабатывает одна обработка, если не определяю OnChange, то срабатывает другая, которая была заложена в конструкторе. Как сделать так, чтобы и та и эта обработка срабатывала на событие OnChange (определенная в конструкторе и та, что выбрал пользователь во время разработки проекта)
SELECT BEST FROM LIFE
Dimasw вне форума Ответить с цитированием
Старый 25.09.2011, 20:41   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Если устроит такая последовательность:
1. Отрабатывает пользовательский OnChange если есть
2. Отрабатывает внутренняя процедура на событие OnChange
то можно попробовать так:
Код:
type
  TTreeViewMarket = class(TTreeView)
  protected
    procedure Change(Node: TTreeNode); override;
  end;
...
procedure TTreeViewMarket.Change(Node: TTreeNode);
begin
  inherited;
  //здесь обращение к вашей процедуре обработки OnChange
  //в конструкторе не задавайте обработчик события OnChange
end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 25.09.2011, 22:08   #3
Dimasw
Пользователь
 
Регистрация: 12.09.2010
Сообщений: 69
По умолчанию

Спасибо.
Я так и думал, только не знал какую процедуру переопределять. Искал в TCustomTreeView a надо в TWinControl.Change
SELECT BEST FROM LIFE
Dimasw вне форума Ответить с цитированием
Старый 25.09.2011, 22:40   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Так метод Change и находится в TCustomTreeView (по крайней мере в Д7)
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с подключением своего компонента к программе SalasAndriy Компоненты Delphi 7 03.10.2010 10:06
Узнать индекс компонента в событие larin1974 Общие вопросы Delphi 5 13.12.2009 13:59
Помогите в создании своего компонента hunter03 Компоненты Delphi 1 06.11.2009 09:36
Как перехватить событие родительского компонента? postal2 Компоненты Delphi 3 28.08.2009 12:31
Заменить стандартное событие компонента при создании своего. postal2 Компоненты Delphi 6 28.08.2009 11:01