25 / 25 / 15
Регистрация: 17.02.2014
Сообщений: 310
1

Создание своего класса от Билдерського

16.11.2015, 02:41. Показов 662. Ответов 2
Метки нет (Все метки)

Мне нужно создавать много динамических кнопок (Label a не Button поэтому я не знаю как это назвать "кнопка текст"), но мне понадобилось дополнительное поле поэтому я создал свой класс

C++
1
2
3
4
5
6
7
class TLabelM : TLabel
{
public:
int id;
TLabel *Label1;
 
};
и событие OnClick

C++
1
2
3
4
void __fastcall TForm3::SpeedButton1Click_(TObject *Sender)
{
    
}
сам процесс создания динамической кнопки
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
TLabelM *NewButton;
NewButton->Label1 = new TLabel(Form3);
 
NewButton->Label1->Parent= DBGrid1;
NewButton->Label1->Caption=u"Добавити";
NewButton->Label1->Height=10;
NewButton->Label1->Width=10;
NewButton->Label1->Left=100;
NewButton->Label1->Top=10;
NewButton->Label1->Left=Rect.Left;
NewButton->Label1->Top=Rect.top;
NewButton->Label1->Width =Rect.Right - Rect.Left;
NewButton->Label1->Height=Rect.Bottom - Rect.Top;
NewButton->Label1->Font->Size = 10;
NewButton->id = Form9->ADOQuery1->FieldByName("_id_")->AsInteger;
NewButton->Label1->OnClick = this->SpeedButton1Click_;
Моя проблема в том что я не могу получить доступ к своему полю

C++
1
2
3
4
void __fastcall TForm3::SpeedButton1Click_(TObject *Sender)
{
TLabelM *button = dynamic_cast<TLabelM*>(Sender);
}
[bcc32 Error] Unit3.cpp(192): E2031 Cannot cast from 'TObject *' to 'TLabelM *'

Как же мне модифицировать свой класс чтобы так можно было сделать ?
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.11.2015, 02:41
Ответы с готовыми решениями:

Создание своего класса наследника TOpenDialog
Здраствуйте!!! Ребят подскажите что творю не так : создаю класс-наследник объекта TOpenDialog без...

Как создать объект своего класса в билдере?
Написал в билдере класс class Point { public: Point() ; void DrawPoint(float, float);...

Создание своего Event для своего класса
как создать событие для своего класса? У C# нужно создать свое делегат, потом создать экземпляр...

Создание своего класса кнопки с использованием наследования от класса UserControl
Ребят, помогите, такая проблема: создаю класс MyButton в C# при помощи наследования от класса...

2
1405 / 568 / 127
Регистрация: 31.10.2011
Сообщений: 1,956
16.11.2015, 05:00 2
user-men
Если тебе нужно просто к TLabel добавить свойство id, то:

1. Можно создать новый класс:
C++
1
2
3
4
5
6
7
8
// сам класс
class TLabelM : public TLabel
{
 public:
    __fastcall virtual TLabelM(Classes::TComponent* AOwner)
            : Stdctrls::TLabel(AOwner) {};
    int id;
};
C++
1
2
3
4
5
// событие OnClick
void __fastcall TForm3::SpeedButton1Click_(TObject *Sender)
{
 TLabelM *button = dynamic_cast<TLabelM*>(Sender);
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// процесс создания динамической кнопки
TLabelM *NewButton = new TLabelM(Form3);
NewButton->Parent= DBGrid1;
NewButton->Caption=u"Добавити";
NewButton->Height=10;
NewButton->Width=10;
NewButton->Left=100;
NewButton->Top=10;
NewButton->Left=Rect.Left;
NewButton->Top=Rect.top;
NewButton->Width =Rect.Right - Rect.Left;
NewButton->Height=Rect.Bottom - Rect.Top;
NewButton->Font->Size = 10;
NewButton->id = Form9->ADOQuery1->FieldByName("_id_")->AsInteger;
NewButton->OnClick = this->SpeedButton1Click_;
2. Воспользоваться советом volvo:
Классы-перехватчики (interceptor classes).

3. Использовать вместо id свойство Tag.
1
25 / 25 / 15
Регистрация: 17.02.2014
Сообщений: 310
16.11.2015, 16:53  [ТС] 3
_Dimon_ Спасибо, теперь все работает правильно
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.11.2015, 16:53
Помогаю со студенческими работами здесь

Создание своего класса
Пытаюсь создать свой класс - AM_Demodulator.h Написал вот это, но компилятор ругается #include...

Создание своего класса в делфи
Ребят! Проверьте, где ошибка, сам найти не могу! Вот задание Создайте класс TMyGroup, который...

ООП. Создание списка из своего класса
Задача - Создать список из готового класса. Примерный код класса: public class mFiles { ...

Создание своего класса исключений, наследование std::exception
хотел создать свой класс исключений пронаследовав от std::exception, но немного запутался в...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru