Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
26 / 26 / 15
Регистрация: 17.02.2014
Сообщений: 310

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

16.11.2015, 02:41. Показов 996. Ответов 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
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.11.2015, 02:41
Ответы с готовыми решениями:

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

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

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

2
1408 / 572 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
16.11.2015, 05:00
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
26 / 26 / 15
Регистрация: 17.02.2014
Сообщений: 310
16.11.2015, 16:53  [ТС]
_Dimon_ Спасибо, теперь все работает правильно
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.11.2015, 16:53
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru