18

Ejemplo Mover Ventana (forma personalizada)

Neobook nos permite darle una forma personalizada (ventana) a nuestras aplicaciones, pero que hacemos si queremos hacer que se mueva haciendo click en determinado lugar?. Pues bien eso es lo que intento solucionar con este ejemplo.

Plugins utilizados:

Si queremos que el area para mover la ventana sea una imagen utilizaremos un objeto polygon, al cual le pondremos las siguientes acciones:

Mouse Enter (mouse entra sobre el objeto):

tmDragDropCreate
Setvar "[tmDragCursor]" "0"
Setvar "[tmDragPosition]" "2"
Setvar "[tmDragEnableEvents]" "1"
SetVar "[tmLBDAction]" "npEjecutarAccion [#34][#91]acc_b[#93][#34]"
SetVar "[tmLBUAction]" "npEjecutarAccion [#34][#91]acc_a[#93][#34]"

Con esto logramos que el plugin tmDragDropObj realice unas acciones al presionar el boton izquierdo del mouse (BotonIzqBajo) y cuando lo soltemos (BotonIzqArriba) (ambos eventos no nativos de neobook) completando así el click, pero éste no realiza acción alguna.

A su vez cada acción llamara a la función npEjecutarAccion del plugin NeoDouble, la cual realiza una acción de neobook cargada desde una variable (entre otras opciones de carga). En este caso, llamo a las acciones desde dos variables llamadas [acc_b] (acciones btizqbajo) y [acc_a] (acciones btizqarriba) que a su vez están dentro de unos texentrys.

Mouse Exit (mouse sale del objeto):

tmDragDropDestroy

Con esto eliminamos las acciones del plugin.

Contenido de la variable [acc_b] (en un textentry):

GetMousePos "[x_pos]" "[y_pos]"
Setvar "[x_m]" "[x_pos]"
Setvar "[y_m]" "[y_pos]"
TimerStart "TMueve" "1"

Con estas líneas obtenemos la posición del mouse al bajar el boton izq, y luego le da start al timer TMueve con intervalo de 1 milisegundo.

Contenido de la variable [acc_a] (en un textentry):

TimerStop "TMueve"

Esto solo para el timer.

Contenido del timer TMueve:

GetMousePos "[x_pos]" "[y_pos]"
Setvar "[x_pos_p]" "[x_pos]+[WindowLeft]"
Setvar "[y_pos_p]" "[y_pos]+[WindowTop]"
Setvar "[WindowLeft]" "[x_pos_p]-[x_m]"
Setvar "[WindowTop]" "[y_pos_P]-[y_m]"

Esto es nada más y nada menos lo que capta los datos del mouse (cada 1 milisegundo) y realiza el movimiento de la ventana.

Bueno, espero que se entienda 😛

Descarga del ejemplo:

  ejemplo_mover_ventana.rar (1,2 MiB, 1.674 hits)