24-04-2011, 04:00 PM
الصفحات : 1 2
24-04-2011, 04:31 PM
وعليكم السلام ورحمة الله وبركاته
الحدث OnMouseWheel من رسالة ويندوز WM_MOUSEWHEEL
يمكنك صنعه بنفسك، مثال:
هناك مواضيع في المنتدى حول ذلك...
بالتوفيق.
الحدث OnMouseWheel من رسالة ويندوز WM_MOUSEWHEEL
يمكنك صنعه بنفسك، مثال:
PHP كود :
Author: Zarko Gajic
{
Mouse wheel behaves strangely with dbgrids - this code handler will correct this
behavior.
Just drop a TApplication component on a form
}
procedure Application1.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;
بالتوفيق.
24-04-2011, 05:13 PM
بارك الله فيك أستاذي الكريم
لكن لم تعمل معي.
قمت بوضع هذا الكود داخل الحدث OnMouseWheel لكن كان شيئا لم يحدث
إين الخلل ؟؟
لتوضيح : اقصد بزر الماوس الاوسط هو ذلك الدي يدور
لكن لم تعمل معي.
قمت بوضع هذا الكود داخل الحدث OnMouseWheel لكن كان شيئا لم يحدث
PHP كود :
TC.Filter:='TC_TG_ID='+inttostr(TGTG_ID.AsInteger);
TC.Filtered:=True;
edt1.Text:=TGTG_NOM.Value;
sbtn1.Caption:='Modifier';
sbtn1.ImageIndex:=1;
sbtn3.Enabled:=True;
إين الخلل ؟؟
لتوضيح : اقصد بزر الماوس الاوسط هو ذلك الدي يدور
24-04-2011, 05:51 PM
السلام عليكم
إذا كنت تقصد استعمال زر الماوس الوسط للإنتقال بين السجلات ففي المرفقات مثال على ذلك وإن كنت تقصد غير ذلك فلا أدري
وفق الله الجميع
إذا كنت تقصد استعمال زر الماوس الوسط للإنتقال بين السجلات ففي المرفقات مثال على ذلك وإن كنت تقصد غير ذلك فلا أدري
PHP كود :
procedure TForm1.DBGrid1MouseWheelDown(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean);
begin
adotable1.Next;
end;
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;بالتوفيق.
24-04-2011, 06:16 PM
أستاذي يوجد عندي الحدث (استعمل sdbgrid التابع لي alphaskin)
![[صورة: attachment.php?attachmentid=2611&stc=1&d=1272129212]](http://www.delphi4arab.net/forum/attachment.php?attachmentid=2611&stc=1&d=1272129212)
توقف اللسان عن التعبير(الله ينورك)
توقف اللسان عن التعبير(الله ينورك)
24-04-2011, 06:58 PM
أستاذي لقد قمت بتعامل مع الاحداث التالية :
الحمد الله عملت لكن خرج لي مشكل اخر وهو :
-عند تدوير الزر الى الاسفل يصبح يشير الى السجل الثاني لكن العملية تجرا على السجل الاول و العكس صحيح هههههههه هبلني :angry:
PHP كود :
procedure TStockFrm.sDBGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
TC.Filter:='TC_TG_ID='+inttostr(TGTG_ID.AsInteger);
TC.Filtered:=True;
edt1.Text:=TGTG_NOM.Value;
sbtn1.Caption:='Modifier G';
sbtn1.ImageIndex:=1;
sbtn3.Enabled:=True;
end;
PHP كود :
procedure TStockFrm.sDBGrid1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
TC.Filter:='TC_TG_ID='+inttostr(TGTG_ID.AsInteger);
TC.Filtered:=True;
edt1.Text:=TGTG_NOM.Value;
sbtn1.Caption:='Modifier G';
sbtn1.ImageIndex:=1;
sbtn3.Enabled:=True;
end;
PHP كود :
procedure TStockFrm.sDBGrid1MouseWheel(Sender: TObject; Shift: TShiftState;
WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
begin
TC.Filter:='TC_TG_ID='+inttostr(TGTG_ID.AsInteger);
TC.Filtered:=True;
edt1.Text:=TGTG_NOM.Value;
sbtn1.Caption:='Modifier G';
sbtn1.ImageIndex:=1;
sbtn3.Enabled:=True;
end;
الحمد الله عملت لكن خرج لي مشكل اخر وهو :
-عند تدوير الزر الى الاسفل يصبح يشير الى السجل الثاني لكن العملية تجرا على السجل الاول و العكس صحيح هههههههه هبلني :angry:
24-04-2011, 07:10 PM
في المرفق فيديو يظهر المشكلة
24-04-2011, 07:11 PM
إقتباس :أستاذي يوجد عندي الحدث (استعمل sdbgrid التابع لي alphaskin)قلت المكون TDBGrid الأصلي، هذا معدّل
لم تقل في البداية ذلك، وإلا لكان هناك ربما حل آخر...
إقتباس :إذا كنت تقصد استعمال زر الماوس الوسط للإنتقال بين السجلاتتم إصلاح هذا الخلل في إصدارات دلفي الأخيرة فلا داعي لذلك (2009 فما فوق -على الأقل-)
إقتباس :الحمد الله عملت لكن خرج لي مشكل اخر وهو :لا تستخدم هذه الأحداث sDBGrid1KeyUp، sDBGrid1KeyDown خاصة sDBGrid1MouseWheelUp
24-04-2011, 07:19 PM
أستاذي لقد قمت بتعديل المشاركة السابقة وهل رئية الفيديو
وما هو الحل ؟؟؟؟
وما هو الحل ؟؟؟؟
الصفحات : 1 2