Delphi - Поменять Lisbox на ListView или CheckListBox

Ответить
Аватара пользователя
Putin-mode

Delphi - Поменять Lisbox на ListView или CheckListBox

Сообщение Putin-mode »

Добрый день!



Есть программа, в ней выводится список файлов конкретной папки в Listbox а потом происходит перемещение этих файлов в другую папку.



Минус в том что нет выбора какие именно файлы из списка нужно переместить и они перемещаются все.



Вот моя функция перемещения





Код:

Код: Выделить всё

procedure TForm1.Button4Click(Sender: TObject);
begin
  while ListBox1.Items.Count > 0 do
  begin
    if Movedir(PAnsiChar(listbox1.Items[listbox1.ItemIndex]), PAnsiChar(Edit2.Text)) then
      ListBox1.Items.Delete(i2)
    else
    begin
      ShowMessage('Объект не перемещен');
      Break;
    end;
  end;
  ShowMessage('Объекты перемещены');
end;

Подскажите как переделать с листбокса на листвив?



Нужно чтоб пользователь ставил чеки на против нужных файлов и уже запускал перемещение файлов.



Или доработать эту процедуру





Код:

Код: Выделить всё

with CheckListBox1 do 
 for i:=0 to Count-1 do if checked[i] then 
  Movedir(PAnsiChar(Items[ItemIndex]), PAnsiChar(Edit2.Text))





так чтоб перемещались отмеченые файлы, и строчки которые относятся к перемещенным файлам тоже удалялись.



Спасибо!
Аватара пользователя
opel431

Re: Delphi - Поменять Lisbox на ListView или CheckListBox

Сообщение opel431 »

Привет дружище!

1. Нужен ли тебе для этой задачи ListView?

2. Замени ListBox на CheckListBox и все проблемы.



Не нужно все лопатить заново! Просто замени предка.

Выдели ListBox на форме, далее Ctrl+X - Вырезали.

Перейди в модуль (*.PAS) установи курсор ниже end. скопируй вырезанный объект Ctrl+C




читать дальше »




end.



object ListBox1: TListBox

Left = 144

Top = 104

Width = 121

Height = 97

ItemHeight = 13

TabOrder = 0

end






измени object ListBox1: TListBox на object ListBox1: TCheckListBox, вырежи измененный блок Ctrl+X, снова открой форму, клик на форме и Ctrl+V. Все, далее копируй и убирай элементы в цикле с нужным условием.
Аватара пользователя
Putin-mode

Re: Delphi - Поменять Lisbox на ListView или CheckListBox

Сообщение Putin-mode »

А можно вообще ничего не менять: достаточно выставить в ListBox Multiselect в True и - вуаля.

А пробегаться по отмеченным пунктам при помощи свойства Selected элемента.
Аватара пользователя
Putin-mode

Re: Delphi - Поменять Lisbox на ListView или CheckListBox

Сообщение Putin-mode »

AlexVol, пробЫвал, изначально так и было, но что то я там недопонял на счет как пробегаться и сделал перемещение вообще всего списка.
Аватара пользователя
Putin-mode

Re: Delphi - Поменять Lisbox на ListView или CheckListBox

Сообщение Putin-mode »

У отмеченного пункта свойство Selected выставлено в True. Соответственно,когда бежим по списку проверяем свойство и либо пропускаем, либо копируем.

Не забываем при успешном копировании снимать в False
Ответить

Вернуться в «Программирование и базы данных»