Delphi Can

Orjinalini görmek için tıklayınız: DBLookupComboBox liste elemalarini arama
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
Merhabalar,
DBLookupComboBox bileşeninde 100 lerce kayit olduğunda liste elamanları seçmesi daha dogrusu listeden istenilen kaydi bulmasi cok zor oluyor. combobox ta oldugu gibi DBLookupComboBox ta da arama yapilabilir mi acaba?
teşekkürler.
(13-06-2018, Saat: 14:49)klavye Adlı Kullanıcıdan Alıntı: [ -> ]Merhabalar,
DBLookupComboBox bileşeninde 100 lerce kayit olduğunda liste elamanları seçmesi daha dogrusu listeden istenilen kaydi bulmasi cok zor oluyor. combobox ta oldugu gibi DBLookupComboBox ta da arama yapilabilir mi acaba?
teşekkürler.

Merhaba,

WHERE veya LIKE gibi komutlar yapılabilir. 100'lerce kayıt olması her GET işleminde yavaşlatma meydana getirebilir. Bu yüzden DBLookupCombobox nesnesinin önceden belleklediği kayıtlar içerisinde arama yapmak daha hızlı ve sabit sonuç verecektir. Bunun için DataSet üzerinden sorgu yapmanız daha iyi olacaktır.

Örnek Stackoverflow;

Procedure filterr(Dataset: TDataSet; const FieldName, SearchTerm: string);
begin
Assert(Assigned(Dataset), 'No dataset is assigned');

if SearchTerm = '' then
Dataset.Filtered := False
else
begin
Dataset.Filter := FieldName + ' LIKE ' + QuotedStr(SearchTerm + '*');
Dataset.Filtered := True;
end;
end;

Edit'in OnChange Olayına;

filterr(mytable;'fieldname';edit1.Text);

Yukarıda ki kodun oluşturucusu Raouf Rahiche.

Örnek kodu denemedim, sadece kodlara bakınca işinizi göreceğinizi umut ediyorum. Yine de bilgisayarım elime geçerse örneklendirme yaparım.


P.S: TDataSet sınıfı için "Data.DB" kütüphanesini kullanmanız gerekmektedir.

Saygılarımla,
İyi çalışmalar.
(13-06-2018, Saat: 15:00)hyperxman Adlı Kullanıcıdan Alıntı: [ -> ]
(13-06-2018, Saat: 14:49)klavye Adlı Kullanıcıdan Alıntı: [ -> ]Merhabalar,
DBLookupComboBox bileşeninde 100 lerce kayit olduğunda liste elamanları seçmesi daha dogrusu listeden istenilen kaydi bulmasi cok zor oluyor. combobox ta oldugu gibi DBLookupComboBox ta da arama yapilabilir mi acaba?
teşekkürler.

Merhaba,

WHERE veya LIKE gibi komutlar yapılabilir. 100'lerce kayıt olması her GET işleminde yavaşlatma meydana getirebilir. Bu yüzden DBLookupCombobox nesnesinin önceden belleklediği kayıtlar içerisinde arama yapmak daha hızlı ve sabit sonuç verecektir. Bunun için DataSet üzerinden sorgu yapmanız daha iyi olacaktır.

Örnek Stackoverflow;

Procedure filterr(Dataset: TDataSet; const FieldName, SearchTerm: string);
begin
Assert(Assigned(Dataset), 'No dataset is assigned');

if SearchTerm = '' then
Dataset.Filtered := False
else
begin
Dataset.Filter := FieldName + ' LIKE ' + QuotedStr(SearchTerm + '*');
Dataset.Filtered := True;
end;
end;

Edit'in OnChange Olayına;

filterr(mytable;'fieldname';edit1.Text);

Yukarıda ki kodun oluşturucusu Raouf Rahiche.

Örnek kodu denemedim, sadece kodlara bakınca işinizi göreceğinizi umut ediyorum. Yine de bilgisayarım elime geçerse örneklendirme yaparım.


P.S: TDataSet sınıfı için "Data.DB" kütüphanesini kullanmanız gerekmektedir.

Saygılarımla,
İyi çalışmalar.

Merhaba @"hyperxman" Öncelikle ilgine teşekkür ederim. Sanırım ben istediiğimi yanlış anlattım.
DBLookupComboBox icerisine yazıda yazamiyorum. oraya arama istediğim bir kac kelimeyi yazıp listeyi azaltmak istemistim.
Ama DBLookupComboBox secim seklinde ayarli. içerisine birsey yazamiyorum.
(13-06-2018, Saat: 15:10)klavye Adlı Kullanıcıdan Alıntı: [ -> ]
(13-06-2018, Saat: 15:00)hyperxman Adlı Kullanıcıdan Alıntı: [ -> ]Merhaba,

