Ayuda con manejo de controles
Moderator: Rathinagiri
Ayuda con manejo de controles
Lo que quiero hacer es lo siguiente:
necesito saber como determinar que control esta en foco en una ventana.
Desde ya muchas gracias.
necesito saber como determinar que control esta en foco en una ventana.
Desde ya muchas gracias.
Re: Ayuda con manejo de controles
Controle esta en foco:
Ventana:
Code: Select all
cControlName:=This.FocusedControl
Code: Select all
cParentForm:=ThisWindow.Name
Re: Ayuda con manejo de controles
Hay un demo que quizá te sirva en:
\HMG\3.4\SAMPLES\Controls\Grid\GRID_40
\HMG\3.4\SAMPLES\Controls\Grid\GRID_40
Andrés González López
Desde Guadalajara, Jalisco. México.
Desde Guadalajara, Jalisco. México.
Re: Ayuda con manejo de controles
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.
despues les cuento.
muchas gracias.
Re: Ayuda con manejo de controles
Toledo, me sabrias decir donde hay documentacion sobre esa sentencia, no encontre nada por ningun lado
Re: Ayuda con manejo de controles
Mirar:
C:/hmg.3.4.2/DOC/data/Navigator.htm
- Properties
C:/hmg.3.4.2/DOC/data/Navigator.htm
- Properties
Re: Ayuda con manejo de controles
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
Andrés González López
Desde Guadalajara, Jalisco. México.
Desde Guadalajara, Jalisco. México.
Re: Ayuda con manejo de controles
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.
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
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
- Roberto Lopez
- HMG Founder
- Posts: 4012
- Joined: Wed Jul 30, 2008 6:43 pm
Re: Ayuda con manejo de controles
Lo que tienes que hacer, es definir la propiedad TABSTOP del control como .F. de esta forma, nunca recibirá el foco.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.
////
You must define TABSTOP as .F., this way, the control will never receive the focus.
Regards/Saludos,
Roberto
(Veritas Filia Temporis)
Roberto
(Veritas Filia Temporis)