التعامل مع DBGrid بإستخدام زر الماوس الاوسط
#5
إقتباس :قمت بوضع هذا الكود داخل الحدث OnMouseWheel لكن كان شيئا لم يحدث
هذا الحدث غير متوفر في المكون TDBGrid الأصلي، عليك برمجته بنفسك

طريقة أخرى للتأثير على كامل المشروع:
عرف في القسم public لأي نموذج، وليكن TForm1 مثلا:
PHP كود :
public
  
procedure OnMessage(var Msg: TMsg; var Handled: Boolean); 
مضمون الحدث:
PHP كود :
procedure TForm1.OnMessage(var Msg: TMsg; 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; 
ثم أضف في ملف المشروع (dpr.*) الآتي:
كود :
Application.Initialize; [color=Blue] Application.OnMessage := Form1.OnMessage;[/color] Application.CreateForm(TForm1, Form1);
باختصار، ما فعلناه هو اقتناص حدث تدوير عجلة الماوس إلى الأعلى وإلى الأسفل
وإرسال حدثين بدلا من ذلك هما ضغط المفتاح "فوق" (VK_UP) و"تحت" (VK_DOWN) على التوالي

أما إن كنت تقصد حدث النقر على الزر الأوسط (وليس تدوير العجلة)
فهذا ممكن باستخدام Button: TMouseButton من خلال OnMouseDown أو OnMouseUp
كود :
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if Button = mbMiddle then ShowMessage('Mouse Middle button clicked!'); end;
ولا أنصح بذلك...
بالتوفيق.
الرد


الردود في هذا الموضوع
التعامل مع DBGrid بإستخدام زر الماوس الاوسط - بواسطة kachwahed - 24-04-2011, 06:02 PM

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم