Çok Yakında Yeni Bir Arayüzle karşınızdayız! http://yeni.delphican.com/

Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Dbgrid mouse whell aşağı yukarı gezinme
#1
İyi günler


Kullanıcı kolaylığı olsun diye 

Bilgi_doldur procedure  aşağıdaki 5 olay ile çağırıyorum.
gridcellclik , keyup ve keydown olaylarında editlere griddeki seçili bilgiler sorunsuz geliyor.

mousewhellup ve down da ise  bir önceki veya bir sonraki kayıt geliyor. 
mouse orta tekerleğini hızlı veya yavaş çevirme sonucu değiştirmiyor.

Bu konuda bilgi verebilir misiniz.

sorunu windows video kaydetme ile kaydettim ama 20 saniye 10 mb tutuyor.




procedure Tmodel_form.model_gridCellClick(Column: TColumn);
begin
 bilgi_doldur;
end;

procedure Tmodel_form.model_gridKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
bilgi_doldur;
end;

procedure Tmodel_form.model_gridKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  bilgi_doldur;
end;

procedure Tmodel_form.model_gridMouseWheelDown(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
begin

 bilgi_doldur;
end;

procedure Tmodel_form.model_gridMouseWheelUp(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
begin
 bilgi_doldur;
end;
Procedure Tmodel_form.bilgi_doldur;
begin
model_edit_temizle;  // editlerin içini boşalt
model_data_al;      //  model_sorgu_dateset değerlerini editlere yaz
edit_enabled_false; // buttonları sadece gezinme olarak false/true yaz
kayit_durumu;       // ilk kayıt veya son kayıtta ise buttonları ayarla
end;

procedure Tmodel_form.model_data_al;
begin
 son_kayit:=data_form.model_sorgu.Recno;
 edit_modelerpkodu.Text := trim(data_form.model_sorgu.FieldByName('MODEL_erp_KODU').Text);
 edit_modelstokkodu.Text := trim(data_form.model_sorgu.FieldByName('MODEL_STOK_KODU').Text);
 edit_modeladi.Text := trim(data_form.model_sorgu.FieldByName('MODEL_ADI').Text);
 edit_modelgrubu.Text := trim(data_form.model_sorgu.FieldByName('MODEL_GRUBU').Text);
 edit_modelozelkod.Text := trim(data_form.model_sorgu.FieldByName('MODEL_OZ').Text);
 edit_modelmuhasebekodu.Text := trim(data_form.model_sorgu.FieldByName('MODEL_MUHASEBE_KODU').Text);
 dosya_ad:= trim(data_form.model_sorgu.FieldByName('MODEL_RESIM').text);
  // model resmi klasörde yoksa
 if not FileExists(cal_yol + 'data\rsm\model\'+dosya_ad) then  dosya_ad := 'resimyok.jpg';
 modelresmi_image.Picture.LoadFromFile(cal_yol + 'data\rsm\model\'+dosya_ad);
end;
"…De ki: "Hiç bilenlerle bilmeyenler bir olur mu? Şüphesiz, temiz akıl sahipleri öğüt alıp-düşünürler" (Zümer Suresi, 9)
Cevapla
#2
OnFocusedRecordChanged gibi bir event olması cxgrid'te. Cxgrid db bound ise gride bağlı olan Query'i ilk open yaparken disableControls yapıp opendan sonra enableControls yaparsın.
İmam Süleyman Yakub <--> Molla Mustafa Mansur
Evlatlarım!
Cismanımız TÜRK ruhumuz ise İSLAM.
Bu yolda daim olalım her an.
Cevapla
#3
Şöyle bir çözüm önerebilirim.

Dikkat ettiyseniz, tekeri aşağı çevirdiğinizde (WheelDown olunca) bir sonraki kaydı gösteriyor, tekeri yukarı çevirdiğinizde (WheelUp olunca) da bir önceki kaydı. 

Size bunu sapmayı kendi lehinize düzeltmek, dizginleri elinize almak kalıyor. Yani her WheelUp deyişte sistemin değil sizin adım adım yukarı sıçramanız, WheelDown olunca sistemin buna tepkisiz kalmasını sağlayıp, sizin bir adım aşağı sıçramanız gerekiyor.

Girişte Handled := True dediğinizde sistem gereği yapılmış kabul eder ve hareket etmez. Bu hareketi siz yaparak işi ele almış oluyorsunuz.

procedure Tmodel_form.model_gridMouseWheelDown(Sender: TObject; Shift: TShiftState;
 MousePos: TPoint; var Handled: Boolean);
begin
 Handled := True;
 data_form.model_sorgu.Next;
 bilgi_doldur;
end;

procedure Tmodel_form.model_gridMouseWheelUp(Sender: TObject; Shift: TShiftState;
 MousePos: TPoint; var Handled: Boolean);
begin
 Handled := True;
 data_form.model_sorgu.Prior;
 bilgi_doldur;
end;
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif


Cevapla
#4
(29-09-2018, Saat: 14:16)ahmet_sinav Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.OnFocusedRecordChanged gibi bir event olması cxgrid'te. Cxgrid db bound ise gride bağlı olan Query'i ilk open yaparken disableControls yapıp opendan sonra enableControls yaparsın.

Ahmet bey ilginiz için teşekkür ederim.
öncelikle Standart TDBgrid kullanıyorum.

dbgrid e ait 3 olayda normal çalışması birbirinin benzeri olan 

MouseWhellup ve down olayında sorun olması bu kontrolun grid üzerinde farklı bir 
etkisi olmasından kaynaklanmalı diye düşünüyorum. 

acizane query den olsa diğer 3 olayda sonuç hatalı olmalıydı

(29-09-2018, Saat: 14:27)mrmarman Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Şöyle bir çözüm önerebilirim.

Dikkat ettiyseniz, tekeri aşağı çevirdiğinizde (WheelDown olunca) bir önceki kaydı gösteriyor, tekeri yukarı çevirdiğinizde (WheelUp olunca) da bir sonraki kaydı. Size bunu sapmayı kendi lehinize düzeltmek kalıyor.

procedure Tmodel_form.model_gridMouseWheelDown(Sender: TObject; Shift: TShiftState;
 MousePos: TPoint; var Handled: Boolean);
begin
 Handled := True;
 data_form.model_sorgu.Next;
 bilgi_doldur;
end;

procedure Tmodel_form.model_gridMouseWheelUp(Sender: TObject; Shift: TShiftState;
 MousePos: TPoint; var Handled: Boolean);
begin
 Handled := True;
 data_form.model_sorgu.Prior;
 bilgi_doldur;
end;

Ben ahmet beye cevap yazarken siz mesaj yazmışsınız.
Teşekkür ederim. Deneyim neticesini yazarım.

sayın mrmarman Allah c.c razı olsun.

öneriniz için teşekkür ederim.

Tam istediğim gibi oldu.

 Handled := True;
 data_form.model_sorgu.Prior;
bilgi_doldur;
 

bu benim bir hatam mı yoksa tüm Mousewhell olaylarını bu şekildemi kullanmalıyız.
"…De ki: "Hiç bilenlerle bilmeyenler bir olur mu? Şüphesiz, temiz akıl sahipleri öğüt alıp-düşünürler" (Zümer Suresi, 9)
Cevapla
#5
Query'nin afterscroll olayı işinizi çözmez mi?
Yalnızım ama bir kente yürüyen ordu gibiyim, edebiyattan kaçınmalıyım..
Cevapla
#6
(29-09-2018, Saat: 14:27)mrmarman Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Şöyle bir çözüm önerebilirim.

Dikkat ettiyseniz, tekeri aşağı çevirdiğinizde (WheelDown olunca) bir sonraki kaydı gösteriyor, tekeri yukarı çevirdiğinizde (WheelUp olunca) da bir önceki kaydı. 

Size bunu sapmayı kendi lehinize düzeltmek, dizginleri elinize almak kalıyor. Yani her WheelUp deyişte sistemin değil sizin adım adım yukarı sıçramanız, WheelDown olunca sistemin buna tepkisiz kalmasını sağlayıp, sizin bir adım aşağı sıçramanız gerekiyor.

Girişte Handled := True dediğinizde sistem gereği yapılmış kabul eder ve hareket etmez. Bu hareketi siz yaparak işi ele almış oluyorsunuz.

procedure Tmodel_form.model_gridMouseWheelDown(Sender: TObject; Shift: TShiftState;
 MousePos: TPoint; var Handled: Boolean);
begin
 Handled := True;
 data_form.model_sorgu.Next;
 bilgi_doldur;
end;

procedure Tmodel_form.model_gridMouseWheelUp(Sender: TObject; Shift: TShiftState;
 MousePos: TPoint; var Handled: Boolean);
begin
 Handled := True;
 data_form.model_sorgu.Prior;
 bilgi_doldur;
end;

her zamanki gibi imdada yetişmişsiniz . Smile
Cevapla
#7
hemde ilaç gibi yardımcı oldu Allah c.c razı olsun.
"…De ki: "Hiç bilenlerle bilmeyenler bir olur mu? Şüphesiz, temiz akıl sahipleri öğüt alıp-düşünürler" (Zümer Suresi, 9)
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Dbgrid icerisinda combobox kullanma TheEAK 7 346 23-09-2019, Saat: 09:58
Son Yorum: TheEAK
  timage üzerinde mouse ile çizim duraumsa 0 116 02-09-2019, Saat: 16:16
Son Yorum: duraumsa
  treeview tarzı dbgrid önerisi wiseman 1 291 18-07-2019, Saat: 01:39
Son Yorum: fduman07
  parent formda mouse sol klik çalışmıyor erdogan 5 516 18-06-2019, Saat: 14:30
Son Yorum: erdogan
  Mouse click quiet1day 1 333 13-05-2019, Saat: 15:13
Son Yorum: Tuğrul HELVACI



Konuyu Okuyanlar: 1 Ziyaretçi