Поиск:

Ответ в темуСоздание новой темы Создание опроса
> нужно создать массив кнопок 
:(
    Опции темы
mrKoddy
Дата 6.6.2005, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Всем привет!
Делают так:
Код

...
 int i;
BitBtn1 = new TBitBtn*[N];
for(i=0;i<N;i++)
{
 BitBtn1[i]->Tag=i;
 BitBtn1[i]->Width =...
 BitBtn1[i]->Height=...
 BitBtn1[i]->Top=...
 BitBtn1[i]->Left=...
 BitBtn1[i]->Parent = Form1;
 BitBtn1[i]->Show();
}
...

Компилиться, но вылетает на BitBtn1[i]->Width =... А BitBtn1[i]->Tag=i проходит, что странно вообще-то.
Если создавать одну кнопку, то такого эффекта нету.
Не могу понять в чем глюк.
PS: облазил два форума и нашел примерно такие-же кнструкции, так что сильно не пинайте. smile
PM MAIL   Вверх
jorkug
Дата 7.6.2005, 04:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(mrKoddy @ 6.6.2005, 22:26)
BitBtnl = new TBitBtn*[N];

Ты выделяешь память под указатели, а не под объекты.
BitBtnl = new TBitBtn[N];
PM MAIL   Вверх
mrKoddy
Дата 7.6.2005, 20:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата
BitBtnl = new TBitBtn[N];

[C++ Error] Unit1.cpp(21): E2248 Cannot find default constructor to initialize array element of type 'TBitBtn'
Можно конечно вот так:
for(i=0;i<N;i++)
{
BitBtnl = new TBitBtn(this);
BitBtnl->Parent= Form1;
...
BitBtnl ->Show();
}
Но имхо это уже будет не массив, а не понятно что. smile

Это сообщение отредактировал(а) mrKoddy - 7.6.2005, 20:48
PM MAIL   Вверх
Adil'
Дата 8.6.2005, 09:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код
int i;
BitBtn1 = new TBitBtn*[N];
for(i=0;i<N;i++)
{
//собственно, создаём кнопку:
 BitBtn1[i]=new TBitBtn(Form1); 
 BitBtn1[i]->Tag=i;
 BitBtn1[i]->Width =...
 BitBtn1[i]->Height=...
 BitBtn1[i]->Top=...
 BitBtn1[i]->Left=...
 BitBtn1[i]->Parent = Form1;
 BitBtn1[i]->Show();//в принципе, это лишнее
}
...



--------------------
Удачи
PM MAIL WWW   Вверх
mrKoddy
Дата 8.6.2005, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



1: Type name expected,Cannot convert 'int *' to 'int'
6: Invalid indirection,Type name expected,Statement missing ;
на все остальные Invalid indirection
PM MAIL   Вверх
Adil'
Дата 9.6.2005, 08:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



А как BitBtn1 объявлен? Д.б. как TBitBtn**BitBtn1; И Buttons.hpp подключен?


--------------------
Удачи
PM MAIL WWW   Вверх
mrKoddy
Дата 9.6.2005, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата
И Buttons.hpp подключен?

Да, подключен.
Цитата
Д.б. как TBitBtn**BitBtn1;

После этого на
[
Код

BitBtn1[i]=new TBitBtn(Form1);

Цитата

Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 00401BB9 in module 'Project1.exe'. Write of address 00000000'. Process stopped. Use Step or Run to continue

PM MAIL   Вверх
Adil'
Дата 10.6.2005, 09:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Что-то ты не так или не то делаешь. smile Похоже забыл отвести память под массив указателей.
Вот рабочий код:
Код
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
  int N=10;
  TBitBtn**BitBtn1 = new TBitBtn*[N];
  for(int i=0;i<N;i++)
  {
     //собственно, создаём кнопку:
     BitBtn1[i]=new TBitBtn(Form1); 
     BitBtn1[i]->Tag=i+1;
     BitBtn1[i]->Caption=String("DynBitBtn")+i;
     BitBtn1[i]->Width =60;
     BitBtn1[i]->Height=20;
     BitBtn1[i]->Top=10+i*30;
     BitBtn1[i]->Left=20;
     BitBtn1[i]->Parent = Form1;
  }
}


Это сообщение отредактировал(а) Adil' - 10.6.2005, 09:09


--------------------
Удачи
PM MAIL WWW   Вверх
Гость_stranger
Дата 10.6.2005, 10:28 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











void __fastcall TForm1::Button1Click(TObject *Sender)
{
int N=10;
TBitBtn **BitBtn1 = new TBitBtn *[N];
for(int i=0;i<N;i++)
{
BitBtn1[i]=new TBitBtn(Form1);
BitBtn1[i]->Tag = i;
BitBtn1[i]->Width = 55;
BitBtn1[i]->Height = 25;
BitBtn1[i]->Top = (BitBtn1[i]->Width)*i/2;//0-горизонтально;
BitBtn1[i]->Left = (BitBtn1[i]->Width)*i; //0-вертикально;
BitBtn1[i]->Caption = "N " + IntToStr(i);
BitBtn1[i]->Parent = Form1;
}
  Вверх
mrKoddy
Дата 10.6.2005, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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