Вниз
Скачать: 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
3-63572
Назаров Евгений
2003-02-03 21:43
2003.02.20
Большие и маленькие буквы в SQL запросе


7-63871
Mixir
2002-12-22 16:15
2003.02.20
Как сделать немодальный MessaegBox?


14-63812
kostya2000
2003-02-02 16:46
2003.02.20
Мечта которая взорвалась в космосе....


6-63697
alev
2002-12-29 01:45
2003.02.20
Сканер портов


7-63881
Mixir
2002-12-22 16:15
2003.02.20
Как сделать немодальный MessageBox?




   Наверх