Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 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), и при создании компонента присваивать эту процедуру обработчику.

Приложение:
  1. procedure TForm1.UniversalOnClick(Sender:TObject)
  2. begin
  3. case (Sender as TControl).Tag of
  4. 1: ...
  5. 2: ...
  6. ....
  7. end;
  8. end;
  9.  
  10. ...
  11.  
  12. MyCheckBox:=TCheckBox.Create(Form1);
  13. ...
  14. MyCheckBox.Tag:=N;
  15. MyCheckBox.OnClick:=UniversalOnClick;
  16. ...


Ответ отправил: Косолапов Дмитрий Юрьевич (статус: 8-ой класс)
Время отправки: 30 октября 2007, 19:14


Мини-форум вопроса

Всего сообщений: 2; последнее сообщение — 31 октября 2007, 09:12; участников в обсуждении: 2.
Вадим К

Вадим К (статус: Академик), 30 октября 2007, 13:42 [#1]:

наличие огромного числа TTabSheet и других компонентов никак не влияет на базовые принципы.
Присваиваивание обработчика ничем не отличается от того, если бы у вас была только одна кнопка
Галочка "подтверждения прочтения" - вселенское зло.
min@y™

min@y™ (статус: Доктор наук), 31 октября 2007, 09:12 [#2]:

Написал пример, как просила. Куда выслать?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 12:02
Выполнено за 0.02 сек.