Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как убрать событие родителя из секции __published, у потомка?(создание компонента) 
:(
    Опции темы
np9mi7
  Дата 21.8.2005, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 553
Регистрация: 17.8.2003
Где: Volgograd, Russia

Репутация: 1
Всего: 10



Добрый день.

Написан визуальный компонент: TCheckListView; Он наследник TListView, и использует два события родителя: OnChange & OnChanging. Залача - убрать эти два события из Object Inspector;

Мне казалось что это решается тривиально строкой:
Код

class PACKAGE TCheckListView : public TListView
{
private:
        __property OnChange;
        __property OnChanging;
};


Компилятор этот текст воспринял, но вот Object Inspector никак, те события OnChange & OnChanging остались доступными, и на них свободно можно навесить обработчики.

Вопрос: как сделать недоступными эти события?

И вообще как скрывать __property из секции __published базового класса у наследника?

ЗАранее благодарен за ответы.


--------------------
"Я точно знаю то, что ничего не знаю..." Сократ.
evolution project
PM MAIL WWW ICQ MSN   Вверх
Vyacheslav
Дата 22.8.2005, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 47
Всего: 59



Во-первых, для создания соего компонента лучше использовать TCustomListView. Он как раз и предназначен чтобы программист, мог открыть для доступа только нужные совейства и методы. Если посмотришь на хидер , то увидишь , что в различе TListView только в опубликовании свойств. Поэтому Вам следовало поступить также: не пытаться закрывать уже открытое у TListView , а окрыть закрытое в TCustomListView. Ну а если лень переделывать, могу предложить следующее. Поскольку даже опубликованнон свойство выпадает из инспектора если не задать метод чтения, то можно просто переопределить это свойство типа
Код


  __property TLVChangeEvent    OnChange = {stored =false};
  __property TLVChangingEvent OnChanging = {strored =false};


PS. Здесь stored к делу отношения не имеет . Главное, что не задан метод чтения. И обязательно указание типа. Тем самым перекрывается свойство родителя перекрывается совершенно левым. Доступ к родительскому можно получить посредством непосредсвенного обращения.
Можно попробовать так

Код

__property TLVChangeEvent    OnChange;


Возможно тоже пройдет


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
np9mi7
Дата 22.8.2005, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 553
Регистрация: 17.8.2003
Где: Volgograd, Russia

Репутация: 1
Всего: 10



Vyacheslav, Вы как всегда мне очень помогли, спасибо Вам большое!


--------------------
"Я точно знаю то, что ничего не знаю..." Сократ.
evolution project
PM MAIL WWW ICQ MSN   Вверх
tigger
Дата 23.8.2005, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 456
Регистрация: 30.4.2005

Репутация: 2
Всего: 4



Убрать любое свойство родителя в потомке можно еще вот так:
в данном случае из Object Inspectora убираем OnChange и OnChanging

Код

#include <designintf.hpp>
#include <typinfo.hpp>

namespace Checklistview
{
        void __fastcall PACKAGE Register()
        {
                 TComponentClass classes[1] = {__classid(TCheckListView)};
                 RegisterComponents("Samples", classes, 0);

        PTypeInfo ChangeT = *Typinfo::GetPropInfo(__typeinfo(TListView),"OnChange")->PropType;
        RegisterPropertyEditor(ChangeT, __classid(TCheckListView), "OnChange", NULL);

        PTypeInfo ChangingT = *Typinfo::GetPropInfo(__typeinfo(TListView),"OnChanging")->PropType;
        RegisterPropertyEditor(ChangingT, __classid(TCheckListView), "OnChanging", NULL);


        }
}



Это сообщение отредактировал(а) tigger - 23.8.2005, 11:28


--------------------
user posted image
PM MAIL   Вверх
np9mi7
Дата 24.8.2005, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 553
Регистрация: 17.8.2003
Где: Volgograd, Russia

Репутация: 1
Всего: 10



tigger, спасибо, но я сделал как Vyacheslav посоветовал, те отнаследовался от TCustomListView


--------------------
"Я точно знаю то, что ничего не знаю..." Сократ.
evolution project
PM MAIL WWW ICQ MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0566 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.