Главная страница
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
1-1119522002
intaari
2005-06-23 14:20
2005.07.11
Сохранение/чтение отчета fast report из BLOd поля


6-1112684047
frEE)stylEr
2005-04-05 10:54
2005.07.11
подключение удалённого доступа


8-1109833197
seregka
2005-03-03 09:59
2005.07.11
Слайд-шоу - проблема больших файлов


1-1118397949
A№t0№
2005-06-10 14:05
2005.07.11
В конец RichEdit


3-1117002821
yk
2005-05-25 10:33
2005.07.11
отображение FLOAT