Delphi Can
Dbgrid mouse whell aşağı yukarı gezinme - Baskı Önizleme

+- Delphi Can (https://www.delphican.com)
+-- Forum: Delphi (https://www.delphican.com/forumdisplay.php?fid=3)
+--- Forum: Genel Programlama (https://www.delphican.com/forumdisplay.php?fid=6)
+--- Konu Başlığı: Dbgrid mouse whell aşağı yukarı gezinme (/showthread.php?tid=2684)



Dbgrid mouse whell aşağı yukarı gezinme - cinarbil - 29-09-2018

İ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;



Dbgrid mouse whell aşağı yukarı gezinme - ahmet_sinav - 29-09-2018

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.


Dbgrid mouse whell aşağı yukarı gezinme - mrmarman - 29-09-2018

Şö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;



Cvp: Dbgrid mouse whell aşağı yukarı gezinme - cinarbil - 29-09-2018

(29-09-2018, Saat: 14:16)ahmet_sinav Adlı Kullanıcıdan Alıntı: 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ı: Şö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.


Dbgrid mouse whell aşağı yukarı gezinme - narkotik - 30-09-2018

Query'nin afterscroll olayı işinizi çözmez mi?


Cvp: Dbgrid mouse whell aşağı yukarı gezinme - Bay_Y - 02-10-2018

(29-09-2018, Saat: 14:27)mrmarman Adlı Kullanıcıdan Alıntı: Şö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


Cvp: Dbgrid mouse whell aşağı yukarı gezinme - cinarbil - 02-10-2018

hemde ilaç gibi yardımcı oldu Allah c.c razı olsun.