Página 1 de 2

Comando VALID não está funcionando

Enviado: 01 Ago 2012 11:37
por bencz
Bom, estou tentando fazer, com q na hora q o usuario chegar no textbox de senha, ele digitar a senha, e teclar enter, ele apareça uma messabox qualquer...entao, para isso, usei o comando VALID, mas, ele nao está funcionando como pretendia, o código q eu estou utlizando está abaixo...

Código: Selecionar todos

#include "hwgui.ch"

function start()
         INIT DIALOG oDlg TITLE "dsdsadsadsa" ;
         AT 0,-170 SIZE 416,114 NOEXIT CLIPPER ;
         STYLE WS_POPUP+WS_CAPTION+WS_SYSMENU

         @ 7,14 SAY oLabel1 CAPTION "Usuário:"  SIZE 63,19
         @ 18,44 SAY oLabel2 CAPTION "Senha:"  SIZE 52,19
         @ 64,11 GET oEdit1 VAR Usuario SIZE 343,22   MAXLENGTH 30
         @ 64,40 GET oEdit2 VAR mTSenha SIZE 344,22 ;
            VALID {|| hello()}

         @ 215,68 BUTTON oButton1 CAPTION "Ok"   SIZE 90,26 ;
              STYLE WS_TABSTOP   ;
              ON CLICK {|| oDlg:Close() }
         @ 312,68 BUTTON oButton2 CAPTION "Sair"   SIZE 90,26 ;
              STYLE WS_TABSTOP   ;
              ON CLICK {|| Sair() }

         ACTIVATE DIALOG oDlg
return nil

function hello()
         MessageBox(, "ola")
return nil
Grato pela ajuda

Comando VALID não está funcionando

Enviado: 01 Ago 2012 11:49
por sygecom
Todo VALID ou WHEN aguarda um retorno .T. ou .F. isso é desde o CLIPPER, e sua função HELLO está retornando NIL, altere para retornar .T. que vai funcionar.

Comando VALID não está funcionando

Enviado: 01 Ago 2012 11:52
por esbasso
MESSAGEBOX ??

NA HWGUI USE MSGINFO, MSGYESNO
MsgInfo( "hello")
Msginfo( cMessage [, cTitle] )
Msgstop( cMessage [, cTitle] )
Msgokcancel( cMessage [, cTitle] )
Msgyesno( cMessage [, cTitle] )
MsgBeep( [ nSound ] )
MsgExclamation( cMessage, [, cTitle ] )
MsgRetryCancel( cMessage, [, cTitle ] )

Comando VALID não está funcionando

Enviado: 01 Ago 2012 12:40
por bencz
Certo, mas estou querendo fazer com q quando eu aperte enter, ele feche o dialog:

....VALID {|| oDlg:Close() }

oDlg:CLose(), isso funcionaria com isso ?

Comando VALID não está funcionando

Enviado: 01 Ago 2012 12:44
por alaminojunior
Funcionaria, mas lembrando a orientação do Leonardo: as cláusulas VALID e WHEN sempre aguardam um .t. ou .f.

Comando VALID não está funcionando

Enviado: 01 Ago 2012 12:53
por esbasso
no caso especifico do GET EDIT O VALID e o WHEN tem por default o .T. caso não seja colocado

Comando VALID não está funcionando

Enviado: 01 Ago 2012 13:09
por bencz
Bom, mas, pq nao esta funcionando, estou usando a ultima revisão do SVN o.O
o SET KEY tb, parou de funcionar ;x

Comando VALID não está funcionando

Enviado: 01 Ago 2012 13:25
por esbasso
Tudo funciona
revise teu codigo e tuas libs

Comando VALID não está funcionando

Enviado: 01 Ago 2012 14:48
por bencz
Bom, talvez, nao esteja funcionando, pois, tirei da compilação da LIB, o activeX, pois, estava dando muitos erros na hora de compilar com o xHB....
na realidade... ele da erro no htmlcore.obj, e fala que nao pode dar build

Comando VALID não está funcionando

Enviado: 01 Ago 2012 14:53
por bencz
Tem como você passar a sua .lib ?

Comando VALID não está funcionando

Enviado: 01 Ago 2012 15:09
por esbasso
é própria do SVN

Comando VALID não está funcionando