WHERE veya LIKE gibi komutlar yapılabilir. 100'lerce kayıt olması her GET işleminde yavaşlatma meydana getirebilir. Bu yüzden DBLookupCombobox nesnesinin önceden belleklediği kayıtlar içerisinde arama yapmak daha hızlı ve sabit sonuç verecektir. Bunun için DataSet üzerinden sorgu yapmanız daha iyi olacaktır.

Örnek Stackoverflow;

Procedure filterr(Dataset: TDataSet; const FieldName, SearchTerm: string);
begin
Assert(Assigned(Dataset), 'No dataset is assigned');

if SearchTerm = '' then
Dataset.Filtered := False
else
begin
Dataset.Filter := FieldName + ' LIKE ' + QuotedStr(SearchTerm + '*');
Dataset.Filtered := True;
end;
end;

Edit'in OnChange Olayına;

filterr(mytable;'fieldname';edit1.Text);

Yukarıda ki kodun oluşturucusu Raouf Rahiche.

Örnek kodu denemedim, sadece kodlara bakınca işinizi göreceğinizi umut ediyorum. Yine de bilgisayarım elime geçerse örneklendirme yaparım.


P.S: TDataSet sınıfı için "Data.DB" kütüphanesini kullanmanız gerekmektedir.

Saygılarımla,
İyi çalışmalar.

Merhaba @"hyperxman" Öncelikle ilgine teşekkür ederim. Sanırım ben istediiğimi yanlış anlattım.
DBLookupComboBox icerisine yazıda yazamiyorum. oraya arama istediğim bir kac kelimeyi yazıp listeyi azaltmak istemistim.
Ama DBLookupComboBox secim seklinde ayarli. içerisine birsey yazamiyorum.

Merhaba,

Zannedersem DBLookupCombobox'un sizin dediğiniz gibi bir özelliği yok. DBLookupCombobox sadece gösterimi referans alıyor. Bunun için normal Combobox kullanabilirsiniz. Normal Combobox için ise yine GET işlemi gerekecek ve bir yavaşlamaya sebep olacaktır.

İyi çalışmalar.
(13-06-2018, Saat: 15:56)hyperxman Adlı Kullanıcıdan Alıntı: [ -> ]
(13-06-2018, Saat: 15:10)klavye Adlı Kullanıcıdan Alıntı: [ -> ]Merhaba @"hyperxman" Öncelikle ilgine teşekkür ederim. Sanırım ben istediiğimi yanlış anlattım.
DBLookupComboBox icerisine yazıda yazamiyorum. oraya arama istediğim bir kac kelimeyi yazıp listeyi azaltmak istemistim.
Ama DBLookupComboBox secim seklinde ayarli. içerisine birsey yazamiyorum.

Merhaba,

Zannedersem DBLookupCombobox'un sizin dediğiniz gibi bir özelliği yok. DBLookupCombobox sadece gösterimi referans alıyor. Bunun için normal Combobox kullanabilirsiniz. Normal Combobox için ise yine GET işlemi gerekecek ve bir yavaşlamaya sebep olacaktır.

İyi çalışmalar.

Teşekkür ederim.
(13-06-2018, Saat: 14:49)klavye Adlı Kullanıcıdan Alıntı: [ -> ]Merhabalar,
DBLookupComboBox bileşeninde 100 lerce kayit olduğunda liste elamanları seçmesi daha dogrusu listeden istenilen kaydi bulmasi cok zor oluyor. combobox ta oldugu gibi DBLookupComboBox ta da arama yapilabilir mi acaba?
teşekkürler.

Bu noktada bu amaca hizmet eden "kendi" bileşeninizi veya kendi dialog formunuzu tasarlamanız gerekir.
(13-06-2018, Saat: 16:01)uparlayan Adlı Kullanıcıdan Alıntı: [ -> ]
(13-06-2018, Saat: 14:49)klavye Adlı Kullanıcıdan Alıntı: [ -> ]Merhabalar,
DBLookupComboBox bileşeninde 100 lerce kayit olduğunda liste elamanları seçmesi daha dogrusu listeden istenilen kaydi bulmasi cok zor oluyor. combobox ta oldugu gibi DBLookupComboBox ta da arama yapilabilir mi acaba?
teşekkürler.

Bu noktada bu amaca hizmet eden "kendi" bileşeninizi veya kendi dialog formunuzu tasarlamanız gerekir.

Dediğiniz gibi ayrı bir formda başka bir yontemle çözmeye çalışacağım şuan için bileşen hazırlama zamanım yok.
Teşekkürler.
Zaman Probleminiz varsa en basit aklıma gelen yöntem
Nesnenin KeyDown içeriğine basılan key'e Nesnenin Hintine ekleyerek bir basit yapı kur.
Sonrada hint degerien göre filter uygula. 
Basılan değer escape isede hinti temizle filtreyi kapat.