Letter Опубликовано 27 июня, 2023 Опубликовано 27 июня, 2023 Загружаю список файлов в listbox, как все отмеченные ischecked файлы удалить? Цитата
0 Dmitry_4501 Опубликовано 28 июня, 2023 Опубликовано 28 июня, 2023 (изменено) Проходишь циклом по всему списку и у каждого элемента проверяешь свойство IsChecked, если оно true, то тогда при помощи TFile.Delete удаляешь файл. Как-то так: procedure DeleteAllCheckedFiles(); begin if ListBox1.Count < 1 then Exit; // Если количество элементов меньше 1, то выходим из процедуры for var I: Integer := 0 to ListBox1.Count - 1 do if ListBox1.ListItems[I].IsChecked then // Проверяем свойство IsChecked (т.е отмечен ли элемент) TFile.Delete(ListBox1.ListItems[I].Text); // Удаляем файл (только в том случае, если в тексте элемента записан путь до файла, иначе придется переделать эту строчку под свои нужды) end; Для TFile.Delete необходимо подключить юнит System.IOUtils Изменено 28 июня, 2023 пользователем Dmitry_4501 Letter 1 Цитата
0 Letter Опубликовано 13 августа, 2023 Автор Опубликовано 13 августа, 2023 В 28.06.2023 в 10:26, Dmitry_4501 сказал: procedure DeleteAllCheckedFiles(); begin if ListBox1.Count < 1 then Exit; // Если количество элементов меньше 1, то выходим из процедуры for var I: Integer := 0 to ListBox1.Count - 1 do if ListBox1.ListItems[I].IsChecked then // Проверяем свойство IsChecked (т.е отмечен ли элемент) TFile.Delete(ListBox1.ListItems[I].Text); // Удаляем файл (только в том случае, если в тексте элемента записан путь до файла, иначе придется переделать эту строчку под свои нужды) end; Спасибо еще раз! А не могли бы Вы подсказать как удалить записи? То есть из текстового файла загружаю список. И нужно так же , какие отмечены чикетом, то те удалить записи. Пробовал ListBox1.Items.Delete(r); Но не получается. Цитата
0 Dmitry_4501 Опубликовано 14 августа, 2023 Опубликовано 14 августа, 2023 (изменено) В 13.08.2023 в 09:44, Letter сказал: Спасибо еще раз! А не могли бы Вы подсказать как удалить записи? То есть из текстового файла загружаю список. И нужно так же , какие отмечены чикетом, то те удалить записи. Пробовал ListBox1.Items.Delete(r); Но не получается. Попробуйте вот так (не самый идеальный вариант, но он работает и ошибок не выдает). procedure TForm1.Button1Click(Sender: TObject); begin var selectedItems: TArray<TListBoxItem>; // Объявляем массив из объектов TListBoxItem for var item: TFMXObject in ListBox1.Children.Items[1].Children do // Перебираем каждый дочерний компонент в ListBox, который является экземпляром класса TListBoxItem. begin if item is TListBoxItem then // Проверяем, является ли item экземпляром класса TListBoxItem if TListBoxItem(item).IsChecked then // Проверяем, является ли элемент отмеченным галочкой begin System.SetLength(selectedItems, System.Length(selectedItems) + 1); // Увеличиваем длину массива selectedItems[High(selectedItems)] := TListBoxItem(item); // Вставляем элемент в массив end; end; DeleteAllCheckedFiles(selectedItems); end; procedure TForm1.DeleteAllCheckedFiles(items: TArray<TListBoxItem>); begin if System.Length(items) < 1 then Exit; for var i: Integer := 0 to System.Length(items) - 1 do begin var item: TListBoxItem := items[i]; if Assigned(item) then begin // TFile.Delete(item.Text); item.Free(); // Освобождаем память, тем самым объект уничтожится и больше не будет находиться в списке элементов TListBox end; end; end; Изменено 14 августа, 2023 пользователем Dmitry_4501 Letter 1 Цитата
Вопрос
Letter
Загружаю список файлов в listbox, как все отмеченные ischecked файлы удалить?
3 ответа на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.