Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-09-2011
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
Cursor.Clip (limitar cursor en pantalla)

Hola !

Estoy investigando cómo podría limitar la posición del cursor en pantalla, desde el propio Delphi.

He encontrado la clase Cursor del propio Windows y su propiedad Clip, pero no sé cómo aplicarla desde el propio Delphi.

Lo que quiero es limitar que el cursor de windows, al mover el ratón, no pueda subir por encima de una determinada posición en un momento dado.

Gracias por vuestra ayuda !
__________________
Piensa siempre en positivo !
Responder Con Cita
  #2  
Antiguo 29-09-2011
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 gluglu.

Fijar area pantalla:
Código Delphi [-]
procedure TForm1.FormActivate(Sender: TObject);
var
  R: TRect;
begin
  R.Left:= Left;
  R.Top:= Top;
  R.Right:= Left + Width;
  R.Bottom:= Top + Height;
  ClipCursor(@R);
end;

Restaurar:
Código Delphi [-]
procedure TForm1.RestaurarClick(Sender: TObject);
begin
  ClipCursor(nil);
end;

Si queres excluir la barra de título en el area definida, tendrías que considerar el alto.
Lo podés obtener:
Código Delphi [-]
  GetSystemMetrics(SM_CYMENU) + 8;

Un saludo.
__________________
Daniel Didriksen

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

Última edición por ecfisa fecha: 29-09-2011 a las 20:21:04.
Responder Con Cita
  #3  
Antiguo 29-09-2011
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
Gracias !

No supe buscar por ClipCursor, sino estuve buscando en el foro y en internet información como Cursor.Clip.

__________________
Piensa siempre en positivo !
Responder Con Cita
  #4  
Antiguo 29-09-2011
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 gluglu.

Para limitar el movimiento del mouse al area cliente del form:
Código Delphi [-]
procedure TForm1.FormActivate(Sender: TObject);
var
  R: TRect;
begin
  R.Left:= Left + GetSystemMetrics(SM_CXSIZEFRAME);
  R.Top:= Top + GetSystemMetrics(SM_CYMENU) + GetSystemMetrics(SM_CXFRAME);
  R.Right:= Left + Width - GetSystemMetrics(SM_CXSIZEFRAME);
  R.Bottom:= Top + Height - GetSystemMetrics(SM_CXSIZEFRAME) ;
  ClipCursor(@R);
end;
(Así no dejo los deberes a medio hacer )


Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 29-09-2011
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
Gracias de nuevo !

Me sirvió mucho tu ayuda. Era justo lo que buscaba.

No intentaba limitar el movimiento del cursor al Form sino a una determinada franja de la pantalla.

Resulta que trabajo con el StringGrid de TMS, y al querer hacer una operación de selección con el ratón pulsado, si muevo el ratón por encima de la prímera línea del StringGrid o por debajo de la última, me ejecuta automáticamente un scroll vertical (hacia arriba o abajo) que necesitaba evitar e ignorar.

Pues no he encontrado la manera de limitar ese scroll vertical del StringGrid de otra manera que delimitando el área concreto en el que el cursor se puede mover. De esta manera he impedido que suba o baje fuera de los límites de la primera y última línea, y así evitar el scroll automático.

Gracias una vez más !
__________________
Piensa siempre en positivo !
Responder Con Cita
  #6  
Antiguo 29-09-2011
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Cita:
Empezado por ecfisa Ver Mensaje
...Para limitar el movimiento del mouse al area cliente del form: ....
¿Que tal de esta forma?
Código Delphi [-]
procedure TForm1.FormActivate(Sender: TObject);
var
  R: TRect;
begin
  R:= GetClientRect;
  MapWindowPoints(Handle, 0, R, 2);
  ClipCursor(@R);
end;

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
cursor Makiley Varios 2 06-02-2006 21:57:43
Conseguir la posición gobal del cursor en la pantalla. islu Varios 8 27-09-2005 23:14:18
Posicion cursor DBGrid en pantalla aram2r OOP 2 10-03-2005 16:11:09
Cursor subzero Firebird e Interbase 1 21-02-2005 20:08:42
Cursor fmonte Varios 2 26-08-2004 00:51:46


La franja horaria es GMT +2. Ahora son las 19:38:35.


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