View Full Version : استفاده از دكمه گردان وسط موس درdbgrid
mohsen_r
پنج شنبه 26 دی 1387, 11:04 صبح
آيا مي شود از دكمه گردان وسط موس در db grid براي حركت روي ركوردها اسفاده كرد البته بدون نصب موس
چون اگر نصب باشد اين كار انجام مي شود
Hsimple11
پنج شنبه 26 دی 1387, 12:00 عصر
بله. ApplicationEvents را در سایت جستجو کنید.
vcldeveloper
پنج شنبه 26 دی 1387, 12:03 عصر
DBGrid رویدادهایی برای مدیریت چرخش Wheel موس داره:
OnMouseWheel
OnMouseWheelDown
OnMouseWheelUp
mohsen_r
شنبه 28 دی 1387, 10:39 صبح
DBGrid رویدادهایی برای مدیریت چرخش Wheel موس داره:
OnMouseWheel
OnMouseWheelDown
OnMouseWheelUp
من دلفي 7 استفاده مي كنم اين رويداد را نديدم
mafazel
یک شنبه 29 دی 1387, 07:38 صبح
دلفی 7 اون توابع رو نداره و مستقیما دکمه چرخشی رو پشتیبانی نمی کنه برای این کار باید اون رو شبیه سازی کرد. برای این کار یک ApplicationEvents از تب Additional بذارید و در متد OnMessage این دستورات رو کپی کنید.
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;
در این حالت توی اون فرم دکمه چرخش بالا با دکمه VK_UP چرخش پایین با VK_DOWN جایگزین میشه (هر شیئی که Focused باشه مثلا DBGrid یا ListBox این حالت رو بدست میاره).
mohsen_r
یک شنبه 29 دی 1387, 13:45 عصر
دلفی 7 اون توابع رو نداره و مستقیما دکمه چرخشی رو پشتیبانی نمی کنه برای این کار باید اون رو شبیه سازی کرد. برای این کار یک ApplicationEvents از تب Additional بذارید و در متد OnMessage این دستورات رو کپی کنید.
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;
در این حالت توی اون فرم دکمه چرخش بالا با دکمه VK_UP چرخش پایین با VK_DOWN جایگزین میشه (هر شیئی که Focused باشه مثلا DBGrid یا ListBox این حالت رو بدست میاره).
با تشكر اين تابع راگذاشتم ولي انجام نشد آيا كار خواصي بايد انجام بدم
nassim_20
چهارشنبه 09 اردیبهشت 1388, 17:09 عصر
این کد برای ScrollBox کار نمیکنه
ScrollBox رویداد MouseWheelUp را دارد ولی عملا کدی که در آن می نویسیم اجرا نمیکنه چکار باید کرد؟
as13851365
چهارشنبه 09 اردیبهشت 1388, 20:27 عصر
برای ScrollBox از کد زیر استفاده کن:
procedure TAdd_daramad.ScrollBox1MouseWheel(Sender: TObject;
Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint;
var Handled: Boolean);
var
Msg: Cardinal;
Code: Cardinal;
N, i: Integer;
begin
if ssShift in Shift then
Msg := WM_HSCROLL
else
Msg := WM_VSCROLL;
if WheelDelta < 0 then
Code := SB_LINEDOWN
else
Code := SB_LINEUP;
N:= Mouse.WheelScrollLines;
for i:= 1 to N do
ScrollBox1.Perform(Msg, Code, 0);
ScrollBox1.Perform(Msg, SB_ENDSCROLL, 0);
Handled := True;
end;
nassim_20
چهارشنبه 09 اردیبهشت 1388, 23:45 عصر
نشد این کد عمل نمیکنه
اصلا رویدادهای مربوط به wheel عمل نمیکنه حتی کد نمایش پیغام
ShowMessage('');
هم عمل نمیکنه؟!!!!!!!!!!!!!!!!!!!
as13851365
پنج شنبه 10 اردیبهشت 1388, 12:21 عصر
نشد این کد عمل نمیکنه
اصلا رویدادهای مربوط به wheel عمل نمیکنه حتی کد نمایش پیغام
ShowMessage('');
هم عمل نمیکنه؟!!!!!!!!!!!!!!!!!!!
دوست عزیز اگر شما کدی را که در پست 8 قرار دادم را در رویداد MouseWheel مربوط به فرم خود قرار دهید به راحتی می توانید ScrollBox را با توپ وسط ماوس جابه جا کنید
( من خودم ازش دارم استفاده می کنم و مشکلی هم ندارم اگه باز مشکل داشتید بگید تا نمونه سورس بزارم )
nassim_20
پنج شنبه 10 اردیبهشت 1388, 14:57 عصر
دوست عزیز ممنون
درست شد فقط باید یکی از کامپوننتهایی که در ScrollBox قرار دارد را فوکوس کنیم
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.