4D v16.3Is waiting mouse up |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v16.3
Is waiting mouse up
|
Is waiting mouse up -> Resultado | ||||||||
Parámetro | Tipo | Descripción | ||||||
Resultado | Booleano |
![]() |
True si el objeto está esperando por un evento mouse up, de lo contrario False | |||||
Tema: Eventos formulario
El comando Is waiting mouse up devuelve True después de que el objeto actual haya hecho clic y el botón del ratón no se ha liberado, y cuando el diálogo aún tiene el foco. Debe llamarse desde el método de objeto del objeto actual.
El comando devuelve False en los siguientes casos:
Este comando debe ser utilizado junto con . Le permite sincronizar el estado interno del objeto de formulario con la aplicación global. Básicamente, permite a su código manejar el caso donde el usuario hizo clic y empezó a mover algo dentro de una imagen objeto de formulario, y esta acción es interrumpida por un evento externo, como un cuadro de diálogo de alerta. En este caso, el estado interno del objeto puede ser suspendido de forma indefinida debido a que se espera un evento mouse up que no ocurrirá. Para abordar este problema, debe proteger el código de movimiento del ratón con un comando Is waiting mouse up lo que le asegura que es ejecutado en un contexto válido.
Usted desea que el usuario dibuje líneas en un área SVG. El nombre de la variable de área es vPictSvg:
Los eventos On Mouse Up, On Mouse Move y On Clicked han sido seleccionados para el objeto. El método de objeto contiene el siguiente código:
C_LONGINT($val1;$val2)
C_LONGINT(vLtracking) //bandera para el modo tracking
Case of
:(Form event=On Clicked)
If(Not(Contextual click) & Is waiting mouse up) //clic izquierdo únicamente
If((MouseX#-1) & (MouseY#-1)) //estamos en el objeto
vLtracking:=1 //estamos en modo tracking
LineRef:=SVG_New_line(svgRef;MouseX;MouseY;MouseX;MouseY;"gray";3) //crear una línea fantasma
SVG_SET_ID(LineRef;"ghostLine") //dar un id a la línea fantasma
vPictSvg:=SVG_Export_to_picture(svgRef)
End if
End if
:(Form event=On Mouse Move)
If(vLtracking=1)
If(Not(Is waiting mouse up)) //un event canceló el dibujo
SVG_CLEAR(LineRef) //eliminar la línea fantasma
vPictSvg:=SVG_Export_to_picture(svgRef) //guardar la línea real
vLtracking:=0 //detener el modo tracking
Else //el objeto está esperando por un mouse up
If((MouseX#-1) & (MouseY#-1))
SVG SET ATTRIBUTE(vPictSvg;"ghostLine";"x2";MouseX;"y2";MouseY;*)
End if
End if
End if
:(Form event=On Mouse Up)
If(MouseX=-1)
SVG GET ATTRIBUTE(vPictSvg;"ghostLine";"x2";MouseX)
End if
If(MouseY=-1)
SVG GET ATTRIBUTE(vPictSvg;"ghostLine";"y2";MouseY)
End if
SVG GET ATTRIBUTE(vPictSvg;"ghostLine";"x1";$val1) //obtener las coordenadas fanstamas
SVG GET ATTRIBUTE(vPictSvg;"ghostLine";"y1";$val2)
SVG_CLEAR(LineRef) //delete the ghost line
SVG_New_line(svgRef;$val1;$val2;MouseX;MouseY;"gray";3) //crear la línea actual
vPictSvg:=SVG_Export_to_picture(svgRef) //guardar la línea actual
vLtracking:=0
End case
Producto: 4D
Tema: Eventos de formulario
Número
1422
Creado por: 4D v16
Manual de lenguaje 4D ( 4D v16)
Manual de lenguaje 4D ( 4D v16.1)
Manual de lenguaje 4D ( 4D v16.2)
Manual de lenguaje 4D ( 4D v16.3)