Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Desactivar el scroll del mouse (https://www.clubdelphi.com/foros/showthread.php?t=54743)

chinosoft 28-03-2008 19:40:21

Desactivar el scroll del mouse
 
Holas tengo una consulta:

¿Hay alguna forma de desactivar el scroll del mouse, asi cuando estoy en un DBGrid no me cambia de renglon?.

desde ya Muchas Gracias :)

escafandra 28-03-2008 20:39:30

No lo he probado, pero una forma eficaz sería interceptar el mensaje WM_MOUSEWHEEL y evitar su actuación. Lo puedes interceptar en la funcion miembro
Código:

virtual void __fastcall WndProc(Messages::TMessage &Message);
La sobrecargas, e interceptas el mensaje de forma que si se produce no llame a WndProc de la clase base.

Código:

virtual void __fastcall WndProc(Messages::TMessage &Message){
    .
    .
    else if(Message.Msg == WM_MOUSEWHEEL) {
      if(NoQuieroMouseWhell) return;
    }

    ::WndProc(Message); // WndProc de la clase base
}

Este mensaje solo existe desde WindowsNT

Revisa también este mensaje, no de la API directamente sino del mismo Builder. Se llama en WndProc cuando se mueve la rueda del ratón:
Código:

DYNAMIC void __fastcall MouseWheelHandler(Messages::TMessage &Message);
Espero haberte ayudado. Si te funciona dínoslo, no lo he probado y me gustaría saberlo.

Saludos.

chinosoft 28-03-2008 20:51:11

Disculpa, pero estoy medio perdido de tanta información... :)

y no soy un experto pero lo voy a probar y te cuento

chinosoft 29-03-2008 15:53:25

Creo que esta
 
Al formulario le agregue un TAppicationEvents y en el evento OnMessage escribi lo siguiente.

Código:

void __fastcall TFrmPanelCliente::AppEveMessage(tagMSG &Msg, bool &Handled)
{
    int i;
    if (Msg.message == WM_MOUSEWHEEL){

    Msg.message = WM_KEYDOWN;
    Msg.lParam = 0;
    i = Msg.wParam;

    if (i > 0) {

      Msg.wParam = VK_UP;

    }else{

      Msg.wParam = VK_DOWN;

    }

    Handled = true;

    }
}

y listo, no respondio mas el scroll.

Muchas Gracias escafandra! :)


La franja horaria es GMT +2. Ahora son las 05:23:26.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi