grid üzerinde gezinti

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
ZeynelAbidin
Üye
Mesajlar: 69
Kayıt: 02 Oca 2009 09:03

grid üzerinde gezinti

Mesaj gönderen ZeynelAbidin »

Arkadaşlar grid üzerinde gezinti yaparken panel üzerinde buluna normal editlerde o an konumlu olduğum kaydın bilgilerinin görünmesini istiyorum.Afterscroluna gerekli kodu yazıyorum ancak query açılıp kapanırken defalarca scroll olduğu için benim yazdığpım kodu defalarca işletiyor.Acaba bu yapmak istediğim işlemi nerede yapmam lazım.
Kullandığım ib komponentleri ve firebird veritabanı.Gerçi unidac komponentleriylede aynı sonucu veriyor.
Yardımlarınızı bekliyorum.
mkysoft
Kıdemli Üye
Mesajlar: 3110
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Re: grid üzerinde gezinti

Mesaj gönderen mkysoft »

scroll içine bir if yapısı ile kontrol koymalısınız. data nesnesinin state'İ browse ise editlere veri atsın sadece.
ZeynelAbidin
Üye
Mesajlar: 69
Kayıt: 02 Oca 2009 09:03

Re: grid üzerinde gezinti

Mesaj gönderen ZeynelAbidin »

Kod: Tümünü seç

 if qr_firma.State= dsbrowse then firma_form.data_to_edit;
eğer söylediğiniz buysa yine aynı sonuçla karşılaşıyorum.Defalarca scroll oluyor.
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Re: grid üzerinde gezinti

Mesaj gönderen sadettinpolat »

insert islemlerine baslmadan once
dataset.AfterScrol := nil diyerek baglantiyi kopartin.
insert ile kaydi ekleyin
post komutu ile kaydedin
dataset.afterscrol :=myAfterScrolEvent olarak baglantiyi yeniden saglayin.
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
Kullanıcı avatarı
csunguray
Üye
Mesajlar: 855
Kayıt: 09 Ara 2006 05:08
Konum: Adana
İletişim:

Re: grid üzerinde gezinti

Mesaj gönderen csunguray »

Bunun nedeni grid verilerle dolduruluyorken tüm kayıtların okunuyor olması. Bunun için Query i açarken şöyle bir teknik izleyebilirsiniz.

Kod: Tümünü seç

procedure TForm1.KapatAc;
begin
  Query1.AfterScroll := nil;
  Query1.Close
  Query1.Open;
  Query1.AfterScroll := QueryAfterScroll;
  QueryAfterScroll(Query);
end;

procedure TForm1.QueryAfterScroll(DataSet: TDataSet);
begin
  Falan filan
  Falan filan
end;
C. Sunguray
csunguray at netbilisim.kom
Net Bilişim Hizmetleri

Sıradan her programcı bilgisayarın anlayabileceği kodlar yazabilir.
Sadece iyi programcılar insanların da anlayabileceği kodlar yazarlar.
Martin Fowler (http://martinfowler.com/)
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2385
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: grid üzerinde gezinti

Mesaj gönderen freeman35 »

Gridin datasource bağlı dbEdit yada dbLabel neden kullanmıyorsun ?
Kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
ZeynelAbidin
Üye
Mesajlar: 69
Kayıt: 02 Oca 2009 09:03

Re: grid üzerinde gezinti

Mesaj gönderen ZeynelAbidin »

On scroll olayında da form ilk aktif olduğunda üzerinde bulunan kaydı görüntülemek istersek konumlu olduğumuz kaydı değştirmek gerekiyor.Birden fazla datanın olduğu tablolarda bir sıkıntı çıkmıyor.Ancak 1 kayıtlı bir tablomuz olduğunda ilk kaydı editlere aktaramıyoruz.
db komponentlere gelince ben onları kullanmayı sevmiyorum.
Ben bu olayı şöyle çzödüm.gridin keyup ve mouseup olaylarında
eğer konumlu olduğum kayıt ile gösterimde olduğum kayıt farklıysa datalarıeditlere aktar olayını yaptım ve çok güzel bir şekilde çalışıyor.
Ayrıca ilginiz için teşekkür ederim.
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2385
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: grid üzerinde gezinti

Mesaj gönderen freeman35 »

ozaman Table ın PrimaryKey sine bir dbEdit bağla bununun visible nı False yap, dbEdit in onChange eventinede istediğin kodu yaz.Sadece PrimaryKey değiştiğinde bir kez çalışır.
Kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Cevapla