Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-1082214926
Barmaglot
2004-04-17 19:15
2004.05.02
Pascal......работа с матрицами....


3-1080988684
race1
2004-04-03 14:38
2004.05.02
integer overflow в гриде


8-1075538455
Reals
2004-01-31 11:40
2004.05.02
Как нарисовать на Рабочем столе (Desktop`е)


1-1082272910
Андрей Сенченко
2004-04-18 11:21
2004.05.02
Обработчик произвольных строк с разделителями.


1-1081499286
fatal
2004-04-09 12:28
2004.05.02
Полупрозрачные окна





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский