Форум: "Основная";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];
ВнизСокрытие события Найти похожие ветки
← →
Soldat © (2004-04-13 14:46) [0]Вопрос к местным гуру. Ситуация: есть некий класс, у него описано событие, например, OnClick. Наследую от него другой класс, создаю событие OnMyClick (published) и хочу чтобы пользовались только им, а OnClick переопределяю сам в конструкторе и хочу чтобы его видно никому не было. Объясните, мне ламеру, плз, как сокрыть этот самый OnClick? Банальное переопределение property OnClick в секции Private или Protected не помогает... Заранее спасибо за ответ.
← →
Skier © (2004-04-13 14:53) [1]>Soldat © (13.04.04 14:46)
> есть некий класс, у него описано событие, например, OnClick
Какой класс, конкретно ?
← →
Soldat © (2004-04-13 15:05) [2]
> Какой класс, конкретно ?
TEdit
← →
pasha_golub © (2004-04-13 15:06) [3]Soldat © (13.04.04 14:46)
А почему не помогает private or protected?
← →
Skier © (2004-04-13 15:07) [4]>Soldat © (13.04.04 15:05) [2]
Наследуйся от TCustomEdit и не выноси OnClick в published
секцию
← →
Amoeba © (2004-04-13 15:08) [5]Если у TCustomEdit это событие не Published (Delphi под рукой нет, проверить не могу), то наследуй свой компонент от TCustomEdit.
← →
Юрий Зотов © (2004-04-13 15:10) [6]Вообще-то, не надо создавать никаких OnMyClick, а надо просто заместить метод диспетчеризации уже имеющегося события (имя этого метода должно быть Click или DoClick - посмотрите по исходникам). В замещенном методе можете делать все, что угодно - и не нужно плодить сущности без необходимости.
← →
Soldat © (2004-04-13 15:10) [7]
> А почему не помогает private or protected?
А шишь его знает, вижу все события в Object inspector"e вот и все... А хоцца, чтобы OnClick не был виден...
← →
Amoeba © (2004-04-13 15:13) [8]
> Soldat © (13.04.04 15:10) [7]
>
> > А почему не помогает private or protected?
>
>
> А шишь его знает, вижу все события в Object inspector"e
> вот и все... А хоцца, чтобы OnClick не был виден...
Область видимости уменьшить нельзя. Так что "в лоб" задача не решается. См. посты 4, 5, 6.
← →
Юрий Зотов © (2004-04-13 15:16) [9]> Soldat
1. Private or protected не помогает потому, что и не должно помогать.
2. Если уж прям вот так невтерпеж непременно создать свое собственное событие, то см. [4].
3. А ПРАВИЛЬНОЕ решение см. в [6].
← →
Soldat © (2004-04-13 15:17) [10]
> надо просто заместить метод диспетчеризации уже имеющегося
> события (имя этого метода должно быть Click или DoClick
> - посмотрите по исходникам).
Метода диспетчеризации у него нет, а FOnClick находится в секции private и, соответственно, я с ним ничего поделать не могу =(
← →
Amoeba © (2004-04-13 15:19) [11]
> FOnClick находится
> в секции private и, соответственно, я с ним ничего поделать
> не могу =(
А его и не надо трогать, пусть себе живет. Он ведь никому не мешает.
← →
Семен Сорокин © (2004-04-13 15:20) [12]Soldat © (13.04.04 15:17) [10]
Метода диспетчеризации у него нет, а FOnClick находится в секции private и, соответственно, я с ним ничего поделать не могу =(
ваша неправда:
см.TControl = class(TComponent)
...
procedure Click; dynamic;
...
← →
pasha_golub © (2004-04-13 15:20) [13]Soldat © (13.04.04 15:17) [10]
Ты не так Зотова понял, тебе не FOnClick нуно заменить, а DoClick
← →
pasha_golub © (2004-04-13 15:21) [14]pasha_golub © (13.04.04 15:20) [13]
Ошибка, не DoClick, а просто Click
← →
Юрий Зотов © (2004-04-13 15:21) [15]> Soldat © (13.04.04 15:17) [10]
> Метода диспетчеризации у него нет
У события OnClick нет метода диспетчеризации????
Знаете, а Вы все же попробуйте написать в protected:
procedure Click; override;
Вдруг все-таки получится заместить "несуществующий" метод?
:о)
← →
Soldat © (2004-04-13 15:30) [16]
> У события OnClick нет метода диспетчеризации????
> Знаете, а Вы все же попробуйте написать в protected:
> procedure Click; override;
> Вдруг все-таки получится заместить "несуществующий" метод?
> :о)
Сорри, лоханулся =) Предупреждал же что ламер. Ладно, спасибочки всем кто принял участие в дискуссии, вроде въехал, буду дальше топтать клаву =)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.032 c