نمایش نتایج 1 تا 8 از 8

نام تاپیک: تغییر رکورد در DBGRID با MOUSEWHEEL

  1. #1
    کاربر دائمی
    تاریخ عضویت
    آبان 1386
    محل زندگی
    تهران
    پست
    159

    تغییر رکورد در DBGRID با MOUSEWHEEL

    اگه قرار باشه با حرکت دادن WHEEL موس رکورد DBGRID مون تغییر کنه چیکار باید بکنیم؟
    در حالت عادی رکورد هایلایت شده تا جایی که توی صفحه هست جابه جا میشه و رکورد عوض نمیشه. (جدولSCROLL نمیشه)
    سعی کردم WM_MOUSEWHEEL رو با WNDPROC بفرستم ولی عمل نمیکنه.

  2. #2
    کاربر دائمی آواتار پرواز
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    شیراز
    پست
    321
    اگه از کامپونننت EhLib استفاده کنی این مشکل برطرف میشه.

  3. #3
    کاربر دائمی
    تاریخ عضویت
    آبان 1386
    محل زندگی
    تهران
    پست
    159
    میدونم این کامپوننت و کامپوننت های دیگه ای مثل TxDBGRID این قابلیت رو دارن ولی من با چند نفر دیگه تو سایت داریم DBGRIDکدباز خودمونو می سازیم. در ضمن این کامپوننت ها تو ایران همه غیر مجازن.

  4. #4
    سلام

    هر TControl دارای یک متد به نام DoMouseWheel هست که به صورت معمول به متدهای DoMouseWheelUp, Down میرسند. اینها همان متدهایی هستند که در grid نوشته شده و در dbgrid به صورت کاملا ابتدایی و ناقص به ارث رسیده‌اند.

    برای اینکه dbgrid درست کارکنه

    1- باید متدهای به ارث رسیده زیر را غیرفعال کنید:


    function TMyDBGrid.DoMouseWheelDown, Up -- both overried....
    Result := False;
    Call OnMouseWheelDown, Up events if desired...


    2- متد DoMouseWheel را مثلا به صورت زیر بنویسید:


    function TMyDBGrid.DoMouseWheel(... params ...): Boolean; // override in header...
    begin
    Result := inherited DoMouseWheel(... params ...);
    if not Result and FDataLink.Active then
    FDataLink.MoveBy(-WheelData div WHEEL_DELTA);
    Result := True;
    end;


    ارادت

  5. #5
    کاربر دائمی
    تاریخ عضویت
    آبان 1386
    محل زندگی
    تهران
    پست
    159
    یه خورده بیشتر توضیح می دی؟
    این functionتوی بخش privetتوی tcustomGrid درج شده. اگه از اونجا override بشه دیگه نمیشه تو tcustom grid نمیشه تعریف کرد. مگر تو public.

  6. #6
    قبلا در این مورد بحث شده با این حال:
    یک ApplicationEvent بذار روی فرم اصلی ات و توی OnMessage اون کد زیر رو بنویس مشکلتتوی همه فرمها برطرف میشه
        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;
    You never know what you can do until you try

  7. #7
    کاربر دائمی
    تاریخ عضویت
    آبان 1386
    محل زندگی
    تهران
    پست
    159
    متشکر. این کار برای یه پروژه خوب و کاربردیه(استفاده کردم)و لی بحٍ اصلی کامپوننت مورد نظره که دارم مینویسم. امیدوارم تموم که شد بزارم رو سایت. هرکی هم بتونه کمک کنه یا علی

  8. #8
    کاربر دائمی
    تاریخ عضویت
    آبان 1386
    محل زندگی
    تهران
    پست
    159
        
    ...

    If msg.wParam>0 then
    ...
    [/quote]
    البته بهتره از کد به صورت زیر استفاده بشه. چون تابعHiword مقدار cardinal برمیگردونه که همیشه مثبته

تاپیک های مشابه

  1. عدم تناسب عرض ستونهای dbgrid در تغییر رزولوشن.
    نوشته شده توسط khanboloky در بخش کامپوننت های سایر شرکت ها، و توسعه کامپوننت
    پاسخ: 3
    آخرین پست: چهارشنبه 07 شهریور 1386, 13:04 عصر
  2. Microsoft VB 6 MouseWheel Fix
    نوشته شده توسط jk در بخش برنامه نویسی در 6 VB
    پاسخ: 1
    آخرین پست: چهارشنبه 29 فروردین 1386, 00:53 صبح
  3. غیر فعال کردن در موقع لزوم MouseWheel
    نوشته شده توسط rezaei manesh در بخش VB.NET
    پاسخ: 2
    آخرین پست: چهارشنبه 13 دی 1385, 12:10 عصر
  4. تغییر رنگ ستون های DBGrid
    نوشته شده توسط محسن شمس در بخش برنامه نویسی در Delphi
    پاسخ: 4
    آخرین پست: یک شنبه 17 مهر 1384, 02:53 صبح
  5. پاسخ: 2
    آخرین پست: دوشنبه 18 آبان 1383, 16:31 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •