24-04-2011, 06:02 PM
إقتباس :قمت بوضع هذا الكود داخل الحدث 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;
كود :
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;بالتوفيق.

