Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 5.00/16: Рейтинг темы: голосов - 16, средняя оценка - 5.00
10 / 1 / 0
Регистрация: 13.08.2013
Сообщений: 70

Обработка событий

28.11.2013, 15:12. Показов 3703. Ответов 38
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите пожалуйста,как сделать какое -нибудь действие например ShowMessage для OnClick динамически создаваемых кнопок
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
#include "Unit2.h"
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "cspin"
#pragma resource "*.dfm"
TForm1 *Form1;
TButton *new_btn;
TButton *array_btn[500];
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 
int s;
int a;
int d;
int j;
int k;
 
j=80;
k=5;
int max = 5;
int min = 1;
 
 
if((Edit1->Text).Length()==0){
ShowMessage ("Введите значение по горизонтали");
Form1->Edit1->SetFocus();}
if((Edit2->Text).Length()==0){
ShowMessage ("Введите значение по Вертикали");
Form1->Edit2->SetFocus();}
s=StrToInt(Edit1->Text);
a=StrToInt(Edit2->Text);
d=a*s;
if ((((Edit1->Text).Length())!=0)&&(((Edit2->Text).Length())!=0)) {
 
Form1->Visible=false;
Form2->Visible=true; }
for(int i = 1; i <= d; i++)
{ k=k+30;
int r = rand()%(max - min + 1) + min;
array_btn[i] = new TButton (Form1);
array_btn[i]->Parent = Form2;
array_btn[i]->Top = k ;
array_btn[i]->Left = j;
array_btn[i]->Caption = IntToStr(r) ;
if (i%a==0){
j=j+80;
k=5;}
}
 
}
//---------------------------------------------------------------------------
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.11.2013, 15:12
Ответы с готовыми решениями:

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

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

Обработка событий кнопок Button
Доброго времени суток!!! Во время создания формы создаются 10 кнопок таки образом: for(int i = 1; i &lt;= 11; i++) { TButton *a...

38
10 / 1 / 0
Регистрация: 13.08.2013
Сообщений: 70
29.11.2013, 19:48  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от nick42 Посмотреть сообщение
Если вы назначаете свою функцию типовому обработчику ButtonClick, то уже не правильно, - у того в параметрах присутствует TObject *Sender, то-есть передается указатель на кнопку, которую нажали. А в вашей функции - пусто. Непорядок. Добавьте в вашу функцию (и в .срр и в .h) такую же запись: вместо myFunc() - myFunc(TObject *Sender).
исправил:
в h:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class TForm1 : public TForm
{
__published:    // IDE-managed Components
 
    //...
 
    void __fastcall  myFunc(TObject *Sender);
    void __fastcall TForm1:: myFunc(TObject *Sender)//   --------------  поставь обьявление сюда
 
 
private:    // User declarations
public:     // User declarations
//...........
};
в ccp:
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
44
45
46
void __fastcall TForm1::myFunc(TObject *Sender)
   {  ShowMessage("Hello");}
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 
  int s;
  int a;
  int d;
  int j;
  int k;
 
  j=80;
  k=5;
   int max = 5;
   int min = 1;
 
 
  if((Edit1->Text).Length()==0){
  ShowMessage ("Введите значение по горизонтали");
  Form1->Edit1->SetFocus();}
  if((Edit2->Text).Length()==0){
  ShowMessage ("Введите значение по Вертикали");
  Form1->Edit2->SetFocus();}
  s=StrToInt(Edit1->Text);
  a=StrToInt(Edit2->Text);
  d=a*s;
  if ((((Edit1->Text).Length())!=0)&&(((Edit2->Text).Length())!=0))  {
 
  Form1->Visible=false;
  Form2->Visible=true;                }
  for(int i = 1; i <= d; i++)
    {  k=k+30;
         int r = rand()%(max - min + 1) + min;
        array_btn[i] = new TButton (Form1);
        array_btn[i]->Parent = Form2;
        array_btn[i]->Top = k ;
        array_btn[i]->Left = j;
        array_btn[i]->Caption = IntToStr(r) ;
        if (i%a==0){
        j=j+80;
        k=5;}
        array_btn[i]->OnClick =  myFunc(TObject *Sender);
                }
 
}
ошибки:
[C++ Error] Unit1.cpp(24): E2316 '_fastcall TForm1::myFunc(TObject *)' is not a member of 'TForm1'
на 1 строчку
[C++ Error] Unit1.cpp(64): E2268 Call to undefined function 'myFunc'
[C++ Error] Unit1.cpp(64): E2108 Improper use of typedef 'TObject'
на 37
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33479 / 21577 / 8250
Регистрация: 22.10.2011
Сообщений: 37,038
Записей в блоге: 12
29.11.2013, 20:50
Header:

