;** UserCon ********************************************************************
;*  Conexoes ao Sistema                                                        *
;*******************************************************************************
;Autor           : Vise Informatica (VISERP)
;Desenvolvido    : 09/05/2005 por Anivel Augusto Rodrigues
;Ultima Alteracao: 06/01/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes
;Ultima Alteracao: 18/03/2007 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes
;Ultima Alteracao: 04/01/2011 por Bruno Carvalho
;Motivo Alteracao: Ajustes Novo Layout de Teclas 
;Ultima Alteracao: 09/05/2011 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes wait_pagina2 e pagina2
;Ultima Alteracao: 14/04/2012 por Bruno Carvalho
;Motivo Alteracao: Add lista na rotina de verifica‡Æo/visualiza‡Æo de usuarios 
;Ultima Alteracao: 14/04/2012 por Bruno Carvalho
;Motivo Alteracao: Add ¡ndice para visualiza‡Æo dos registros por Ordem Alfab‚tica 
;Ultima Alteracao: 10/05/2012 por Bruno Carvalho
;Motivo Alteracao: Ajustes Verifica_Usuario2()
;Ultima Alteracao: 06/03/2013 por Anivel Augusto Rodrigues
;Motivo Alteracao: Ajustes Verifica_usuario(), Monta_Lista_Usuarios()

;*******************************************************************************
;* Rotina Wait p/ Pagina()                                                     *
;*******************************************************************************
proc wait_pagina2(triggertype,event,cyclenumber)
private ncampo,nrec

If triggertype="TOUCHRECORD" And Event["TYPE"]="MOUSE"
   Then Return 1
EndIf

