Ir para conteúdo
Fórum Script Brasil
  • 0

Deletar SubItem do ListView


Marcos Santana

Pergunta

Colegas estou adcionando uma barra de progresso no ListView, até ai tudo bém.

Más preciso excluir as vezes uma linha do listview uso esse código:

for I := 0 to ListView.Items.Count -1 do
  begin
    if ListView.Items.Item[I].Checked = false then
      begin
        ListView.Items[I].Delete;
        Break;
      end;

Estou usando o Break pois se continua depois que deleto da erro, más como deletar o subitem que tem uma barra de progresso nele

já tentei de várias maneiras é sem sucesso, como dele fazer para deletar a linha ou melhor o caption e o subitem?

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Colega já tinha tentado isso antes gera esse erro:

raised exception class EStringListErro whith message 'List index out of bounds(0)'. Process stopped.

Use Step or Run to continue.

Código usado:

for I := 0 to ListView.Items.Count -1 do
  begin
    if ListView.Items.Item[I].Checked = false then
      begin
        ListView.Items[I].Delete;
        ListView.items.Item[I].SubItems.Delete(0);
        Break;
      end;

Como comentei a barra de progresso que crio em cada linha o listview não é deletada fica na última linha sempre além de gerar o erro, como proceder.

Editado por Marcos Santana
Link para o comentário
Compartilhar em outros sites

  • 0
raised exception class EStringListErro whith message 'List index out of bounds(0)'. Process stopped.

Use Step or Run to continue.

esse erro ocorre quando voce tenta deletar um indice que não existe

para exemplificar:

listview1.items.Item[0].SubItems.Delete[0];

listview1.items.Item[0].SubItems.Delete[1];

listview1.items.Item[0].SubItems.Delete[2];

se voce tiver apeneas 2 subitems (0 e 1), quando for tentar excluir o de indice numero 2 vai ocorrer o erro

nesse caso voce tem que limitar o escopo ou então saber exatamente qual o valor maximo dos subitems de cada item

seria algo tipo

procedure TForm1.Button1Click(Sender: TObject);
var i,j  : integer;
begin
   for I := 0 to ListView1.Items.Count -1 do
      for j := 0 to listview1.items.Item[i].SubItems.Count - 1 do
          if ListView1.Items.Item[I].Checked = false then
             begin
                ListView1.items.Item[I].SubItems.Delete(j);
                Break;
             end;
end;

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
Colega crio um componenete TProgressbar em cada subitem que for populado no Listview é na hora de apagar o subitem que ocorre o erro.

Tenho que destruir o progressbar antes de deletear o subitem ou como devo fazer.

não acho necessario criar um TProgressbar em cada subitem que for populado, basta usar apenas um como indicativo

a maneira de deletar um subitem te passei no post acima ... voce é que tem modificar o código para o seu uso

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...