@likiliki: a ver si entendí bien, al hacer click en el botón “Accion 1” se ejecuta un proceso y después tiene que volver al control que tenía el foco? Si es así podés hacer uso del hecho de que en e When
de un control (el botón en este caso) todavía no se actualizó ThisForm.ActiveControl
, así que referencia al control que tenía el foco con anterioridad.
Esto se usaría así:
WITH NEWOBJECT("xForm")
.Show(1)
ENDWITH
RETURN
DEFINE CLASS xForm AS Form
ADD OBJECT txt01 AS TextBox WITH Left = 10, Top = 10, Value = "uno"
ADD OBJECT txtDedic AS TextBox WITH Left = 10, Top = 30, Value = "Dedicación"
ADD OBJECT txt03 AS TextBox WITH Left = 10, Top = 50, Value = "tres"
ADD OBJECT txt04 AS TextBox WITH Left = 10, Top = 70, Value = "cuatro"
ADD OBJECT cmdAccion1 AS CommandButton WITH Left = 10, Top = 100, Caption = "Accion 1", AutoSize = .T.
ADD OBJECT cmdAccion2 AS CommandButton WITH Left = 100, Top = 100, Caption = "Accion 2", AutoSize = .T.
PROCEDURE cmdAccion1.When
This.AddProperty("LastActiveControl", ThisForm.ActiveControl)
ENDPROC
PROCEDURE cmdAccion1.Click
MESSAGEBOX("Proceso ejecutado", 0, "Texto")
This.LastActiveControl.SetFocus()
ENDPROC
ENDDEFINE
***
HTH
Mario