Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
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-10-2005
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Delimitar área de trabajo del ratón

Hola, no sé exactamente en qué foro poner esta consulta, de momento la dejo aquí.

Con Delphi, necesito delimitar el campo de acción del ratón a un área determinada de la pantalla.

Sé hacerlo en lenguaje C, en ensamblador y en pascal, pero no encuentro la forma de hacerlo desde Delphi, siempre salta un error de "violación de memoria" al llamar a la interrupción 33 y no tengo idea por qué ocurre.

¿Alguna sugerencia?

Saludos.
Responder Con Cita
  #2  
Antiguo 19-10-2005
Avatar de epuigdef
epuigdef epuigdef is offline
Miembro
 
Registrado: jul 2005
Posts: 196
Poder: 19
epuigdef Va por buen camino
Lo que quieres es que el cursor no salga de un cuadrado? Entonces codifica el onmousemove del form y ponle algo tal que así:

Código Delphi [-]
 
var p : TPoint;
 
 
 
    if Mouse.CursorPos.X < 100 then
    begin
        p.X := 100;
        p.Y := Mouse.CursorPos.Y;
        Mouse.CursorPos := p;
    end;
 
    if Mouse.CursorPos.X > 400 then
    begin
        p.X := 400;
        p.Y := Mouse.CursorPos.Y;
        Mouse.CursorPos := p;
    end;
 
   // y lo mismo con la Y.

Un saludo

Edu
Responder Con Cita
  #3  
Antiguo 19-10-2005
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Sí, gracias, epuigdef, lo tengo hecho así, es que quería hacerlo con el ensamblador en línea de delphi, tal y como lo hago en otros programas en lenguaje C y no sé por qué no funciona.

Pero, sí, lo dejaré así, igual a como tú has indicado.

Gracias, de nuevo.

Saludos.
Responder Con Cita
  #4  
Antiguo 19-10-2005
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
¿No te sirve usar la función ClipRect? Por ejemplo, para confinar el cursor a un rectángulo dentro de tu formulario:


Código Delphi [-]
var
  R: TRect;

begin
  R := BoundsRect;
  InflateRect(R, -20, -20);
  ClipCursor(@R);
end;

Para liberarlo pones:


Código Delphi [-]
ClipRect(nil);

// Saludos
Responder Con Cita
  #5  
Antiguo 19-10-2005
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Roman, he probado con el código que has escrito y no hace nada, ¿puede que sea porque ejecuto windows "virtualmente" en linux con vmware?

Lo que quiero conseguir, exactamente, es que no pueda salir el cursor del ratón de un rectángulo que yo le asigne, por ejemplo, uno que esté centrado en la pantalla y tenga 300 pixels de ancho y 100 pixels de alto. El resto de la pantalla no debe poder ser accesible por el ratón, como si no existiera.

Saludos
Responder Con Cita
  #6  
Antiguo 19-10-2005
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
Cita:
Empezado por SDK de Windows
The ClipCursor function confines the cursor to a rectangular area on the screen. If a subsequent cursor position (set by the SetCursorPos function or the mouse) lies outside the rectangle, Windows automatically adjusts the position to keep the cursor inside the rectangular area.

Esto es lo que dice la ayuda y es el resultado que obtuve en la prueba que hice previa a mi mensaje anterior.

Así que muy posiblemente sí se deba al vmware.

// Saludos
Responder Con Cita
  #7  
Antiguo 19-10-2005
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Gracias por la aclaración, la probaré mañana en el trabajo que tengo un pc con win-xp "verdadero"
Responder Con Cita
  #8  
Antiguo 20-10-2005
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Funciona perfectamente, muchas gracias a todos.
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


La franja horaria es GMT +2. Ahora son las 19:24:22.


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