Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.56/34: Рейтинг темы: голосов - 34, средняя оценка - 4.56
 Аватар для Excellion
4 / 4 / 1
Регистрация: 03.01.2011
Сообщений: 95

Удаление динамических компонентов

31.08.2021, 15:48. Показов 6545. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Помогите плз решить проблему.
Создаю динамические компоненты, они все хорошо появляются

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
 for (int i = 0; i<10; i++)
        {
                Label[i] = new TsLabel(this);
 
                Label[i]->Top = y;
                Label[i]->Left = x;
                Label[i]->Visible = true;
                Label[i]->Parent = this;
                Label[i]->Tag = reinterpret_cast<int>(new String(IntToStr(i)));
                Label[i]->OnClick = MyKeyPress;
 
                Label[i]->Name = "L"+id[i];
         }
если еще раз запустить работу этого кода программа выдает ошибку:
A component named L1 already exists

а если добавить перед Label[i] = new TsLabel(this);
C++
1
Label[i]->Free();
то выдает ошибку:
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
31.08.2021, 15:48
Ответы с готовыми решениями:

Сохранение динамических компонентов
#pragma hdrstop #include &quot;Unit1_Journal.h&quot; //--------------------------------------------------------------------------- #pragma...

HELP::Создание->удаление динамических объектов
Доброй ночи! У меня возникла такая проблема я динамически создаю объекты типа кнопка: void __fastcall TMainForm::Button1Click(TObject...

Удаление компонентов динамически
такая проблема. Объявляю глобально переменные. TStringGrid *StringGrid1; TPageControl *PageControl1; TTabSheet *TabSheet1; ...

20
Модератор
 Аватар для D1973
9946 / 6481 / 2460
Регистрация: 21.01.2014
Сообщений: 27,465
Записей в блоге: 3
01.09.2021, 09:49
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Excellion Посмотреть сообщение
Можете привести пример кода где при нажатии на кнопку Button1 на Форме появится еще 2 динамические кнопки, а при нажатии на кнопку Button2 пропадут созданные динамические кнопки.
Да запросто! Вот только чего так скромно - только две кнопки. Вот пример - можете не стесняться создавать до посинения. Друг на друга динамические кнопки залезать могут, но за границы формы - ни-ни! И под панель тоже прятаться не будут...
*.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
 
static int k = 1;
 
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BtnClick(TObject *Sender)
{
    ShowMessage(String().sprintf(L"My Name is \"%s\"", dynamic_cast<TButton*>(Sender)->Name));
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
   int h = Button1->Height, w = Button1->Width,
       l = RandomRange(Panel1->Width + 1, ClientWidth - w),
       t = RandomRange(1, ClientHeight - h);
   TButton *B = new TButton(this);
   B->Parent = this;
   B->Name = String().sprintf(L"Dyn_Btn_%d", k);
   B->Height = h;
   B->Width = w;
   B->Left = l;
   B->Top = t;
   B->Caption = String().sprintf(L"BTN_%d", k++);
   B->OnClick = BtnClick;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
   Randomize();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
    for(int i = ControlCount -1; i >= 0; i--)
      if(Controls[i]->ClassNameIs("TButton")) delete dynamic_cast<TButton*>(Controls[i]);
    k = 1;
}

*.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <System.Classes.hpp>
#include <Vcl.Controls.hpp>
#include <Vcl.ExtCtrls.hpp>
#include <Vcl.StdCtrls.hpp>
#include <System.Math.hpp>
#include <Vcl.Controls.hpp>
#include <Vcl.StdCtrls.hpp>
#include <Vcl.Forms.hpp>
#include <Vcl.ExtCtrls.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:    // IDE-managed Components
    TPanel *Panel1;
    TButton *Button1;
    TButton *Button2;
    void __fastcall Button1Click(TObject *Sender);
    void __fastcall FormCreate(TObject *Sender);
    void __fastcall BtnClick(TObject *Sender);
    void __fastcall Button2Click(TObject *Sender);
private:    // User declarations
public:     // User declarations
    __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif




Правда, в реальной жизни я бы использовал список объектов и удалял его, а не шарился по всей форме, отыскивая контролы требуемого типа и удаляя каждый...
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.09.2021, 09:49

Динамическое удаление компонентов
Господа, доброго времени суток. Имеется форма, на которой динамически создаются и удаляются компоненты. (TEdit, TButton, TCheckBox,...

Удаление динамически-созданных компонентов
Использую класс, компонентами которого кроме всего прочего, являются StaticText и Edit, графическое изображение. Создаю экземпляр класса...

Создание и удаление компонентов в коде
Создаю форму с 16 кнопками. Кнопки создаю из кода , а не спомощью графического редактора. Как мне в деструкторе формы удалить эти...

Динамическое создание и удаление компонентов.
Понадобилось динамическое создание нескольких компонентов, при нажатии на кнопку. Несколько нажатий - несколько раз создаются компоненты....

Удаление динамических массивов С++
Доброго времени суток. У меня такое задание: Из одномерного массива А сформировать массивы B&lt;0, C&gt;0, D=0. Переписать в массив А...


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

Или воспользуйтесь поиском по форуму:
21
Ответ Создать тему
Новые блоги и статьи
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0) Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона Уважаемые коллеги! В продолжение. . .
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
Текстовый слайдер с нумерацией страниц и кроссбраузерность.
russiannick 18.07.2026
Один мой друг написал текстовый слайдер с нумерацией страниц. Сегодня я расскажу как он умудрился подружить его с кроссбраузерностью. Очевидно сложно угодить с шириной каждому браузеру. Один крадет. . .
Грибы - это мемы, дерево - это человек. Применение микоризной модели к теории меметики Докинза.
anaschu 18.07.2026
Меметический изоморфизм теории «всего»: Грибная сукцессия как модель эволюции идей Докинза Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а универсальную. . .
Грибы - это корпорации, деревья - это государства. Механизм массонского захвата власти
anaschu 18.07.2026
Макроэкономический изоморфизм теории «всего»: Грибная сукцессия как модель транснационального капитализма Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а. . .
Расчёт периметра прямоугольника по координатам вершин
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Вычислить периметр прямоугольника, заданного координатами своих вершин на плоскости. Решение: Создан документ со следующими. . .
Подсчёт частоты трёхбуквенных слов в тексте
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Выясните, сколько раз в предложенном тексте встречается каждое трехбуквенное слово. Решение: Создан документ с единственным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru