Очистка элемента массива, являющегося визуальным объектом

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Очистка элемента массива, являющегося визуальным объектом

Сообщение Ildus » 28.12.2018 15:48:03

Здравствуйте!
Мне нужно очистить элемент массива, являющегося визуальным объектом (например типа TPanel).
То есть в начале элементу массива я присваиваю объект
Код: Выделить всё
Action_Idti[Najatiya_Action[PageControl1.ActivePageIndex][p], p PageControl1.ActivePageIndex] := TBitBtn.Create(UJniche);

А потом мне надо очистить этот элемент, то есть удалить объект.
Free и присваивание Nill пробовал, не выходит.
Пожалуйста, помогите!
Ildus
новенький
 
Сообщения: 34
Зарегистрирован: 12.10.2018 19:35:38

Re: Очистка элемента массива, являющегося визуальным объекто

Сообщение Лекс Айрин » 28.12.2018 15:53:13

Ildus, а зачем? Плюс, ты его создаешь или он запускается с программой?
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Очистка элемента массива, являющегося визуальным объекто

Сообщение Ildus » 28.12.2018 16:50:04

Лекс Айрин писал(а):Ildus, а зачем? Плюс, ты его создаешь или он запускается с программой?


При запуске программы он создается программно(при нажатии кнопки).
Мне нужно создать такой же компонент, но имеющий другой индекс, и для того, что бы не засорять память, я должен удалить прошлый объект.
Ildus
новенький
 
Сообщения: 34
Зарегистрирован: 12.10.2018 19:35:38

Re: Очистка элемента массива, являющегося визуальным объекто

Сообщение Лекс Айрин » 28.12.2018 17:22:11

И он опять будет с тем же индексом, как я понимаю. И что-то странно ты вкладку создаешь. Судя по коду компонента тебе надо создать страницу (тип TTabSheet) а уже после создавать на ней компоненты. А потом их удалять (если ты хочешь сохранять индексы страниц) или всю страницы целиком (если не хочешь)

Компонент создается примерно так:

Код: Выделить всё
TagsView:=TButton.Create(FTools);
     TagsView.AnchorParallel(akTop,0, FTools);
     TagsView.AnchorToNeighbour(akLeft,0, FoldersView);
     TagsView.Caption:=rsTags;
     TagsView.OnClick:=@ViewTagsButton;
     TagsView.AutoSize:=true;
     TagsView.Parent:=FTools;     //куда кладем)))   

И потом они совершенно спокойно уделяются с помощью метода free.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Очистка элемента массива, являющегося визуальным объекто

Сообщение pupsik » 28.12.2018 18:58:04

Free и присваивание Nill пробовал, не выходит.
а что вы пытались удалить то? Т.е. по куску кода много предположений...

п.с.
И удалять из массива кажись нечто этого: TBitBtn(arrIndx).free
pupsik
энтузиаст
 
Сообщения: 1140
Зарегистрирован: 20.08.2014 16:20:13

Re: Очистка элемента массива, являющегося визуальным объекто

Сообщение Ildus » 29.12.2018 18:29:23

pupsik писал(а):
И удалять из массива кажись нечто этого: TBitBtn(arrIndx).free

Спасибо за помощь все работает!

Добавлено спустя 2 минуты 2 секунды:
Лекс Айрин писал(а):
Код: Выделить всё
TagsView:=TButton.Create(FTools);
     TagsView.AnchorParallel(akTop,0, FTools);
     TagsView.AnchorToNeighbour(akLeft,0, FoldersView);
     TagsView.Caption:=rsTags;
     TagsView.OnClick:=@ViewTagsButton;
     TagsView.AutoSize:=true;
     TagsView.Parent:=FTools;     //куда кладем)))   


Я сделал слегка проще
Код: Выделить всё
 
Action_Idti[Najatiya_Action[PageControl1.ActivePageIndex][p], p,PageControl1.ActivePageIndex] := TBitBtn.Create(UJniche);     
with Action_Idti[Najatiya_Action[PageControl1.ActivePageIndex][p],p, PageControl1.ActivePageIndex] do
  begin
    Top := 0;
    Left := 20;
    Visible := True;
    Parent := Action_Panel[Najatiya_Action[PageControl1.ActivePageIndex]
      [p], p, PageControl1.ActivePageIndex];
    Glyph := Button_Idti.Glyph;
    Caption := 'идти';
    Width := 80;
  end;


Добавлено спустя 1 минуту:
Лекс Айрин писал(а):И он опять будет с тем же индексом, как я понимаю. И что-то странно ты вкладку создаешь. Судя по коду компонента тебе надо создать страницу (тип TTabSheet) а уже после создавать на ней компоненты. А потом их удалять (если ты хочешь сохранять индексы страниц) или всю страницы целиком (если не хочешь)


Да, TTabSheet был до этого создан программно.
Ildus
новенький
 
Сообщения: 34
Зарегистрирован: 12.10.2018 19:35:38

Re: Очистка элемента массива, являющегося визуальным объекто

Сообщение Лекс Айрин » 29.12.2018 18:39:05

Ildus, я бы не сказал, что у тебя проще... ты все же запутался (((
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Очистка элемента массива, являющегося визуальным объекто

Сообщение pupsik » 29.12.2018 19:53:46

Action_Idti[Najatiya_Action
чёт мозг сломал я на этом. Шо сие такое? Вы в какой массив пихаете? 3:3 что ли?
Явно не так поняли моё первое сообщение. Что вы хотите сделать? Возможно есть готовый рецепт, без бубна...

п.с.
Лекс Айрин угу...
pupsik
энтузиаст
 
Сообщения: 1140
Зарегистрирован: 20.08.2014 16:20:13

Re: Очистка элемента массива, являющегося визуальным объекто

Сообщение Лекс Айрин » 29.12.2018 23:09:58

pupsik, по правилам транскрипции, что-то типа "идти на ятия". И, судя по всему, он присваивает компонент странице.

Кстати, смотря на такие переменные, я понял почему стараются именовать их всё-таки по-английски
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Очистка элемента массива, являющегося визуальным объекто

Сообщение zoltanleo » 02.01.2019 17:37:51

а почему бы не задействовать дженерики TList<> или TObjectList<> из Generics.Collections?

Изображение
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
zoltanleo
постоялец
 
Сообщения: 333
Зарегистрирован: 17.10.2013 10:55:01

Re: Очистка элемента массива, являющегося визуальным объекто

Сообщение Ildus » 22.02.2019 22:27:46

Лекс Айрин писал(а):pupsik, по правилам транскрипции, что-то типа "идти на ятия". И, судя по всему, он присваивает компонент странице.

Кстати, смотря на такие переменные, я понял почему стараются именовать их всё-таки по-английски


Тогда, я только начинал серьезно программировать, поэтому не знал как лучше, но сейчас все на английском.
Ildus
новенький
 
Сообщения: 34
Зарегистрирован: 12.10.2018 19:35:38

Re: Очистка элемента массива, являющегося визуальным объекто

Сообщение Лекс Айрин » 22.02.2019 22:54:35

Ildus, да многие через это проходят. Забей. Я сам не исключение.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8

Рейтинг@Mail.ru