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

Обновление вкладов в PageControl

23.12.2010, 21:55. Показов 2585. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите как можно решить вот такой вопрос.
Есть PageControl несколько вкладок. Количество их изменяется. Создаются они динамически.
Я хочу при нажатии на любую вкладку, когда она становится активной выполнять определенные действия, характерные для этой вкладки. Пока не совсем могу понять как это сделать. Подскажите, кто что может)))
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.12.2010, 21:55
Ответы с готовыми решениями:

Моделирование банковских вкладов
Доброго времени суток, уважаемые форумчане! Прошу помощи, хотя-бы в словесном алгоритме, попытаюсь на его основе что-нибудь написать. ...

Калькулятор вкладов в Excel
Доброго дня суток! Может у кого-то есть опыт создания калькуляторов в Экселе. Требуется создать калькулятор вкладов, чтобы при ввводе...

Таблицы. Расчет процентов вкладов
дан список людей 26 человек и для каждого(!!!) нужно высчитать проценты по вкладу и итоговую сумму вместе с процентами у каждого свой...

7
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
23.12.2010, 22:07
amatorIP, есть событие OnChange.
В нём и проверяйте номер активной вкладки.

Например:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void __fastcall TForm1::PageControl1Change(TObject *Sender)
{
  switch (PageControl1->ActivePageIndex) {
    case 0:
      ShowMessage("It's the first page.");
      break;
    case 1:
      ShowMessage("This is the second page.");
      break;
  default:
    ShowMessage("This is the " + IntToStr(PageControl1->ActivePageIndex + 1) + " tab.");
  }
}
2
 Аватар для amatorIP
3 / 3 / 0
Регистрация: 22.07.2010
Сообщений: 141
23.12.2010, 22:22  [ТС]
Спасибо. А если количество вкладок во время работы будет все время меняться, то как изменять количество этих case-в?

Добавлено через 1 минуту
А если их загнать в while, то я думаю получится.
0
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
23.12.2010, 22:26
Цитата Сообщение от amatorIP Посмотреть сообщение
А если количество вкладок во время работы будет все время меняться, то как изменять количество этих case-в?
Никак. Это не интерпретатор.

Получить количество вкладок можно всегда:
C++
1
PageControl1->PageCount
Пройтись по всем вкладкам тоже:
C++
1
2
3
for (int i = 0; i < PageControl1->PageCount; i++) {
  PageControl1->Pages[i]-> // действия, которые нужны вам...
}
А вот расширить код проверки можно вручную.
Неужели у вас все вкладки "должны выполнять" разные действия? Что-то я сомневаюсь...
1
 Аватар для amatorIP
3 / 3 / 0
Регистрация: 22.07.2010
Сообщений: 141
23.12.2010, 23:33  [ТС]
В каждой вкладке будет таблица. Все они по структуре будут одинаковы, но разные по содержанию.
Вот у меня пока не получается определить активную вкладку и выполнить конкретно для нее действие.
Я вот написал пару пробных строк, но они выполняются для всех вкладок.
C++
1
2
3
4
5
6
void __fastcall TMainForm::MainWindowChange(TObject *Sender)
{
        for (int i = 0; i < MainWindow->PageCount; i++)
                if (MainWindow->ActivePageIndex != -1)
                        MainWindow->Pages[i]->Caption = IntToStr(12);
}
0
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
23.12.2010, 23:47
amatorIP, зачем вам вот это условие:
Цитата Сообщение от amatorIP Посмотреть сообщение
C++
1
if (MainWindow->ActivePageIndex != -1)
Если не ошибаюсь, оно всегда будет истинным, т.к. индекс активной вкладки равен [0;N-1], где N - количество вкладок.



Цитата Сообщение от amatorIP Посмотреть сообщение
C++
1
MainWindow->Pages[i]->Caption = IntToStr(12);
Вот это тоже как-то бессмысленно. Всем присвоить одинаковый заголовок? Зачем?
Может вы имели в виду: IntToStr(i+1) ?
0
 Аватар для amatorIP
3 / 3 / 0
Регистрация: 22.07.2010
Сообщений: 141
24.12.2010, 00:34  [ТС]
Я хотел сделать так. Я нажимаю на вкладку она становится активной и относительно нее происходит действие. Для примера я менял название вкладки. Это была просто проверка.
А вот как определить что вкладка стала активно и сразу же выполнить для нее действие я не пойму.

Добавлено через 19 минут
Вот я сделал. Вот так. Работает так как мне нужно)
И довольно просто оказалось
C++
1
MainForm->Label2->Caption = MainWindow->ActivePage->Caption;
P.S. Это просто примерчик.
0
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
24.12.2010, 00:36
Цитата Сообщение от amatorIP Посмотреть сообщение
А вот как определить что вкладка стала активно и сразу же выполнить для нее действие я не пойму.
Я же вам в посте #2 всё объяснил.
Событие OnChange возникает тогда, когда был изменён индекс активной страницы.
Номер страницы отображает ActivePageIndex.
Перечисление всех страниц можно выполнить через PageControl1->Pages[i].
Что ещё нужно, если уже всё разжёвано?

Ладно, ещё один пример, в котором я меняю название активной вкладки, а все остальные остаются с такими, как были прежде.
Добавьте на форму PageContol1 и создайте в нём несколько вкладок.
В конструкторе формы укажите:
C++
1
2
PageControl1->Pages[PageControl1->ActivePageIndex]->Hint = PageControl1->Pages[PageControl1->ActivePageIndex]->Caption;
PageControl1->Pages[PageControl1->ActivePageIndex]->Caption = "Ура. Меня открыли!";
И собственно, событие OnChange:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void __fastcall TForm1::PageControl1Change(TObject *Sender)
{
  for (int i = 0; i < PageControl1->PageCount; i++) {
    if (i == PageControl1->ActivePageIndex) {
      PageControl1->Pages[i]->Hint = PageControl1->Pages[i]->Caption;
      PageControl1->Pages[i]->Caption = "Ура. Меня открыли!";
    } else {
      if (PageControl1->Pages[i]->Hint.Length() > 0) {
        PageControl1->Pages[i]->Caption = PageControl1->Pages[i]->Hint;
      }
    }
  }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.12.2010, 00:36
Помогаю со студенческими работами здесь

Распечатать суммы вкладов через 5 лет
помогите пожалуйста: В файл данных занесены исходные суммы вкладов 5 вкладчиков, положенные под 3% годовых. Распечатать суммы вкладов через...

Задача по подсчету процентов и продолжительности вкладов
Помогите решить а то уже пол дня мучаюсь))) Начальный вклад в банке равен 1000 руб. Через каждый месяц размер вклада увеличивается на...

Вычислить суммы вкладов клиентов банка на конец года
Вычислить суммы вкладов клиентов банка на конец года. Все вкладчики банка получают &lt;Премию&gt;&gt; в зависимости от суммы и длительности...

Какова будет совокупная величина вкладов к началу 3-го года?
3) Пусть в конце каждого квартала в банк вкладывается по 1500 руб. Какова будет совокупная величина этих вкладов к началу 3-го года...

Класс Банк. Метод для вычисление общей суммы вкладов
У меня есть класс банк, и я не знаю как подсчитать сумму вкладов. Есть 3 челика и у кажого есть своя сумма вкладов и нужно написать метод...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru