На главную
Подписка
Новости


Рейтинг@Mail.ru











Главная / DELPHI / Часто задаваемые вопросы и ответы на них / Компоненты / Создание компонентов Сделать домашней страницей Добавить в избранное Написать писмо

Создание компонентов


»»» Nuke Dukem (02.08.00 14:09)
Вопросик совсем простой наверное. Как свойство родительского класса (например)
published OnChange: TNotifyEvent;
сделать в своей компоненте недоступной в Object Inspector??
И вопрос посложнее. Есть TTreeView как родительский класс для компонента. В конструкторе создаю pmenu типа TPopupMenu, owner у меню - мой TreeView. Хочу добавить в Object Inspector что-то типа PopupMenuItems от этого попапа. Простое
property PopupMenuItems : TMenuItem read GetItem;
и
function TMyTreeView.GetItem() : TMenuItem;
begin
Result:=pmenu.Items;
end;
НЕ ПОМОГЛО.
Как быть, уважаемые ???

»»» Alexander - avolkov@infostroy.ru (02.08.00 15:16)
1) На мой взгляд нужно следующее. Объявить в наследнике public свойство OnChange с соответствующими методами доступа, в которых брать или устанавливать свойство родителя:

function TMyCtrl.GetOnChange: Classes.TNotifyEvent;
begin
 Result := inherited OnChange
end;

procedure TMyCtrl.SetOnChange(Value: Classes.TNotifyEvent);
begin
 inherited OnChange := Value
end;

Public- свойство инспектор показывать не будет.

2) По моим наблюдениям, инспектор показывает свойство, если для него определен и read и write доступ. Как Вы будете реализовывать доступ к элементам меню - Ваш выбор. Я бы попробовал просто давать доступ к указателю на свойство pmenu.Items. Это коллекция, а с ними инспектор проблем не имеет.

»»» Alexander - avolkov@infostroy.ru (02.08.00 15:43)
Корректировка к предыдущему моему сообщение. Извините, коллекции навязли в зубах. Конечно TMenuItem это не коллекция, но инспектор с ней знаком. Поэтому проблема только в том, чтобы определить метод на запись требуемого Вам свойства.

»»» Nuke Dukem - nukedukem@iname.ru (02.08.00 15:50)
По поводу TMenuItem. Я сглупил. Если у меня создается это самое меню в конструкторе, то оно так и будет там создаваться. Даже если в IDE что-то там насоздают типа подменюшек.
В общем хотелось создать попап меню с бызовым набором строк. А в IDE можно было бы добавить/удалить/изменить. Как бы это сделать?

»»» Mike Goblin - mgoblin@mail.ru (02.08.00 16:39)
В Object Pascal уменьшить видимость метода/св-ва низя, но как правило у каждого визуального ком-та есть родитель TCustom...., где св-ва/события описаны как protected. Наследуйте от него и делайте Published нужные.
Про PopupMenu не очень понял, а чем Вас не устраивает его св-во PopupMenu для задания внешнего TPopupMenu

-= Из конференции сайта MASTERS OF DELPHI (http://delphi.mastak.com) =-

Комментарий от Yavorsky (yavorsky@fastiv.kiev.ua)
Достаточно написать наследник данного компонента, а свойство OnChange переместить в раздел public.

Copyright ©   "Мастера DELPHI"   E-mail:   delphi@mastak.com  http://www.delphimaster.ru
Источник получения информации: http://www.delphimaster.ru
Hosted by uCoz