Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

ScrollBox y rueda del ratón

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: ScrollBox y rueda del ratón Responder citando

¿Cómo puedo hacer para que avance el scrollbox con la rueda del ratón?

Gracias.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

Si estas usando BCB6 tienes una forma muy sencilla. Pon la siguiente línea en el evento OnMouseWheel del TScrollBox:

  ScrollBox1->Perform(WM_VSCROLL, WheelDelta>1 ? SB_LINEUP:SB_LINEDOWN, 0);


En caso de que no estés usando la versión 6 avísame y te digo como puedes hacerlo.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Hola leo, utilizo BCB5.

Gracias por la ayuda.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

En versiones anteriores podemos hacerlo subclasificando el TScrollBox por ejemplo.

En la declaración de la clase del form añade lo siguiente:
Código:
...
private:   // User declarations

    TWndMethod OldWndProc;
    void __fastcall NewWndProc(TMessage& msg);
...

Y a continuación implementamos las funciones:
Código:
// Constructor
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
    OldWndProc = ScrollBox1->WindowProc;
    ScrollBox1->WindowProc = NewWndProc;
}

void __fastcall TForm1::NewWndProc(TMessage& msg)
{
    if (msg.Msg == CM_MOUSEWHEEL)
    {
        short delta = msg.WParamHi;
        ScrollBox1->Perform(WM_VSCROLL, delta>0 ? SB_LINEUP:SB_LINEDOWN, 0);
    }
    else if (msg.Msg == WM_DESTROY)
        ScrollBox1->WindowProc = OldWndProc;

    OldWndProc(msg);
}
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Muchas gracias leo (al principio crei que no funcionaba, pero era porque queria mover la barra horizontal y tenia que cambiar WM_VSCROLL por WM_HSCROLL).

Saludos.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

Hola que tal!

Como se hace para que funcione la rueda del raton con un DbGrid?
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Siguiendo las mismas instrucciones de arriba, cambia el código por:
Código:
...
private:   // User declarations

    TWndMethod OldWndProc;
    void __fastcall NewWndProc(TMessage& msg);
...

Código:
// Constructor
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
    OldWndProc = DBGrid1->WindowProc;
    DBGrid1->WindowProc = NewWndProc;
}

void __fastcall TForm1::NewWndProc(TMessage& msg)
{
    if (msg.Msg == WM_MOUSEWHEEL)
    {
        short delta = msg.WParamHi;
        DBGrid1->DataSource->DataSet->MoveBy(-delta/WHEEL_DELTA);
        return;
    }
    else if (msg.Msg == WM_DESTROY)
        DBGrid1->WindowProc = OldWndProc;

    OldWndProc(msg);
}
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Bueno, aun que que pude no estar a tono.. con la respuesta de _leo, yo no he tenido ese problema, ya que tengo un Mouse con la rueda del boton.. y lo que hago cuando se instala la aplicacion dentro de otro equipo. (con el installShield), este me copia, un dll, que sirve para trabajar la rueda del boton.., asi la aplicacion funciona, siempre bien..

tambien es cierto que el codigo de _leo funciona para el DBgrid...

saludos..
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.