Dbgird te Lookup Nasıl ?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
ömer faruk
Üye
Mesajlar: 97
Kayıt: 29 Eki 2003 09:34
Konum: Bursa
İletişim:

Dbgird te Lookup Nasıl ?

Mesaj gönderen ömer faruk »

Selamunaleykum....

Dbgrid in içine başka table dan nasıl bilgi alabilirim bu dblookupcombobox gibi olacak yalnız, böyle bir component varmı yoksa kodlamı yapabilirim...
Sevgiler....Saygılar...
Hakimiyet ALLAH' ındır...
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

genelde ücretli componentlerin gridleri (infopower, devloper express) combobox gibi diğer componentleri gridin icine gomerek calistirabilme kabiliyetine sahipler.... Kodla da yapabilirsiniz ama cok sorun cikacagini da soyleyebilirim. Belki ayni isi yapan free bir grid vardir....
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Selam.

- @fahrettin' katılarak ComboBox için düşündüğünüz verilerinizin azlığı durumunda bir öneride bulunucam.

- DBGrid'in Column üzerinde PickList olayını hiç denediniz mi ? İlgili Column'a gelince edit ederken aşağıya doğru ComboBox şekilnde açılımda bulunur.

- Ufak bir fonksiyon yazarak Query ile bahsettiğiniz diğer table'dan bilgileri okuyup, basit bir döngü yardımıyla burada güncelleme yapar, kullanıcının bilgilerini kolay ve hatasız girmesini sağlayabilirsiniz.

Kod: Tümünü seç

DBGrid1.Columns[1].PickList.Add('Deneme');
DBGrid1.Columns[1].PickList.Add('1');
DBGrid1.Columns[1].PickList.Add('2');
...örneğindeki gibi.
Resim
Resim ....Resim
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

ben de kendi kullandıgım metodu anlatayım
table nesnesinde sag tıklayıp fields editoru acın eger alanlar aktarılmamıs ise tum alanları aktarın (Add All)
sonra yeni field diyerek bir tane lookup field olusturun
dbgrid icericinde bu alanı oldugu gibi goreceksiniz
data girerkende dbgridde combobox haline geelcek
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Kodla yapmak istersen
viewtopic.php?t=1217&highlight=

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.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Dbgird te Lookup Nasıl ?

Mesaj gönderen mrmarman »

ömer faruk yazdı: Dbgrid in içine başka table dan nasıl bilgi alabilirim ....
- @gkimirti Başka bir tabledan veri okumak istiyor.

- Ben de daha en çok uyguladığım tekniği bildireyim o zaman. :) Senin de hoşuna gideceğine eminim. Zaten bilirsiniz programcılık aslında biraz da ilüzyon (göz aldatmacası) gerektirir. 8)

- Ekrana bir tane DBComboBox koy ve gerekli ayarları yapıp istediğin table ve alana yönlendir.

- DBGrid'in DrawDataCell eventinde şunları yaz.

Kod: Tümünü seç

  if (gdFocused in State) then
  begin // DBGrid üzerindeysek
     if (Field.FieldName = 'AlanAdi') then
     begin // istediğiniz alana gelince belirir yoksa gizlenir.
       DBLookupComboBox1.Left    := Rect.Left + DBGrid1.Left;
       DBLookupComboBox1.Top     := Rect.Top  + DBGrid1.Top;
       DBLookupComboBox1.Width   := Rect.Right  - Rect.Left;
       DBLookupComboBox1.Height  := Rect.Bottom - Rect.Top;
       DBLookupComboBox1.Visible := True;
     end
     else DBLookupComboBox1.Visible := False;
  end
  else DBLookupComboBox1.Visible := False;
- Bu kod ile ekranda görünmeyen bir DBComboBox, ilgili alana focus edildiğinde o alan sınırları içinde belirecektir.

- Böylece BASIC işlemler için her zaman karşı çıktığım üçüncü parti bir VCL kullanmanıza gerek kalmadı.
:o
Resim
Resim ....Resim
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7602
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Re: Dbgird te Lookup Nasıl ?

Mesaj gönderen mussimsek »

mrmcop yazdı:- Böylece BASIC işlemler için her zaman karşı çıktığım üçüncü parti bir VCL kullanmanıza gerek kalmadı.
:o
Merhaba,

hocam ben bu noktada biraz farklı düşünüyorum. Quantum Grid gibi iyi bir grid bileşeni hem görsellik hem de kullanım açısından çok fayda sağlayacaktır. DBGrid genelde bir çok ihtiyacı karşılamıyor. Programa yoğunlaşmak yerine oturup değişik durumlar için kod yazmak gerekiyor.

Ancak DBGrid bana yetiyor, çok fazla ekstra durum olmuyor diyenler için gerek yok tabii.

Kolay gelsin.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

- Sizi anlıyorum. Buna diyecek bir sözüm yok. Herkes tamamen kişisel fikrini uygulamakta özgür.

- Programcı mertebesine ulaşmış kişiler için,projelerini üretirken, Free olduğu ve/veya ücreti verildiği sürece üçüncü parti bileşenler, zaman ve dolayısıyla para/emek tasarrufu sağlarlar.

- Ama bu durum programcılığı öğrenme aşamasındaki insanların ufkunu sınırladığını şeklinde bir durum meydana getirdiğini düşünüyorum.

- Burada verdiğimiz çözümler, programcıların ufuklarını genişletme amaçlı cevaplardır. O zaman yapılması gereken şey, bileşenlerin içeriklerini bir kütüphanede tutup, insanlar problem yaşadıkça o bileşeni kullan demek gibi bişey olacaktır diyorum.

- Bileşenler elbette faydalıdır. Ama koddan tasarruf edelim derken, Executable üründen ve sistem kaynaklarından ödün vermenin yersiz olduğunu ayrıca savunuyorum.
Resim
Resim ....Resim
hakkus
Üye
Mesajlar: 160
Kayıt: 18 Haz 2003 12:02
Konum: Konya

Mesaj gönderen hakkus »

Merhabalar,
Farklı bir yöntemde şöyle olabilir.
Table ve Field alanlar
BankalarTable // bankaların listesini tutan table
Banka

OdemeTable//
Banka
BankaLookUp //Banka ve BankaLookUp alanları aynı özellikte olmalı
BankaLookUp field'in özellikleri
FieldKind--->FkLookup
LookupResultField--->Banka
LookupKeyFields--->Banka
LookupDataSet--->BankalarTable
özelliklerini ayarlayın


Diğer field alanlar..
vs.

ödemeTable'ini bağladığınız DbGridde
İlgili field alanların yanında BankaLookUp field'ini ekleyin. ÖdemeTable'inin BankaField'ini eklemeyin..
DbGrid'de BankaLookUp field'ını cliklediğinizde BankalarTable inin Banka Field'inin listelendiğini göreceksiniz.
Buradan bir banka ismi seçerseniz OdemeTable'i Edit Moduna geçer.. Post ederseniz BankaLookUp field'indaki değer ÖdemeTable'in Banka field'ine yazılır.
Kolay gelsin
saygılar
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

@hakkus çok yaşa valla.

- Bir şey daha öğrendim, teşekkürler. Denemedim ama yazdıklarınla aklımda kurgulayınca mantıklı ve güzel bir çözüm olduğunu değerlendirdim.

- Çalışmalarında başarılar.
Resim
Resim ....Resim
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

benim de aslında demek istedigim yol bu idi ama izah edemedim galiba.
ben design time da gerekli duzenlemeli yapıp (lookup alan olusturma)
dbgride bu alanı eklmekteydim
ÜŞENME,ERTELEME,VAZGEÇME
Cevapla