Enviado: 01 Ago 2012 15:27
por bencz
Como fazer p/ funcionar o atalho usando o SET KEY, qnd estou com o cursor dentro de um RichEdit ?
Qnd estou com o cursor, dentro dos GETs, o atalho funciona, caso contrario, ou seja, dentro do RichEdit, o atalho nao funciona, como posso fazer ?

O código que usei para testar foi esse:

Código: Selecionar todos

#include "hwgui.ch"

FUNCTION Start

 LOCAL  vEdit1 := "", vEdit2 := "", vRichedit1
 LOCAL oEdit1, oEdit2, oRichedit1

  INIT DIALOG oDlg TITLE "Form1" ;
  AT 0,-130 SIZE 741,403 NOEXIT  ;
  STYLE WS_POPUP+WS_CAPTION+WS_SYSMENU+WS_SIZEBOX+DS_CENTER

  SET KEY 0,VK_F12 OF oDlg TO MsgInfo("dnsak")

  @ 73,88 GET oEdit1 VAR vEdit1 SIZE 80,22
  @ 86,173 GET oEdit2 VAR vEdit2 SIZE 80,22
  @ 292,92 RICHEDIT oRichedit1 TEXT vRichedit1 SIZE 190,120 ;
       STYLE ES_MULTILINE +WS_BORDER+ES_AUTOVSCROLL +WS_VSCROLL

  ACTIVATE DIALOG oDlg

RETURN oDlg:lresult

Comando VALID não está funcionando

Enviado: 01 Ago 2012 15:58
por esbasso
PARA O richedit faça assim

Código: Selecionar todos

@ 292,92 RICHEDIT oRichedit1 TEXT vRichedit1 SIZE 190,120 ;
	       STYLE ES_MULTILINE +WS_BORDER+ES_AUTOVSCROLL +WS_VSCROLL;
           ON OTHERMESSAGES {|This,msg,wParam,lParam| Processateclas( this, msg,wParam, lParam ) }

Código: Selecionar todos

FUNCTION  Processateclas( this, msg,wParam, lParam )

IF msg = WM_KEYDOWN  //quando pressionado
    if wParam = VM_ESCAPE  // AQUI PROCESSA SUAS TECLAS
      // SEU CODIGO
   ENDIF
ELSEIFmsg = WM_KEYUP  // quando solta a tecla
   //...   codigo
ENDIF

RETURN -1 // IMPORTANTE AQUI, SEMPRE TEM DE TER RETURN -1

Comando VALID não está funcionando

Enviado: 01 Ago 2012 17:55
por bencz
Feito (:
Muito obrigado (:

Ainda nao foi implementada a função, para ver se oque foi selecionado no RichEdit, já está com bold... dai, caso eu selecione, e clique em bold, ele volte para o normal....

Comando VALID não está funcionando

Enviado: 03 Ago 2012 14:59
por bencz
Bom, voltando ao assunto do tópico né :X

fiz o seguinte exemplo, no xdesigne...

Código: Selecionar todos

#include "hwgui.ch"
STATIC Thisform

FUNCTION as( p1, p2, p3, p4 )
 RETURN _as( p1, p2 ,p3 ,p4)

FUNCTION _as

 LOCAL  vEdit1 := "", vEdit2 := ""
 LOCAL oLabel1, oLabel2, oEdit1, oEdit2

  INIT DIALOG oDlg TITLE "Form1" ;
    AT 0,-130 SIZE 200,134 NOEXIT CLIPPER ;
     STYLE WS_POPUP+WS_CAPTION+WS_SYSMENU+WS_SIZEBOX+DS_CENTER
    Thisform := oDlg

   @ 18,16 SAY oLabel1 CAPTION "LaLa:"  SIZE 100,19
   @ 69,13 GET oEdit1 VAR vEdit1 SIZE 60,22 PICTURE "99999" VALID {|| MsgInfo("Ola mundo") }

   @ 18,46 SAY oLabel2 CAPTION "LARE:"  SIZE 100,19
   @ 69,43 GET oEdit2 VAR vEdit2 SIZE 60,22 PICTURE "99999" VALID {|| MsgInfo("Ola mundo") }


   ACTIVATE DIALOG oDlg


RETURN oDlg:lresult
E qnd eu termino de digitar os numeros no Edit, ele aparentemente nao valida... simplesmente, ele passa p/ o proximo Edit... tentei apertando enter, tab.... e nada ;x
Algum erro, por minha parte ?