Главная страница
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.078 c
14-1124543282
palva
2005-08-20 17:08
2005.09.18
Что лучше для эстонца: знать эстонский или английский?


2-1123936347
RomanBishkek
2005-08-13 16:32
2005.09.18
Как можно обновить одну запись через Query


6-1117384168
Новичек
2005-05-29 20:29
2005.09.18
Создание и обработка событий сокета.


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


1-1124949807
ShiFT
2005-08-25 10:03
2005.09.18
FileMapping и TList