C++
1
2
3
4
5
6
7
8
9
10
11
class TForm1 : public TForm
{
__published:    // IDE-managed Components
 
    //...
 
private:    // User declarations
public:     // User declarations
    // Никогда не лезь в раздел published. Там правит сам Билдер, и никто больше...
    void __fastcall  myFunc(TObject *Sender); // У тебя уже есть объявление myFunc, не надо его дублировать !!!
};
CPP
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
44
45
46
void __fastcall TForm1::myFunc(TObject *Sender)
   {  ShowMessage("Hello");}
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 
  int s;
  int a;
  int d;
  int j;
  int k;
 
  j=80;
  k=5;
   int max = 5;
   int min = 1;
 
 
  if((Edit1->Text).Length()==0){
  ShowMessage ("Введите значение по горизонтали");
  Form1->Edit1->SetFocus();}
  if((Edit2->Text).Length()==0){
  ShowMessage ("Введите значение по Вертикали");
  Form1->Edit2->SetFocus();}
  s=StrToInt(Edit1->Text);
  a=StrToInt(Edit2->Text);
  d=a*s;
  if ((((Edit1->Text).Length())!=0)&&(((Edit2->Text).Length())!=0))  {
 
  Form1->Visible=false;
  Form2->Visible=true;                }
  for(int i = 1; i <= d; i++)
    {  k=k+30;
         int r = rand()%(max - min + 1) + min;
        array_btn[i] = new TButton (Form1);
        array_btn[i]->Parent = Form2;
        array_btn[i]->Top = k ;
        array_btn[i]->Left = j;
        array_btn[i]->Caption = IntToStr(r) ;
        if (i%a==0){
        j=j+80;
        k=5;}
        array_btn[i]->OnClick =  myFunc; // <--- Тебе не надо вызывать функцию, надо запомнить указатель на нее !!!
                }
 
}
Всё, ошибки должны исчезнуть... Если нет - присоединяй проект полностью, посмотрим, чего ты там куда понадобавлял...
0
1409 / 573 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
30.11.2013, 05:33
nick42, по невнимательности я тоже упустил это из вида
0
10 / 1 / 0
Регистрация: 13.08.2013
Сообщений: 70
30.11.2013, 13:02  [ТС]
ЗАДАЧКА.rar
ошибки не исчезли
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33479 / 21577 / 8250
Регистрация: 22.10.2011
Сообщений: 37,038
Записей в блоге: 12
30.11.2013, 13:22
1vlad, издеваешься, что-ли? Я тебе в предыдущем посте что написал в 10 строке для Header-а? Почему ты это убрал? Добавь, и все ошибки исчезнут...
1
10 / 1 / 0
Регистрация: 13.08.2013
Сообщений: 70
30.11.2013, 16:54  [ТС]
спасибо огромное всем и прошу прощения,чувствую себя полным тупицей,который как будто не открывал ничего

Добавлено через 2 часа 42 минуты
Прошу прощения за наглость,еще вопрос появился.Как сделать,что бы по нажатие данная кнопка блокировалась?
в функции пищу array_btn[i]->Enabled= False ,выдает ошибку.
0
30.11.2013, 19:39
 Комментарий модератора 
1vlad, Вам модераторы на протяжении всей темы правят теги. Пора бы самому начать этим заниматься. В следующий раз будет карта

Предупреждение.
0
 Аватар для Kulgar
511 / 196 / 26
Регистрация: 07.08.2013
Сообщений: 814
02.12.2013, 09:16
Цитата Сообщение от 1vlad Посмотреть сообщение
array_btn[i]->Enabled= False ,выдает ошибку
Какую?

Не по теме:

Пойду ка телепатию практиковать...

0
1409 / 573 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
02.12.2013, 09:23
C++
1
array_btn[i]->Enabled= false;
0
 Аватар для Kulgar
511 / 196 / 26
Регистрация: 07.08.2013
Сообщений: 814
02.12.2013, 09:37
_Dimon_, откуда?! Вы знаете, что у него дальше по коду нет точки с запятой? Телепатия?!
Я тоже заметил... но решил, что это частичное копирование. Ибо как можно не понять
[C++ Error] Unit1.cpp(169): E2379 Statement missing ;
?
0
1409 / 573 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
02.12.2013, 09:52
Цитата Сообщение от Kulgar Посмотреть сообщение
Ибо как можно не понять
[C++ Error] Unit1.cpp(169): E2379 Statement missing ;
Судя по даной теме там все может быть. Другому человеку в голову ж не залезешь....

