No vídeo de hoje, vamos demonstrar em como deixar um campo obrigatório, pintando o fundo de vermelho.
Essa dúvida foi feita pelo Eduardo, onde ele perguntou se era possível ter um campo comum no dicionário (sem ser obrigatório), mas que via AdvPL, dependendo da condição, o campo ficasse obrigatório e deixasse o fundo em vermelho.
Então criamos uma tratativa no ponto de entrada MA020TDOK, onde se o estado for SP, os campos de email e home page serão obrigatórios.
E abaixo o código fonte desenvolvido para exemplificar:
//Bibliotecas #Include "TOTVS.ch" /*/{Protheus.doc} User Function MA020TDOK Ponto de Entrada na validação do Fornecedor ao clicar no Confirmar @type Function @author Atilio @since 01/09/2022 /*/ User Function MA020TDOK() Local aArea := FWGetArea() Local lRet := .T. Local cCSSCampo := "TGet { color: #000000; selection-background-color: #369CB5; background-color: #fff2f0; padding-left: 3px; padding-right: 3px; border: 1px solid #D3362C; border-radius: 3px; }tLabel{color: #000000;}" Local nAtual := 0 //Variáveis de controle dos objetos da tela Private oPai := GetWndDefault() Private aControles := oPai:aControls Private nAtuPvt := 0 //Se o Estado for SP If M->A2_EST == "SP" //Se não tiver preenchido o email ou a homepage If Empty(M->A2_EMAIL) .Or. Empty(M->A2_HPAGE) lRet := .F. Help(, , "Help", , "Falha ao validar o fornecedor!", 1, 0, , , , , , {"Verifique os campos de eMail e/ou HomePage"}) //Percorrendo os objetos criados da tela For nAtual := 1 To Len(aControles) nAtuPvt := nAtual //Se tiver variável e descrição If Type("aControles[nAtuPvt]:cReadVar") != "U" .And. Type("aControles[nAtuPvt]:cToolTip") != "U" //Somente se tiver conteúdo de TGet If ! Empty(aControles[nAtuPvt]:cReadVar) .And. ! Empty(aControles[nAtuPvt]:cToolTip) .And. 'M->' $ Upper(aControles[nAtuPvt]:cReadVar) //Se for o campo de email e ele estiver vazio -OU- Se for o campo de home page e ele estiver vazio If (Alltrim(aControles[nAtuPvt]:cReadVar) == "M->A2_EMAIL" .And. Empty(M->A2_EMAIL)) .Or. (Alltrim(aControles[nAtuPvt]:cReadVar) == "M->A2_HPAGE" .And. Empty(M->A2_HPAGE)) aControles[nAtuPvt]:SetCSS(cCSSCampo) EndIf EndIf EndIf Next EndIf EndIf FWRestArea(aArea) Return lRet
Bom pessoal, por hoje é só.
Abraços e até a próxima.