Otomatik Tamamlama

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
loxka
Üye
Mesajlar: 214
Kayıt: 18 Ağu 2003 01:10

Otomatik Tamamlama

Mesaj gönderen loxka »

S.A.
Değerli Arkadaşlar; acil çözmem gereken bir problemim var, DBEDİT özellikle belirtmek istiyorum bunu çünki alternatif herhangi bir nesne kullanamam. DBEDİT'e tamamlama özelliğini nasıl kazandırabilirim. yani kayıt evvelden girilmiş ise, bunu görüp yeniden yazmaya gerek kalmadan kelimeyi tamamlasın..
Aslına bakarsanız bu soruyu daha evvelde sormuştum, orada değerli arkadaşlar fikirlerini beyan etmişlerdi. O zaman sorunumu, DBlookupCombobox kullanarak halletmiştim.
O sorumda verilen cevapları değerlendirmeye çalıştım, yeniden gözden geçirdim, aşağıdaki kodu derleyerek uyarlamaya çalıştım. Fakat bu kodla sadece var olan kaydı bulmakla kalıyorum, kayıt aynen karşıma geliyor.

Kod: Tümünü seç

procedure TForm2.DBEdit7KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
VAR
theText : string;
p : integer;
begin
With TEdit(Sender) do
case key of
8, 46, 37..40, 112..123: ; // backspace, f keys
13: SelStart := Length(Text);
else
begin
P := SelStart;
TheText := copy(Text, 0, p);
If Form2.Table1.Locate('Tani', THETEXT, [loPartialKey,locaseinsensitive]) then
begin // veritabanında pozisyon aldığında...
Text := form2.Table1Tani.AsString;
SelStart := p;
SelLength := Length(Text) - SelStart;
end; // If
end; // else
end; // Case
Yardımlarınız için şimdiden teşekkür ederim..
YuNuSAYD
Üye
Mesajlar: 7
Kayıt: 13 Eki 2003 07:18
Konum: ist
İletişim:

Mesaj gönderen YuNuSAYD »

görünmez bir listbox ekle edit 1 on change inde ise ilgili kayitlari listbox a ekle ve listbox i editin altina konumlandir ancak burda dikkat etmen gereken listbox ile db editin ayni container icinde olsun deilse birden fazla edit de kullanacaksa db editin parent, parent , parent (TForm gorunceye dek) git ve hepsinin X ve Top larii dbedit pozisyonuna ekle zaten combobox larda bu sekilde yapiliyor dugmeye basılınca gosterilecek gizli bir listbox ve bir edit
loxka
Üye
Mesajlar: 214
Kayıt: 18 Ağu 2003 01:10

Mesaj gönderen loxka »

Bu iş benim için zordu, şimdi hep karma karışık bir hal aldı.
Lütfen örnek verebilir misiniz ?.
Anladığım kadarı ile bu sadece DBEdite kod yazarak olmayacak ..
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Selamlar.

DBEdit'in bağlı olduğu datasette arama yaparsan o kayda hepten konumlanması kadar doğal bişey yok..Aynı tabloya harici bir bağlantı kurarak aramak lazım ama o da sistemi yorar belli bi noktadan sonra.Birkaç bileşende görmüştüm böyle bişeyi ama inceleme fırsatım olmadı açıkçası farklı yöntemler kullanılıyor mu ben de merak ettim şimdi..Gerçi aklıma başka da yöntem gelmiyor sistemi hiç yormadan bu işi yapabilecek..

Kolay gele..
loxka
Üye
Mesajlar: 214
Kayıt: 18 Ağu 2003 01:10

Mesaj gönderen loxka »

benimde derdim bu hocam :) fazla yormadan kasmadan nasıl olur, bir bileşene bile razıyım şu an :)
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Merak ettim bi kurcalayalım bileşenleri..Bişeyler bulursam yazarım topice..

Kolay gele..
loxka
Üye
Mesajlar: 214
Kayıt: 18 Ağu 2003 01:10

Mesaj gönderen loxka »

teşekür ederim, yardımlarınızı bekliyorum..
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Bileşenin birisi şöyle bi yöntem kullanmış;

Bir TTimer tanımlamışlar ve OnTimer eventini kendi yazdıkları bir evente yönlendirmişler.Burada bağlantı kurulan tabloya kendi içinde tanımlanan bir datasetle bağlantı kurmuş ve Editkey ve GoToNearest komutlarıyla arama yaptırmış.Akabinden de textine onu yazdırmış tabii ki kullanıcının girdiği değerin sonrasını (kullanıcı delp yazmışsa hi harflerini seçtirmiş..) select ederek vs.vs.

Kolay gele..
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Bişey daha dikkatimi çekti;

DBaseTable diye bi alternatif yazmışlar bunlarda yukarda bahsettiğim tekniği kullanıyorlar, tüm table nesneleri bunu desteklemediği için diğer istisnalar için de Locate metodunu farklı bir yordama yönlendirirek bindirme yapmışlar.Özetleyecek olursak temelde yine dataset nesnelerini kullanarak arama yapıyorlar.Senin yapman gereken ilk olarak yazdığın o kodları KeyUp eventinden alıp procedure haline getirmek ve onu KeyUp eventinden çağırmak olmalı..Akabinden de harici bir table ya da query ile tekrar bağlantı kurarak istediğin herhangi bir yöntemle aramayı yaptırmak..

Kolay gele..
loxka
Üye
Mesajlar: 214
Kayıt: 18 Ağu 2003 01:10

Mesaj gönderen loxka »

anladım.. denemek gerekiyor.. teşekkür ederim hocam
Cevapla