Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Delimitar área de trabajo del ratón (https://www.clubdelphi.com/foros/showthread.php?t=26315)

Casimiro Notevi 19-10-2005 14:26:54

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.

epuigdef 19-10-2005 15:20:37

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

Casimiro Notevi 19-10-2005 15:25:13

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.

roman 19-10-2005 16:27:59

¿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

Casimiro Notevi 19-10-2005 20:25:22

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

roman 19-10-2005 20:32:38

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

Casimiro Notevi 19-10-2005 21:10:39

Gracias por la aclaración, la probaré mañana en el trabajo que tengo un pc con win-xp "verdadero" :)

Casimiro Notevi 20-10-2005 09:33:12

Funciona perfectamente, muchas gracias a todos.


La franja horaria es GMT +2. Ahora son las 02:18:33.

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