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

Вниз

Добавление полей в Design-Time   Найти похожие ветки 

 
Raduga   (2003-02-16 12:28) [0]

Здравствуйте.
Мне нужно в режиме Design-time добавить поля (объекты заданного типа) в форму. Эти поля я создаю сам для своего компонента через редактор компонента. Как вставить эти поля в описание класса формы, чтобы они стали полями формы? Что-то наподобие вставки полей у компонента TTable, которые добавляются в текст кода.
Заранее спасибо.


 
Юрий Зотов ©   (2003-02-16 12:59) [1]

1. Если это нестандартные поля, их надо зарегистрировать - см. RegisterClasses, RegisterNoIcon и RegisterFields.

2. В стандартном редакторе полей DataSet"а - пункт "Add field" или "Add all fields". После добавления полей в DataSet они "появятся" на форме (то есть, появятся в DFM и в коде).


 
Raduga   (2003-02-17 11:19) [2]

Компонент не предназначен для работы с БД, это приводилось как пример. Как "прописать" поля компонента в форме? Ну например:

Есть компонент

TMyComponent=class(TComponent)
....
public
FObject:TObject;
......
end;

Возможно ли, что при добавление компонента в форму FObject был добавлен в форму и стал полем формы?



 
Юрий Зотов ©   (2003-02-17 22:44) [3]

Если это TComponent, а не просто TObject, то легко. В Register зарегистрируйте его через RegisterNoIcon, в редакторе создавайте вызовом Create(Designer.Form), а в TMyComponent.FObject прописывайте ссылку на него. Соответственно, он и будет вставляться в форму (и в форме автоматически появится соответствующее published-поле), а TMyComponent будет только ссылаться на него (и поэтому удалять его не должен). В TMyComponent не забудьте перекрыть Notification, чтобы чистить ссылку.

Если же это TPersistent, но не TComponent, то нужна поддержка со стороны самой формы. Как минимум, она должна иметь прописанное вручную public-поле, ссылающееся на этот объект (а ее деструктор должен включать код удаления этого объекта). И в этом случае TMyComponent ничего сам удалять его не должен.

И, наконец, если это не TPersistent, то все еще сложнее. Такой объект не будет сохраняться в DFM сам по себе и поэтому нагрузка на форму увеличивается. Она должна переопределить метод DefineProperties и к нему иметь методы Read/Write.



Страницы: 1 вся ветка

Текущий архив: 2003.02.27;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.023 c
14-87677
Style
2003-02-07 19:07
2003.02.27
Мастера зацените компонент Грид + Дерево


14-87684
Amit
2003-02-11 10:33
2003.02.27
Вопрос к девушкам, если они тут есть?


3-87270
Степанов
2003-02-08 18:34
2003.02.27
Как в Delphi создать таблицу dBASE III


14-87706
sergmu
2003-02-11 20:47
2003.02.27
Базы данных


1-87478
mace
2003-02-18 12:43
2003.02.27
service application (debugging, running :)