Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.02.20;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.007 c
6-63722
MasterA
2003-01-02 09:39
2003.02.20
Web-конференция


14-63803
Anatoly Podgoretsky
2003-02-04 07:35
2003.02.20
Именинники 4 февраля


14-63741
sand
2003-02-03 16:43
2003.02.20
drag&drop


14-63745
race1
2003-02-05 11:27
2003.02.20
time


14-63836
Sword
2003-02-04 18:06
2003.02.20
Направление ProgressBar





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский