Apagar vários itens de um TListBox de uma só vez

{E aí galera, to de volta. É sempre um prazer poder ajudar os colegas.
O procedimento seguinte faz com que sejam apagados vários ítens em um TListBox
de uma só vez, não importando se eles são selecionados aleatóriamente ou em sequência.
Ele cria um arquivo temporário que fará as devidas tranferências(Obs.: a propriedade "MultiSelect"
do TListBox deve ser alterada para "true"). }



procedure TForm1.ApagarVarios(ListBox:TListBox);
var
i:integer;
lista1, lista2:TStringList;
begin
  for i:=0 to ListBox.Items.Count-1 do
  if ListBox.Selected[i] then
  begin
    ListBox.Items.Strings[i]:='';
    ListBox.Items.SaveToFile(extractfilepath(application.ExeName)+'itens.txt');
  end;
  Lista1:=TStringList.Create;
  Lista2:=TStringList.Create;
  lista1.LoadFromFile(extractfilepath(application.ExeName)+'itens.txt');
  for i:=0 to lista1.Count-1 do
  begin
    if lista1.Strings[i]<>'' then
    begin
      lista2.Add(lista1.Strings[i]);
      lista2.SaveToFile(extractfilepath(application.ExeName)+'itens.txt');
    end
    else
    lista2.SaveToFile(extractfilepath(application.ExeName)+'itens.txt');
  end;
  ListBox.Items.LoadFromFile(extractfilepath(application.ExeName)+'itens.txt');
  deletefile(extractfilepath(application.ExeName)+'itens.txt');
end;




procedure TForm1.btnAdicionaClick(Sender: TObject);
var
S : String;
begin
  S := InputBox('Adicionar tens', 'Digite algo' , '');
  ListBox1.Items.Add(S);
  ListBox1.Items.SaveToFile(extractfilepath(application.ExeName)+'itens.txt');
end;



// Agora chame o procedimento.
procedure TForm1.btnApagaClick(Sender: TObject);
begin
  if not (ListBox1.Items.Count=0) and (ListBox1.Selected[ListBox1.ItemIndex]) then
  ApagarVarios(ListBox1);
end;
    

Autor : David da Silva Brand

Voltar