Eu tenho uma função de validação em um controle TEXTBOX que valida se o usuário pressionou ENTER ele verifica se o conteúdo é em branco se for vazio o conteúdo mostra uma mensagem para o usuário digitar novamente.
Mas isto não está acontecendo, pois ele não permanece no foco no TEXTBOX correspondente, ele está indo para o próximo TEXTBOX. O que pode ser isto?
FUNCTION ValidaCampo( cCampo )
LOCAL lRet:=EMPTY( cCampo )
IF lRet
MSGBOX("Campo não pode ser em branco !")
Form_1.Text_1.SetFocus
ENDIF
RETURN (!lRet)
As alterações acima vão funcionar corretamente se você estiver usando o comando SET NAVIGATION EXTENDED no início do seu programa.
Obs.: no seu exemplo na mensagem anterior o setfocus está sendo feito em Texbox_1, mas o nome que você definiu no objeto TEXTBOX é Text_1. Tome cuidado com isto.
Toledo muito obrigado por mais uma vez me dar uma orientação, deu certo as modificações que você me passou, mas agora se eu quiser por esta função em vários controles TEXTBOX o que eu devo fazer para que de certo para o meu formulário inteiro?
#include "minigui.ch"
Function Main()
SET NAVIGATION EXTENDED
DEFINE WINDOW Form_1 ;
AT 0,0 ;
WIDTH 400 HEIGHT 300 ;
TITLE 'Exemplo de Controle de Focus' ;
MAIN
DEFINE LABEL Label_1
ROW 10
COL 10
WIDTH 60
VALUE 'Campo 1:'
END LABEL
DEFINE TEXTBOX Text_1
ROW 10
COL 70
WIDTH 180
ON ENTER {|| ValidaCampo(This.Value) }
END TEXTBOX
DEFINE LABEL Label_2
ROW 38
COL 10
WIDTH 60
VALUE 'Campo 2:'
END LABEL
DEFINE TEXTBOX Text_2
ROW 38
COL 70
WIDTH 180
ON ENTER {|| ValidaCampo(This.Value) }
END TEXTBOX
DEFINE LABEL Label_3
ROW 66
COL 10
WIDTH 60
VALUE 'Campo 3:'
END LABEL
DEFINE TEXTBOX Text_3
ROW 66
COL 70
WIDTH 180
ON ENTER {|| ValidaCampo(This.Value) }
END TEXTBOX
END WINDOW
Form_1.Center
Form_1.Activate
Return Nil
************************************
FUNCTION ValidaCampo( cCampo )
LOCAL lRet:=EMPTY( cCampo ), cFrmName, cCmpName
IF lRet
MsgInfo("Campo não pode ser em branco !","Preenchimento Inválido")
cFrmName := thiswindow.name
cCmpName := this.focusedcontrol
SETFOCUS &(cCmpName) OF &(cFrmName)
ENDIF
RETURN (!lRet)