10-11-2020, Saat: 23:57
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.