Главная страница
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.042 c
2-1123683742
Dudee
2005-08-10 18:22
2005.09.18
TChart


14-1124634179
Yegorchic
2005-08-21 18:22
2005.09.18
Вопрос по в Word у


4-1122470371
Jet
2005-07-27 17:19
2005.09.18
Преобразование координат на принтере


14-1125032470
boalse
2005-08-26 09:01
2005.09.18
Астрология


6-1116785814
Uninstall
2005-05-22 22:16
2005.09.18
В idTCPServer.onExecute узнать IP того...