Fórum Contar o Número de Itens Selecionados no ListView #606076
17/10/2019
0
Gostaria de saber como contar o número de itens selecionados em um ListView no Delphi.
Estou utilizando o seguinte código no evento OnSelectItem do ListView.
O código funciona, porém o programa fica muito lento com o uso desse código.
//Loop para mostrar quantos itens estao selecionados
for i := 0 to ListView.Items.Count-1 do
begin
if ListView.Items[i].Selected = True then
ItensSel := ItensSel+1;
end;
//Mostra no StatusBar o numero de itens selecionados
Status.Panels[1].Text := IntToStr(ItensSel) + ' Selecionado(s)';
//Após mostrar no StatusBar redefine a variavel ItensSel para 0
ItensSel := 0;E no evento OnCreate do Form:
ItensSel := 0;
No ListView estou utilizando a opção MultiSelect := True;
Lucas Bernieri
Curtir tópico
+ 0Post mais votado
18/10/2019
crie a variável e a inicialize da forma que você fez, no OnCrete do form.
no OnSelectItem, verifique se o item está selecionado:
- se estiver, incremente a variável
- se NÃO estiver, decremente a variável.
- 'imprima' o conteúdo
type
TForm2 = class(TForm)
ListView1: TListView;
StatusBar1: TStatusBar;
procedure ListView1SelectItem(Sender: TObject; Item: TListItem;
Selected: Boolean);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
FItensSelecinados: integer;
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.FormCreate(Sender: TObject);
begin
FItensSelecinados := 0;
end;
procedure TForm2.ListView1SelectItem(Sender: TObject; Item: TListItem;
Selected: Boolean);
begin
if Selected then
Inc(FItensSelecinados)
else
Dec(FItensSelecinados);
StatusBar1.Panels[1].Text := IntToStr(FItensSelecinados) + ' Selecionado(s)';
end;
end.Emerson Nascimento
Gostei + 1
Mais Posts
18/10/2019
Luiz Vichiatto
Acho que é melhor você colocar no evento OnClick do ListView
Por ficar demorado, vai depender da quantidade de itens que tem a lista
ItensSel := 0; //Mude para cá a inicialização
for i := 0 to ListView.Items.Count-1 do
if ListView.Items[i].Selected = True then
ItensSel := ItensSel+1;
//Mostra no StatusBar o numero de itens selecionados
Status.Panels[1].Text := IntToStr(ItensSel) + ' Selecionado(s)';
**************************************
Gostaria de saber como contar o número de itens selecionados em um ListView no Delphi.
Estou utilizando o seguinte código no evento OnSelectItem do ListView.
O código funciona, porém o programa fica muito lento com o uso desse código.
//Loop para mostrar quantos itens estao selecionados
for i := 0 to ListView.Items.Count-1 do
begin
if ListView.Items[i].Selected = True then
ItensSel := ItensSel+1;
end;
//Mostra no StatusBar o numero de itens selecionados
Status.Panels[1].Text := IntToStr(ItensSel) + ' Selecionado(s)';
//Após mostrar no StatusBar redefine a variavel ItensSel para 0
ItensSel := 0;E no evento OnCreate do Form:
ItensSel := 0;
No ListView estou utilizando a opção MultiSelect := True;
Gostei + 0
18/10/2019
Lucas Bernieri
crie a variável e a inicialize da forma que você fez, no OnCrete do form.
no OnSelectItem, verifique se o item está selecionado:
- se estiver, incremente a variável
- se NÃO estiver, decremente a variável.
- 'imprima' o conteúdo
type
TForm2 = class(TForm)
ListView1: TListView;
StatusBar1: TStatusBar;
procedure ListView1SelectItem(Sender: TObject; Item: TListItem;
Selected: Boolean);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
FItensSelecinados: integer;
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.FormCreate(Sender: TObject);
begin
FItensSelecinados := 0;
end;
procedure TForm2.ListView1SelectItem(Sender: TObject; Item: TListItem;
Selected: Boolean);
begin
if Selected then
Inc(FItensSelecinados)
else
Dec(FItensSelecinados);
StatusBar1.Panels[1].Text := IntToStr(FItensSelecinados) + ' Selecionado(s)';
end;
end.Funcionou certinho aqui, muito obrigado.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)