Добавлено через 2 минуты
1vlad, тебе б книжечку хорошую почитать ...
0
10 / 1 / 0
Регистрация: 13.08.2013
Сообщений: 70
02.12.2013, 12:17  [ТС]
Цитата Сообщение от _Dimon_ Посмотреть сообщение
1vlad, тебе б книжечку хорошую почитать ...
не спорю,пока про сендер не начал читать не разобрался...А про точку с запятой,там она была...
0
 Аватар для Kulgar
511 / 196 / 26
Регистрация: 07.08.2013
Сообщений: 814
02.12.2013, 14:10
1vlad, Вы и дальше нам предлагаете угадывать что у Вас за ошибка? Или всё же приведёте ответ компилятора?
0
10 / 1 / 0
Регистрация: 13.08.2013
Сообщений: 70
02.12.2013, 14:42  [ТС]
Цитата Сообщение от Kulgar Посмотреть сообщение
1vlad, Вы и дальше нам предлагаете угадывать что у Вас за ошибка? Или всё же приведёте ответ компилятора?
Прошу прощения,я же написал,что во всем разобрался и поставленную задачу решил.Еще раз прошу прощения за кривые мои сообщения.
0
 Аватар для Kulgar
511 / 196 / 26
Регистрация: 07.08.2013
Сообщений: 814
02.12.2013, 14:44
Цитата Сообщение от 1vlad Посмотреть сообщение
во всем разобрался и поставленную задачу решил
В чём заключалась неисправность? Как решили?
Делитесь своими ответами.
1
10 / 1 / 0
Регистрация: 13.08.2013
Сообщений: 70
02.12.2013, 18:47  [ТС]
в функции писал:
C++
1
2
3
4
5
6
void __fastcall TForm1::Block(TObject *Sender)
{
array_btn[i]=(TButton*)Sender;
((TButton*)Sender)->Enabled = false ; //блокируем себя
int idx=array_btn[i]->Tag;
 array_btn[idx-1]->Enabled=false;}
и далее оперировал с индексов кнопки с помощью переменной idx
0
98 / 81 / 14
Регистрация: 26.07.2013
Сообщений: 600
06.12.2013, 14:40
- 1vlad, немного пересмотрел и переделал Ваш проект. Правда далеко не все понял. Зачем нужны две Формы?
Зачем нужны случайные числа? Но работать теперь будет значительно надежней. Вместо двух, практически
одинаковых обработчиков Едитов, сделал один и подключил сразу к двум Едитам. Посмотрите и разберитесь как это
работает. Ввел защиту на недопустимые значения Едитов (0 и значения, большие максимально допустимых). Теперь
до тех пор, пока не будут введены допустимые значения в оба Едита, нажать кнопку "Создать" будет невозможно!
Код, конечно, можно оптимизировать и унифицировать и дальше, но это будет убавлять его прозрачность и простоту
понимания, поэтому делать этого не стал ... Я, конечно, не говорю, что делать надо именно так, тем более, что не до
конца понимаю Вашу задумку! Это просто один из вариантов решения. А Вы можете сочинять что-то отталкиваясь от
этого ...
Вложения
Тип файла: rar Переделка_Staut.rar (34.9 Кб, 3 просмотров)
1
98 / 81 / 14
Регистрация: 26.07.2013
Сообщений: 600
06.12.2013, 14:42
- Вдогонку! Если что не понятно - спрашивайте ...
0
10 / 1 / 0
Регистрация: 13.08.2013
Сообщений: 70
07.12.2013, 18:00  [ТС]
спасибо,ваша версия оптимальней,тут не поспорить...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.12.2013, 18:00

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

Обработка сообщений/событий. Отслеживание в оборудовании
Мне необходимо отслеживать изменения в составе оборудования. Весь день лажу по инету - ищу, читаю - и везде нет ничего внятного. Подскажите...

Обработка событий динамически созданных компонентов
По нажатию на кнопку я создаю новый компонент на форме. panel.push_back(NULL); panel = new TPanel(Form1); ...

Обработка событий динамически созданных объектов в С++ Builder
Добрый день! Подскажите, пожалуйста, возможное решение следующей проблемы... Есть некая форма. На форме присутствует элемент...

Обработка событий "mouse move" и "mouse down"
При добавлении в программу обработки события перемещения мыши, код обработки события нажатия мыши не вызывается. Подскажите пожалуйста, как...


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

Или воспользуйтесь поиском по форуму:
39
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru