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:

Code: Select all

cControlName:=This.FocusedControl
Ventana:

Code: Select all

cParentForm:=ThisWindow.Name

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.