Форум: "Компоненты";
Текущий архив: 2005.09.18;
Скачать: [xml.tar.bz2];
ВнизПолучение списка доступных компонент Найти похожие ветки
← →
Павел (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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.012 c