No vídeo de hoje, vamos demonstrar em como validar o modo de edição de um campo diretamente via código fonte.
A dúvida de hoje, nos perguntaram, se seria possível testar se um campo pode ter seu conteúdo editável (através do X3_WHEN) direto via código fonte.
Pensando nisso, montamos um exemplo, onde vamos demonstrar a utilização da função X3WhenGet que realiza essa validação.
Segue abaixo o vídeo exemplificando:
E abaixo o código fonte desenvolvido:
//Bibliotecas
#Include "tlpp-core.th"
//Declaração da namespace
Namespace custom.terminal.youtube
/*/{Protheus.doc} User Function video0192
Exemplo de como testar o modo de edição direto via código fonte
@type Function
@author Atilio
@since 15/07/2024
@example custom.terminal.youtube.u_video0192()
@obs Foi utilizado RecLock com a SB1, mas não é recomendado fazer isso em tabelas padrões, esse foi apenas
um exemplo para demonstrar a função X3WhenGet
/*/
User Function video0192()
Local aArea := FWGetArea() As Array
Local cProductId := "" As Character
Local nOption := 4 As Numeric //3 = Inclusão; 4 = Alteração
//Solicita para o usuário informar o código
cProductId := FWInputBox("Informe o código do produto (B1_COD):")
//Tenta posicionar no cliente
DbSelectArea("SB1")
SB1->(DbSetOrder(1)) // B1_FILIAL + B1_COD
If SB1->(MsSeek(FWxFilial("SB1") + cProductId))
//Altera a variável em memória
INCLUI := .F.
//Valida se o campo de descrição pode receber informação
If X3WhenGet("B1_DESC", nOption)
RecLock("SB1", .F.)
SB1->B1_DESC := FWInputBox("Informe a Descrição do Produto:", Alltrim(SB1->B1_DESC))
SB1->(MsUnlock())
Else
FWAlertError("Campo B1_DESC não pode ser editável!", "Falha")
EndIf
Else
FWAlertError("Produto não encontrado!", "Falha")
EndIf
FWRestArea(aArea)
Return
Bom pessoal, por hoje é só.
Abraços e até a próxima.