Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Динамическое создание компонентов

2.0K
07 ноября 2007 года
swordholder
99 / / 17.10.2006
Как можно управлять динамически созданными компонентами.
Например скажем у меня есть таблица в базе данных. И для каждой новой записи я должен показать новый checkbox. И управлятЬ этим checkboxoм по имени. Проблема в том как дать название каждому новому компоненту и как ссылаться на него по иуникальному имени
246
07 ноября 2007 года
GIZMO
1.8K / / 30.07.2004
Цитата: swordholder
Как можно управлять динамически созданными компонентами.
Например скажем у меня есть таблица в базе данных. И для каждой новой записи я должен показать новый checkbox. И управлятЬ этим checkboxoм по имени. Проблема в том как дать название каждому новому компоненту и как ссылаться на него по иуникальному имени


chb->Name = "FieldName" + "Value";// например. если это будет уникальное значение
TCheckBox* chb = (TCheckBox*)MainForm->FindComponent("FieldNameValue");

2.0K
07 ноября 2007 года
swordholder
99 / / 17.10.2006
тут ведь ты использоваеш chb до того как объявляеш как это может быть?
489
07 ноября 2007 года
NeO_u
277 / / 11.10.2006
Все правильно:-) четкий ответ на поставленный вопрос:-)
1) chb->Name = "FieldName" + "Value";// например. если это будет уникальное значение - ответ на вопрос: "как дать название каждому новому компоненту.."
2) TCheckBox* chb = (TCheckBox*)MainForm->FindComponent("FieldNameValue"); - ответ на вопрос: " как ссылаться на него по иуникальному имени"

ЗЫ: :-)
2.0K
07 ноября 2007 года
swordholder
99 / / 17.10.2006
Ты конечно прав
Как тогда быть с chb объектом как его объявить будь добр облегчи мне жизнь ради Бога...
11
07 ноября 2007 года
oxotnik333
2.9K / / 03.08.2007
в *.h
TCheckBox* chb;
92
07 ноября 2007 года
Тень Пса
2.2K / / 19.10.2006
еще один.
:-\

Код:
int max_table_id = 20; // это может быть например кол-во строк в таблице из БД
  for (int i=0; i < max_table_id; i++)
  {
     TCheckBox * temp = new TCheckBox(Form1); // создаём CheckBox на Form1
     temp->Name = "chb"+IntToStr(i); // уникальное имя "chb0", "chb1" и т.д.
     temp->Caption = "Checkbox "+IntToStr(i); // здесь любая строка, это текст справа от CheckBox'а
     temp->Left = 8; // все от левого края на 8px
     temp->Top = 8+i*(temp->Height+2); // располагаем так, чтобы не накладывались друг на друга
     temp->Checked = false; // или true - в зависимости от того, что тебе нужно показывать этими CheckBox'ами
     temp->Parent = Form1;  // указываем "родителя" нового компонента
     // temp->OnClick = CheckBoxClick; // здесь ты задаёшь обработчик события OnClick
     temp->Visible = true;  // показываем
  }


PS: автор, используешь и объявляешь - пишется с мягким знаком :D
2.0K
07 ноября 2007 года
swordholder
99 / / 17.10.2006
Цитата: Тень Пса
еще один.

PS: автор, используешь и объявляешь - пишется с мягким знаком :D



это изза торопливости.
Ну я ведь не в олимпиаде по русскому языку участвую (раньше участвовал)

92
07 ноября 2007 года
Тень Пса
2.2K / / 19.10.2006
мы всё таки русские люди, и давайте писать на русском. я не придираюсь ко всем запятым и тд. и тп. ибо сам грешен ))) но уж "падонкаффскийъ на уравни проста низнайу так палучилас" не хочется в итоге наблюдать :)

и вообще это уже оффтоп.
247
08 ноября 2007 года
wanja
1.2K / / 03.02.2003
А почему именно по имени? Раз уж ты его их сам создаешь, почему бы просто не запихвть их в массив?
1
08 ноября 2007 года
kot_
7.3K / / 20.01.2000
Цитата: wanja
А почему именно по имени? Раз уж ты его их сам создаешь, почему бы просто не запихвть их в массив?


По сути они и так помещаются в массив Сomponets на форме. Что мешает получать размер массива и к имени нового компонента просто добавлять число - размер массива? Кроме того не понятно - зачем динамически создав компоненты заморачиваться с именами и т.п. - почему не использовать то же свойство Tag например?

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог