Olá galera, gostaria de um auxilio...seria possível em alguma user function da vida tornar um campo inativo de uma grid, como exemplo na linha de uma solicitação de compra, a partir de uma forma que valide o campo do lado se foi preenchido com a informação Y? E outro detalhe, caso esse mesmo campo que teria que validar fosse X, ele tornasse esse campo do lado ao invés de inativo como preenchimento obrigatório. Por acaso alguém sabe de alguma função ou forma de advpl..? Pois pelo CFG não valida certinho e estava nas tentativas de utilizar a validação de usuário do campo que vai ser obrigatório ou inativo para chamar a função.
OLá Tauani, nesse seria melhor usar o when do campo, por exemplo para habilitar o campo Loja do Fabricante (C1_FABRLOJ) somente se o código for preenchido(C1_FABRICA), no exemplo só verifiquei se está vazio, mas também poderia ser igualdade com outro valor
//adicionado no when do campo C1_FABRLOJ
iif(!empty(C1_FABRICA),.T.,.F.)
/*/{Protheus.doc} User Function MT110LOK
(long_description)
@type Function
@author Leandro Lemos
@since 15/03/2024
@version P12
@param param_name, param_type, param_descr
@return return_var, return_type, return_description
@example
(examples)
@see (https://tdn.totvs.com/pages/releaseview.action?pageId=6085445)
/*/
User Function MT110LOK()
Local cFabr := aCols[n][aScan(aHeader,{|x| AllTrim(x[2]) == 'C1_FABRICA'})]
Local cLoja := aCols[n][aScan(aHeader,{|x| AllTrim(x[2]) == 'C1_FABRLOJ'})]
Local lValido := .T.
if !Empty(cFabr) .and. Empty(cLoja)
MSGALERT( "Ao preencher o Fabricante o codigo da loja é obrigatório", "Atenção" )
lValido := .F.
endif
Return(lValido)
e se por acaso estivesse um especificidade em que o C1_FABRICA assim que recebesse C1_FABRICA = “X” o campo C1_FABRLOJ se tornaria obrigatório o preenchimento, ou seja, não ser vazio. Teria alguma outra forma de validar?
Ou seja, nessa mesma questão de deixar como inativo teria que também ter esse comportamento de obrigatório, seria possível no when ainda? pois ao tentar na user function o aCols não chega até o campo hihi
você pode adicionar um PE validando a linha, caso suas validações fiquem mais complexas, complementei na minha resposta