Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.07.11;
Скачать: CL | DM;

Вниз

Редактор свойств/компонент а-ла 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.063 c
3-1117446718
Дмитрий_Б
2005-05-30 13:51
2005.07.11
Ручное планирование запросов


14-1118060340
Digitman
2005-06-06 16:19
2005.07.11
вновь об IntraWeb 5.0.43 ..


11-1101251725
XProger
2004-11-24 02:15
2005.07.11
Старнная ошибка в RichEdit1


3-1117609509
Andy BitOff
2005-06-01 11:05
2005.07.11
Запрос на выборку не повторяющихся записей.


1-1118440156
Pasha L
2005-06-11 01:49
2005.07.11
Сравнивание стрингов