| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
lycopersium Lt


Registrado: 12 Oct 2002Mensajes: 90Ubicación: Roquetas de Mar - Almería
|
Publicado: Sab 17 Abr, 2004 5:00 pm Asunto: ScrollBox y rueda del ratón |
|
|
¿Cómo puedo hacer para que avance el scrollbox con la rueda del ratón?
Gracias. |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Sab 15 May, 2004 7:01 pm Asunto: |
|
|
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 |
|
 |
lycopersium Lt


Registrado: 12 Oct 2002Mensajes: 90Ubicación: Roquetas de Mar - Almería
|
Publicado: Dom 16 May, 2004 11:14 pm Asunto: |
|
|
Hola leo, utilizo BCB5.
Gracias por la ayuda. |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Dom 16 May, 2004 11:57 pm Asunto: |
|
|
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 |
|
 |
lycopersium Lt


Registrado: 12 Oct 2002Mensajes: 90Ubicación: Roquetas de Mar - Almería
|
Publicado: Mar 18 May, 2004 8:16 pm Asunto: |
|
|
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 |
|
 |
rockfavc Cmdr


Registrado: 23 Ago 2002Mensajes: 138Ubicación: Colombia (Medellín)
|
Publicado: Jue 20 May, 2004 4:52 am Asunto: |
|
|
Hola que tal!
Como se hace para que funcione la rueda del raton con un DbGrid? |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Jue 20 May, 2004 5:59 am Asunto: |
|
|
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 |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Jue 20 May, 2004 6:00 am Asunto: |
|
|
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.. _________________
 |
|
| Volver arriba |
|
 |
|