Combobox gibi kelime tamamlayıcılı arama nasıl?
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
- ömer faruk
- Üye
- Mesajlar: 97
- Kayıt: 29 Eki 2003 09:34
- Konum: Bursa
- İletişim:
Combobox gibi kelime tamamlayıcılı arama nasıl?
S.A arkadaşlar sanırım visual basic te yapılmış programlarda gördüm arama kısmı var combobox gibi kelimeyi yazar yazmaz aşşağıdaliste çıkıyor combobox gibi ve yazmaya devam ettikçe o kelimeye en uygun değeri tamamlıyor ve aradıgımız kaydı buy şekilde çok hızlı bir şekilde buluyoruz bunu delphi de nasıl yapabilirim umarım açıklayıcı olmuştur..Şu an da konu üzerinde uğraşıyorum eger sizden önce cözersem yazarım koly gelsin....
Hakimiyet ALLAH' ındır...
bunu bir query ile rahatlıkla yapabilirsin.
kısaca editin onchange olayına;
şeklinde yapabilirsin...
Yada query içindeki sql'i bir defaya mahsus hazırlayıp editin text'ini parametre olarakta gönderebilirsin...
Kolay gelsin
kısaca editin onchange olayına;
Kod: Tümünü seç
qrytahakkuk.close;
qrytahakkuk.SQL.Clear;
qrytahakkuk.SQL.Add('select * from personel where sicilno like '+#39+edit1.Text+'%'+#39);
qrytahakkuk.open;
Yada query içindeki sql'i bir defaya mahsus hazırlayıp editin text'ini parametre olarakta gönderebilirsin...
Kolay gelsin
Ben yapmış olduğunuz açıklamadan fazla bir şey anlamadım
Ne yapmak istediğinizi ComboBox ta şunu yapmak istiyorum(şu özelliği eklemek istiyorum vesaire gibilerinden sorunuz ile bizi yönlendirseniz daha yardımcı olabiliriz.
Kolay Gelsin...


Kolay Gelsin...
Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
- ömer faruk
- Üye
- Mesajlar: 97
- Kayıt: 29 Eki 2003 09:34
- Konum: Bursa
- İletişim:
Bgöktaş kardeş senin dedigin gibi yapabiliyorum ama bir o harf ile başlayan kayıtları ya bir dbgrid te göstermek gerek veya başka bir yerde ama ben o şekilde istemiyorum mesela bir edit düşünün arama yapıyorsunu kelimeyi yazıp enter veya bul diyorsunuz o şekilde olmayacak enter a bas veya bul tuşu olmayacak ben ilk harfe bastıgım andan itibaren editin alttında combobox gidi liste açılacak o harf ile başlayan kayıtları gösterecek devam ettigimde ise en uygun kelime ile başlayan kayıtları listeye getirecek bende en uygununu seçip işlemimi hızlı bir şekilde yapacam bilmem anlatabildim mi... kolay gelsin
Hakimiyet ALLAH' ındır...
global alanda Lastkey değiştkeni tanımladıktan sonra
LastKey:Word;
combobox1.onchange olayına ve onkeydown olayına aşağıdaki kodları yazarsan istediğin olur.
var
Srch : string;
ix : Integer;
begin
try
Srch := combobox1.Text;
if LastKey = $08 then
begin
LastKey := 0;
Exit;
end;
LastKey := 0;
ix := combobox1.Perform(CB_FINDSTRING,-1,LongInt(PChar(Srch)));
if ix > CB_ERR then
begin
combobox1.ItemIndex := ix;
combobox1.SelStart := Length(Srch);
combobox1.SelLength := (Length(combobox1.Text) - Length(Srch));
end;
except
end;
end;
procedure TForm1.combobox1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
try
LastKey:=Key;
except
end;
end;
LastKey:Word;
combobox1.onchange olayına ve onkeydown olayına aşağıdaki kodları yazarsan istediğin olur.
var
Srch : string;
ix : Integer;
begin
try
Srch := combobox1.Text;
if LastKey = $08 then
begin
LastKey := 0;
Exit;
end;
LastKey := 0;
ix := combobox1.Perform(CB_FINDSTRING,-1,LongInt(PChar(Srch)));
if ix > CB_ERR then
begin
combobox1.ItemIndex := ix;
combobox1.SelStart := Length(Srch);
combobox1.SelLength := (Length(combobox1.Text) - Length(Srch));
end;
except
end;
end;
procedure TForm1.combobox1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
try
LastKey:=Key;
except
end;
end;
Bilgi paylaşıldıkça güzeldir.
- ömer faruk
- Üye
- Mesajlar: 97
- Kayıt: 29 Eki 2003 09:34
- Konum: Bursa
- İletişim:
S.A arkadaşlar
Teşekkürler herkeze.. istediğimi şu şekilde yaptım cxlookupcombobox la yaptım listsource unu hangi alanda arama yaptıracamsan onun datasourcuse ayarladımlistfieldnames ve keyfields names de yine aynı şekilde hangi alansa onu yaptım cxlookupcombobox un onchance olayına
komutumu yazdım..dropdownllistsityle ini lsfixedlist yaptım editvalue sinide string yaptım ve oldu ..teşekkür ederim herkeze....
Teşekkürler herkeze.. istediğimi şu şekilde yaptım cxlookupcombobox la yaptım listsource unu hangi alanda arama yaptıracamsan onun datasourcuse ayarladımlistfieldnames ve keyfields names de yine aynı şekilde hangi alansa onu yaptım cxlookupcombobox un onchance olayına
Kod: Tümünü seç
datamodule1.cari_dataset.Close;
datamodule1.cari_dataset.selectsql.text:='select * from CARI_TABLE where unvan like '+#39+cxlookupcombobox1.Text+'%'+#39;
datamodule1.cari_dataset.Open;
En son ömer faruk tarafından 10 Haz 2004 06:51 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Hakimiyet ALLAH' ındır...
Re: Combobox gibi kelime tamamlayıcılı arama nasıl?
Kodlara Ne hikmetse Bende run time error yapıyo bende pek anlamadım daha açıklayıcı yazabilcek olan var bende comboBox ım da arama yaptırmak istiyorum
combo box ıma veritabanımdan müşteri adları geliyor
comboBox ım "A" harfini yazınca mesala (ama büyük küçük harf ayırmasın Insesitive di heralde) İsmi A la Başlayanları bıraksın İtemler de Sadece Ben seçeyim
Yardımlar İçin Teşekkürler...
combo box ıma veritabanımdan müşteri adları geliyor
comboBox ım "A" harfini yazınca mesala (ama büyük küçük harf ayırmasın Insesitive di heralde) İsmi A la Başlayanları bıraksın İtemler de Sadece Ben seçeyim
Yardımlar İçin Teşekkürler...
Re: Combobox gibi kelime tamamlayıcılı arama nasıl?
örnek kaldırıldı..
En son Lord_Ares tarafından 22 Nis 2014 03:51 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Re: Combobox gibi kelime tamamlayıcılı arama nasıl?
uğraşmışsınız teşekkür ederim ama dediğim gibi bana daha çok combobox ın text ine "al" yazdığımda combobox ın itemlerin "al" ile başlayanları göstersin
combobox filtresi gibi birşey lazım bana ama bir türlü bulamıyom yabancı kaynaklarda 1-2 örnek var ama dil probleminden kendi programıma entegre edemedim
bide bu delphide comboboxta ben bişey yazmaya başlayınca otomatik olarak listesini açsa ben kendim açmasam listeyi öyle bir komut varmı acaba
combobox filtresi gibi birşey lazım bana ama bir türlü bulamıyom yabancı kaynaklarda 1-2 örnek var ama dil probleminden kendi programıma entegre edemedim
bide bu delphide comboboxta ben bişey yazmaya başlayınca otomatik olarak listesini açsa ben kendim açmasam listeyi öyle bir komut varmı acaba
Re: Combobox gibi kelime tamamlayıcılı arama nasıl?
anladığım kadarıyla örneği incelememişsin bile zahmet edip bakmış olsaydınız, gönderdiğim örnekte comboboxa birşeyler yazmaya başladığında yazdığını veritabanında arar ve comboboxın içinde gösterir. Bu kodun güzel yanı bir kez procedure olarak tanımladığında tüm comboboxlar da tek satır ile istediğin veritabanın da arama yapabilmen.
Örneği ve kodu kaldırıyorum.
Kolay gelsin..
Örneği ve kodu kaldırıyorum.
Kolay gelsin..
Re: Combobox gibi kelime tamamlayıcılı arama nasıl?
Örneğinizi İndirip İncelemiştim zaten sizin örneğinizde aradığım bulup bana gösteriyo bunda problem yok bana sadece benim aradığım gösterip diğer itemleri göstermeyen bir filtre yönetim lazım bunu comboBox ile yapılabilirmi onu araştırıyorum
Re: Combobox gibi kelime tamamlayıcılı arama nasıl?
Sen yine araştırmanı yaparsın. Ben imzamdaki ilüzyona gönderme yaparak başka bir çözüm sunayım. Zor gelirse kullanmazsınız. Örnek proje ektedir.


Kod: Tümünü seç
Var
xEditControl : TEdit;
procedure TForm1.FormShow(Sender: TObject);
begin
DBGrid1.Visible := False;
DBGrid1.ReadOnly := True;
DBGrid1.Options := [dgTabs,dgRowSelect,dgCancelOnExit];
ADOQuery1.Connection := ADOConnection1;
DataSource1.DataSet := AdoQuery1;
DBGrid1.DataSource := DataSource1;
ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;'
+'Data Source='+ExtractFilePath(Application.Exename) + 'Database.mdb';
end;
// SQL Arama Fonksiyonu
procedure AramaYap( strAra: String; AdoQuery:TAdoQuery );
begin
With AdoQuery do
begin
Active := False;
SQL.Clear;
SQL.Add('SELECT M_Name FROM DivXTurk');
SQL.Add('WHERE 1=1');
SQL.Add('AND M_Name like '+QuotedStr( strAra+'%' ) + ' ORDER BY M_Name' );
Active := True;
end;
end;
// DBGrid hazırlık...
procedure TForm1.ADOQuery1AfterScroll(DataSet: TDataSet);
begin
if DBGrid1.Focused
then xEditControl.Text := DataSet.Fields[0].AsString;
end;
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
Field: TField; State: TGridDrawState);
Var
strDeger,
strArama : String;
iDegerX, iAramaX : Integer;
begin
if Field.Index = 0 then
begin
TDBGrid(Sender).Canvas.Brush.Style := bssolid;
TDBGrid(Sender).Canvas.FillRect(Rect);
TDBGrid(Sender).Canvas.Brush.Style := bsClear;
strArama := xEditControl.Text;
strDeger := Field.AsString;
System.Delete(strDeger, 1, Length(strArama) );
iAramaX := Rect.Left;
TDBGrid(Sender).Canvas.Font.Style := [fsBold];
TDBGrid(Sender).Canvas.Font.Color := clBlack;
iDegerX := TDBGrid(Sender).Canvas.TextWidth( strArama ) + iAramaX + 1;
TDBGrid(Sender).Canvas.TextOut( iAramaX, Rect.Top, strArama );
TDBGrid(Sender).Canvas.Font.Style := [];
TDBGrid(Sender).Canvas.Font.Color := clRed;
TDBGrid(Sender).Canvas.TextOut( iDegerX, Rect.Top, strDeger);
end;
end;
procedure TForm1.DBGrid1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if Key in [vk_Return, vk_Back] then
begin
xEditControl.SetFocus;
TDBGrid(Sender).Visible := False;
end;
end;
procedure TForm1.DBGrid1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
xEditControl.Text := DBGrid1.DataSource.DataSet.Fields[0].AsString;
xEditControl.SetFocus;
TDBGrid(Sender).Visible := False;
end;
procedure TForm1.Edit1Enter(Sender: TObject);
begin
xEditControl := TEdit(Sender);
xEditControl.OnExit := xEditControlExit;
xEditControl.OnKeyUp := xEditControlKeyUp;
xEditControl.OnKeyDown := xEditControlKeyDown;
end;
procedure TForm1.Edit1Exit(Sender: TObject);
begin
xEditControl := nil;
end;
procedure TForm1.xEditControlExit(Sender: TObject);
begin
if NOT ( DBgrid1.Focused )
then DBGrid1.Visible := False;
end;
procedure TForm1.xEditControlKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = vk_Down
then begin
DBGrid1.SetFocus;
xEditControl.Text := DBGrid1.DataSource.DataSet.Fields[0].AsString;
end
else DBGrid1.Visible := False;
end;
Type TArmanGrid = Class(TDBGrid) end;
procedure TForm1.xEditControlKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
AramaYap( TEdit(Sender).text, ADOQuery1 );
DBGrid1.Left := TEdit(Sender).Left;
DBGrid1.Width := TEdit(Sender).Width;
DBGrid1.Top := TEdit(Sender).Top + TEdit(Sender).Height;
DBGrid1.Columns[0].Width := DBGrid1.Width-30;
if DBGrid1.DataSource.DataSet.RecordCount < 10
then DBGrid1.Height := (TArmanGrid(DBGrid1).DefaultRowHeight+2) * (DBGrid1.DataSource.DataSet.RecordCount)
else DBGrid1.Height := (TArmanGrid(DBGrid1).DefaultRowHeight+2) * 10;
DBGrid1.Visible := True;
DBGrid1.BringToFront;
end;
- Dosya ekleri
-
- Edit_AutoComplete_Combo.rar
- Edit için AutoComplete veritabanı arama örneği
- (155.07 KiB) 239 kere indirildi
Re: Combobox gibi kelime tamamlayıcılı arama nasıl?
Çok Sağolun İşte Aradığım Kod Buydu Eliniz Dert Görmesin
Delphi Sürümünüzden mi anlamadığım birkaç kod var açıklamışsınız ama
bana lazım olan o editin olayı olayı bile yazsaydınız yeterdi zahmet etmişsiniz onu sökmem lazım kodların arasından ama arada dbgrid bağlantıların felan var kafam karıştı biraz
kodların arasında dbgrid var ama ben run time da db gridi göremedim delphi 7 kullanıyorum ben okuldaki ile aynı olsun diye
bide bu edit e özel bir kod mu yoksa edit in bir olayımı var altında liste çıkması için
Delphi Sürümünüzden mi anlamadığım birkaç kod var açıklamışsınız ama
bana lazım olan o editin olayı olayı bile yazsaydınız yeterdi zahmet etmişsiniz onu sökmem lazım kodların arasından ama arada dbgrid bağlantıların felan var kafam karıştı biraz
kodların arasında dbgrid var ama ben run time da db gridi göremedim delphi 7 kullanıyorum ben okuldaki ile aynı olsun diye
bide bu edit e özel bir kod mu yoksa edit in bir olayımı var altında liste çıkması için