Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
13 / 10 / 3
Регистрация: 22.12.2013
Сообщений: 378
1

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

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

Author24 — интернет-сервис помощи студентам
У меня кнопки выводятся через код:
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)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.12.2014, 02:08
Ответы с готовыми решениями:

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

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

Как узнать координаты мышки из event:Event
как из переменной event достать координаты? knob_MC.addEventListener(MouseEvent.MOUSE_DOWN,...

WebBrowser не поддерживает Event MouseDown и Event MouseUp
Здравствуйте, у меня имеется WebBrowser control в windowsFormApp, но он не поддерживает Event...

6
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
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
13 / 10 / 3
Регистрация: 22.12.2013
Сообщений: 378
13.12.2014, 12:06  [ТС] 3
gumi250, Ясное дело. Проблема заставить кнопки реагировать на что-то...
0
1280 / 1185 / 175
Регистрация: 02.12.2013
Сообщений: 4,883
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
13 / 10 / 3
Регистрация: 22.12.2013
Сообщений: 378
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";
}

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

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

Не по теме:

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

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.12.2014, 01:33

event.returnValue is deprecated. Please use the standard event.preventDefault() instead
Выдаёт ошибку event.returnValue is deprecated. Please use the standard event.preventDefault()...

Доступ к SSH через event manager applet
Добрый день. Помогите, пожалуйста.Нужно настроить cisco 887, чтобы она через event manager applet...

Синхронизация потоков через Event-ы (задача producer/consumer)
Задание :Реализуйте синхронизацию для простейшего случая задачи producer/consumer (spsc – single...

Код в IExplorer работает в NetScape нет (Error window.event has no properties)
Народ подскажите почему данный ниже код в IExplorer работает в NetScape нет (Error window.event has...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru