powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Общий отработчик события для нескольких TabSheet
4 сообщений из 4, страница 1 из 1
Общий отработчик события для нескольких TabSheet
    #39555621
Bellic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На форме расположен PageControl с несколькими TabSheet ... например их N -штук
Необходимо выполнять определенные действия по событию - щелкаем по "корешку" TabSheet - видимо это будет " OnEnter ", т.е. при получении Фокуса!?
При этом для каждого из имеющихся TabSheet - набор операторов должен быть индивидуальным.

Вопрос:
1. Правильно ли выбрано событие " OnEnter " по щелчку на "корешке"?
2. Как лучше реализовать? (см.варианты ниже)

Var-1 : Написать и присвоить процедуры по событию для каждого TabSheet , т.е. N -процедур;
(Вариант конечно простой...)
Var-2 : Написать Одну общюю для всех TabSheet процедуру, где уже внутри выяснить - какая именно из них получила фокус и перейти на блок, отрабатывающий нужные инструкции (Тут же внутри процедуры).
(Как в этом случае сделать более изящным - определение TabSheet , получившего фокус и отработать нужное? )
...
Рейтинг: 0 / 0
Общий отработчик события для нескольких TabSheet
    #39555626
Фотография krapotkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
событие OnChange и там смотреть pageControl.ActivePage
...
Рейтинг: 0 / 0
Общий отработчик события для нескольких TabSheet
    #39555630
Bellic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем пока так...
Общая процедура обработки получилась такой:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
procedure TMainForm.TabSheetFocusAll(Sender: TObject);
begin
case PageControl.ActivePageIndex of
          0:   begin
                    MessageDlg ('Активна вкладка № 0');
                    ...
               end;
          1:   begin
                    MessageDlg ('Активна вкладка № 1');
                    ...
               end;
          2:   begin
                    MessageDlg ('Активна вкладка № 2');
                    ...
               end;
          3:   begin
                    MessageDlg ('Активна вкладка № 3');
                    ...
               end;
          4:   begin
                    MessageDlg ('Активна вкладка № 4');
                    ...
               end;
     end;


(где вместо " ... " следует индивидуальный код для каждой TabSheet )

По событию "OnEnter" вкладок TabSheet данная процедура почему то не отрабатывалась..(((
Поэтому переназначил на событие "OnShow" каждой из вкладок... Работает!!!
...
krapotkinсобытие OnChange и там смотреть pageControl.ActivePage

Попробую сделать как подсказал krapotkin :
- удалю ссылки во вкладках по событию "OnShow";
- поставлю в самом PageControl на событие OnChange .
...
...
Рейтинг: 0 / 0
Общий отработчик события для нескольких TabSheet
    #39555634
Bellic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krapotkinсобытие OnChange и там смотреть pageControl.ActivePage
krapotkin , спасибо за подсказку!
Ваш вариант оказался лучше, чем ставить обработчик на каждый TabSheet !!!..)))
...
Недостатки предыдущего моего решения (Обработчик на каждую из закладок) :
1. Необходимость указывать процедуру в Каждой из закладок (Но в теории Закладки могут быть и динамически создаваемыми!).
2. Не нужная отработка "Нулевой" вкладки при запуске приложения (хотя это может быть иногда и пригодилось бы!).
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Общий отработчик события для нескольких TabSheet
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]