Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> TObjectList, TObjectList 
:(
    Опции темы
Gudzik11
Дата 31.3.2014, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 21.3.2012

Репутация: нет
Всего: нет



Подскажите пожалуйста как работать с TObjectList 
Тоесть мне нужно удалить один элемент из  TObjectList я делаю так 
Код

for I := 0 to list.Count-1 do
 begin
   if TPanel(list[i]).Name=selekt_panel then
   begin
    TPanel(list[i]).Free;
    Panel2Resize(nil);
   end;

 end;




и вывожу содержимое в listbox 
так вот listbox показывает что до удаления было 4 обекта а после удаления показывает что там и осталось 4 обекта только 2 пустой 
Скажите как удалить полностью ?
PM MAIL   Вверх
Poseidon
Дата 1.4.2014, 09:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



1) Проходя циклом с первого элемента и до последнего, есть большая вероятность получить ошибку, т.к. при удалении хотя бы одного элемента, количество всех элементов уже будет менше чем давало Count при старте цикла.
2) Запись TPanel(list[i]).Free освобождает панель, которая хранится в list[i], но не удаляет саму запись из списка. 

Надо как-то так:
Код

for i := list.Count-1 downto 0 do
 begin
   if TPanel(list[i]).Name = selekt_panel then // <-- сюда бы еще is-проверку на TPanel
   begin
    list.Delete(i); // < -- удаляем саму запись из list
    Panel2Resize(nil);
   end;
 end;


Это только как пример. Delphi под рукой нет, возможны мелкие недочеты.

Это сообщение отредактировал(а) Poseidon - 1.4.2014, 09:07


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Romikgy
Дата 1.4.2014, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



list.delete(i);
только перебор надо делать с конца...


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Gudzik11
Дата 22.4.2014, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 21.3.2012

Репутация: нет
Всего: нет



Извените долго не мог пробратся к делфи.
Вот зделал почти что хотел правдо от TList пришлось отказатса не смог я с ним совладать теперь думаю что зря так как сейчас нужно сделать Drag-and-drop панелий чтоб можно было местами менять к примеру 5 панели с 1 и т.д . 
Вариантов не каких мозг кипит.
 Подскажите кто знает как можно реализовать в моей програмке Drag-and-drop? 
вот проект : http://gfile.ru/a5Jbo
И по возможности глянте на ошибки .

Добавлено через 7 минут и 27 секунд
list.Delete(i) дело в том что не проходит после того как удаляетса компонент он остовляет не занятую память а после добовления новой панели она дублируетса в пустом мести и в новой ячейе . Я просто не нашол хорошего описания  TObjectList , инфы очень мало про него всё расчитано на спецеалистов.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0411 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.