Entrada de dados com get

Projeto HwGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Entrada de dados com get

Mensagem por asimoes »

Exemplo:

Código: Selecionar todos

  
   nVlrUti:=APS01->VL_Uti1
   
   nVlrUti:=GetGui("Valor UTI","Entre com o valor da UTI:",nVlrUti,"@E 999.99",'xValor > 0','Deve ser informado um valor válido.')
   
   IF Empty(nVlrUti) .OR. APS01->VL_Uti1 = nVlrUti
      RETURN Nil
   ENDIF

Código: Selecionar todos

FUNCTION GetGui( cTitle, cText, xValue, cPicture, cValid,cMensValid)
LOCAL oModDlg, oFont:=HFont():Add( "MS Sans Serif", 0, - 13 )
LOCAL oIconInput  :=HIcon():AddResource("ICON_INPUT32")
LOCAL oIconOk     :=HIcon():AddResource("ICON_OK16")
LOCAL oIconCancela:=HIcon():AddResource("ICON_SAIR16") 
LOCAL lSairSemOk:=.F. 
PRIVATE xValor:=xValue, xOldValue:=xValue, oGet, lValida:=.F.   

   HB_Default(@cValid,'.T.')
   HB_Default(@cMensValid,'')
   
   DO WHILE .T.   
   
      INIT DIALOG oModDlg TITLE cTitle AT 0, 0 SIZE 300, 110 ;
           ICON oIconInput ;
           FONT oFont ;
           CLIPPER NOEXIT;
           STYLE DS_CENTER+ WS_POPUP + WS_VISIBLE + WS_CAPTION + WS_SYSMENU 
           
      
      @ 20, 10 SAY cText SIZE 260, 22
      
      @ 20, 35 GET oGet VAR xValue SIZE 260, 26 ;
                   STYLE WS_TABSTOP + ES_AUTOHSCROLL + WS_DLGFRAME ;
                   COLOR hwg_RGB(0,0,255) BACKCOLOR 16777172 ;
                   VALID {||xValor:=xValue} 
                   
               oModDlg:aControls[ 2 ]:Anchor := ANCHOR_TOPABS + ANCHOR_LEFTABS + ANCHOR_RIGHTABS
               
               oGet:ParsePict( cPicture, xValue )
      
       
      x1:=Int( oModDlg:nWidth / 2 ) - 90
      
      @ x1, 75 BUTTONEX "Ok" ID IDOK SIZE 80, 20 ICON oIconOk:handle ;
               ON CLICK {||IF(!ValidaX(cValid,cMensValid),oGet:SetFocus(),HWG_EndDialog())} ;
               TOOLTIP '' 
               
               oModDlg:aControls[ 3 ]:Anchor := ANCHOR_BOTTOMABS 
      
      @ x1 + 100,75 BUTTONEX "Cancelar" ID IDCANCEL SIZE 80, 20 ;
                    ICON oIconCancela:handle ;
                    ON CLICK {||lSairSemOk:=.T.,HWG_EndDialog()} ;
                    TOOLTIP "Clique aqui para cancelar."

               oModDlg:aControls[ 4 ]:Anchor := ANCHOR_RIGHTABS + ANCHOR_BOTTOMABS 
      
      ACTIVATE DIALOG oModDlg ON ACTIVATE { || IIF( ! Empty( xValue ), hwg_KEYB_EVENT( VK_END ), .T. ) }

      oFont:Release()
      
      IF !lValida
         xValue:=xOldValue
      ENDIF

      RELEASE xValor, xOldValue, oGet, lValida   

      EXIT
   ENDDO
RETURN xValue

FUNCTION ValidaX(cValid,cMensValid)
  lValida:=&cValid.
  IF !lValida
     hwg_MsgStop(cMensValid,"Atenção")
     oGet:VarPut(xOldValue)
     oGet:Refresh()
     hwg_Keyb_Event( VK_END )
  ENDIF
RETURN lValida
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Responder