|
Вопрос # 1 056/ вопрос открыт / |
|
Здравствуйте, эксперты!
Во время работы программы при работе с компонентом TPageControl добавляю много новых страниц (TTabSheet). На каждой странице создаю при работе программы различные элементы, в том числе и TCheckBox. Как писать в таком случае обработчики событий, таких как OnClick и др., если компонент много и страниц много?
 |
Вопрос задала: Наташа (статус: Посетитель)
Вопрос отправлен: 30 октября 2007, 13:10
Состояние вопроса: открыт, ответов: 2.
|
Ответ #1. Отвечает эксперт: min@y™
Советую не заморачиваться и написать класс (или несколько классов, если страницы неоднотипные), наследованный от TTabSheet, в котором описать все дочерние компоненты, т.е. их создание, убиение, свойства и обработчики событий. Всё добро будет в одном модуле. Это очень удобно. Могу написать примерчик, если чего непонятно.
 |
Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 30 октября 2007, 13:41
|
Ответ #2. Отвечает эксперт: Косолапов Дмитрий Юрьевич
Здравствуйте, Наташа!
Обычно при создании компонента ему присваивают какое-либо значение в свойстве Tag (или можно, если я ничего не путаю, присваивать что-то свойству Name), что и анализируется впоследствии в обработчике события. А сопоставление с обработчиком события осуществляется очень просто: достаточно в классе формы (как наиболее простой вариант) процедуру, в которую передаются параметры (обычно Sender: TObject), и при создании компонента присваивать эту процедуру обработчику.
Приложение: Переключить в обычный режим- procedure TForm1.UniversalOnClick(Sender:TObject)
- begin
- case (Sender as TControl).Tag of
- 1: ...
- 2: ...
- ....
- end;
- end;
-
- ...
-
- MyCheckBox:=TCheckBox.Create(Form1);
- ...
- MyCheckBox.Tag:=N;
- MyCheckBox.OnClick:=UniversalOnClick;
- ...
Мини-форум вопроса
Всего сообщений: 2; последнее сообщение — 31 октября 2007, 09:12; участников в обсуждении: 2.
|
Вадим К (статус: Академик), 30 октября 2007, 13:42 [#1]:
наличие огромного числа TTabSheet и других компонентов никак не влияет на базовые принципы.
Присваиваивание обработчика ничем не отличается от того, если бы у вас была только одна кнопка
Галочка "подтверждения прочтения" - вселенское зло.
|
|
min@y™ (статус: Доктор наук), 31 октября 2007, 09:12 [#2]:
Написал пример, как просила. Куда выслать?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|