Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.50/14: Рейтинг темы: голосов - 14, средняя оценка - 4.50
wtf!?
 Аватар для Flyer
750 / 281 / 25
Регистрация: 21.05.2010
Сообщений: 732

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

21.08.2011, 17:04. Показов 3058. Ответов 24
Метки нет (Все метки)

Здарсте. Нужно динамически создать ну допустим 10 TGauge. Хотя количество заранее не известно. Собственно как это сделать нормально? А то у меня что то это не выходит. Элементы должны иметь имена типа: имя1 имя2, имя3 и т.д., то есть если например цикл от 1 до 10, то имена должны иметь в конце цифры от 1 до 10. Также, почему ругается на TGauge *wtf мол TGauge неопределенный символ? На TEdit *wtf не ругается . Почему? Вообще, как это все сделать нормально?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.08.2011, 17:04
Ответы с готовыми решениями:

Динамически созданные компоненты
Вопрос такого характера, когда я создаю на форме динамически компоненты, пример в данном примере создаю по родителю перенесенного на...

Перемещение динамически созданой компоненты
Кто знает, можна ли изменять координаты динамически созданой компоненты в программе??? TImage *image = new TImage(this); ...

Как удалять динамически созданные компоненты?
Хедер #include <Math.hpp> #include <math.h> #include <vcl.h> #include "PressedMatch.h" class Client { AnsiString fio; ...

24
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
22.08.2011, 04:13
Цитата Сообщение от Flyer Посмотреть сообщение
минимальный пример с ComponentList
принцип работы ничем не отличается от вашего
C++
1
List->Add(tmp);
, за исключение того, что при удалении их списка строки по индвексу -
C++
1
ComponentList->Delete(5);
будет удален ваш динамически созданный компонент - указатль на него, в данном случае, с индексом 5, т.е., нет необходимости придумывать какие-нибудь идентификаторы для этих компонентов и хитрый способ доступа к ним, а сделать это, просто написав
C++
1
ComponentList->Items[1].Свойство = значение;
Пример удаления контролов с панели:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
TComponentList *cmp_list = new TComponentList;
 
int indx;
indx = Panel1->ControlCount;
if (cmp_list->Count == 0) {
  ShowMessage("Нет котролов на панели");
}
else {
  cmp_list->Delete(indx-1); // удалим последний контрол
}
for (int i = indx->Count - 1; i >= 0; i--) { // удалить все
  if (cmp_list->Count == 0) {
    ShowMessage("Нет котролов на панели");
  }
  else {
    cmp_list->Delete(i);
  }
}
Естественно, предварительно, в список контролы панели следует добавить, а для их идентификации - чтобы не забыть, какой индекс в списке какому контролу соотвествует , использовать, например, свойство Tag.
2
wtf!?
 Аватар для Flyer
750 / 281 / 25
Регистрация: 21.05.2010
Сообщений: 732
22.08.2011, 11:32  [ТС]
хмм, чето не так =/
Создаем лист:
C++
1
TComponentList *pb_list = new TComponentList;
Добавляем в него:
C++
1
 pb_list->Add(tmp);
и при попытке обратится как ты написал
C++
1
 pb_list->Items[2].Progress=50;
Имеем [BCC32 Error] Unit1.cpp(44): E2294 Structure required on left side of . or .*
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
22.08.2011, 12:00
да не помню я уже
C++
1
2
pb_list->Items[2]->Progress=50;
pb_list->Items->String[2]->Progress=50;
? может, и сболтнул чего - свойства бы оного листа посмотреть , да времени нет
1
wtf!?
 Аватар для Flyer
750 / 281 / 25
Регистрация: 21.05.2010
Сообщений: 732
22.08.2011, 12:04  [ТС]
Ни так, ни так =/ . Вот посмотрел как NiTan написал и попробовал.
C++
1
((TGauge*)pb_list->Items[2])->Progress=50;
Оно.
и еще, если удалить например 5 элемент в листе, что с индексами будет? Все после 5 уменьшатся на 1? То есть 6->5, 10->9 и т.д.?
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
22.08.2011, 16:08
Отож, поэтому я обычно обеспечиваю доступ и удаляю через вектор

C++
1
for (int i=0,i<t2.size(),i++) delete t2[i];
C++
1
 t2[i]->Progress=50;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.08.2011, 16:08

Динамически созданные компоненты ведут себя так, будто их высота больше, чем есть
Всем доброго здравия :) Проблемка из области &quot;истина где-то рядом&quot;... Динамически создаю компоненты VLC TImage и TLabel,...

Динамически создать компоненты в столбик
Передо мной стоит задача, поставить элементы в столбик, с возможностью листать при помощи ползунка(Scroll). Я использовал FlowLayoutPanel и...

Как динамически создать массив из динамически конструируемых экземпляров класса?
Есть два класса.Подразумевается ,что первый в конструкторе выделяет интовый массив длинной n,второй выделяет массив экземпляров первого...

Динамически созданные компоненты
я создаю компоненты по нажатию на кнопку TextBox tx = new TextBox(); tx.Name = &quot;razdel&quot; +...

Динамически созданные компоненты
Имеется форма с созданным на ней datagridview. Остальные компоненты по мере необходимости создаются динамически. Динамически созданная...


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

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Новые блоги и статьи
[golang] Конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов.
alhaos 10.06.2026
Задача Реализовать конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов. Сигнатура func Fetch(urls string, maxConcurrent int) Result Пример urls :=. . .
[golang] Состояние гонки (race condition)
alhaos 10.06.2026
Состояние гонки (race condition) Состояние гонки (Race Condition) — это ошибка, возникающая при одновременном доступе нескольких горутин к одним и тем же данным без должной синхронизации. При этом. . .
Взрослые отношения, и почему они не получаются
kumehtar 09.06.2026
Когда в детстве ребёнок не получает от родителей чего-то важного, он лишается не просто приятных переживаний, а основы для формирования определённых внутренних качеств и навыков. Если ребёнок не. . .
[golang] Worker Pool
alhaos 09.06.2026
Worker Pool Worker Pool — паттерн конкурентной обработки задач в Go. Суть: фиксированное количество горутин-воркеров читают задачи из общего канала и пишут результаты в общий канал результатов. . . .
[golang] Pipeline
alhaos 08.06.2026
Pipeline Pipeline — паттерн конкурентной обработки данных в Go. Суть: данные проходят через цепочку независимых стадий, каждая из которых работает в своей горутине и общается с соседями через. . .
Свет внутри себя
kumehtar 07.06.2026
Пусть это будет здесь lIs4oanZS9Y
Программа для com-порта
Uhbif79 05.06.2026
Всем привет, давно хотел изучить Qt, начинал, бросал, потом снова начинал. И сейчас вот смог написать свою первую программу. До этого имел опыт программирования микроконтроллеров, писал прошивки на. . .
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru