Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 07.02.2020
Сообщений: 7

TPageControl -> OnChanging

06.06.2020, 14:47. Показов 1486. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть объект TPageControl, можно ли как-то в обработчике события OnChanging узнать, на какую вкладку (TTabSheet) осуществляется переход?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.06.2020, 14:47
Ответы с готовыми решениями:

TPageControl
Лииз скиньте статьи по компоненту TPageControl. Я весть Интернет облазил - везде какой-то бред. Я хочу узнать как связать...

TtabControl/TPageControl
На форму поместить во всю клиентскую область компонент TtabControl (или TPageControl), содержащий три страницы. На первой странице нужно...

Прикрутить scroll к TPageControl
что-т не въеду можно ли это? используя функцию ShowScrollBar я его добавляю, но он не работает, т.е. не прокручивает

13
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33400 / 21510 / 8236
Регистрация: 22.10.2011
Сообщений: 36,908
Записей в блоге: 12
06.06.2020, 16:06
Нет, нельзя.
0
 Аватар для mirso
562 / 373 / 55
Регистрация: 05.04.2009
Сообщений: 767
07.06.2020, 04:27
Xidz,
Цитата Сообщение от Xidz Посмотреть сообщение
на какую вкладку (TTabSheet) осуществляется переход?
Цитата Сообщение от Xidz Посмотреть сообщение
можно ли
можно, если событие вызвано мышью.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//---------------------------------------------------------------------------
 
void __fastcall TForm1::PageControl1Changing(TObject *Sender,
      bool &AllowChange)
{
 
     TPoint pnt = PageControl1->ScreenToClient(Mouse->CursorPos);
     int nextTabIndex = PageControl1->IndexOfTabAt(pnt.x, pnt.y);
 
     if(nextTabIndex != -1)
     {
        ShowMessage( " [ActiveTabIndex]Name == " + PageControl1->Pages[PageControl1->TabIndex]->Name + "\n" +
                     " [  nextTabIndex]Name == " + PageControl1->Pages[          nextTabIndex]->Name );
     }
}
//---------------------------------------------------------------------------
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33400 / 21510 / 8236
Регистрация: 22.10.2011
Сообщений: 36,908
Записей в блоге: 12
07.06.2020, 10:01
mirso, это не решение вообще, сменить вкладку можно многими способами, частичное решение никого не интересует.
0
0 / 0 / 0
Регистрация: 07.02.2020
Сообщений: 7
07.06.2020, 12:05  [ТС]
Цитата Сообщение от mirso Посмотреть сообщение
можно, если событие вызвано мышью.
А как узнать, от мыши событие сработало или от клавиатуры? Я это вариант тоже пробовал, но не знаю, как определить, что это была мышь.

Может тогда подскажите вариант решения, у меня следующая проблема, есть вкладка, при входе на которую осуществляется загрузка данных, но грузятся они иногда и под минуту, сейчас вся загрузка расположена в событии TTabSheet->OnShow, но если загрузка идет долго, то визуально выглядит это ужасно, т.к. частично элементы уже прорисованы поверх старой вкладки. Дак вот, можно ли как-то отловить ситуацию, еще до возникновения OnShow? Поэтому я и начал ковырять в сторону OnChanging.
0
 Аватар для Lelik-pahan
1709 / 905 / 207
Регистрация: 25.11.2009
Сообщений: 1,850
07.06.2020, 17:08
Цитата Сообщение от Xidz Посмотреть сообщение
но грузятся они иногда и под минуту
С перфокарт считываются, что ли?

Цитата Сообщение от Xidz Посмотреть сообщение
Дак вот, можно ли как-то отловить ситуацию, еще до возникновения OnShow? Поэтому я и начал ковырять в сторону OnChanging.
Если загрузка выполняется целую минуту, то какая разница, по какому из событий её начинать, если разница между этими событиями в миллисекунду (а может и меньше)?
Тут нужно либо ускорять загрузку, либо выносить её в отдельный поток.
0
Модератор
 Аватар для D1973
9926 / 6462 / 2457
Регистрация: 21.01.2014
Сообщений: 27,416
Записей в блоге: 3
07.06.2020, 20:04
Цитата Сообщение от Xidz Посмотреть сообщение
при входе на которую осуществляется загрузка данных, но грузятся они иногда и под минуту
Я стесняюсь спросить, а что там происходит такого, что столько времени загрузка занимает? Или у Вас там БД на 100500 мильенов записей и Вы все это добрище в визуальном DBGrid-е показать хотите?
0
0 / 0 / 0
Регистрация: 07.02.2020
Сообщений: 7
08.06.2020, 08:56  [ТС]
Всё элементарно, данные грузятся из БД, БД большая, народу с ней работает много, вот иногда и возникают тормоза, в большинстве случаев всё летает, но иногда подтормаживает, из-за чего и возникают визуальные дефекты.

Может у кого-то есть дельное решения, как до возникновения события OnShow у TTabSheet отловить начало смены вкладок?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33400 / 21510 / 8236
Регистрация: 22.10.2011
Сообщений: 36,908
Записей в блоге: 12
08.06.2020, 10:41
Ок. Допустим, я скажу тебе, как в OnChanging получить индекс вкладки, на которую ты переключаешься. Что дальше? Как это поможет тебе в организации более быстрой загрузки из БД? Или это поможет сделать что-то другое? Что именно? Короче, расскажи, как ты будешь решать проблему, если получишь этот индекс, мне просто интересен путь решения. А потом я расскажу, как сделал бы я, чтобы не было этих глюков перерисовки.
0
0 / 0 / 0
Регистрация: 07.02.2020
Сообщений: 7
09.06.2020, 09:18  [ТС]
Цитата Сообщение от volvo Посмотреть сообщение
Короче, расскажи, как ты будешь решать проблему, если получишь этот индекс, мне просто интересен путь решения.
Я бы просто, на период загрузки сделал курсор мыши crHourGlass, а после загрузки вкладка бы отобразилась и ни каких визуальных дефектов.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33400 / 21510 / 8236
Регистрация: 22.10.2011
Сообщений: 36,908
Записей в блоге: 12
09.06.2020, 10:23
Как ты определяешь, что вкладка уже загрузилась (как узнать, когда закончится вот этот самый "период загрузки"), и при переключении на нее не будет никаких дефектов? Есть еще какое-то событие, которое происходит, когда вкладка полностью прогружена и на нее можно переходить? Потому что сам курсор в виде часиков ничего не дает, дефекты проявятся моментально. Или, если есть часики - значит, фиг с ними с дефектами отображения?
0
0 / 0 / 0
Регистрация: 07.02.2020
Сообщений: 7
10.06.2020, 09:05  [ТС]
Всё линейно, есть код получения данных, в начале курсор часиками поставил, в конце обратно вернул. Ни каких дополнительных событий или потоков нет.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33400 / 21510 / 8236
Регистрация: 22.10.2011
Сообщений: 36,908
Записей в блоге: 12
10.06.2020, 11:05
В конце чего, блин, можно нормально написать? Как знаешь, что вот сейчас надо менять курсор обратно с часиков на стрелку? Прошло 10 секунд как установил часики? Какая-то переменная изменила значение? Такое ощущение, что помощь мне нужна, а не тебе, все приходится клещами вытаскивать. Ну, не надо - так не надо, сиди с дефектами.
0
0 / 0 / 0
Регистрация: 07.02.2020
Сообщений: 7
11.06.2020, 09:20  [ТС]
Зачем всё так усложнять, я же написал, что алгоритм линейный, схематически выглядит так:
C++
1
2
3
  Screen->Cursor = crHourGlass;
  Загрузка данных;
  Screen->Cursor = crDefault;
Это всё происходит внутри одной функции, ни каких дополнительных переменных нет.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.06.2020, 09:20
Помогаю со студенческими работами здесь

Раскрасить ярлычки TPageControl
Привет всем! Хочется раскрасить в разные цвета ярлычки листов объектов TPageControl. Всё, что смог найти - это способ раскрасить...

TPageControl изменение цвета
Доброго времени суток! Я в программировании в Builder новичек, подскажите как изменить цвет фона TPageControl, где непосредственно...

Отображение компонентов на TPageControl
У меня проблема с отображением динамически созданных компонентов на TPageControl. Условия: у меня на форме есть компонент...

Прозрачный фон в TPageControl
PageControl (а точнее TabSheet) дает ужасный цвет на фоне. Как же сделать его полупрозрачным? Я планирую просто сделать цвет фона...

TPageControl и удаление вкладок
Всем привет. На форме 3 объекта: - TPageControl - Edit - Button В поле Edit указывается номер вкладки PageControl и по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru