C++Builder
  Начало   Форум   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: в runtime сформировать button  (Прочитано 1304 раз)
BlackFox
Участник


Сказали спасибо: +0/-0
Offline

Сообщений: 271


в runtime сформировать button
« : 26 Октябрь 2015, 13:43:27 »

Как в runtime сформировать button/bitbtn/speedbutton и прописать ему обработку OnClick?
XE5/CB6
Записан
POV
Участник


Сказали спасибо: +107/-7
Offline

Сообщений: 640


Re: в runtime сформировать button
« Ответ #1 : 26 Октябрь 2015, 15:06:48 »

Код
TButton *b = new TButton(Form1);
b->Parent = Form1;
b->OnClick = Обработчик;
 
void __fastcall TForm1::Обработчик(TObject *Sender)
{
 
}
 
 
 
 
Записан
BlackFox
Участник


Сказали спасибо: +0/-0
Offline

Сообщений: 271


Re: в runtime сформировать button
« Ответ #2 : 26 Октябрь 2015, 21:33:43 »

обязательно void __fastcall TForm1::Обработчик(TObject *Sender)?
а просто void Обработчик() поймет? Ну то есть левую функцию (не метод формы)
Записан
POV
Участник


Сказали спасибо: +107/-7
Offline

Сообщений: 640


Re: в runtime сформировать button
« Ответ #3 : 26 Октябрь 2015, 22:48:14 »

Нет. Там скрытый параметр есть - объект родительского класса.
Класс может быть любой, не обязательно формы. Даже структура прокатит.
Записан
volvo877
Глобальный модератор


Сказали спасибо: +736/-1
Offline

Сообщений: 891


Re: в runtime сформировать button
« Ответ #4 : 29 Октябрь 2015, 20:39:07 »

Цитата: POV от 26 Октябрь 2015, 22:48:14
Нет
Чего это "нет"? Если нужно - можно и обычную функцию:
Код
void __fastcall Обработчик(void *This, TObject *Sender)
{
   ShowMessage("Test");
}
 
// ...
 
   TButton *b = new TButton(this); // Form1
   b->Parent = this; // Form1
 
   TMethod Method;
   Method.Data = this; // можно - просто 0, если не нужен указатель на this, но тогда нельзя к параметру This обратиться в обработчике
   Method.Code = Обработчик;
   b->OnClick = *(TNotifyEvent*)&Method;
}
Записан
POV
Участник


Сказали спасибо: +107/-7
Offline

Сообщений: 640


« Ответ #5 : 29 Октябрь 2015, 20:46:25 »

Цитата: volvo877 от 29 Октябрь 2015, 20:39:07
   TMethod Method;
    Method.Data = this; // можно - просто 0, если не нужен указатель на this, но тогда нельзя к параметру This обратиться в обработчике
    Method.Code = Обработчик;
    b->OnClick = *(TNotifyEvent*)&Method;

Забавно! )) Но тем не менее этот самый скрытый параметр появляется.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  




....

Powered by SMF 1.1.21 | SMF © 2025, Simple Machines
Страница сгенерирована за 0.105 секунд. Запросов: 19.