C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Динамическое удаление, не могу разобраться
** Николай
Отправлено: 06.03.2006, 16:32


Не зарегистрирован







Помогите разобраться как удалить динамически созданные объекты, значит так создаю:
TLabel *K = new TLabel(Form12);
K->Parent = Form12;
K->Top=4*i; K->Left=20;
K->Visible=true;
K->Enabled=true;
K->Name = "Label" + IntToStr(i);
K->Font->Color = clWhite;
K->Height = 20;
K->Tag = i;
K->Transparent = true;
А вот как удалить допустим 7-й? или 21-й??
Doga
Отправлено: 06.03.2006, 16:53


Мастер участка

Группа: Участник
Сообщений: 575



У каждого компонента есть свойство Tag. Можно воспользоваться им:

CODE

if (K->Tag == 7)
{
  ;
}


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

Отредактировано Doga — 06/03/2006, 17:37
Gal
Отправлено: 06.03.2006, 17:49


Станционный диспетчер

Группа: Участник
Сообщений: 124



Tag — это конечно выход, но чтобы выйти на определенный Label надо просмотреть все.
предлагаю
map
Первый элемент Tag
Второй Name Label.
А вообще варианто много, например через vector — тоже вариант
Все это знания инструмента и вкуса.
Grigoriy
Отправлено: 06.03.2006, 17:57


Мастер участка

Группа: Участник
Сообщений: 381



Тут яркий пример для динамического создания и удаления объектов.

https://rxlib.ru/forums/index.php?ac...44b3bbfcb367052
** Николай
Отправлено: 10.03.2006, 13:13


Не зарегистрирован







На самом деле все очень просто было сделано, когда нажимаем на созданный label, он удаляется:

void __fastcall TForm1::EOnClick(TObject *Sender)
{
LabelW->Caption = Sender->ClassName();
Del = Sender;
delete Del;
index--; //индекс для создания имен label
}
И почему то он перестал работать(такой код), вот думаю по другому чтоли сделать как нибудь. Может кто подскажет возможные ошибки?
Gal
Отправлено: 10.03.2006, 19:30


Станционный диспетчер

Группа: Участник
Сообщений: 124



QUOTE

На самом деле все очень просто было сделано, когда нажимаем на созданный label, он удаляется:

На самом деле деле создается впечатлени, что тебе по барабану, что тебе люди пишут.
Ты хоть по ссылке сходил, которую тебе Grigoriy выложил?
** Николай
Отправлено: 13.03.2006, 13:37


Не зарегистрирован







Мне вовсе не по барабану, я уже все реализовал по примеру написанного Grigoriy(за что отдельное спасибо), просто я написал, что мне и хватит более простой реализации, но я не могу понять почему она перестала работать....
Gal
Отправлено: 14.03.2006, 12:22


Станционный диспетчер

Группа: Участник
Сообщений: 124



QUOTE

мне и хватит более простой реализации, но я не могу понять почему она перестала работать....

Я не могу понять, как эта реализация вообще работала
CODE

void __fastcall TForm1::EOnClick(TObject *Sender)
{
TLabel* LabelPtr = (TLabel*)Sender;
}

Это азы, а теперь скажы как определить на како Label указывает LabelPtr.

Вернуться в Вопросы программирования в C++Builder