Page 1 of 2
Ayuda con manejo de controles
Posted: Tue Dec 08, 2015 1:50 pm
by ndarz
Lo que quiero hacer es lo siguiente:
necesito saber como determinar que control esta en foco en una ventana.
Desde ya muchas gracias.
Re: Ayuda con manejo de controles
Posted: Tue Dec 08, 2015 2:53 pm
by pctoledo
Controle esta en foco:
Ventana:
Re: Ayuda con manejo de controles
Posted: Tue Dec 08, 2015 2:58 pm
by andyglezl
Hay un demo que quizá te sirva en:
\HMG\3.4\SAMPLES\Controls\Grid\GRID_40
Re: Ayuda con manejo de controles
Posted: Wed Dec 09, 2015 2:16 pm
by ndarz
Andres ese ejemplo es para el control dentro del grid, ya lo habia visto, igualmente gracias por responder voy a probar con This.FocusedControl que me sugiere toledo.
despues les cuento.
muchas gracias.
Re: Ayuda con manejo de controles
Posted: Wed Dec 09, 2015 3:26 pm
by ndarz
Toledo, me sabrias decir donde hay documentacion sobre esa sentencia, no encontre nada por ningun lado
Re: Ayuda con manejo de controles
Posted: Wed Dec 09, 2015 6:02 pm
by pctoledo
Mirar:
C:/hmg.3.4.2/DOC/data/Navigator.htm
- Properties
Re: Ayuda con manejo de controles
Posted: Wed Dec 09, 2015 6:19 pm
by andyglezl
ndarz, ese ejemplo consta de 2 partes, esta es la que te puede servir.
Code: Select all
#include "hmg.ch"
FUNCTION Main
DEFINE WINDOW Form_1 ;
AT 0,0 ;
WIDTH 400 ;
HEIGHT 300 ;
TITLE "Demo: Enable/Disable Window/Control Event" ;
ON GOTFOCUS Form_ONGOTFOCUS();
MAIN
@ 50, 50 BUTTON Button_1 CAPTION "Click" ACTION MsgInfo ("Hello")
@ 100, 50 BUTTON Button_2 CAPTION "Minimize" ACTION Form_1.Minimize
@ 150, 50 TIMEPICKER TimePicker_1 ON GOTFOCUS Control_ONGOTFOCUS ()
END WINDOW
CENTER WINDOW Form_1
ACTIVATE WINDOW Form_1
RETURN
PROCEDURE Form_ONGOTFOCUS
LOCAL i := GetLastActiveControlIndex ()
DISABLE WINDOW EVENT OF Form_1
MsgInfo ("ON GOTFOCUS: Form_1 " + IIF (i > 0," - Last Control Focused : "+_HMG_SYSDATA [2] [i],""))
ENABLE WINDOW EVENT OF Form_1
RETURN
PROCEDURE Control_ONGOTFOCUS
LOCAL i := GetLastActiveFormIndex ()
DISABLE WINDOW EVENT OF Form_1 // --> StopWindowEventProcedure ("Form_1", .T.)
DISABLE CONTROL EVENT TimePicker_1 OF Form_1 // --> StopControlEventProcedure ("TimePicker_1", "Form_1", .T.)
MsgInfo ("ON GOTFOCUS: TimePicker_1" + IIF (i > 0," - Last Form Focused : "+_HMG_SYSDATA [66] [i],""))
ENABLE CONTROL EVENT TimePicker_1 OF Form_1 // --> StopControlEventProcedure ("TimePicker_1", "Form_1", .F.)
ENABLE WINDOW EVENT OF Form_1 // --> StopWindowEventProcedure ("Form_1", .F.)
RETURN
Re: Ayuda con manejo de controles
Posted: Sat Dec 12, 2015 12:52 pm
by ndarz
Toledo, gracias por tu ayuda, use (cControlName:=This.FocusedControl) no se si la has usado, no da error asi que esta bien pero me encontre con el problema de que la variable me queda vacia, no se por que?
Andres, el ejemplo ese esta perfecto pero es para saber cual control deja el foco, funciona correctamente.
El problema que tenia era el siguiente, cuando abria una ventana el foco quedaba en un TextBox no editable, y tenia que quedar en el TextBox siguiente y no habia forma de que lo hiciera, pusira el SetFocus donde lo pusiera o como lo pusiera no daba foco en dicho TexBox, la solucion fue la siguiente, en el textbox no editable coloque en OnGotFocus el SetFocus hacia el otro TextBox.
Muchisimas gracias por su tiempo y ayuda.
Re: Ayuda con manejo de controles
Posted: Sat Dec 12, 2015 1:03 pm
by ndarz
No se si no la enrrede mucho en la explicacion, asi que aca esta lo que hice
Code: Select all
DEFINE TEXTBOX Text_cod
ROW 30
COL 200
WIDTH 60
HEIGHT 24
FONTNAME "Arial"
FONTSIZE 9
TOOLTIP ""
ONCHANGE Nil
ONGOTFOCUS nuevocliente.Text_Apellido.SetFocus //esto es lo que hice
ONLOSTFOCUS Nil
FONTBOLD .F.
FONTITALIC .F.
FONTUNDERLINE .F.
FONTSTRIKEOUT .F.
ONENTER Nil
HELPID Nil
TABSTOP .T.
VISIBLE .T.
READONLY .T.
RIGHTALIGN .F.
DISABLEDBACKCOLOR Nil
DISABLEDFONTCOLOR Nil
CASECONVERT NONE
MAXLENGTH 3
BACKCOLOR NIL
FONTCOLOR NIL
INPUTMASK Nil
FORMAT Nil
NUMERIC .T.
VALUE Nil
END TEXTBOX
Re: Ayuda con manejo de controles
Posted: Sat Dec 12, 2015 7:58 pm
by Roberto Lopez
ndarz wrote:
El problema que tenia era el siguiente, cuando abria una ventana el foco quedaba en un TextBox no editable, y tenia que quedar en el TextBox siguiente y no habia forma de que lo hiciera, pusira el SetFocus donde lo pusiera o como lo pusiera no daba foco en dicho TexBox, la solucion fue la siguiente, en el textbox no editable coloque en OnGotFocus el SetFocus hacia el otro TextBox.
Lo que tienes que hacer, es definir la propiedad TABSTOP del control como .F. de esta forma, nunca recibirá el foco.
////
You must define TABSTOP as .F., this way, the control will never receive the focus.