Главная страница
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.03 c
2-1123831677
webpauk
2005-08-12 11:27
2005.09.18
Автообновление


14-1124525134
BagMaker
2005-08-20 12:05
2005.09.18
Как можно узнать, что компьютер подключен к интернету?


14-1124719149
red_imp
2005-08-22 17:59
2005.09.18
Народ каким кодеком открыть *.3gp


1-1124961102
Cati
2005-08-25 13:11
2005.09.18
строку, на которой находимся сделать другим цветом


1-1124902261
ArtemESC
2005-08-24 20:51
2005.09.18
Активировать Button