Kullanıcı adına göre databasede arama yaptırıyorum, ancak ortaya bir sıkıntı çıktı.
Rehberde kişi sayısı fazla olduğundan bir arama yapıldığında listview.Items.clear yapılarak kişi listviewde tek kalacak şekilde listeleme gerçekleşiyor; Kişiyi listview checkboxsı işaretleyip ikinci bir arama yapıldığında önceki seçili olan checkbox doğal olarak iptal ediliyor, hem filtered işlemini gerçekleştirip hende önceki seçili olan checkbox iptal olmaması için ne yapabilirim?
procedure TForm5.TelefondaAra(Sender: TObject); // Ara
var
LItem: TListViewItem;
begin
With TFDQuery.Create(Nil) do
begin
Connection := Form1.XBaglan;
Close;
SQL.Clear;
SQL.Add('Select * From Telefon');
SQL.Add('Where KADI Like ' + QuotedStr('%' + SearchEdit.Text + '%'));
SQL.Add('Order By KADI ASC');
SQL.Add('Limit 0,100');
Prepared := True;
Open;
if Not IsEmpty then
begin
ListView.BeginUpdate;
try
/// ListView.Items.Clear;
while Not Eof do
begin
LItem := ListView.Items.Add;
LItem.Data['Tel'] := FieldByName('TEL').AsString;
LItem.Data['Kadi'] := FieldByName('KADI').AsString;
Next;
end;
finally
EndUpdate;
Free;
end;
end;
end;
end;
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Merhaba; Filter olayında ListView Item'ları yazdığınız kritere göre gizlenmektedir. Filter'ı boş olduğunda tüm Item'lar yeniden görünür duruma getirilir. Kısacası anlatmak istediğim; Filter işlemi sırasında Item'lar yok edilip yeniden oluşturulmaz.
Çözüm için;
ListView seçim işleminde, Item.Tag özelliğine 1 değeri, seçimi iptal etiğinde 0 değerini verebilirsiniz. Daha sonra ListView'ın OnFilter, OnSearchChange veya benzer bir olayında Item.Tag = 1 ise Cheked özelliğini True, 0 ise False yapabilirsiniz.
brs yazdı:Teşekkür ederim ligi için, benimde aklıma databaseye bir alan daha oluşturup database üzerinde yaptırmayı düşünüyordum...
Buda bir çözüm fakat;
Mobil platformda her Check ve UnCheck işleminde veri tabanında Update yapmak çok mantıklı değil.
Veri tabanında bu alanlar olsun, yukarıda anlattığım yöntemi kullanın. İllede veri tabanına göndereceğim diyorsanız, o zaman verileri toplu Update edin.