Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Компоненты";
Текущий архив: 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
3-1123143946
Ega23
2005-08-04 12:25
2005.09.18
Разнесение данных по двум таблицам: имеел ли смысл?


1-1124785381
volser
2005-08-23 12:23
2005.09.18
Как приостановить поток?


2-1123761508
hunn
2005-08-11 15:58
2005.09.18
вызов хелпа


14-1124523261
Катя_В
2005-08-20 11:34
2005.09.18
Ошибка при регистрации на borland.com


9-1115658085
Санёк
2005-05-09 21:01
2005.09.18
Плоскость, векторы, преобразования.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский