SABER SI SE HA PULSADO UN BOTON O CONTROL

HMG en Español

Moderator: Rathinagiri

Post Reply
User avatar
SALINETAS24
Posts: 200
Joined: Tue Feb 27, 2018 3:06 am
DBs Used: DBF
Has thanked: 2 times
Been thanked: 5 times

SABER SI SE HA PULSADO UN BOTON O CONTROL

Post by SALINETAS24 » Thu Jul 12, 2018 11:52 am

Hola a todos, necesito saber cuando el usuario pulsa un Boton, estoy haciendo esto pero me falla.
La linea del * cuando compilo, dice que la Variable _HMG_acontrolHandle no existe, supongo que será por un tema del HMG y del MINIGUI.
Hay alguna forma de saber cual será el próximo campo donde ira con el raton el usuario.
Gracias.

Code: Select all



@ 390,15  TEXTBOX Get_1 WIDTH 80 VALUE aField[3] MAXLENGTH 10 FONT gFont SIZE gSize;
					ON LOSTFOCUS VER()

STATIC FUNCTION VER()
	LOCAL N:= GetNextDlgTabItem (GetActiveWindow (), GetFocus (), .f.)
*	LOCAL i:= Ascan (_HMG_aControlHandle, N) 
	LOCAL i:= ASCAN ( _HMG_SYSDATA [3] ,  N )
	MSGBOX( _HMG_SYSDATA [1] [i])
RETURN


User avatar
SALINETAS24
Posts: 200
Joined: Tue Feb 27, 2018 3:06 am
DBs Used: DBF
Has thanked: 2 times
Been thanked: 5 times

Post by SALINETAS24 » Fri Jul 13, 2018 5:52 pm

Hola otra vez. Ya está resuelto. Es un poco chapucero, pero ya puedo saber si se pulso el boton y así ya tengo el control sobre el ON ENTER y el ON LOSTFOCUS y así por ejemplo no se podrá cambiar el foco si el campo no está OK.
Como vereis utilizo la variable _HMG_SYSDATA[191] que nos devuelve el valor de la fila donde se pulso el raton, en mi caso como solo tengo un boton en esa fila es mas que suficiente. Si necesitáis precisar más tenemos la _HMG_SYSDATA[192] que nos devuelve el valor de la Columna.

El caso es que cuando voy a cambiar el foco, por que el usuario a tocado el ratón.., veo primero si lo que ha pulsado es el botón que quiero controlar.

Una cosa, he visto que si el ratón se mueve rápido, el valor que devuelve la función en ocasiones no guarda ningún parecido con la realidad...., pero bueno de momento ya tenemos el control
Sl2

Code: Select all

ON LOSTFOCUS (IF(_HMG_SYSDATA [ 191 ]>506 .AND. _HMG_SYSDATA [ 191 ]<545,lSalir:=.T.,nil),;					 
  IF(lSalir,nil,IF(lCtaOk,nil,This.SetFocus)))
  

User avatar
andyglezl
Posts: 1028
Joined: Fri Oct 26, 2012 7:58 pm
Location: Guadalajara Jalisco, MX
Has thanked: 21 times
Been thanked: 42 times
Contact:

Post by andyglezl » Sat Jul 14, 2018 5:02 pm

Hola a todos, necesito saber cuando el usuario pulsa un Boton
( Defines un TEXTBOX y hablas de pulsar un BOTON ??? )

No me queda claro tu forma de querer manejar las cosas y tal vez me equivoque,
pero quizá esto es lo que quieres.

Code: Select all

		@ 10,10 TEXTBOX Text_1 ;
			VALUE 123 ;
			TOOLTIP 'Numeric TextBox' ;
			NUMERIC ;
			MAXLENGTH 5 ;
			RIGHTALIGN ;
			ON LOSTFOCUS if ( This.Value < 100 , This.SetFocus , Nil)
Andrés González López
Desde Guadalajara, Jalisco. México.

User avatar
SALINETAS24
Posts: 200
Joined: Tue Feb 27, 2018 3:06 am
DBs Used: DBF
Has thanked: 2 times
Been thanked: 5 times

Post by SALINETAS24 » Sun Jul 15, 2018 1:07 am

PANTALLA.png
PANTALLA.png (75.9 KiB) Viewed 251 times
Hola Andrés y gracias por interesarte.
Ya lo tengo controlado, y lo que quería es emular el VALID del clipper.
Al programar en OBJETOS el usuario puede navegar libremente por los campos, pero en el caso que me ocupa tengo un campo que es obligatorio.
Veras, imaginate que tienes varios TEXTBOX y el primero de ellos pide un código y es obligatorio el tenerlo.
Con ON ENTER lo tenemos parcialmente controlado, con ON LOSTFOCUS casí también.
Pero que pasa si tienes un BUTTON para cancelar el proceso..., es un follón. Se que pinchando la "X" se cierra pero tampoco me sirve.

En mi caso el TEXTBOX en cuestión pide un numero de cuenta de 10 dígitos con una serie de peculiaridades.

1/ Si esta en blanco y el usuario pulsa ENTER se le muestra una ventana con los registros ya creados de cuenta para que seleccione una.
2/ Si el usuario introduce por ejemplo el código 1.1 el sistema completa, modifica y presenta 1000000001, osea rellena con ceros. Si el numero introducido es el 431.99 el sistema completa, modifica y presenta 4310000099.
3/ Acto seguido comprueba que el código existe, si .t. , pone el nombre y pasa al siguiente TEXTBOX en caso contrario se llama al programa de altas y permite su incorporación.
4/No puede avanzar al siguiente TEXTBOX si la cuenta no es correcta
5/y para terminar si se pulsa el botton CANCELAR.., poder cancelar la introduccion y regrasar al GRID de donde procede.

Creo que he puesto la pantalla y lo dicho gracias por contestar.

Post Reply