Controles automaticos
Enviado: 25 Mar 2014 17:15
Você diz que dá um erro, mas não fala qual é o erro.Paulo_CPV escreveu:Toledo ainda está dando erro
Bom, você não passou qual é a função SetConfOFF, então vou presumir que seja a função que o Pablo postou na sua última mensagem.Toledo escreveu:mostre como você está montando o TEXTBOX e como está as funções de validação e SetConfOFF
Mas na função do Pablo (MiniGui Extended) faria apenas uma modificação:
Código: Selecionar todos
Function SetConfOFF(cCampo) //modifiquei esta linha
Local cFrmName := ThisWindow.Name
Local cCmpName := This.FocusedControl
Local x := GetControlIndex(cCmpName, cFrmName)
Local nMaxLength := _HMG_aControlRangeMax[x]
Local nInputMask := Len(_HMG_aControlInputMask[x])
If nInputMask > 0
nMaxLength := nInputMask
Endif
If !Empty(cCampo) //modifiquei esta linha
If nMaxLength == GetProperty(cFrmName,cCmpName,"CaretPos")
InsertTab()
Endif
Endif
Return NilComo observei na minha mensagem anterior, você teria que voltar a função de validação para ON ENTER.Toledo escreveu:volte a função de validação para ON ENTER
Em todos os exemplos que postei ou nos exemplos do Pablo, sempre utilizamos ON CHANGE (ou ON ENTER). Observe que tem um espaço depois de ON.
O que é estes dois pontos duplos antes do nome da função?Paulo_CPV escreveu:::ValidarData( This.Value )
A sua função de validação de data só vai funcionar corretamente se o mês da data for fevereiro (2) e o dia tem que ser 28 ou 29, conforme ano bissexto. Qualquer outra data, vai ocorrer um erro, mesmo que a data esteja certa.Paulo_CPV escreveu:IF nMes = 2
Bom, para que a validação e a função SetConfOFF() funcione, faça o seguinte:
1 - utilize a função SetConfOFF() que postei acima.
2 - altere a sua função de validação de data por esta:
Código: Selecionar todos
Function ValidarData( cData )
Local lRet:=.T.
if Empt(cData)
MSGINFO("Data digitada incorreta ! Por favor digite novamente.")
cFrmName := thiswindow.name
cCmpName := this.focusedcontrol
SETFOCUS &(cCmpName) OF &(cFrmName)
endif
Return (lRet)Observação: quando a data não for válida (por exemplo: 31/02/2014) o foco vai continuar no campo.
3 - no TextBox use:
Código: Selecionar todos
ON ENTER { || ValidarData(This.Value) }
ON CHANGE {|| SetConfOFF(This.Value) }Abraços,