StringGrid vertical (dikey) kaydırma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
nosedive
Üye
Mesajlar: 238
Kayıt: 16 May 2004 07:48

StringGrid vertical (dikey) kaydırma

Mesaj gönderen nosedive »

ilerde arama yapacak arkadaşlara detaylı erişim olması için başlığı biraz geniş tuttum..

stringgridde şoyle bir sorun yaşıyorum...colcount değerim diyelim 20

mousenin ortasındaki yuvarlak vardır ya yukarı aşağı döndürürüsünüz web sayfalarında falan yukarı aşağı gezinmek için..Onu hareket ettirince sanıyorum bu default değeri aşıyor ve out of range hatası veriyor..

Gridden hangi olaydır bu ? yada bunun max min değerleri falan varsa nasıl atanır..yada o özelliği tamamen nasıl kapatırım..tamamen kapatmak asıl tercihim tabiki...

Teşk.
Kullanıcı avatarı
kadirkurtoglu
Üye
Mesajlar: 748
Kayıt: 22 May 2005 01:20
Konum: Uzakta Görünen Tepeden...

Mesaj gönderen kadirkurtoglu »

mousenin ortasındaki yuvarlak vardır ya yukarı aşağı döndürürüsünüz
Scrooll dur hocam bahsetiğiniz. ilgili stringgrid scroll barını kaydırabilirsiniz. Mouse eventlerini bir inceleyin...
Kullanıcı avatarı
nosedive
Üye
Mesajlar: 238
Kayıt: 16 May 2004 07:48

Mesaj gönderen nosedive »

ben tam anlatamadım sanırım

Scroolbar özelliği aktif zaten...normalde mouse ile scrollbarı alt ve üst oklarına basarak tabiki aşağı yukarı ilerleyebiliyorsunuz..

ama mousenin ortasındaki yuvarlağı çevirdiğiniz zaman sanıyorum çok fazla ilerleme oluyor ve grid index out of range hatası alıyorsunuz..

diyorumki o mousenin ortasındaki yuvarlağı çevirdiğimizde hangi olay gerçekleşir..ve onun max min değerlerini yada step aralıklarını ayarlayabilirmiyiz...veyahut o özelliği tamamen kapatabilirmiyiz...

Teşk.
Kullanıcı avatarı
kadirkurtoglu
Üye
Mesajlar: 748
Kayıt: 22 May 2005 01:20
Konum: Uzakta Görünen Tepeden...

Mesaj gönderen kadirkurtoglu »

hocam bende anlamatadım galiba. mouse nin ortasındaki dalgaya scrooll denir. ve bu scrooll dediğimiz yuvarlak scrooll barı hareket ettirir. ne kadar hareket ettireceği denetim masası fare ayarlarında gizlidir.
Kullanıcı avatarı
nosedive
Üye
Mesajlar: 238
Kayıt: 16 May 2004 07:48

Mesaj gönderen nosedive »

ben tekrar anlatamadım...

scrollbarın mouse ile nasıl ayarlandığı ile ilgilenmek istemiyorum..bu programı başka kullanıcılar kullanacak...onlara gidin tek tek scroll bar kaydırma adımlarını ayarlayın diyemem..

onun için girdde bu olay gerçekleşmesini iptal etmem lazım.. scrooll u oynattığınız anda hata alıyorsunuz..o denetim masasından ayarlasanız bile.. o yüzden ol olayı durdurmak istiyorum
Kullanıcı avatarı
Opt2000
Üye
Mesajlar: 216
Kayıt: 09 Tem 2003 10:04

Mesaj gönderen Opt2000 »

Selam

Ufak bir karışıklık var. Mouse'un scroll yapma tekerine wheel (yani teker) denir. Sorununuzu çözer mi bilmiyorum, ama kadirkurtoglu'nun söylemek istediği Wheel mesajlarını yakalamanız ve gerekli kontrolleri yaptırmanız.

Kolay gelsin,
Bahadır Alkaç
Kullanıcı avatarı
nosedive
Üye
Mesajlar: 238
Kayıt: 16 May 2004 07:48

Mesaj gönderen nosedive »

evet zaten sorum da o :)
Kullanıcı avatarı
Opt2000
Üye
Mesajlar: 216
Kayıt: 09 Tem 2003 10:04

Mesaj gönderen Opt2000 »

Selam,

Eğer TStringGrid kullanıyorsanız, OnMouseWheelDown ve OnMouseWheelUp eventlerini kullanabilirsiniz. Buradaki Handled parametresini True olarak atadığınızda, sizin event fonksiyonu içine yazdığınız kodlar kullanılacak ve Wheel mesajının default fonksiyonu çalıştırılmayacaktır.

Eğer TDBGrid kullanıyorsanız, Mouse wheel için gerekli mesajları sizin yakalamanız gerekiyor. Mesajın tam adını hatırlamıyorum, yapmanız gereken TDBGrid'den yeni bir string grid türetmek ve class içine şu fonksiyonu ekleyip mesajı yakalamak

procedure OnMouseWheel(var msg:TMessage);message WM_MOUSEWHEEL;

Burada WM_MOUSEWHEEL kısmının adını tam hatırlamadığım için attım. Bunu Windows SDK Help dosyasından bulabilirsiniz.

Kolay gelsin,
Bahadır Alkaç

NOT: Bu arada büyük ihtimalle 3. parti bir mouse sürücüsü kullanıyorsunuz, çünkü benim denemelerimde TStringGrid ve TDbGrid bileşenlerinde bahsettiğiniz sorunla karşılaşmadım.
Kullanıcı avatarı
nosedive
Üye
Mesajlar: 238
Kayıt: 16 May 2004 07:48

Mesaj gönderen nosedive »

TStringgrid kullanıyormuşum :) şimdi dikkat ettim..bahsettiğiniz şekilde

Kod: Tümünü seç

procedure TFrmmain.StringGrid1MouseWheelUp(Sender: TObject;
  Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
begin
  Handled := true;
end;
yaparak sorunu hallettim
Cevapla