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"). }


//Ela tem que ser declarada na sessão Private da Unit.
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;



// Adicione alguns ítens no TListBox
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