If Event["TYPE"]="KEY" And triggertype="EVENT"
   Then Switch
          Case event["KEYCODE"]=-94:
               MSG=    "      Esc= Voltar                                                //"
               MSG=MSG+"       F4= Usu rios conectados no momento                        //"
               MSG=MSG+"       F5= Limpar lista de conexäes                              //"
               MSG=MSG+"      Del= Seleciona registro p/ excluir                         //"
               MSG=MSG+"   Ctrl+Z= Localizar registro                                    //"
               MSG=MSG+"    Alt+Z= Localizar pr¢ximo registro                            // //"

               MSG=MSG+"     Home= primeiro registro     Up"+Chr(25)+"= registro anterior          //"
               MSG=MSG+"      End= £ltimo registro     Down"+Chr(24)+"= Pr¢ximo registro           //"
               MSG=MSG+"  Page Up= P gina anterior     * Ctrl+Page Up                    //"
               MSG=MSG+"Page Down= Pr¢xima p gina      * Ctrl+Page Down                  // //"
               
               MSG=MSG+"* Para localizar r pido bastar teclar no campo desejado! //"
               MSG=MSG+"       BackSpace= Limpa um caracter/localiza r pido      //"
               MSG=MSG+"  Ctrl+BackSpace= Limpar/localiza r pido                 // //"
               MSG=MSG+"  Ctrl+F1= Ajuda/Teclas [?]                                       "
               MsgHelp("Teclas/Fun‡”es",MSG)
               return 1
          Case event["KEYCODE"]=Asc("F35") Or
               event["KEYCODE"]=Asc("F1")  Or
               event["KEYCODE"]=Asc("F6")  Or
               event["KEYCODE"]=Asc("F7")  Or
               event["KEYCODE"]=Asc("F8")  Or
               event["KEYCODE"]=Asc("F9")  Or
               event["KEYCODE"]=Asc("F10") Or
               event["KEYCODE"]=Asc("F11") Or
               event["KEYCODE"]=Asc("F12") Or
               event["KEYCODE"]=Asc("ENTER") Or
               event["KEYCODE"]=-31        Or
               event["KEYCODE"]=-45        Or        
               event["KEYCODE"]=6 :        
               return 1
          Case Event["KEYCODE"]=Asc("ZOOM"):
               PESQUISA()
               prompt TEXTO_LOCATE
               return 1
          Case Event["KEYCODE"]=Asc("ZOOMNEXT"):
               PESQUISACON()
               return 1

          Case Event["KEYCODE"]=Asc("ESC"):
               TECLA_ATIVADA="ESC"
               Return 2
          Case Event["KEYCODE"]=Asc("F3"):
               TECLA_ATIVADA="F3"
               Return 2
          Case Event["KEYCODE"]=Asc("F4"):
               TECLA_ATIVADA="F4"
               Return 2
          Case Event["KEYCODE"]=Asc("F5"):
               TECLA_ATIVADA="F5"
               Return 2
          Case Event["KEYCODE"]=Asc("DEL"):
               If Not IsLockRecord()
                  Then TECLA_ATIVADA="DEL" 
                       Return 2
               EndIf
               Return 1

          Case Event["KEYCODE"]=Asc("DOWN"):
               If SubStr(tpform,1,2)="MR"
                  Then If Not AtLast()
                          Then nrec=recno() 
                               ncampo=Field()
                               Down
                               If recno()=nrec
                                  Then Down
                               EndIf   
                               moveto field ncampo
                               Return 1
                          Else If tpform="MR"
                                  Then Return 2
                                  Else Return 1
                               EndIf
                       EndIf
                  Else Right
               EndIf
               Return 1
          Case Event["KEYCODE"]=Asc("PGUP") Or
               Event["KEYCODE"]=Asc("PGDN"):
               If npages()=1
                  Then ncampo=Field()
                       KeyPress Event["KEYCODE"]
                       moveto field ncampo
                  Else KeyPress Event["KEYCODE"]
               EndIf        
               return 1
          Case Event["KEYCODE"]=Asc("UP"):
               If SubStr(tpform,1,2)="MR"
                  Then nrec=recno() 
                       ncampo=Field()
                       Up
                       If recno()=nrec
                          Then Up
                       EndIf   
                       moveto field ncampo
                  Else Left
               EndIf
               Return 1

          Case Event["KEYCODE"]=Asc("CTRLBACKSPACE"):
               TEXTO_LOCATE=""
               prompt TEXTO_LOCATE
               
               Return 1
          Case Event["KEYCODE"]=Asc("BACKSPACE"):
               If Field()<>FIELD_LOCATE
                  Then FIELD_LOCATE=Field()
                       TEXTO_LOCATE=""
                       prompt TEXTO_LOCATE
               Endif        

               TEXTO_LOCATE=SubStr(TEXTO_LOCATE,1,Len(TEXTO_LOCATE)-1)
               prompt TEXTO_LOCATE
               
               If Not IsBlank(TEXTO_LOCATE)
                  Then Zoom Select TEXTO_LOCATE+".."
               EndIf   
               
               Return 1
          Case (Event["KEYCODE"]>=32 And Event["KEYCODE"]<=125):
               If Field()<>FIELD_LOCATE
                  Then FIELD_LOCATE=Field()
                       TEXTO_LOCATE=""
                       prompt TEXTO_LOCATE
               Endif        

               TEXTO_LOCATE=TEXTO_LOCATE+UPPER(Chr(Event["KEYCODE"]))
               prompt TEXTO_LOCATE
               Zoom Select TEXTO_LOCATE+".."

               Return 1

          Case Event["KEYCODE"]=Asc("CTRLBACKSPACE"):
               TEXTO_LOCATE=""
               prompt TEXTO_LOCATE
               
               Return 1
          Case Event["KEYCODE"]=Asc("BACKSPACE"):
               If Field()<>FIELD_LOCATE
                  Then FIELD_LOCATE=Field()
                       TEXTO_LOCATE=""
                       prompt TEXTO_LOCATE
               Endif        

               TEXTO_LOCATE=SubStr(TEXTO_LOCATE,1,Len(TEXTO_LOCATE)-1)
               prompt TEXTO_LOCATE
               
               If Not IsBlank(TEXTO_LOCATE)
                  Then Zoom Select TEXTO_LOCATE+".."
               EndIf   
               
               Return 1
          Case (Event["KEYCODE"]>=32 And Event["KEYCODE"]<=125):
               If Field()<>FIELD_LOCATE
                  Then FIELD_LOCATE=Field()
                       TEXTO_LOCATE=""
                       prompt TEXTO_LOCATE
               Endif        

               TEXTO_LOCATE=TEXTO_LOCATE+UPPER(Chr(Event["KEYCODE"]))
               prompt TEXTO_LOCATE
               Zoom Select TEXTO_LOCATE+".."

               Return 1

          Case Event["KEYCODE"]=-33:

               Echo Normal
               Echo Off
               ShowPopup " Fun‡”es " CENTERED
                "F4 L~i~star    ":" Lista de conectados no momento   " :"F4",
                "F5 ~L~impar    ":" Limpar registro de conexäes      " :"F5",
                "~C~ancelar     ":" Cancelar a Opera‡„o              " : "CANCELAR"
               EndMenu
               To MenuVar
               Echo Off
               
               If MenuVar="CANCELAR" or MenuVar="Esc"
                  Then Return 1
                  Else TECLA_ATIVADA=MenuVar
                       Return 2
               EndIf                                         
          OtherWise:
              KeyPress Event["KEYCODE"]
              return 1
      EndSwitch
