procedure TForm1.FormCreate(Sender: TObject); begin FComboStrings := TStringList.Create; fdquery1.First; while not fdquery1.Eof do begin fcombostrings.Add(fdquery1.FieldByName('ALANADI').AsString); FDQUERY1.Next; end; FComboStrings.Sorted := True; ComboBox1.AutoComplete :=false; ComboBox1.Items.Text := FComboStrings.Text; ComboBox1.Sorted := True; end; procedure TForm1.FormDestroy(Sender: TObject); begin FreeAndNil(FComboStrings); end;
procedure TForm1.ComboBox1Change(Sender: TObject); var Filter: string; i: Integer; idx: Integer; begin Filter := ComboBox1.Text; ComboBox1.DroppedDown := True; ComboBox1.Text := Filter; ComboBox1.SelStart := Length(Filter); for i := 0 to FComboStrings.Count - 1 do if SameText(LeftStr(FComboStrings[i], Length(ComboBox1.Text)), ComboBox1.Text) then begin if ComboBox1.Items.IndexOf(FComboStrings[i]) < 0 then ComboBox1.Items.Add(FComboStrings[i]); end else begin idx := ComboBox1.Items.IndexOf(FComboStrings[i]); if idx >= 0 then ComboBox1.Items.Delete(idx); end; end;
Arkadaşlar iyi günler yukarıda paylaşmış olduğum kodla combobox yazarken filtreleme olayını kullanıyorum sorunsuz çalışıyor ama birkaç sıkıntısı var şöyle ki:
Verileri kodlardan da anlaşıldığı üzere TstringList oluşturarak alıyorum
1-1000'in üzerinde kayıtlarda arama yaparken yavaşlık oluyor StringList açısından bunu nasıl hızlandırabilirim?
2-Veritabanına yeni kayıt olduğunda StringList ve Combobox yeni kayıtı göstermiyor yani güncelleme olmuyor bunu nasıl halledebilirim?
3-StringListte tekrarlanan kayıtları nasıl 1 tane olarak alabiliyoruz?
4-Arama yaparken değer yoksa fare ok işareti kayboluyor programı sonlandırınca geliyor bu olay neden olabilir aceba?
Kullandığım Veritabanı: Acces
Kullandığım delphi sürümü:10.3 rio
Yardımlarınızı bekliyorum ve şimdiden teşekkür ediyorum.