Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.70/46: Рейтинг темы: голосов - 46, средняя оценка - 4.70
161 / 101 / 22
Регистрация: 11.05.2009
Сообщений: 628

Обработка событий кнопок Button

17.04.2010, 12:51. Показов 8720. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!!!
Во время создания формы создаются 10 кнопок таки образом:
C++
1
2
3
4
5
6
7
8
    for(int i = 1; i <= 11; i++)
    {
        TButton *a = new TButton(Form21);
        a->Parent = Form21;
        a->Caption = IntToStr(i);
        a->Left = 10;
        a->Top = i * 30;
    }
Как по отдельности обрабатывать события каждой из этих кнопок, например OnClick?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.04.2010, 12:51
Ответы с готовыми решениями:

Обработка событий для кнопок в RAD Studio 10.3
Доброе утро! Я учусь программировать на RAD Studio 10.3 и GLScene 1.8. Я добавил в проект две камеры, куб, кольцо, два источника освещения...

Изменения цвета кнопок Button or BitBtn
Всем доброго времени суток. Кто знает, как изменить цвет кнопки Button or BitBtn, в Button у меня не меняется даже цвет шрифта, а вот в...

Обработка событий
Подскажите пожалуйста,как сделать какое -нибудь действие например ShowMessage для OnClick динамически создаваемых кнопок ...

10
 Аватар для delfamur
42 / 24 / 3
Регистрация: 16.03.2010
Сообщений: 199
17.04.2010, 13:14
а не проще создать заранее и прописать необходимое? остается управлять только видимостью, если надо

Добавлено через 3 минуты
просто к конкретно 1, допустим, сложно обратиться (в смысле конкретно для нее код прописать)
0
161 / 101 / 22
Регистрация: 11.05.2009
Сообщений: 628
17.04.2010, 13:20  [ТС]
Я просто хочу узнать каким образом обрабатывать события компонентов, создаваемых таким образом...

а не проще создать заранее и прописать необходимое? остается управлять только видимостью, если надо
Здесь кнопок 10, а если надо будет создать 1000 кнопок?
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
17.04.2010, 13:26
VtaMC, при создании кнопки нужно просто настроить событие OnClick на нужную тебе функцию-обработчик.
0
161 / 101 / 22
Регистрация: 11.05.2009
Сообщений: 628
17.04.2010, 13:28  [ТС]
CyBOSSeR, приведи, пожалуйста, пример, в теории не очень представляю.
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
17.04.2010, 13:43
VtaMC, с удовольствие привел бы пример, но для этого надо поставить Builder, чего делать я совершенно не хочу.
У кнопок есть свойство OnClick, которая является указателем на функцию вызываемую при клике. В это свойство нужно занести указатель функции-обработчика.
1
161 / 101 / 22
Регистрация: 11.05.2009
Сообщений: 628
17.04.2010, 13:45  [ТС]
Т. е. так
C++
1
a->Click = function;
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
17.04.2010, 13:49
VtaMC, скорее всего, попробуй. Если будет ругаться приведи код и список ошибок.
0
161 / 101 / 22
Регистрация: 11.05.2009
Сообщений: 628
17.04.2010, 15:10  [ТС]
Делаю так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
TNotifyEvent func(int a)
{
    ShowMessage(a);
}
 
void __fastcall TForm21::FormCreate(TObject *Sender)
{
    for(int i = 1; i <= 11; i++)
    {
        TButton *a = new TButton(Form21);
        a->Parent = Form21;
        a->Caption = IntToStr(i);
        a->Left = 10;
        a->Top = i * 30;
        a->OnClick = (TNotifyEvent)func(i);
    }
}
Функция вызывается при создании формы 10 раз и в последствии если нажать на кнопку ничего не происходит...
0
 Аватар для delfamur
42 / 24 / 3
Регистрация: 16.03.2010
Сообщений: 199
17.04.2010, 15:32
про это я и говорил
0
 Аватар для mirso
562 / 373 / 55
Регистрация: 05.04.2009
Сообщений: 767
17.04.2010, 15:39
Цитата Сообщение от VtaMC Посмотреть сообщение
ничего не происходит...
попробуй так
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    for ( int i = 0; i < 10; ++i )
    {
      But_tonN[i] = new TButton(this);
      But_tonN[i]->Parent = Form1;
      But_tonN[i]->Caption = "But_ton"  + IntToStr(i);
      But_tonN[i]->Tag = i ;
      
      But_tonN[i]->OnMouseDown = But_tonNMouseDown;
 
      But_tonN[i]->ShowHint = true;
      But_tonN[i]->Hint = "hint for " + But_tonN[i]->Caption;
 
      But_tonN[i]->Left = 20;
      But_tonN[i]->Top = 10 + i * (33 + 10);
      But_tonN[i]->Height = 33;
      But_tonN[i]->Width = 150;
    }
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::But_tonNMouseDown(TObject *Sender, TMouseButton Button,
          TShiftState Shift, int X, int Y)
{
    TButton* nBtn;
    nBtn = (TButton*)Sender;
 
    if ( Button == mbLeft )
    nBtn->Left -= 24;
 
    if ( Button == mbRight )
    nBtn->Left += 24;
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
    delete [] But_tonN;
}
//---------------------------------------------------------------------------
Unit1.h
C++
1
2
3
4
private:
    TButton *But_tonN[10];
    void __fastcall But_tonNMouseDown(TObject *Sender, TMouseButton Button,
          TShiftState Shift, int X, int Y);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.04.2010, 15:39
Помогаю со студенческими работами здесь

обработка событий Builder 6 c++
Есть такой поломанный код, пожалуйста киньте примеры подобного, искал в интернете ничего не нашел. struct TEvent {int what ...

Обработка событий кнопки
доброго времени суток сделал такой код для кнопки: void __fastcall TForm1::Button1Click(TObject *Sender) { float m, n; float...

Неверная обработка событий
Неверно обрабатываются события CheckListBox. При постановки галочки выводится сообщение удалено, за место добавлено. Т.е. происходит...

Обработка событий элементами формы
Среда - Borland C++. Элемент формы Button имеет обработчик события на Clic где код работы с WINAPI - записать в поток потом читать из...

Обработка кнопок MessageBox
Что нужно писать , чтобы по нажатию кнопки на окне MessageBox выполнялось определенное действие ? Вот у меня есть код, как сделать чтобы по...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru