Главная страница
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.028 c
14-1118480066
Cheater
2005-06-11 12:54
2005.07.11
Программирование в Excele. Как скрыть строки?


10-1096025999
Леван
2004-09-24 15:39
2005.07.11
Работа с Word


3-1117650654
Megabyte
2005-06-01 22:30
2005.07.11
Тип DATE в Dialect1


14-1118232701
msguns
2005-06-08 16:11
2005.07.11
Установка Win XP на голый комп


1-1118659053
w666w
2005-06-13 14:37
2005.07.11
Запись/восстановление TComponent из строки.