Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > TObjectList


Автор: Gudzik11 31.3.2014, 17:57
Подскажите пожалуйста как работать с 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 пустой 
Скажите как удалить полностью ?

Автор: Poseidon 1.4.2014, 09:06
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 под рукой нет, возможны мелкие недочеты.

Автор: Romikgy 1.4.2014, 10:40
list.delete(i);
только перебор надо делать с конца...

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

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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)