Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.011 c
14-63765
NorthMan
2003-02-02 21:17
2003.02.20
Народ, может кто посоветует документацию по Oracle. Интересует


3-63589
sdram
2003-02-04 13:59
2003.02.20
Как узнать имена полей в таблице?


1-63648
Борис_
2003-02-11 18:15
2003.02.20
ScrollBox хелп!!!


3-63485
sva_v
2003-02-04 20:36
2003.02.20
Компонент QRBand


14-63838
Saracin
2003-02-01 12:44
2003.02.20
Перед тем как ночать тоскать компоненты на форму :)




   Наверх