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

Обработчик цыклически созданных кнопок

18.07.2011, 13:19. Показов 1565. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
здравствуйте, у меня следующая проблема, во время создания формы создаются кнопки таки образом:
C++
1
2
3
4
5
6
7
8
9
10
11
12
TButton *Button;
  int i;
  for (i = 1; i < kolbutton; i++) {
****Button=new TButton(this);
****Button->Parent=this;
****Button->Height=30;
****Button->Width=320;
****Button->Top=40*i+35;
****Button->Left=20;
 AnsiString secname="Edit"+IntToStr(i); // определяем имя секции
 Button->Caption= ini->ReadString(secname,"name","langfile undefined"); // определяем имя кнопки
 }
количество кнопок заранее не известно, оно зависит от количества секций в обрабатываемом программой ini файле, вопрос в следующем, как для каждой кнопки сделать обработчик OnClick?
при нажатии кнопки должно выполняться
C++
1
2
AnsiString a=ini->ReadString(secname,"patch","langfile undefined")+" "+ParamStr(1); //получаем строку котрую надо выполнить
WinExec (a.c_str(), SW_SHOWNORMAL ); // выполнение задачи
(secname - определяется при создании кнопки)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.07.2011, 13:19
Ответы с готовыми решениями:

События для динамически созданных кнопок
Доброе время суток! Я создал свой класс objekt (); //конструктор save_objekt(TOpenDialog *open_kart); ...

Один обработчик для 9 кнопок
Привет, ребята. Нужна Ваша помощь. Пишу небольшую обучающую программку. Вот в чем проблема. На форме имеется 9 кнопок, код для которых...

Один обработчик для 100 кнопок?
На форме есть 100 кнопок. Как сделать один раз для всех кнопок, чтобы не описывать нажатие для каждой конкретной кнопки сто раз: ...

2
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
18.07.2011, 13:34
Вот объявление
C++
1
2
3
4
5
6
private:    // User declarations
 
 void __fastcall LeftFunction(TObject *Sender);
 
public:     // User declarations
        __fastcall TForm1(TComponent* Owner);
Вот определение
C++
1
2
3
void __fastcall TForm1::LeftFunction(TObject *Sender){
 ShowMessage("Test");
}
Здесь присвоение

C++
1
TForm1->BitBtn2->OnClick = TForm1::LeftFunction;
Добавлено через 1 минуту
Вот ещё пример

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
_fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
TButton (*MyButton[10]);
for (int i=0;i<10;i++)
{
MyButton=new TButton(this);
MyButton->Parent=Form1;
MyButton->Left=i*80;
MyButton->Caption=i+1;
MyButton->OnClick=M;
};
//---------------------------------------------------------------------------
};
void __fastcall TForm1::M(TObject *Sender){
ShowMessage("Test");
};
.........................................................................
 
Button_Matrix.h
..........................................................................
private:
 void __fastcall M(TObject *Sender);// User declarations
public:      // User declarations
        __fastcall TForm1(TComponent* Owner);
};
.........................................................................
0
0 / 0 / 1
Регистрация: 18.07.2011
Сообщений: 51
18.07.2011, 17:44  [ТС]
Спасибо, за быстрый ответ и по существу, все работает
Добавлено через 1 час 38 минут
=( рано обрадовался, все работает, но у меня получается один и тот же обработчик для всех кнопок (тот который должен быть у последней. сделал так:
Code
1
2
3
4
public:
    __fastcall TForm1(TComponent* Owner);
AnsiString a;
};
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
  int i;
  for (i = 1; i < kolbutton; i++) {
    Button=new TButton(this);
    Button->Parent=this;
    Button->Height=30;
    Button->Width=320;
    Button->Top=40*i+35;
    Button->Left=20;
 AnsiString secname="Edit"+IntToStr(i); // определяем имя секции
 Button->Caption= ini->ReadString(secname,"name","langfile undefined"); // определяем имя кнопки
a=ini->ReadString(secname,"patch","langfile undefined")+" "+ParamStr(1); //получаем строку котрую надо выполнить
Button->OnClick = LeftFunction;
  }
Code
1
2
3
void __fastcall TForm1::LeftFunction(TObject *Sender){
 WinExec (a.c_str(), SW_SHOWNORMAL ); // выполнение задачи
 }
В принципе логично, ведь прога сначала "строит форму" и естественно пересчитывает а и в итоге получаем в значении то которое должно быть для последней кнопки, а вот как сделать его разным для каждой кнопки.... чет никаких мыслей не возникает
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.07.2011, 17:44
Помогаю со студенческими работами здесь

Динамически создать 15 кнопок на форме и сделать общий обработчик OnClick
Здравствуйте, создаю 15 кнопок вот так: HWND hWnd = this-&gt;Handle; long hThisInstance = GetWindowLong(hWnd, GWL_HINSTANCE); int a =...

Обработчик динамически созданных кнопок
есть цикл, в котором создаются кнопки for (k=1;k&lt;20;k++){ Button newBtn=new Button(this); ...

Обработчик событий динамически созданных кнопок
Уважаемые форумчане, помогите студентам! У нас есть функция, которая создает количество кнопок, равное количеству файлов в папке ...

Обработчик события для программно созданных кнопок
Помогите пожалуйста! Есть программно создаваемые кнопки в количестве, зависящем от введенного в TextBox числа. Нужно задать программный код...

Создать массив кнопок, для каждой кнопок будет одинаковый обработчик
Всем привет! Нужна помощь в реализации такой задачи. Нужно создать массив кнопок, для каждой кнопок будет одинаковый обработчик...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru