Форум: "Компоненты";
Текущий архив: 2005.07.11;
Скачать: [xml.tar.bz2];
ВнизРедактор свойств/компонент а-ла Fields Editor Найти похожие ветки
← →
Gelios (2004-06-08 08:20) [0]Помогите написать редактор а-ля Fields Editors (для компонентов, не связанный с БД). Пробовал сделать по аналогии, но что-то не получилось. Сейчас обхожусь TCollection, но чтобы каждый элемент коллекции имел свой набор свойст приходится сильно извращатся и есть мелкие недочеты:( А хочется сделать по-нормальному...
← →
Igorek © (2004-06-15 18:58) [1]Приведи код.
← →
Gelios (2004-06-30 09:57) [2]правда поступил малость по другому, малость модифицировал collection editors (чтобы работал не с TCollection, а с TComponentList). Правда создаваемые элементы принадлежат форме, а не компоненту, что в принципе терпимо, но не красиво..
← →
Igorek © (2004-06-30 10:15) [3]
> Правда создаваемые элементы принадлежат форме, а не компоненту,
> что в принципе терпимо, но не красиво..
А что мешает их Owner"ом сделать компонент? Правда придется полу-вручную их потом записывать в поток. Ну и соотв. считывать.
← →
Юрий Зотов © (2004-06-30 18:07) [4]1. Посмотрите описание RegisterNoIcon, а потом RegisterFields. Для ваших компонентов-"полей" тоже нужно будет завести глобальный список классов и написать собственную процедуру регистрации в нем (аналог RegisterFields). Потом потребуется написание самих этих "полей" и их регистрация с помощью RegisterNoIcon и этой процедуры (в обычной Register).
2. После этого написание редактора уже не вопрос. Он должен поднять форму со списком присутствующих на редактируемой форме "полей", а при выборе юзером "поля" в списке менять Designer.Selection - тогда в Инспекторе выберется соответствующее "поле" и появятся его свойства. При нажатиии на кнопку "Delete" выбранное "поле" удаляется (просто Free), а при нажатии на кнопку "Add" поднимается другая форма, в контролах которой юзер выберает, что именно ему нужно и жмет ОК. При этом выбирается требуемый класс "поля", "поле" создается на редактируемой форме (причем Owner"ом "поля" должна быть именно редактируемая форма) и добавляется в список контейнера.
3. Посмотрите, как в TField и TDataSet реализовано свойство Fields, FieldCount и методы HasParent, GetParentComponent, SetParentComponent, GetChildren, SetChildOrder и т.п. В Вашей задаче нужно сделать аналогично - это обеспечит правильное сохранение в поток и список "полей" в их компоненте-контейнере. Еще один аналог - TMenu и TMenuItem.
← →
idkfa17 (2004-07-02 15:23) [5]2Юрий Зотов
Извините, Юрий за наглость (не бейте сильно), но если можно будьте так любезны привести небольшой пример по пункту 1.
Заранее с большой благодарностью.
Страницы: 1 вся ветка
Форум: "Компоненты";
Текущий архив: 2005.07.11;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.028 c