Carlos's profileLIBs Gráfica para (x)Har...BlogListsNetwork Tools Help

Blog


    3/3/2009

    Eventos, um pouco mais

    O objetivo deste “post” é aprofundar um pouco mais o estudo de eventos, com um exemplo simples.

     

    A idéia é simples, quero colocar zeros (000) antes do numeral digitado, isso é interessante para chaves (índices).

     

    Para isso devo interagir com o evento ON LOSTFOCUS do objeto TEXTBOX, ou seja, “ao perder o foco” da “caixa de textos”.

     

    Vamos criar um formulário novo e colocar 2 Label e 2 TextBox

     

     

    * ---------------------- Inicio do código ---------------*

    * http://www.powerinformatica.com.br
    * Carlos Alberto Nunes Susviela
    * Origem: http://oohg-br.spaces.live.com/blog
    *
    * Estudando um pouco de eventos ( 2 )
    *
    #include "oohg.ch"

    Declare window FrmPrincipal    // Visivel em todo o sistema

    Function Main
        SET NAVIGATION EXTENDED     // Usa ENTER para troca de campos
                                    // quem vem do clipper vai gostar disso

        Define Window frmPrincipal ;
               Title "Estudando Eventos - 2 " ;
            WIDTH 640 HEIGHT 480       ;            // Tamanho da Janela
            Main               

               Define STATUSBAR
                  STATUSITEM "http://oohg-br.spaces.live.com/blog/" WIDTH   80
               End STATUSBAR

               *-------------------------------------------Label
                @ 46,31 LABEL lblCodigo ;
                WIDTH 120 ;
                HEIGHT 24 ;
                VALUE 'Código....:' ;
                FONT 'MS Sans Serif' ;
                SIZE         10

                @ 90,30 LABEL lblNome ;
                WIDTH 120 ;
                HEIGHT 24 ;
                VALUE 'Nome Cliente.:' ;
                FONT 'MS Sans Serif' ;
                SIZE 10

                *------------------------------------------- TextBox
                @ 41,163 TEXTBOX txtCodigo ;
                HEIGHT 24 ;
                WIDTH 120 ;
                Font 'MS Sans Serif' ;
                size 10 ;
                MAXLENGTH 6 ;
                ON LOSTFOCUS  ZerosToCodigo(6)       // Ao perder o foco executa
                                                     // a funcao que coloca zeros
                                                     // a esquerda do codigo

                @ 78,163 TEXTBOX txtNome ;
                HEIGHT 24 ;
                WIDTH 279 ;
                Font 'MS Sans Serif' ;
                size 10 ;
                MAXLENGTH 50

                *------------------------------------------- Button
               @ 380,500 BUTTON btnSair  ;
               ACTION  btnSairClick() ;
               WIDTH 80 HEIGHT 27 ;
               CAPTION "&Sair"    ;
               TOOLTIP 'Clique aqui para sair do Programa'

        End Window

     

        frmPrincipal.center()
        frmPrincipal.Activate()       // Aqui é onde, Realmente inicia o programa

    Return


    * Função a ser disparada quando for clicado o botão btnSair
    *-----------------------------------------------------------------------------*
    Function btnSairClick()
    *-----------------------------------------------------------------------------*

      if MsgYesNo("Deseja Sair do Sistema ?" , "Aviso...!" )
         FrmPrincipal.release                    // termina o formulario(libera)
      EndIf

    Return Nil


    * Função a ser disparada cada vez que o objeto TextoBox perde o foco (saiu)
    *-----------------------------------------------------------------------------*
    Function ZerosToCodigo(sTamanho)
    *-----------------------------------------------------------------------------*
        Local sCodigo := Alltrim(FrmPrincipal.txtCodigo.value)
        Local szeros := Replicate("0", sTamanho - Len(sCodigo))

        FrmPrincipal.txtCodigo.value := sZeros + sCodigo

    Return Nil
    * ---------------------- Fim do código -----------------*

     

    Conclusão: Como se pode perceber basta saber qual evento usar que podemos fazer muita coisa com essa lib.

     

    Exercícios:


    Ao perder o foco do TextBox onde se digita o nome do cliente, valide o mesmo para que não seja permitido deixar o campo vazio, ou seja force a digitação do nome do cliente.

    Dica: você vai precisar da propriedade “SetFocus” para colocar o cursor novamente no campo Nome do Cliente.

    Assim:  FrmPrincipal.txtCodigo.Setfocus

     

     

    Carlos Alberto Nunes Susviela

    www.PowerInformatica.com.br