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

Перебор SpeedButton в цикле

21.02.2014, 22:05. Показов 2082. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Поиском пользовался, ничего не нашел. Допустим у меня есть 20 кнопок (SpeedButton), мне нужно чтобы в цикле изменялось свойство Caption у этих кнопок. Как организовать и возможно ли это?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.02.2014, 22:05
Ответы с готовыми решениями:

Перебор в цикле
Есть такой код Form2.ADOQuery1.SQL.Text:='select * from 7DTD where STEAM='+QuotedStr(STEAMID); Form2.ADOQuery1.Open; steamdb2:=...

Перебор id ресурсов в цикле
Добрый день, В layout расположены 20 кнопок, каждая из которых, естественно, имеет собственный id. Эти id отличаются только числовым...

Перебор объектов в цикле
Здравствуйте! Можно ли организовать в цикле For перебор объектов,т.е. например, для i=от 1 до 5 , рассматривать Image(1..5)...

6
 Аватар для Prostoplus
12 / 2 / 1
Регистрация: 21.09.2012
Сообщений: 122
21.02.2014, 22:44
Разве что динамически создать массив кнопок ...
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
21.02.2014, 23:23
Лучший ответ Сообщение было отмечено lsd180 как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 for (int i=0;i<Form1->ComponentCount;i++)
    {
     if(Form1->Components[i]->ClassNameIs("TSpeedButton"))
     {
      ((TSpeedButton*)Form1->Components[i])->Caption = IntToStr(i);
     }
    }
}
1
0 / 0 / 0
Регистрация: 04.11.2012
Сообщений: 13
22.02.2014, 01:34  [ТС]
а как располагаются компоненты в массиве указателей на них? как мне узнать, какая кнопка текущая?
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
23.02.2014, 00:38
Лучший ответ Сообщение было отмечено lsd180 как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int d = 0;
 for (int i=0;i<Form1->ComponentCount;i++)
    {
     if(Form1->Components[i]->ClassNameIs("TSpeedButton"))
     {
        d++;
        if(d==2)
        {
          ShowMessage("Àêòèâíà êíîïêà íîìåð 2");
        }
     }
    }
}
1
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
24.02.2014, 09:46
Наверное все таки как-то вот так:
C++
1
2
3
4
5
6
7
8
9
10
 for (int i=0;i<Form1->ComponentCount;i++)
    {
     if(Form1->Components[i]->ClassNameIs("TSpeedButton"))
     {
        if(static_cast<TSpeedButton*>(Components[i])->Down)
        {
          ShowMessage("Активна кнопка номер " + IntToStr(i));
        }
     }
    }
Добавлено через 2 минуты
А еще лучше вот так:
C++
1
2
3
4
5
6
7
8
9
10
for (int i=0;i<Form1->ComponentCount;i++)
    {
     if(Form1->Components[i]->ClassNameIs("TSpeedButton"))
     {
        if(static_cast<TSpeedButton*>(Components[i])->Down)
        {
          ShowMessage( "Активна кнопка " + static_cast<TSpeedButton*>(Components[i])->Name );
        }
     }
    }
Так как вдруг кнопки идут не по порядку.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33398 / 21508 / 8236
Регистрация: 22.10.2011
Сообщений: 36,906
Записей в блоге: 12
24.02.2014, 12:49
Циклы здесь вообще не нужны:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// H
// Класс-перехватчик, перед описанием класса формы
 
namespace MySpeedButton
{
    class TSpeedButton : public Buttons::TSpeedButton
    {
    public:
        static TSpeedButton *Active;
        DYNAMIC void __fastcall Click(void)
        {
            if(Down) Active = this;
            else Active = 0;
        }
        __fastcall virtual TSpeedButton(Classes::TComponent* AOwner)
            : Buttons::TSpeedButton(AOwner) {}
    };
}
#define TSpeedButton MySpeedButton::TSpeedButton
C++
1
2
3
4
5
6
7
8
9
10
11
12
// CPP, реализация
 
TSpeedButton *TSpeedButton::Active = 0;
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
{
}
 
// ...
 
    // Проверяем, какая кнопка активна:
    TSpeedButton *btn = TSpeedButton::Active;
    if(btn) ShowMessage(btn->Caption);
Никаких циклов.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.02.2014, 12:49
Помогаю со студенческими работами здесь

Перебор 29 panel в цикле
У меня 29 panel'ов panele1 - panele29. Для одной панели я делаю if (alarmindex == true) { ...

Перебор контролов в цикле
Есть десять контролов (например кнопок) как например программно сделать так чтоб Button1.text=&quot;Кнопка1&quot;; ...

Перебор текстбоксов в цикле
Собственно у меня есть несколько textBox1, textBox2 ... textBox10, все они в группбоксе лежат еще. Как можно в цикле задавать им значения....

Перебор TextBox в цикле
Есть форма в VS2012. Сделанная для языка C++. На ней много textBox. Необходимо в цикле, меняя идентификатор textBox, заполнить их данными....

Перебор словаря в цикле
не могу понять, как перебрать все элементы словаря в цикле хочу чтобы по итогу вывелось ключ и значение. di = {1: 2, ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru