Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.02.20;
Скачать: CL | DM;

Вниз

Создание компонента   Найти похожие ветки 

 
OlkaGTS ©   (2003-02-11 15:12) [0]

Уважаемые мастера! Помогите, пожалуйста, решить задачу написания компонента. У меня есть некий компонент,
похожий на кнопку. Затем эти кнопки объединяются в группу (посредством TCollection).
Потом я создаю компонент, который имеет заголовок (разновидность той же кнопки) и список кнопок.
По клику на заголовке и кнопкам сперва должны выполняться какие-то стандартные действия, а потом вызываться
обработчики событий этих кнопок. Каким образом, это делается или где можно прочитать.
Спасибо


 
MBo ©   (2003-02-11 15:25) [1]

Если у компонента есть свойство типа TCollection, то в инспекторе объектов оно будет отображаться соотв. образом с вызовом обычного редактора коллекций, в котором уже и можно выбрать каждый отдельный элемент и назначить ему обработчик события.


 
OlkaGTS ©   (2003-02-11 16:03) [2]

Компонент нигде пока не отображается, его надо написать. Написать свойства для обработчиков событий элементов коллекции я могу. А надо, чтобы при нажатии на одну из кнопок из коллекции все, она становилась выбранной, а все остальные нет.
А потом только вызывалась процедура обработки события пользовательская.


 
MBo ©   (2003-02-11 16:12) [3]

в процедуре DoClick (обычно это дин. метод, обработчик сообщения)
сообщить родителю/владельцу, что эта кнопка выбрана(при этом родитель должен сбросить выбранность остальных), после этого
if Assigned(OnClick) then
OnClick()


 
Юрий Зотов ©   (2003-02-11 16:28) [4]

Пример создания элементов коллекции, самой коллекции и ее вживления в компонент - см. здесь:
http://www.delphikingdom.com/helloworld/tcollection.htm

Ваша задача, как я ее вижу:

1. В конструкторе элемента создаете кнопку (ее парентом ставите компонент-владелец коллекции), а в деструкторе кнопку убиваете. В элементе делаете тот же набор published-свойств и событий, что и у кнопки и через методы Get/Set отображаете их на свойства и события самой кнопки. Можно сделать public-свойство (read-only), ссылающееся на кнопку (через него будут доступны методы кнопки), но лучше продублировать public-методы кнопки в элементе (а в них вызывать оригинальные). То есть, элемент коллекции - это просто оболочка вокруг кнопки. Фокус в том, что она позволяет создавать кнопки и управлять ими в design-time.

2. Коллекция - все как в примере, ничего особенного.

3. Компонент - пишется, как обычно. В примере показано, как вживить в него коллекцию.


 
OlkaGTS ©   (2003-02-11 21:02) [5]

Извините, все равно не понимаю. Со свойствами я разобралась, в том числе и со свойствами-событиями.
Обработчики событий для каждой кнопки я могу присвоить. Как мне узнать, на какую именно кнопку нажали.
Еще у компонента есть заголовок, такая же кнопка, но другого стиля. По клику на эту кнопку все остальные должны стать visible/invisible. Это все должно делаться в самом компоненте, а не пользователем. Где это делается?
(у кнопки есть процедура Click, где по клику она перерисовывается) а в родительском компоненте, где это сделать?



Страницы: 1 вся ветка

Текущий архив: 2003.02.20;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.015 c
4-63897
pkm1
2003-01-09 18:55
2003.02.20
Как закрыть форму?


14-63825
LazorenkoX
2003-02-04 15:14
2003.02.20
Quick Reports


1-63609
Новенький в Делфи
2003-02-11 13:15
2003.02.20
Как скопировать содержимое TPaintBox в TImage?


14-63738
Тип
2003-02-05 13:07
2003.02.20
Есть ли FIBPlus для D6 полность бесплатные?


1-63625
denis24
2003-02-11 15:04
2003.02.20
выделение текста в определенной строке Richedit