Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-05-2007
Chandra Chandra is offline
Miembro
 
Registrado: jun 2006
Posts: 23
Poder: 0
Chandra Va por buen camino
Scroll con rueda del ratón en DBCtrlGrid

Estaba trabajando con un DBCtrlGrid y me he dado cuenta de que no tiene implementada la respuesta a la rueda del ratón (es decir, los eventos OnMouseWheel, OnMouseWheelDown y OnMouseWheelUp). Total, que he pensado que debía capturar esos eventos desde el form (que sí que los tiene), comprobar si el control DBCtrlGrid tiene el foco, y hacerle scroll "a mano". Lo que no termino de ver es cómo hacer yo ese scroll, porque la propiedad DBCtrlGrid.ScrollBy hace un scroll muy raro...

He estado mirando por Google y, efectivamente, hay muchos artículos en los que la gente se queja de que no viene implementado el evento MouseWheel en el componente DBCtrlGrid, pero la solución que dan es innecesariamente complicada, con punteros, etc... (creo que lo que yo propongo es más sencillo y limpio).

En fin, que si alguien es tan amable de decirme cómo conecto el evento OnMouseWheel del Form al scroll de mi DBCtrlGrid, se lo agradeceré

Y a ver si estos de CodeGear terminan de una vez los componentes, que siempre les falta algo o tienen bugs sin solucionar desde la versión 2
Responder Con Cita
  #2  
Antiguo 19-05-2007
Chandra Chandra is offline
Miembro
 
Registrado: jun 2006
Posts: 23
Poder: 0
Chandra Va por buen camino
Solucionado

Lo he solucionado haciendo Next o Prior en la tabla, en respuesta a los eventos OnMouseWheelDown y OnMouseWheelUp del Form, respectivamente. De esta manera se simula un scroll con la rueda del ratón

Ahora el único problemilla es que tengo que comprobar por cada evento
OnMouseWheelDown y OnMouseWheelUp del Form si el foco lo tiene el DBCtrlGrid o (y aquí viene lo pesado del tema) todos y cada uno de los componentes que contiene ese DBCtrlGrid (DBEdits, etc...).
Responder Con Cita
  #3  
Antiguo 04-08-2015
cocute cocute is offline
Miembro
 
Registrado: nov 2008
Posts: 403
Poder: 16
cocute Va por buen camino
Aunque llegue con unos cuantos años de retraso pongo la solución por si le sirve a alguien que lo busque:

Pon un TApplicationEvents y en el OnMessage pon esto:
Código Delphi [-]
procedure TForm1.ApplicationEvents1Message
   (var Msg: TMsg; var Handled: Boolean) ;
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;
end;
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
rueda central del raton, no vaaa User_baja1 Varios 9 17-06-2011 01:05:47
mover VertScrollBar con la rueda del ratón (mouse) TrUnkS OOP 3 27-02-2007 04:46:34
Rueda del raton no me anda en los fomularios federico1 Varios 1 10-02-2007 02:14:10
Delphi3 y la rueda central del ratón kuan-yiu Varios 0 21-07-2006 12:09:46
Deshabilitar Rueda del Ratón eliasterrero Varios 3 14-10-2003 11:35:32


La franja horaria es GMT +2. Ahora son las 01:19:55.


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