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

Компоненты - динамическое создание

03.03.2008, 20:33. Показов 3501. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Народ подскажите как создать эти 5 эдитов не на Form1 , а например на
TabControl1 на 3 вкладке!!!
C++
1
2
3
4
5
6
7
8
9
10
11
for (int i=0;i<5;i++)
        {
        TEdit *edit = new TEdit(this);
 ---> edit->Parent = Form1;<---
        edit->Name = "edit"+AnsiString(i);
        edit->Height = 16;
        edit->Width = 104;
        edit->Left = 0;
        edit->Top = i*edit->Height;
        edit->Text = AnsiString(i);
        }
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.03.2008, 20:33
Ответы с готовыми решениями:

Создание компоненты
Хочу создать компоненту на основе PageControl1 чтоб можно было менять цвет PageControl1 и его...

Динамическое создание TCppWebBrowser
Массив из 16 TCppWebBrowser'ов, ставятся на TabSheet; Код: TCppWebBrowser *page; int page_count...

Динамическое создание компонентов
Здравствуйте! Суть программы: есть статическая форма FormMain, на ней кнопка &quot;Создать проект&quot; - ...

Динамическое создание Form
Всем привет. Как на с++ создать форму в ресурсном файле самому? На Delphi я делал так: ...

11
Супер-модератор
8783 / 2536 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
04.03.2008, 09:35 2
ну так главное этим компонентам правильно родителя указать...
0
0 / 0 / 0
Регистрация: 10.10.2008
Сообщений: 5
10.10.2008, 13:09 3
пасибо огромное, все прекрасно работает!!!
сделал нечто похожее:
C++
1
2
3
4
5
6
7
8
  TButton *but=new TButton(this);
  but->Parent=Form1;
  but->Name="but"+AnsiString(i);
  but->Caption="qwe"+AnsiString(i);
  but->Top=i*25+i*5;
  but->Left=50;
  but->Height=25;
  but->Width=75;
а как сделать события на кнопки(например при нажатии на кнопки) ?????
Миниатюры
Компоненты - динамическое создание  
0
1665 / 1134 / 80
Регистрация: 21.08.2008
Сообщений: 4,734
Записей в блоге: 1
10.10.2008, 14:12 4
руками прописываешь в заголовочнике формы
Код
void __fastcall OnBtnClick (TObject *Sender);
в *.срр файле формы:
Код
void __fastcall OnBtnClick (TObject *Sender)
{
   TButton *m_btn = dynamic_cast<TButton*>(Sender);
   if (m_btn->Name == "чему то") // реакция на нажатие определённой кнопки
...
...
}
и при динамическом создании присваиваешь этот обработчик:
Код
  TButton *but=new TButton(this);
...
...
...
  but->OnClick = OnBtnClick; // присваиваем обработчик
1
0 / 0 / 0
Регистрация: 10.10.2008
Сообщений: 5
15.10.2008, 12:10 5
вроде сделал как надо, но всеравно не работает((
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
...
#pragma resource "*.dfm"
TForm1 *Form1;
TButton *but;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall OnBtnClick (TObject *Sender){
  TButton *m_btn = dynamic_cast<TButton*>(Sender);
  if(m_btn->Name == "but1"){
    but->Width+=30;
    }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
for(int i=0;i<5;i++){
  but=new TButton(this);
  but->Parent=Form1;
  but->Name="but"+AnsiString(i);
  but->Caption="qwe"+AnsiString(i);
  but->Top=i*25+i*5;
  but->Left=50;
  but->Height=25;
  but->Width=75;
  but->OnClick = OnBtnClick;
  }
}
//---------------------------------------------------------------------------
Unit1.h :
C++
1
2
3
4
5
...public:      // User declarations
        __fastcall TForm1(TComponent* Owner);
        void __fastcall OnBtnClick (TObject *Sender);
};
...
Миниатюры
Компоненты - динамическое создание  
0
1665 / 1134 / 80
Регистрация: 21.08.2008
Сообщений: 4,734
Записей в блоге: 1
15.10.2008, 12:29 6
void __fastcall OnBtnClick (TObject *Sender);
перенеси в секцию __published:
0
Супер-модератор
8783 / 2536 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
15.10.2008, 12:30 7
elron, ну код какой-то мутный, там все делается проще, но тебе виднее, а ошибку исправить легко:
Код
void __fastcall TForm1::OnBtnClick (TObject *Sender){
  TButton *m_btn = dynamic_cast<TButton*>(Sender);
  if(m_btn->Name == "but1"){
    but->Width+=30;
    }
}
ты же в классе прописал прототип функции, но ее реализации нет, вот и линкер паникует...
1
1665 / 1134 / 80
Регистрация: 21.08.2008
Сообщений: 4,734
Записей в блоге: 1
15.10.2008, 12:34 8
Цитата Сообщение от oxotnik Посмотреть сообщение
void __fastcall OnBtnClick (TObject *Sender);
перенеси в секцию __published:
это тут ни при чем...
0
0 / 0 / 0
Регистрация: 10.10.2008
Сообщений: 5
15.10.2008, 12:47 9
всё работает)) ну всё, пришло моё время
пасибо))
0
0 / 0 / 0
Регистрация: 10.10.2008
Сообщений: 5
24.10.2008, 13:49 10
это.. а как сделать чтоб например при нажатии на кнопку она изменяла свои параметры? например при нажатии на кнопку qwe1 эта кнопка изменяла длину или ширину.. а то в исходнике изменяется только последняя созданная кнопка..
0
Супер-модератор
8783 / 2536 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
24.10.2008, 14:41 11
тебе просто на онклике надо анализировать, какую кнопку жали и ее параметры менять
0
0 / 0 / 0
Регистрация: 10.10.2008
Сообщений: 5
01.12.2008, 14:02 12
Это.. с кнопкой разобрался.. кто-нибудь может подсказать как сделать тоже самое, только с компонентом TImage, а точнее чтоб динамически создать и сделать событие при нажатии на картинку(типа OnImgClick):
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
//---------------------------------------------------------------------------
void __fastcall TForm1::OnBtnClick (TObject *Sender){
  TButton *m_btn = dynamic_cast<TButton*>(Sender);
  AnsiString S;
  for(int i=0;i<10;i++){
    S="but"+IntToStr(i);
    if(m_btn->Name == S.c_str()){ // реакция на нажатие определённой кнопки
      But[i].but->Width+=30;
      } // if
    } // for
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender){
for(int i=0;i<10;i++){
  But[i].but=new TButton(this);
  But[i].but->Parent=Form1;
  But[i].but->Name="but"+AnsiString(i);
  But[i].but->Caption="qwe"+AnsiString(i);
  But[i].but->Top=i*25+i*5;
  But[i].but->Left=50;
  But[i].but->Height=25;
  But[i].but->Width=75;
  But[i].but->OnClick = OnBtnClick; // присваиваем обработчик
  }
}
0
01.12.2008, 14:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.12.2008, 14:02
Помогаю со студенческими работами здесь

Динамическое создание кнопок
Как создать кнопку, я примерно представляю: TSpeedButton *lbl; lbl=new TSpeedButton(this);...

Динамическое создание компонентов
Подскажите, пожалуйста, как решить проблему. В проекте есть 2 формы. На первой форме есть кнопка,...

Динамическое создание RichEdit'a
Есть PageControl, на одной из вкладок находится RichEdit Как сделать, чтобы при определённом...

Динамическое создание форм
Всем привет. Если я создаю форму таким образом TForm1* Form1 = new TForm1(Application); я...


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

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