Autor
Mensagem
oi gostaria d saber como faço para deletar captions iguais exemplo se eu tiver listview1 e ela tiver a listview2 com 2 nomes com o msm caption da listview1 como faço com função para deleta-los???
eu stou usando sem função e colocando essa condição If ListView_Dependente.Items.Item[I].Caption = ListView_Funcionario.Items.Item[ListView_Funcionario.ItemIndex].Caption Then so que esta deleta som 1 se tiverem 2 iguais ele ñ deleta so deleta 1
se puder me ajudar eu agradeço muitíssimo
eu stou usando sem função e colocando essa condição If ListView_Dependente.Items.Item[I].Caption = ListView_Funcionario.Items.Item[ListView_Funcionario.ItemIndex].Caption Then so que esta deleta som 1 se tiverem 2 iguais ele ñ deleta so deleta 1
se puder me ajudar eu agradeço muitíssimo
ola:
tente o seguinte:
[CODE]
var
i:integer;
Begin
for i:=0 to datasource1.dataset.RecordCount do begin
If ListView_Dependente.Items.Item[I].Caption =
ListView_Funcionario.Items.Item[I].Caption Then begin
ListView_Funcionario.Items.Item[I].visible:=false;
end;
end;
[/CODE]
tente o seguinte:
[CODE]
var
i:integer;
Begin
for i:=0 to datasource1.dataset.RecordCount do begin
If ListView_Dependente.Items.Item[I].Caption =
ListView_Funcionario.Items.Item[I].Caption Then begin
ListView_Funcionario.Items.Item[I].visible:=false;
end;
end;
[/CODE]
eu eu to fazendo exatamente assim so q sem o datasource, ñ to usando banco de dados nem nada disso so q ele deleta so a primeira e daxa as outras tipo se tiver 2 captions iguais a listview1 ele deleta so o primeiro o 2 que tem o mesmo caption da lisv1 q deveria deletar junto por ser igual ñ deleta, fica
Coloca o código completo de como está fazendo, se estiver deletando, note que ao deletar um registro ou item ele muda o indice.
Se eu estiver no indice 2 de uma list que tenha 5 itens, ao deletá-lo, o item de indice 3 passa a ser o 2, o 4 passa para 3 e o 5 passa a ser 4.
Pode ser por isso que está pulando um item, pois o indice desse item pode mudar para um que o laço já passou e não passará novamente.
Posta o código completo de como está fazendo que facilitará a solução da sua dúvida.
Se eu estiver no indice 2 de uma list que tenha 5 itens, ao deletá-lo, o item de indice 3 passa a ser o 2, o 4 passa para 3 e o 5 passa a ser 4.
Pode ser por isso que está pulando um item, pois o indice desse item pode mudar para um que o laço já passou e não passará novamente.
Posta o código completo de como está fazendo que facilitará a solução da sua dúvida.
Deve ser exatamente o que falei no meu post anterior, tenta com essa forma:
Contador := 0;
Contador := 0;
If Listview1.ItemIndex <> -1 Then
Begin
While Contador <= ListView2.Items.Count - 1 do
Begin
If ListView2.Items.Item[I].Caption = ListView1.Items.Item[ListView1.ItemIndex].Caption Then
Begin
ListView2.Items.Delete(I);
ListView1.Items.Delete(I);
End
Else
Inc(Contador);
End
EndBegin
While Contador <= ListView2.Items.Count - 1 do
Begin
If ListView2.Items.Item[I].Caption = ListView1.Items.Item[ListView1.ItemIndex].Caption Then
Begin
ListView2.Items.Delete(I);
ListView1.Items.Delete(I);
End
Else
Inc(Contador);
End
Citação:
Deve ser exatamente o que falei no meu post anterior, tenta com essa forma:
Contador := 0;
Deve ser exatamente o que falei no meu post anterior, tenta com essa forma:
Contador := 0;
If Listview1.ItemIndex <> -1 Then
Begin
While Contador <= ListView2.Items.Count - 1 do
Begin
If ListView2.Items.Item[I].Caption = ListView1.Items.Item[ListView1.ItemIndex].Caption Then
Begin
ListView2.Items.Delete(I);
ListView1.Items.Delete(I);
End
Else
Inc(Contador);
End
EndBegin
While Contador <= ListView2.Items.Count - 1 do
Begin
If ListView2.Items.Item[I].Caption = ListView1.Items.Item[ListView1.ItemIndex].Caption Then
Begin
ListView2.Items.Delete(I);
ListView1.Items.Delete(I);
End
Else
Inc(Contador);
End
assim ñ deu certo ainda ta com mesmo erro. exemplo se tiver 2 captions iguiais ao listview1 ele so apaga o primeiro ao invez d apagar todos iguais???????
[CODE]
procedure TForm1.btn1Click(Sender: TObject);
var
contador : Integer;
Achou : Boolean;
begin
Achou := False;
If lv1.ItemIndex <> -1 Then
Contador := 0;
If lv1.ItemIndex <> -1 Then
Begin
While Contador <= lv2.Items.Count - 1 do
Begin
If lv2.Items.Item[Contador].Caption = lv1.Items.Item[lv1.ItemIndex].Caption Then
Begin
lv2.Items.Delete(Contador);
Achou := True;
End
Else
Inc(Contador);
End
End;
if Achou then
begin
lv1.DeleteSelected;
end;
lv1.Refresh;
lv2.Refresh;
end;
[/CODE]
Fiz esse exemplo e aqui funcionou normal.
procedure TForm1.btn1Click(Sender: TObject);
var
contador : Integer;
Achou : Boolean;
begin
Achou := False;
If lv1.ItemIndex <> -1 Then
Contador := 0;
If lv1.ItemIndex <> -1 Then
Begin
While Contador <= lv2.Items.Count - 1 do
Begin
If lv2.Items.Item[Contador].Caption = lv1.Items.Item[lv1.ItemIndex].Caption Then
Begin
lv2.Items.Delete(Contador);
Achou := True;
End
Else
Inc(Contador);
End
End;
if Achou then
begin
lv1.DeleteSelected;
end;
lv1.Refresh;
lv2.Refresh;
end;
[/CODE]
Fiz esse exemplo e aqui funcionou normal.