endif

return 0

endProc

;*******************************************************************************
;*  ROTINA PARA PAGINACAO DE TABELA EM FORM                                    *
;*******************************************************************************
Proc Pagina2()

While True

  ImageRights ReadOnly
  SetaCorRegistro("Paginar")
  
  msgcampo =""
  Prompt ""
  SpeedBar "["+Chr(254)+"]"    :"ESC",
           "~Fun‡”es~"         :-33,
           "~Ficha/Lista"      :"F3",
           "~Excluir~"         :"DEL",
           "~Localizar~"       :"ZOOM",
           "~Loc~|"+Chr(16)    :"ZOOMNEXT",
           "~?~"               :-94,
           "|"+Chr(17)         :"HOME",
           Chr(17)             :"PGUP",
           Chr(16)             :"PGDN",
           Chr(16)+"|"         :"END"
  
  FIELD_LOCATE=Field()
  TEXTO_LOCATE=""
  
  TECLA_ATIVADA=""
  
  wait workspace
    proc "wait_pagina2"
    trigger "ALL"
    Message "ALL"
    Key "ALL"
  endwait
  ClearSpeedBar
  
  PegaPosForm()
  SetaCorRegistro("Editar")
  
  Switch
   Case TECLA_ATIVADA = "ESC" : 
     QuitLoop
   Case TECLA_ATIVADA = "F3"  :
     If OP_FORM="F"
        Then PickForm "1"
             OP_FORM="1"
             TpForm="MP"
        Else PickForm "F"
             OP_FORM="F"
             TpForm="MR"
     EndIf
   Case TECLA_ATIVADA = "F4"  : 

        Do_It!
 
        USERCON=True        
        If Verifica_Usuario() Then Mensagem("Somente vocˆ usando o sistema !") Endif       
        
        CoEdit "LogNet"
        PickForm OP_FORM
        ImageRights ReadOnly

   Case TECLA_ATIVADA = "F5"  :
     If Checa_Supervisor()
        Then ConfGeral("Deseja realmente excluir todas os registros de conex”es ?")
             If OK="S"
                 Then ImageRights
                      While RecordStatus("New")=False
                        If Not IsLockRecord()
                           Then Del
                        EndIf
                      EndWhile
             EndIf
     EndIf
   Case TECLA_ATIVADA = "DEL" : 
     If Checa_Supervisor()
        Then ConfGeral("Deseja realmente excluir este registro da conex„o ?")
             If OK="S"
                Then ImageRights
                     Del
                Else UnLockRecord     
             EndIf
        Else UnLockRecord     
     EndIf
  EndSwitch
EndWhile
ImageRights
EndProc

;*******************************************************************************
;* Lista_Dialog                                                                *
;*******************************************************************************
Proc Lista_Dialog(Disparo,Campo,Evento,Elemento)
Temp=True
MSG_CAMPO=""
                                    
TECLA=""
If Disparo="OPEN"  Then AoCriarShowDialog() EndIf
If Disparo="EVENT" And Evento["Type"]="KEY" Then
   Switch
     Case Evento["KeyCode"] =   9: Temp=False
     Case (Evento["KeyCode"] <= -104 And Evento["KeyCode"] >= -113) Or
           Evento["KeyCode"]  = -139 Or  Evento["KeyCode"]  = -140:
           SYS_TECLA_ACIONADA=Evento["KeyCode"]
           Seta_Tecla_Acionada()
           CancelDialog
     Case Evento["KeyCode"] =  27:
          Temp=False
          Switch
            Case Campo="TG_Registro"  : CancelDialog
            Case Campo="YES"          : Campo="TG_Registro"
          EndSwitch
     Case Evento["KeyCode"] = 13:
          Temp=False
          If Checa_TAG()
             Then Switch
                    Case Campo="TG_Registro": Campo="YES"
                  EndSwitch
          EndIf                     
   EndSwitch 
EndIf
Switch  
  Case Campo="YES":
     MSG_CAMPO="Retornar"
EndSwitch

Monta_Prompt(MSG_CAMPO,TECLA)
Return Temp
EndProc

;*******************************************************************************
;* Rotina Principal                                                            *
;*******************************************************************************
AutoLib="\\Sistemas\\Cadastro\\Bibliot,\\Sistemas\\Cadastro\\Bib_Show"

CoEdit NoWindow "LogNet"
Moveto [Nome]
OrderTable {IndName}

PickForm "F"
OP_FORM="F"
TpForm="MR"
PAGINA2()
Do_It!
ClearAll

Release Vars All
Release Procs All
