Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Динамически созданная кнопка 
V
    Опции темы
Vovanuch
Дата 8.3.2006, 08:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 3.2.2006

Репутация: нет
Всего: нет



Создается кнопка:

TButton * But = new TButton(Form1);
But->Parent=Form1;
But->Top=50;
But->Left=50;
But->Visible=true;

Как назначить ей какие-либо действия при клике? Что-нибудь вроде
But->OnClick
{
int a=10;
}
PM MAIL   Вверх
Werti
Дата 8.3.2006, 11:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 22.5.2004

Репутация: нет
Всего: 1



//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
TButton * But = new TButton(Form1);
But->Parent=Form1;
But->Top=50;
But->Left=50;
But->Visible=true;
But->OnClick= Button2Click; //при создании задаем парамет
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{
Form1->Close();
}

Нажмешь на кнопку которую ты создал динамический и она выполнить But->OnClick= Button2Click; код нажатия второй кнопочки.



PM MAIL   Вверх
Vovanuch
Дата 8.3.2006, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 3.2.2006

Репутация: нет
Всего: нет



Werti, спасибо, но мне нужно чтобы эта кнопка выполняла свои уникальные действия.
Смысла особого дублировать кнопку не вижу.)
PM MAIL   Вверх
tigger
Дата 8.3.2006, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 456
Регистрация: 30.4.2005

Репутация: 2
Всего: 4



Код


void __fastcall TForm1::NewClick(TObject *Sender)
{
Application->MessageBoxA("Нажата кнопка","Сообщение", MB_OK);
}

void __fastcall TForm1::FormCreate(TObject *Sender)
{
TButton * But = new TButton(Form1);
But->Parent=Form1;
But->Top=50;
But->Left=50;
But->Visible=true;
But->OnClick = NewClick;
}



smile


--------------------
user posted image
PM MAIL   Вверх
Vovanuch
Дата 8.3.2006, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 3.2.2006

Репутация: нет
Всего: нет



Да, работает, благодарю))) Только NewClick еще в .h-файле прописывать надо)
PM MAIL   Вверх
tigger
Дата 9.3.2006, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 456
Регистрация: 30.4.2005

Репутация: 2
Всего: 4



Ну это само собой!!!


--------------------
user posted image
PM MAIL   Вверх
ZufuS
Дата 13.7.2006, 00:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 237
Регистрация: 12.7.2006

Репутация: нет
Всего: нет



Помогите плиз: есть массив компонентов
Код

TButton *p[16]; 
for(int i=0; i<16; i++) p[i] = new TButton(Form1); 
p[i]->Parent = Form1;
 и нужно сделать, чтобы OnClick обрабатывал каждый элемент массива в зависимости от индекса. 
Если в цикл записать
Код

p[i]->OnClick = NewClick;
, то при кликании кнопки, i все время равно 16  

Если добавить параметр в объявление функции 
Код

void __fastcall NewClick(int ii, TObject *Sender);
, то компилятор ругается на строчку p[i]->OnClick = NewClick(i);
и пишет Too few parameters in call to '_fastcall TForm1::NewClick(int,TObject *)'.  

Это сообщение отредактировал(а) ZufuS - 13.7.2006, 00:40
PM   Вверх
586
Дата 13.7.2006, 00:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 57
Всего: 146



НЕ совсем понял, чего ты хотел
Код
TButton *p[16]; 
for(int i=0; i<16; i++)
{
 p[i] = new TButton(Form1); 
 p[i]->Parent = Form1;
 p[i]->OnClick=NewClick;
 p[i]->Tag=i;        // индекс
}

Код
void __fastcall TForm1::NewClick(TObject *Sender)
{
 int index;
 index=((TButton*)Sender)->Tag;
 // index -- номер кнопки в массиве
}
 
ЗЫ  Один топик - один вопрос  

Это сообщение отредактировал(а) 586 - 13.7.2006, 00:55
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0521 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.