Dbgrid içerisinde mousun scrool tuşunun kullanımı

Yazdığınız makaleleri ve üyelerimizin işine yarayacağını düşündüğünüz kodlarınızı gönderebilirsiniz. Bu foruma soru sormayın!
Cevapla
AliRiza
Üye
Mesajlar: 172
Kayıt: 24 Kas 2004 10:57
Konum: İstanbul/Avcılar
İletişim:

Dbgrid içerisinde mousun scrool tuşunun kullanımı

Mesaj gönderen AliRiza »

Dbgrid içerisinde mousun scroll tuşunu kullanmak için şunları yapmanız gerekir..
Öncelikle formunuza applicationevents bileşenini alınız.
Daha sonra bu bileşenin onmessage olayına aşağıdaki kodları yazınız..

Kod: Tümünü seç

procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
    var
   i: SmallInt;
begin
   if Msg.message = WM_MOUSEWHEEL then
   begin
     Msg.message := WM_KEYDOWN;
     Msg.lParam := 0;
     i := HiWord(Msg.wParam) ;
     if i > 0 then
       Msg.wParam := VK_UP
     else
       Msg.wParam := VK_DOWN;

     Handled := False;
   end;
end;
Bu kodu kullandığınızda dbgridde mousun scroll tuşunu kullandıkça sanki klavyeden işlem yapmış gibi keydown olayı gerçekleşir.Böylece mousun scroll tuşu ile aşağı yukarı hareket edersiniz..Dbgrid'in keydown'ına yazdığınız koda göre dbgridde üzerinde bulunduğunuz kısım ile ilgili bilgilere ,resimlere ulaşabilirsiniz..
Yanlız dbgrid'in keydownda şöyle bir problem yaşıyorum..
Aşağıdaki kodda dbgriddeki bilgileri editlere ve memoya aktarıp resimlerini databaseden çekiyorum.
Yanlız aşağı yukarı hareket ettikçe seçilen ile ilgili bilgi değilde bir önceki veya bir sonraki bilgi ekrana geliyor.Klavyenin ok tuşları ile aşağı hareket ederken seçili olan bilgiden bir önceki,aşağıdan yukarı hareket ederken bir sonraki bilgi geliyor.Bu konuda yardıma ihtiyacım var.

Kod: Tümünü seç

procedure TForm1.DBGrid3KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
    memo1.Clear;
 xpedit4.Text:=dbgrid3.DataSource.DataSet.fieldbyname('ntno').AsString;
xpedit5.Text:=dbgrid3.DataSource.DataSet.fieldbyname('orgno').AsString;
xpedit6.Text:=dbgrid3.DataSource.DataSet.fieldbyname('description').AsString;
memo1.lines.strings[0]:=dbgrid3.DataSource.DataSet.fieldbyname('catalognotes').AsString;
  picture:=dbgrid3.fields[3].AsString+'.jpg';
  edit4.text:=picture;
   deencrypt();
 // maskedit1.EditMask:='';

    if   FileSearch(edit4.Text,way)<>'' then
   begin
   image1.Stretch:=false;
   image1.Center:=true;
   image1.Picture.LoadFromFile(way+edit4.text);
  end;
end;
Aynı kodları onkeyup kullanıyorum bir problem yaşamıyorum.

// Edit //
@mrmcop yazdı:// Başlığı Makalelerden Programlama'ya taşıyan : @mrmcop
Bilginin efendisi olmak için çalışmanın uşağı olmak şarttır...
BALZAC
Bana bir harf öğretenin kulu kölesi olurum..
HZ.ALİ
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Merhaba...

- Önerim, kayıttan gelen veriye göre hazırlık yaptığın bu işlemleri table'in AfterScroll olayında yapılmasını sağla...

- Kayda konumlanma işlemi tamamlandıktan sonra tetiklenen bir eventtir... :idea:

- Ek olarak bu işlem için tuş kullanmayarak, son ve ilk kayıtlarda kayıt değişmediği halde tekrar işletilme durumu da kalkar... :wink:
Resim
Resim ....Resim
AliRiza
Üye
Mesajlar: 172
Kayıt: 24 Kas 2004 10:57
Konum: İstanbul/Avcılar
İletişim:

Muharrem arkadaş teşekkür ederim..

Mesaj gönderen AliRiza »

Muharrem arkadaş teşekkür ederim.Ben dbgriddeki verileri adoqueryden çektiğim için bunun afterscroll olayında denedim ve işimi gördü.
Hadi kendine iyi bak..Allah yolunu açık etsin..
Bilginin efendisi olmak için çalışmanın uşağı olmak şarttır...
BALZAC
Bana bir harf öğretenin kulu kölesi olurum..
HZ.ALİ
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Bence bu yazı makaleler içinde yer almalıydı.

İpucu için teşekkürler.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

İpucu ve Makalenin ne olduğunu tartışmıycam. Hemen aktarıyorum...
:lol:
Resim
Resim ....Resim
Gk_imptob
Üye
Mesajlar: 84
Kayıt: 01 Kas 2005 12:34

Mesaj gönderen Gk_imptob »

Sevgili arkadaşlar bu konuyala ilgili bir problem yaşıyorum ve var olan hakkında yeni bir konu açmak istemedim.Yanlış yaptıysam kusurabakmayın.AliRıza arkadaşımızın dediklerini bende aynen yaptım ve çalıştı fakat yaşadığım problem mouse scrolla gezerken resimlerin bir önceki kayıtın resmi geliyor olması gereken kaydın resmi gelmiyor.Mrmarman ustamız afterscroll olayında bahsetmiş sorunun giderilmesi için.Fakat ben afterscroll ne yazıcağımı ne yapmam gerektiğini tam anlayamadım.Bu konuda bana yol gösterirmisiniz.Teşekkürler

Saygılar.
Cevapla