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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.01.2014, 12:55   #1
bilibian
Форумчанин
 
Регистрация: 21.01.2014
Сообщений: 389
По умолчанию Динамическое создание Checkbox

Всем привет!

Пытаюсь реализовать, чтобы чекбоксы на scrollbox создавались динамически.

Пишу так:

Код:
procedure TForm1.FormCreate(Sender: TObject);
var 
    Chb:TCheckBox;
    i:integer;
begin
  Chb := TCheckBox.Create(scrollbox1);
  for i := 1 to 10 do begin
      Chb.parent :=scrollbox1;
      Chb.Caption:=inttostr(i);
  end;
end;
В итоге на scrollbox появляется всего один чекбокс (десятый), а мне нужно, чтобы были все в колонку. Помогите!!!
bilibian вне форума Ответить с цитированием
Старый 23.01.2014, 12:58   #2
DpolenST
Форумчанин
 
Регистрация: 28.09.2013
Сообщений: 115
По умолчанию

Код:
Chb.parent :=scrollbox1;
Chb.Caption:=inttostr(i);
Chb.Top:=i*20;
Что бы еще такого сделать, чтобы ничего не делать?

Последний раз редактировалось DpolenST; 23.01.2014 в 13:06.
DpolenST вне форума Ответить с цитированием
Старый 23.01.2014, 13:04   #3
bilibian
Форумчанин
 
Регистрация: 21.01.2014
Сообщений: 389
По умолчанию

Цитата:
Сообщение от DpolenST Посмотреть сообщение
Код:
Chb.parent :=scrollbox1;
Chb.Caption:=inttostr(i);
Chb.Top:=i*20;
Этот код решает проблему "в столбик", но на scrollbox появляется всего 1 checkbox (последний)
bilibian вне форума Ответить с цитированием
Старый 23.01.2014, 13:06   #4
DpolenST
Форумчанин
 
Регистрация: 28.09.2013
Сообщений: 115
По умолчанию

Код:
for i := 1 to 10 do begin
      Chb := TCheckBox.Create(scrollbox1);
      Chb.parent :=scrollbox1;
      Chb.Caption:=inttostr(i);
      Chb.Top:=i*20;
  end;
Что бы еще такого сделать, чтобы ничего не делать?
DpolenST вне форума Ответить с цитированием
Старый 23.01.2014, 13:11   #5
bilibian
Форумчанин
 
Регистрация: 21.01.2014
Сообщений: 389
По умолчанию

Цитата:
Сообщение от DpolenST Посмотреть сообщение
Код:
for i := 1 to 10 do begin
      Chb := TCheckBox.Create(scrollbox1);
      Chb.parent :=scrollbox1;
      Chb.Caption:=inttostr(i);
      Chb.Top:=i*20;
  end;
Отлично! Спасибо большое!
bilibian вне форума Ответить с цитированием
Старый 23.01.2014, 15:51   #6
bilibian
Форумчанин
 
Регистрация: 21.01.2014
Сообщений: 389
По умолчанию Как получить список Checkbox-ов

Привет!

Как получить список динамически созданных отмеченных checkbox-ов?

Нашел код, но не работает он у меня!

Код:
var
  i: integer;
begin
  for i := 0 to Form1.ControlCount - 1 do
  begin
    if (Form1.Controls[i] is TCheckBox) then
      if (Form1.Controls[i] as TCheckBox).Checked then
      Memo1.Lines.Add((Form1.Controls[i] as TCheckBox).Caption)
  end;
end
Прошу помочь.
bilibian вне форума Ответить с цитированием
Старый 23.01.2014, 16:00   #7
DpolenST
Форумчанин
 
Регистрация: 28.09.2013
Сообщений: 115
По умолчанию

в предыдущем сообщении ты их добавлял в scrollbox1, вот и ищи их там
то есть
вместо Form1.ControlCount используй Form1.scrollbox1.ControlCount
вместо Form1.Controls[i] используй Form1.scrollbox1.Controls[i]
Что бы еще такого сделать, чтобы ничего не делать?
DpolenST вне форума Ответить с цитированием
Старый 23.01.2014, 16:06   #8
bilibian
Форумчанин
 
Регистрация: 21.01.2014
Сообщений: 389
По умолчанию

Цитата:
Сообщение от DpolenST Посмотреть сообщение
в предыдущем сообщении ты их добавлял в scrollbox1, вот и ищи их там
то есть
вместо Form1.ControlCount используй Form1.scrollbox1.ControlCount
вместо Form1.Controls[i] используй Form1.scrollbox1.Controls[i]
Спасибо. Выручил
bilibian вне форума Ответить с цитированием
Старый 23.01.2014, 16:10   #9
bilibian
Форумчанин
 
Регистрация: 21.01.2014
Сообщений: 389
По умолчанию

Пишу Name вместо Caption и получаю пустоту. В чем может быть дело?
bilibian вне форума Ответить с цитированием
Старый 23.01.2014, 16:20   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

чувствую, зря я предыдущую тему прикрыл... может быть, открыть и слить сообщения в одну тему?!


теперь по сути.
думаю, что когда создаёте, нужно и имя прописывать:
Код:
for i := 1 to 10 do begin
      Chb := TCheckBox.Create(scrollbox1);
      Chb.parent :=scrollbox1;
      Chb.Name := 'MyDynCheckBox'+inttostr(i);
      Chb.Caption:=inttostr(i);
      Chb.Top:=i*20;
  end;
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическое заполнение Combobox+CheckBox в FireMonkey furstenberg Компоненты Delphi 6 18.09.2013 18:33
Динамическое создание romanzi Общие вопросы Delphi 1 24.08.2011 12:20
Динамическое создание TabSheet Crystallon Общие вопросы Delphi 2 25.05.2011 14:57
Динамическое создание PopupMenu? Angel86rus Компоненты Delphi 5 06.08.2010 16:02
Динамическое создание фрейма s-force Общие вопросы Delphi 9 05.09.2007 16:56