Clipper On Line • Ver Tópico - Textbox com Validação
Mudar para estilo Clássico
Projeto MiniGui - Biblioteca visual para Harbour/xHarbour
Postar uma resposta

Textbox com Validação

25 Mar 2020 16:58

Pelo código que vc colocou, está simples ver o erro, quando vc usa Iif() deve ser assim :

IIF( faz a comparação, se comparação ok executa o que estiver aqui, senão executa o que estiver aqui )

Exemplo

IIF( vSexo == 'M', " Sexo Masculino ", " Sexo Feminino " )

No seu caso, vc não fez uma comparação no inicio, fez uma atribuição usando " := "

Abraço

Textbox com Validação

25 Mar 2020 19:55

MSDN escreveu:está simples ver o erro
num tem erro
vc entendeu errado
quero fazer na ultima verificacao do iif uma dupla execucacao de tarefa
sem precisa criar uma function pra resolver tudo
eh possivel?

Textbox com Validação

25 Mar 2020 23:54

syslink escreveu:
MSDN escreveu:está simples ver o erro
num tem erro
vc entendeu errado
quero fazer na ultima verificacao do iif uma dupla execucacao de tarefa
sem precisa criar uma function pra resolver tudo
eh possivel?


Syslink,

Veja se é isso que você quer:

Código:
IIF(MsgYesNo("Exemplo"), ResultadoPositivo(), {ResultadoNegativo1(), ResultadoNegativo2()})


Por favor, retorne se é isso mesmo, abraços.

Textbox com Validação

26 Mar 2020 20:03

Olá!
ONENTER iif(CONFIRMOU := F_MUDA_SENHA_HMG.TBmPASSWORD.value == F_MUDA_SENHA_HMG.TBaPASSWORD.value, F_MUDA_SENHA_HMG.Bt_1.setfocus,F_MUDA_SENHA_HMG.TBaPASSWORD.setfocus)


O teu exemplo é em MiniGUI, com a qual não tenho intimidade. Na HwGUI, sempre que codificamos ações relacionadas a eventos do formulário, o fazemos na forma de code blocks:
Código:
ON CLICK { || Acao() }

No caso do If imediato ( IIF() ), se mais de uma ação precisar ser executada, colocamos as ações entre parêntesis, separados por vírgula:
Código:
ON CLICK { || iif( ( CONFIRMOU := F_MUDA_SENHA_HMG.TBmPASSWORD.value() ) == F_MUDA_SENHA_HMG.TBaPASSWORD.value(), F_MUDA_SENHA_HMG.Bt_1.setfocus(), ( Mensagem( "Senha incorreta!" ), F_MUDA_SENHA_HMG.TBaPASSWORD.setfocus() ) }


Pessoalmente, acho que a boa prática é criar funções para tratamento dos eventos. Estes IIfs, dependendo da situação, vão crescendo e a leitura e manutenção deste tipo de código se tornam cada vez mais difícil, como já se percebe no código acima.

Textbox com Validação

26 Mar 2020 20:14

Codeblock é função.
Precisa testar, já não lembro direito a sintaxe:

Código:
ON CLICK { || ;
   IF ( CONFIRMOU := F_MUDA_SENHA_HMG.TBmPASSWORD.value() ) == F_MUDA_SENHA_HMG.TBaPASSWORD.value();
      F_MUDA_SENHA_HMG.Bt_1.setfocus();
   ELSE
      Mensagem( "Senha incorreta!" );
      F_MUDA_SENHA_HMG.TBaPASSWORD.setfocus();
   ENDIF;
   }

Textbox com Validação

26 Mar 2020 20:27

Aceitou isto:

Código:
PROCEDURE MAIN

   LOCAL bCode

   CLS
   bCode := { | A, B |
   IF A = B
      Chama1()
   ELSE
      Mensagem( "Senha incorreta!" )
      Chama2()
   ENDIF
   ? "teste"
   Inkey(0)
   RETURN NIL
   }
   Eval( bCode )

FUNCTION Chama1(); RETURN NIL
FUNCTION Chama2(); RETURN NIL
FUNCTION Mensagem(); RETURN NIL

Textbox com Validação

28 Mar 2020 23:25

muito complicado. melhor mesmo partir pra funcao q jah fiz e funciono.

Textbox com Validação

29 Mar 2020 13:10

Tudo bem que vc conseguiu fazer uma função que resolveu seu problema, porém, expor da forma como fez, não foi muito educado com todo mundo que tentou te ajudar ! Podia colocar um " Valeu " " Obrigado "

Textbox com Validação

12 Abr 2020 19:26

MSDN escreveu: não foi muito educado
sinto mto nao era a intensao de ser mau educado. brigadu a todos pela ajuda e forsa.
Postar uma resposta