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

Вниз

Получение списка доступных компонент   Найти похожие ветки 

 
Павел   (2004-11-01 10:31) [0]

Здравствуйте. Пишу компонент у которого свойтсво производное от TCollection. Элемент коллекции имеет свойство типа TComponent. Необходимо создать редактор коллекции и поэтому нужен список всех доступных компонент. Как его получить?


 
Юрий Зотов ©   (2004-11-01 16:19) [1]

Проходом в цикле по свойству Components редактируемой формы (Designer.Root) с фильтрацией компонентов только нужных классов.

Но непонятно - зачем создавать свой редактор коллекции, если автоматически должен подключиться уже готовый? И если в элементе коллекции есть компонентное свойство, то к нему тоже автоматически должен подключиться уже готовый редактор.

Если этого не происходит, то что-то не так. Похоже, что в своей коллекции Вы не заместили метод GetOwner. Он должен возвращать ссылку на компонент, свойством которого является коллекция. Наследуйтесь от TOwnedCollection - там все это уже сделано.

Еще момент - если в элементе коллекции есть ссылка на внешний компонент, то нужно предусмотреть ее автоматическую очистку при удалении компонента (аналог Notification). Это можно сделать, если при установке ссылки завязать компонент, на который она ссылается с компонентом-владельцем коллекции через FreeNotification. Получив уведомление в Notification, компонент-владелец переправляет его коллекции, а та очищает эту ссылку у своих элементов.


 
vuk ©   (2004-11-01 17:55) [2]

to Юрий Зотов ©   (01.11.04 16:19) [1]:
>Но непонятно - зачем создавать свой редактор коллекции, если
>автоматически должен подключиться уже готовый?
Ну... Возможностей готового не всегда хватает. Делал я  компонент для сохранения свойств других компонентов в ini/реестре, так там тоже пришлось нестандартный редактор коллекции наваять. Исключительно для удобства работы. Правда, делал наследник от стандартного...


 
PRM   (2004-11-02 09:38) [3]

to Юрий Зотов
Спасибо за Designer.Root........Помогло..........
А FreeNotification предусмотрел :))))


 
Павел   (2004-11-02 10:02) [4]

to Юрий Зотов
Создал следующий метод
procedure TPropertyNameEditor.GetValues(Proc: TGetStrProc);
var
 I: Integer;
begin
 with Designer.Root do
   for I := 0 to ComponentCount - 1 do
   begin
     Proc(Components[i].Name);
   end; // for I := 0 to ComponentCount - 1 do

end;

Компоненты на данной форме отображает, а как сделать чтобы компоненты связанных форм тоже попали в список............


 
Юрий Зотов ©   (2004-11-02 13:39) [5]

Что значит "связанных"? Из того же проекта?

См. BorlandIDEServices. Эта штука предоставляет интерфейсы самой IDE (см. исходники в папке ToolsAPI). Надо получить активный проект, пройтись в цикле по его модулям и если модуль содержит форму (фрейм, модуль данных), то сделать с этой формой (фреймом, модулем данных) то же самое (пройтись по Components).



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

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

Наверх




Память: 0.48 MB
Время: 0.065 c
1-1125080010
Ed
2005-08-26 22:13
2005.09.18
ExtractWord


1-1124949328
Darkwing
2005-08-25 09:55
2005.09.18
Может ли свойство возвращать разные типы данных?


3-1123485949
Zaero
2005-08-08 11:25
2005.09.18
При изменении информации, размер *.mb файла не уменьшается!


1-1124722779
SH@RK
2005-08-22 18:59
2005.09.18
Как создать документ с формулами (дроби, корни и т.п.)


2-1123756104
Гость22
2005-08-11 14:28
2005.09.18
Куда кидать инишку?