Fonte: www.activedelphi.com.br
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;
//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