Форум: "Основная";
Текущий архив: 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