segunda-feira, 31 de janeiro de 2011

Apagando itens selecionados de um ListBox

 
Esta dica mostra como apagar vários itens de uma só vez de um ListBox, não importando se eles são selecionados em sequência ou aleatoriamente. Lembrando que para selecionarmos vários itens de um ListBox, sua propriedade MultiSelect deve estar ativada. Segue o código:
//A procedure tem que ser declarada na sessão "Public" ou "Private" da unit
procedure TForm1.ApagaVarios (var ListBox: TListBox);
var
  i: integer;
  lista: TStringList;
begin
  for i:=0 to ListBox.Items.Count-1 do
    if ListBox.Selected[i] then
      ListBox.Items[i] := '';

  lista:= TStringList.Create;
         
  for i:=0 to ListBox.Items.Count-1 do
    if ListBox.Items[i] <> '' then
      lista.Add(ListBox.Items[i]);

  Listbox.Clear;
  ListBox.Items.Assign(lista);  
  lista.Free;
end;
Para usá-la, coloque um componente ListBox e um componente Button em seu form. Adicione alguns itens no ListBox e ative a sua propriedade MultiSelect, conforme comentado no início e, no onClick do botão, faça o código que chama a procedure para apagar os itens selecionados:

procedure TForm1.Button1Click(Sender: TObject);
begin
  ApagaVarios(ListBox1);
end;
Por: David
Contato: sapodiou2@bol.com.br



Dica do editor

Segue abaixo uma outra forma de se fazer o mesmo procedimento, de maneira mais otimizada:

procedure TForm1.ApagaVarios2(var ListBox: TListBox);
var
  i: integer;
begin
  i := 0;
  while i <= ListBox.Items.Count-1 do
  begin
    if ListBox.Selected[i] then
      ListBox.Items.Delete(i)
    else
      i := i + 1;
  end;
end;

Nenhum comentário:

Postar um comentário