Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.12.2015, 01:12   #1
Dvoishnik
Форумчанин
 
Регистрация: 12.02.2011
Сообщений: 808
По умолчанию Динамическое создание компонентов в цикле

Подскажите как правильно их создавать, а потом обращаться
Пробовал создать массив, не вышло.

Код:
var
  Form9: TForm9;
  komp: array [1..30] of TCheckBox;
  ind:Integer;
implementation

uses Unit1, Unit2, Unit3, Unit4, Unit5, Unit6, Unit7, Unit8;

{$R *.dfm}

procedure TForm9.FormActivate(Sender: TObject);
var i:Integer;
begin
  ind:=1;
  i:=10;
DataModule2.razmer.First;  // размер это AdoTable
while not DataModule2.razmer.Eof  do
begin
 i:=i+20;
 komp[ind]:=TCheckBox.Create(Form9);
 komp[ind].Parent:=Form9;
 komp[ind].Left:=12;
 komp[ind].Top:=i;
 komp[ind].Caption:=DataModule2.razmerrazmer.Value; 
 ind:=ind+1;
 DataModule2.razmer.Next
end
end;


procedure TForm9.btn1Click(Sender: TObject);
var i:Integer;
begin
for i:=1 to ind do
begin
 if  komp[i].Checked then // здесь делфи говорит что я не прав.
  Form5.strngrd2.Cells[2,1]:=komp[i].Caption;
end;
end;
end.
Терпение!Дежурный экстрасенс скоро свяжется с вами!
Dvoishnik вне форума Ответить с цитированием
Старый 21.12.2015, 01:15   #2
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,882
По умолчанию

А что именно не вышло? Каменный цветок?
northener вне форума Ответить с цитированием
Старый 21.12.2015, 01:34   #3
Dvoishnik
Форумчанин
 
Регистрация: 12.02.2011
Сообщений: 808
По умолчанию

Цитата:
Сообщение от Dvoishnik Посмотреть сообщение
Код:
 if  komp[i].Checked then // здесь делфи говорит что я не прав.
   Form5.strngrd2.Cells[2,1]:=komp[i].Caption;
приобращении к компоненту ошибка
Терпение!Дежурный экстрасенс скоро свяжется с вами!

Последний раз редактировалось Dvoishnik; 21.12.2015 в 01:37.
Dvoishnik вне форума Ответить с цитированием
Старый 21.12.2015, 02:09   #4
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,882
По умолчанию

Цитата:
здесь делфи говорит что я не прав.
Так прям и говорит - "Тут ты Dvoishnik не прав!"? Или как-то иначе?
northener вне форума Ответить с цитированием
Старый 21.12.2015, 02:23   #5
Dvoishnik
Форумчанин
 
Регистрация: 12.02.2011
Сообщений: 808
По умолчанию

Цитата:
Сообщение от northener Посмотреть сообщение
Так прям и говорит - "Тут ты Dvoishnik не прав!"? Или как-то иначе?
не сохранил я ошибку, задачу решил по другому решить. Исходник переделал. Но все ровно интересно как правильно это делается.
П.С. Ругался не компилятор. На стадии выполнения программы ошибка была.

П.П.С. я искал как это реализовывается толком ничего не нашёл, может мало времени на это потратил. было бы не плохо если б мне подсказали где можно найти информацию о динамическом добавлении компонентов и работе с ними
Терпение!Дежурный экстрасенс скоро свяжется с вами!

Последний раз редактировалось Dvoishnik; 21.12.2015 в 02:25. Причина: добавил
Dvoishnik вне форума Ответить с цитированием
Старый 21.12.2015, 02:40   #6
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,882
По умолчанию

Цитата:
Сообщение от Dvoishnik Посмотреть сообщение
не сохранил я ошибку, задачу решил по другому решить. Исходник переделал. Но все ровно интересно как правильно это делается.
П.С. Ругался не компилятор. На стадии выполнения программы ошибка была.

П.П.С. я искал как это реализовывается толком ничего не нашёл, может мало времени на это потратил. было бы не плохо если б мне подсказали где можно найти информацию о динамическом добавлении компонентов и работе с ними
Да подскажем в чём ошибка(и). Ты проект тестовый приложи к сообщению.
northener вне форума Ответить с цитированием
Старый 21.12.2015, 02:43   #7
Dvoishnik
Форумчанин
 
Регистрация: 12.02.2011
Сообщений: 808
По умолчанию

я же говорю се сохранился у меня вариант с динамическим добавлением. мне кроме информации как правильно добавлять компоненты и как к им обращаться ничего не надо.
Терпение!Дежурный экстрасенс скоро свяжется с вами!
Dvoishnik вне форума Ответить с цитированием
Старый 21.12.2015, 03:05   #8
kropotkina-alice
Форумчанин
 
Аватар для kropotkina-alice
 
Регистрация: 27.10.2014
Сообщений: 594
По умолчанию

procedure TForm9.FormActivate(Sender: TObject);
В ней вы создали N чекбоксов.
Но при этом переменная ind стала равной N+1.

Стало быть в процедуре procedure TForm9.btn1Click(Sender: TObject);
нужно написать:
for i:=1 to ind-1 do
чтобы не было обращения к несуществующему komp[N+1]

Вот и всё!
kropotkina-alice вне форума Ответить с цитированием
Старый 21.12.2015, 03:12   #9
Dvoishnik
Форумчанин
 
Регистрация: 12.02.2011
Сообщений: 808
По умолчанию

kropotkina-alice
Спасибо
Терпение!Дежурный экстрасенс скоро свяжется с вами!
Dvoishnik вне форума Ответить с цитированием
Старый 21.12.2015, 03:51   #10
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Написал прогу, недостаток - скорость отрисовки компонента при большом числе элементов массива (>1000 рисовалось секунд 10)
весы = спасибо - слева.
Вложения
Тип файла: zip checkbox.zip (212.5 Кб, 26 просмотров)
from dark to light)

Последний раз редактировалось Алексей_2012; 21.12.2015 в 03:57.
Алексей_2012 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическое создание компонентов Janger Общие вопросы Delphi 11 29.06.2015 16:19
Динамическое создание компонентов Nagoran Общие вопросы Delphi 13 12.01.2015 20:09
Создание нескольких компонентов сразу в цикле artemavd Общие вопросы Delphi 40 08.06.2012 20:59
динамическое создание компонентов DOLBY Компоненты Delphi 10 17.10.2010 14:03
Динамическое создание компонентов Nice42ru Помощь студентам 4 03.01.2010 20:51