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 06-05-2010
Ruben_21 Ruben_21 is offline
Miembro
 
Registrado: dic 2007
Posts: 17
Poder: 0
Ruben_21 Va por buen camino
Sin mouse en todo el programa

Hola a todos... primero que nada les digo que busque un tema como este y no lo encontre... me era dificil saber que palabras clave utiilzar... bueno... en caso de exister postenme el link por favor...

La duda que tengo que no se como hacer para que el mouse no se pueda utilizar en todo mi Form (y sus componentes hijos(edits, labels, etc)). Es decir que al hacer click el cualquier parte no pase absolutamente nada. Que los clics del mouse no tengan ningun efecto (no lanzen ningun evento) en el programa. Ya que mi objetivo es que solo se maneje por teclado.

Saludos.
Responder Con Cita
  #2  
Antiguo 06-05-2010
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Coloca un componente ApplicationEvents (pestaña Additional) y en su evento OnMessage coloca esto:

Código Delphi [-]
procedure TForm1.ApplicationEvents1Message(
  var Msg: tagMSG; var Handled: Boolean);
begin
  if
    (Msg.message >= WM_MOUSEFIRST) and (Msg.message <= WM_MOUSELAST) 
  then
    Handled := true;
end;

Esto aún te permitirá interactuar con el borde de la ventana. Si tampoco quieres esto entonces modifícalo así:

Código Delphi [-]
procedure TForm1.ApplicationEvents1Message(
  var Msg: tagMSG; var Handled: Boolean);
begin
  if
    (Msg.message >= WM_MOUSEFIRST) and (Msg.message <= WM_MOUSELAST) or
    (Msg.message >= WM_NCMOUSEMOVE) and (Msg.message <= WM_NCXBUTTONDBLCLK)
  then
    Handled := true;
end;

// Saludos
Responder Con Cita
  #3  
Antiguo 06-05-2010
Ruben_21 Ruben_21 is offline
Miembro
 
Registrado: dic 2007
Posts: 17
Poder: 0
Ruben_21 Va por buen camino
Hola roman... muchas gracias por contestar...

El codigo que pusiste me funciona perfecto salvo por una pequeñisima ecepcion. En mi form tengo un dbgrid y cuando hago clic el el scrollbar del dbgrid este recibe el evento del mouse. Es decir.. efectivamente cuando hago clic en el dbgrid no pasa nada pero cuando hago clic en el scrollbar(del dbgrid) si se mueve la barra del scroll.

Por si tienes algun consejo te lo agradeceria


Saludos.
Responder Con Cita
  #4  
Antiguo 07-05-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Ruben_21.

Una solución posible es esta:

Cuando desactives el mouse usa este código:
Código:
procedure TForm1.DesactivarScrollBar;
begin
  // DESACTIVAR SCROLL HORIZONTAL
  EnableScrollBar(DBGrid1.Handle,SB_VERT,ESB_DISABLE_BOTH);
  // DESACTIVAR SCROLL VERTICAL
  EnableScrollBar(DBGrid1.Handle,SB_HORZ,ESB_DISABLE_BOTH);
end;
Cuando actives el mouse usa esto:
Código:
procedure TForm1.ActivarScrollBar;
begin
  // ACTIVAR SCROLL VERTICAL
  EnableScrollBar(DBGrid1.Handle,SB_VERT,ESB_ENABLE_BOTH);
  // ACTIVAR SCROLL HORIZONTAL
  EnableScrollBar(DBGrid1.Handle,SB_HORZ,ESB_ENABLE_BOTH);
end;

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 07-05-2010 a las 02:06:13.
Responder Con Cita
  #5  
Antiguo 07-05-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola de nuevo.

Me acordé que si preferis ocultarlas tenes esta opción:
Código:
procedure TForm1.OcultarScrollBar;
begin
  ShowScrollBar(DBGrid1.Handle,SB_VERT,False);
  ShowScrollBar(DBGrid1.Handle,SB_HORZ,False);
end;
Y para mostrarlas nuevamente:
Código:
procedure TForm1.MostrarScrollBar;
begin
  ShowScrollBar(DBGrid1.Handle,SB_VERT,True);
  ShowScrollBar(DBGrid1.Handle,SB_HORZ,True);
end;
Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 07-05-2010
Ruben_21 Ruben_21 is offline
Miembro
 
Registrado: dic 2007
Posts: 17
Poder: 0
Ruben_21 Va por buen camino
Muchas gracias ecfisa ... funciona perfecto

Gracias de nuevo.

Saludos.
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
Mouse Trackball pborges36 La Taberna 3 21-04-2009 21:09:43
El scroll del mouse ?¿ marcelinux Varios 2 07-09-2007 18:18:21
programa para ver en que direccion del registro de windows escribe un programa? JuanErasmo Varios 1 09-11-2006 20:42:05
La Velocidad del mouse LidisMendoza Varios 0 18-03-2005 03:40:39
mouse AngelMarvin Windows 2 20-07-2004 07:16:35


La franja horaria es GMT +2. Ahora son las 03:41:00.


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