Executando a validação do modo de edição via código fonte com a função X3WhenGet | Ti Responde 0192

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.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

Deixe uma resposta

Terminal de Informação