Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
Master_Yi
13 / 10 / 3
Регистрация: 22.12.2013
Сообщений: 377
#1

Присвоение Event`a через код

13.12.2014, 02:08. Просмотров 1073. Ответов 6
Метки нет (Все метки)

У меня кнопки выводятся через код:
C++
1
2
3
4
5
6
7
8
A[i] = new TButton(this);
A[i]->Parent = this;
A[i]->Top=fftop;
A[i]->Left=ffleft;
A[i]->Width=217;
A[i]->Height=33;
A[i]->Tag=i+1;
A[i]->Caption=B[i];
Заголовочный файл:
C++
1
2
3
4
5
6
7
8
9
10
11
class borderimage : public TForm
{
 
__published:    // IDE-managed Components
        TButton *Button19;
        void __fastcall Clicker(TObject *Sender);
private:    // User declarations
public:     // User declarations
        __fastcall Form1(TComponent* Owner);
        TButton *A[1]; // !!!
};
И есть проблема, нужно что бы все эти кнопки при нажатии выводили разные действия. У них разные Таги, и на это расчет, что бы обращаться с помощью case и номера Тага. Я никак не могу понять как же назначить эти кнопки на одно событие...

Буду чрезвычайно благодарен за помощь!
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.12.2014, 02:08
Ответы с готовыми решениями:

dynamic event
Как привязать Event к динамически созданаму контролю и какие параметры...

Как получить код страницы через сокеты?
Добрый вечер. Я озадачился одной мыслью. Вот например я хотел узнать, как без...

Как закоментировать код в HTML- странице через C++Builder
Здравствуйте! Ребята столкнулся с такой проблемой. Как можно закоментировать...

Как через код ассемблера открыть вторую форму приложения?
Как с помощью кода ассемблера открыть вторую форму приложения? Есть у меня...

Присвоение значения
Здравствуйте, подскажите, как можно присвоить значения для небольшого диапазона...

6
gumi250
431 / 398 / 57
Регистрация: 06.02.2012
Сообщений: 1,373
13.12.2014, 05:34 #2
Цитата Сообщение от Master_Yi Посмотреть сообщение
нужно что бы все эти кнопки
У вас одна кнопка объявлена
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int N=1;
for(int i=0; i<N; i++)
  A[i]->OnClick=&ButtonClick;
void __fastcall TForm1::ButtonClick(TObject *Sender)
{
  TButton* B=(TButton*) Sender;
  if(B->Tag==0)
  { //...
  }
  // или
  if(B==A[0])
  { //...
  }
}
0
Master_Yi
13 / 10 / 3
Регистрация: 22.12.2013
Сообщений: 377
13.12.2014, 12:06  [ТС] #3
gumi250, Ясное дело. Проблема заставить кнопки реагировать на что-то...
0
Витальич
1269 / 1179 / 174
Регистрация: 02.12.2013
Сообщений: 4,884
13.12.2014, 12:48 #4
Лучший ответ Сообщение было отмечено Master_Yi как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <System.Classes.hpp>
#include <Vcl.Controls.hpp>
#include <Vcl.StdCtrls.hpp>
#include <Vcl.Forms.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:    // IDE-managed Components
    TLabel *Label1;
 
private:    // User declarations
    TButton *A[1];
    void __fastcall ButtonClick(TObject *Sender);
public:     // User declarations
    __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
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
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
 A[0] = new TButton(this);
 A[0]->Parent = this;
 A[0]->Top=0;
 A[0]->Left=0;
 A[0]->Width=217;
 A[0]->Height=33;
 
 A[0]->Caption="1";
 A[0]->OnClick = ButtonClick;
}
 
//---------------------------------------------------------------------------
void __fastcall TForm1::ButtonClick(TObject *Sender)
{
 Label1->Caption = "111";
}
1
Master_Yi
13 / 10 / 3
Регистрация: 22.12.2013
Сообщений: 377
14.12.2014, 02:05  [ТС] #5
Цитата Сообщение от Витальич Посмотреть сообщение
#include <System.Classes.hpp>
#include <Vcl.Controls.hpp>
#include <Vcl.StdCtrls.hpp>
#include <Vcl.Forms.hpp>
На ваши варианты инклудов ругается и пишет что таковых нет, взамен им ставит стандартные:
C++
1
2
3
4
#include <Classes.hpp>
#include <Controls.hpp>
#include <ExtCtrls.hpp>
#include <StdCtrls.hpp>
А так же после всего что вы предложили выбивает ошибку(прикрепил к посту картинку)
А так же подчеркивает строку: Application->Run(); в Project1.cpp

Весь текущий код(на всякий случай:
Кликните здесь для просмотра всего текста

Unit1.h
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
#ifndef Unit1H
#define Unit1H
#include <Classes.hpp>
#include <Controls.hpp>
#include <ExtCtrls.hpp>
#include <StdCtrls.hpp>
//---------------------------------------------------------------------------
 
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:    // IDE-managed Components
        TImage *Image1;
        TImage *Image2;
        TLabel *Label1;
private:    // User declarations
    TButton *A[1];
    void __fastcall ButtonClick(TObject *Sender);
public:     // User declarations
        __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
Unit1.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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int i, ff, ffleft, fftop;
String B[100];
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
int i;
ffleft=312;
fftop=144;
ff=0;
B[0] = "text1";
B[1] = "text2";
B[2] = "text3";
B[3] = "text4";
B[4] = "text5";
B[5] = "text6";
B[6] = "text7";
B[7] = "text8";
B[8] = "text9";
B[9] = "text10";
B[10] = "text11";
B[11] = "text12";
B[12] = "text13";
B[13] = "text14";
B[14] = "text15";
B[15] = "text16";
B[16] = "text17";
B[17] = "text18";
 
  for(i=0;i<18;i++)
  {
if (i==16) {
        A[i] = new TButton(this);
        A[i]->Parent = this;
        A[i]->Top=fftop;
        A[i]->Left=ffleft;
        A[i]->Width=449;
        A[i]->Height=33;
        A[i]->Tag=i+1;
        A[i]->Caption=B[i];
        A[i]->OnClick = ButtonClick;
        fftop = fftop + A[i]->Height + 7;
 
}
else if (i==17) {
        A[i] = new TButton(this);
        A[i]->Parent = this;
        A[i]->Top=fftop;
        A[i]->Left=ffleft;
        A[i]->Width=449;
        A[i]->Height=33;
        A[i]->Tag=i+1;
        A[i]->Caption=B[i];
        A[i]->OnClick = ButtonClick;
}
else {
if (ff==0) {
        A[i] = new TButton(this);
        A[i]->Parent = this;
        A[i]->Top=fftop;
        A[i]->Left=ffleft;
        A[i]->Width=217;
        A[i]->Height=33;
        A[i]->Tag=i+1;
        A[i]->Caption=B[i];
        A[i]->OnClick = ButtonClick;
        ffleft=ffleft+A[i]->Width+15;
        ff=1;
   }
else if (ff==1) {
        A[i] = new TButton(this);
        A[i]->Parent = this;
        A[i]->Top=fftop;
        A[i]->Left=ffleft;
        A[i]->Width=217;
        A[i]->Height=33;
        A[i]->Tag=i+1;
        A[i]->Caption=B[i];
        A[i]->OnClick = ButtonClick;
        fftop = fftop+A[i]->Height+7;
        ffleft = 312;
        ff=0;
   }}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ButtonClick(TObject *Sender)
{
 Label1->Caption = "111";
}

Не знаете что это?
0
Миниатюры
Присвоение Event`a через код  
Master_Yi
13 / 10 / 3
Регистрация: 22.12.2013
Сообщений: 377
14.12.2014, 02:18  [ТС] #6
Я тут опробовал, каждый раз когда я пробую добавить любой цикл для создания кнопок(в общем для создания больше чем одной кнопки) я стыкаюсь с проблемой выше..

Добавлено через 4 минуты
Я идиот, согласен. Забыл увеличить массив чисел =)
Заработало! Вуху!
0
BRcr
16.12.2014, 01:33     Присвоение Event`a через код
  #7

Не по теме:

Себя надо любить. :) Не идиот, а уж нуб или растяпа на крайняк. Потому что все это поправимо, а идиотизм - нет.

0
16.12.2014, 01:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.12.2014, 01:33
Привет! Вот еще темы с ответами:

Присвоение строк
Добрый день, ув. форумчане. Работаю с билдером недавно. Столкнулся с...

Присвоение процедуры к event динамически созданному объекту
Вопрос в следующем Имеется динамически создаваемая Panel'ка. Нужно...

Событие Event.COPY Event.PASTE Event.CUT
Привет я не знаю как написать код в котором текстовое поле реагировало бы на...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru