/*
Doações: NOVA CONTA
Contribua depositando $0.50, $1.00, $2.00, $5.00, $10.00, $20.00, $50.00 ou $100.00 na conta:
País: Brasil
Banco: Caixa Econômica Federal (CEF)
Agência: 0014
Conta: 000830215249-6
Tipo de Operação: 013
Obrigado!
*/
//////////////////////////////////////////////////////////////////////////////
///////////////////////// Banco de Dados Gˆnius //////////////////////////////
//////////////////////////////////////////////////////////////////////////////
/*
Programa: Banco de Dados Gˆnius
Projeto & Programador: Giuliano Menezes
Data: 25/11/1998 - //
Fun‡äes:
Este programa permite criar e alterar Bancos de Dados conforme
nescidades, assim como a Entrada de Dados e ImpressÆo de relat¢rios.
Tamb‚m se pode definir dados do tipo f¢rmulas, permitindo o acesso
ao conte£do de outros campos atrav‚z do r¢tulo dos mesmos, usando em
expressäes aritim‚ticas ou l¢gica. E fun‡äes que permitem vincular
dois Banco de Dados.
O sitema de pesquisa em campo(s) com registros ordenado é um variação
da pesquisa
binária, chamei de pesquisa binária 3 pontos, no qual faz
verifição simutânio do primeiro, do último e do registro do meio. Almen-
tando a eficiência da pesquisa binária em três vezes. É mais rápido guan-
do o dado inexistente está na ordem inferior ao primeiro registro ou
superior último registro, no qual a rotina de perquisa é iterrompida
imeditamente sem fazer verificações desnecessárias.
*/
//////////////////////// Sistema Editor de Texto /////////////////////////////
//Do EditTxt
/////////////////////////// Sistema de Planilha //////////////////////////////
//Do SistPlan
//////////////////////// Definido Vari veis do Sistema ///////////////////////
//Do VrvlDsc
//////////////////////// Exibindo Cont£do de Vari veis ///////////////////////
//Do ExibCont
/////////////////////// Procdimentos e Fun‡äes Primarios /////////////////////
//Do PFPrimar
//////////////////////// Entrada de Dados por Tabela /////////////////////////
//Do EDTabela
///////////////////// Entrada de Dados por Janela-Di logo ////////////////////
//Do JanlDial
////////////////////////// Navegador de Disco R¡gido /////////////////////////
//Do NavegDR
///////////////////////// Sistema de Bamco de Dados //////////////////////////
//Do SistemBD
///////////////////////// Sistema de Sa¡da de Dados //////////////////////////
//Do SistemSD
///////////////////////////// Interfece de Menu //////////////////////////////
//Do InterMen
/////////////////// Defini‡Æo do Ambiente de Sistema /////////////////////////
//SetCancel( .F.)
Clear TypeAhead
Set Cursor Off
Set ScoreBoard Off
Set Confirm On
Set Century On
Set Date British
ReadInsert(.T.)
/////////////////// Vari veis do Sistema Salvos em Disco /////////////////////
// Bancos de Dados abertos
ARQ_ATUAL := 0
_NAA := 0
Private ArqCam_m := {}
// Relat¢rio
NumDispSaid := PortSaid := PortSaid_V := 1
NomArquRlt := ""
ColPapel := 82
LinPapel := 68
ImprPagina := ImprData := ImprNumReg := "L"
MargDireit := MargEsquer := MargSuper := MargInfer := 1
FormContin := .T.
AlinhTitul := "C"
// Resolu‡äes e Cores tela
ENTR_COR_FUN := " W+/G "
JANE_COR_FUN := " W+/BG "
JanelAvis_Cor := " W+/RB "
SECUN_COR := " B/W "
N_FOC_ENTR_COR := " GR+/W "
COR_MENU_ENTR_FOC := " W+/N "
PRIM_LET_COR := " G+/B "
ResolAtual := 3
// Tipos Variados
IDSistema := ""
RegisLicen := Nil
TipoLicen := 8
DiretProgam := GetEnv( "BDG")
DiretOrigem := ""
SisConAce := .F.
CpSCaminho := "A:\"
LargInd := 5
//<-1////////////////// Carregando Vari veis do Disco ////////////////////////
If Empty( DiretProgam)
DiretProgam = "\"+ CurDir() +"\"
EndIf
If File( DiretProgam +"Sistema.Cnf")
CarregVar( DiretProgam)
Else
SalvVar( DiretProgam)
EndIf
/*/
DiretProgam = "D:\"+ CurDir() +"\"
? DiretProgam
Inkey( 0)
SalvVar( DiretProgam)
*/
If Right( DiretProgam, 1) # "\"
DiretProgam += "\"
EndIf
/////////////////////// Configurando Anbiente do Sistema /////////////////////
Private ResolTela := { 25, 33, 43, 50 }
_PequCInt := .F.
CorOriginal := SetColor()
Private semana[7]
semana[1] :="Dom."
semana[2] :="Seg."
semana[3] :="Ter."
semana[4] :="Quar."
semana[5] :="Quin."
semana[6] :="Sex."
semana[7] :="Sab."
Private DriveOpc[ 15, 1 ]
DriveOpc[ 1, 1 ] := "A:"
DriveOpc[ 2, 1 ] := "B:"
DriveOpc[ 3, 1 ] := "C:"
DriveOpc[ 4, 1 ] := "D:"
DriveOpc[ 5, 1 ] := "E:"
DriveOpc[ 6, 1 ] := "F:"
DriveOpc[ 7, 1 ] := "G:"
DriveOpc[ 8, 1 ] := "H:"
DriveOpc[ 9, 1 ] := "I:"
DriveOpc[ 10, 1 ] := "J:"
DriveOpc[ 11, 1 ] := "K:"
DriveOpc[ 12, 1 ] := "L:"
DriveOpc[ 13, 1 ] := "M:"
DriveOpc[ 14, 1 ] := "N:"
DriveOpc[ 15, 1 ] := "O:"
UsuarSist := ""
NivAcesUs := 0
Private ListaFunc := {}, ;
Precedenc := {}
AAdd( ListaFunc, {"Somar", "Somar(", .F.})
AAdd( ListaFunc, {"Media", "Media(", .F.})
AAdd( ListaFunc, {"Vincular", "Vincular(", .F.})
AAdd( ListaFunc, {"Se", "Se(", .T.})
AAdd( ListaFunc, {"Absol", "Abs(", .T.})
AAdd( ListaFunc, {"Inteiro", "Int(", .T.})
AAdd( ListaFunc, {"Logar", "Log(", .T.})
AAdd( ListaFunc, {"Expon", "Exp(", .T.})
AAdd( ListaFunc, {"RaizQ", "SqRt(", .T.})
AAdd( ListaFunc, {"Data", "Data(", .T.})
TotFunc := Len( ListaFunc)
AAdd( Precedenc, ".NOT.!")
AAdd( Precedenc, ".OR.")
AAdd( Precedenc, ".AND.")
AAdd( Precedenc, "<=<>=#!=")
AAdd( Precedenc, "+-")
AAdd( Precedenc, "*/%")
AAdd( Precedenc, "**^")
TotPreced := Len( Precedenc)
Private PortaImpr_V := { "LPT1", "LPT2", "LPT3", "COM1", "COM2" }
If RegisLicen = Nil
RegisLicen = RegistroLU()
EndIf
If Autenticac()
SalvVar( DiretProgam)
EndIf
///////////////////////////////// Sub-rotinas ////////////////////////////////
// Janela_dialogo
Public ContarObjet := 0, ;
Objetos_MP := {}, ;
RETORNO_OBJETO := {}, ;
MenDial := {}, ;
vNUM_MEN := {}
// Entrada de Dados por Tabela
Public FormTab_MP := {}, ;
_VED
// Auterar Cursor
Public INSERT := .T.
////////////////////////// Rotina Principal //////////////////////////////////
Cls
SetMode( ResolTela[ ResolAtual], 80)
DEF_MEN()
UltItemEscol := 1
Do While .T.
If SisConAce
AcessSistem()
EndIf
Cls
Escolhas := ExibaMenu( 00,00, UltItemEscol )
ItemEscol := SubStr( Escolhas, 1, AT( ".", Escolhas ) )
Escolhas := SubStr( Escolhas, AT( ".", Escolhas ) +1, Len(Escolhas) )
UltItemEscol := Val(Left( ItemEscol, Len(ItemEscol) -1 ) )
//<-2
If ItemEscol == "1." .And. If( SisConAce, NivAcesUs >= 1, .T.)
If ARQ_ATUAL = 0
Item_janela( "P", 1, "Nenhum entrada selecionado." )
Item_janela( "P", 4, "CONFIRMA", 13 )
Janela_dialogo( 5,10 , 2 )
Else
Set Default to (ArqCam_m[ ARQ_ATUAL, 1 ])
Do Case
Case !File( ArqCam_m[ ARQ_ATUAL, 2 ] +".BDE" )
Item_janela( "P", 1, "> BANCO DE DADOS INEXISTENTE <" )
Item_janela( "P", 1, "Diret¢rio: "+ ArqCam_m[ ARQ_ATUAL, 1 ] )
Item_janela( "P", 1, "Arquivo: "+ ArqCam_m[ ARQ_ATUAL, 2 ] +".BDE" )
Item_janela( "P", 4, "CONFIRMA", 13 )
Janela_dialogo( 5,10 , 4 )
Case !File( ArqCam_m[ ARQ_ATUAL, 2 ] +".FRM" )
Item_janela( "P", 1, "> ARQUIVO DE FORMATAۂO INEXISTENTE <" )
Item_janela( "P", 1, "Diret¢rio: "+ ArqCam_m[ ARQ_ATUAL, 1 ] )
Item_janela( "P", 1, "Arquivo: "+ ArqCam_m[ ARQ_ATUAL, 2 ] +".FRM" )
Item_janela( "P", 4, "CONFIRMA", 13 )
Janela_dialogo( 5,10 , 4 )
OtherWise
Do ENTRADAS
Opcao1()
EndCase
Set Default to
EndIf
//<-3
ElseIf ItemEscol == "2." .And. If( SisConAce, NivAcesUs >= 1, .T.)
Do BANCDADO
Opcao2()
//<-4
ElseIf ItemEscol == "3." .And. If( SisConAce, NivAcesUs = 5, .T.)
ItemEscol := SubStr( Escolhas, 1, AT( ".", Escolhas ) )
If ARQ_ATUAL = 0
Item_janela( , 1, "Nenhum Banco de Dados Escolhida.")
Item_janela( "P", 4, "CONFIRMADO", 13 )
Janela_dialogo( 10,10 , 2 )
Else
Set Default to (ArqCam_m[ ARQ_ATUAL, 1 ])
If !File( ArqCam_m[ ARQ_ATUAL, 2 ] +".BDE" )
Item_janela( "P", 1, "> BANCO DE DADOS INEXISTENTE <" )
Item_janela( "P", 1, "Diret¢rio: "+ ArqCam_m[ ARQ_ATUAL, 1 ] )
Item_janela( "P", 1, "Arquivo: "+ ArqCam_m[ ARQ_ATUAL, 2 ] +".BDE" )
Item_janela( "P", 1, "Pode cria-los em ARQUIVO\ALTERAR\CAMPOS." )
Item_janela( "P", 4, "CONFIRMADO", 13 )
Janela_dialogo( 5,10 , 5 )
ElseIf !File( ArqCam_m[ ARQ_ATUAL, 2 ] +".FRM" )
Item_janela( "P", 1, "> ARQUIVO DE FORMATAۂO INEXISTENTE <" )
Item_janela( "P", 1, "Diret¢rio: "+ ArqCam_m[ ARQ_ATUAL, 1 ] )
Item_janela( "P", 1, "Arquivo: "+ ArqCam_m[ ARQ_ATUAL, 2 ] +".FRM" )
Item_janela( "P", 1, "Pode cria-los em ARQUIVO\ALTERAR\CAMPOS." )
Item_janela( "P", 4, "CONFIRMADO", 13 )
Janela_dialogo( 5,10 , 5 )
Else
Select 1
Use (ArqCam_m[ ARQ_ATUAL, 2 ] +".BDE") Alias BDE
Select 2
Use (ArqCam_m[ ARQ_ATUAL, 2 ] +".FRM") Alias FRM
Do REGISTRO
Opcao3()
EndIf
EndIf
//<-5
ElseIf ItemEscol == "4." .And. If( SisConAce, NivAcesUs >= 4, .T.)
ItemEscol := SubStr( Escolhas, 1, AT( ".", Escolhas ) )
If ARQ_ATUAL = 0
Item_janela( "P", 1, "Nenhum arquivo selecionado." )
Item_janela( "P", 4, "CONFIRMADO", 13 )
Janela_dialogo( 5,10 , 2 )
Else
Set Default to (ArqCam_m[ ARQ_ATUAL, 1 ])
If !File( ArqCam_m[ ARQ_ATUAL, 2 ] +".FRM" )
Item_janela( "P", 1, "> ARQUIVO DE FORMATAۂO INEXISTENTE <" )
Item_janela( "P", 1, "Diret¢rio: "+ ArqCam_m[ ARQ_ATUAL, 1 ] )
Item_janela( "P", 1, "Arquivo: "+ ArqCam_m[ ARQ_ATUAL, 2 ] +".FRM" )
Item_janela( "P", 1, "Pode cria-los em ARQUIVO\ALTERAR\CAMPOS." )
Item_janela( "P", 4, "CONFIRMADO", 13 )
Janela_dialogo( 5,10 , 5 )
Else
Select 1
Use ( ArqCam_m[ ARQ_ATUAL, 2 ] +".FRM" ) Alias FRM
Do FORMENTR
Opcao4()
EndIf
EndIf
//<-6
ElseIf ItemEscol == "5." .And. If( SisConAce, NivAcesUs >= 2, .T.)
ItemEscol := SubStr( Escolhas, 1, AT( ".", Escolhas ) )
If ARQ_ATUAL = 0
Item_janela( , 1, "Nenhum Banco de Dados Escolhido.")
Item_janela( "P", 4, "CONFIRMAR", 13 )
Janela_dialogo( 10,10 , 2 )
Else
Set Default to (ArqCam_m[ ARQ_ATUAL, 1 ])
If !File( ArqCam_m[ ARQ_ATUAL, 2 ] +".BDE" )
Item_janela( "P", 1, "> BANCO DE DADOS INEXISTENTE <" )
Item_janela( "P", 1, "Diret¢rio: "+ ArqCam_m[ ARQ_ATUAL, 1 ] )
Item_janela( "P", 1, "Arquivo: "+ ArqCam_m[ ARQ_ATUAL, 2 ] +".BDE(.FRM)" )
Item_janela( "P", 1, "Pode cria-los em ARQUIVO\ALTERAR\CAMPOS." )
Item_janela( "P", 4, "CONFIRMADO", 13 )
Janela_dialogo( 5,10 , 5 )
ElseIf !File( ArqCam_m[ ARQ_ATUAL, 2 ] +".FRM" )
Item_janela( "P", 1, "> ARQUIVO DE FORMATAۂO INEXISTENTE <" )
Item_janela( "P", 1, "Diret¢rio: "+ ArqCam_m[ ARQ_ATUAL, 1 ] )
Item_janela( "P", 1, "Arquivo: "+ ArqCam_m[ ARQ_ATUAL, 2 ] +".BDE(.FRM)" )
Item_janela( "P", 1, "Pode cria-los em ARQUIVO\ALTERAR\CAMPOS." )
Item_janela( "P", 4, "CONFIRMADO", 13 )
Janela_dialogo( 5,10 , 5 )
Else
Select 1
Use (ArqCam_m[ ARQ_ATUAL, 2 ] +".BDE") Alias BDE
Set Deleted On
Select 2
Use (ArqCam_m[ ARQ_ATUAL, 2 ] +".FRM") Alias FRM
Do RELATORI
Opcao5()
EndIf
EndIf
//<-7
ElseIf ItemEscol == "6." .And. If( SisConAce, NivAcesUs = 5, .T.)
ItemEscol := SubStr( Escolhas, 1, AT( ".", Escolhas ) )
Do ARQUIVOS
Opcao6()
//<-8
ElseIf ItemEscol == "7." .And. If( SisConAce, NivAcesUs >= 4, .T.)
ItemEscol := SubStr( Escolhas, 1, AT( ".", Escolhas ) )
Do SistConf
Opcao7()
ElseIf ItemEscol == "8."
Setcolor( CorOriginal)
Cls
Quit
EndIf
Close All
EndDo
//<-9
Procedure DEF_MEN()
Public MENU :={}
nivel0 := 1
ItemMenu( AllTrim(Str( nivel0 )) +".", ;
"ENTRADA", ;
1, ;
"InclusÆo de registros" )
nivel0++
ItemMenu( AllTrim(Str( nivel0 )) +".", ;
"BANCO_DE_DADOS", ;
1, ;
"" )
nivel0++
ItemMenu( AllTrim(Str( nivel0 )) +".", ;
"REGISTRO", ;
1, ;
"Copia, move, apaga ou ordena registros", ;
)
ItemMenu( AllTrim(Str( nivel0 )) +".1.", ;
"MANUNTENۂO", ;
1, ;
"", ;
)
ItemMenu( AllTrim(Str( nivel0 )) +".2.", ;
"ORDENAR", ;
1, ;
"Ordena resgitros e otimiza entrada", ;
)
ItemMenu( AllTrim(Str( nivel0 )) +".3.", ;
"DESFAZER", ;
1, ;
"Desfaz a otimiza‡Æo", ;
)
ItemMenu( AllTrim(Str( nivel0 )) +".4.", ;
"PESQUISA", ;
1, ;
"Otimiza‡Æo da pesquisa", ;
)
ItemMenu( AllTrim(Str( nivel0 )) +".5.", ;
"LIXEIRA", ;
1, ;
"Retira ou recupera registros apagados", ;
)
ItemMenu( AllTrim(Str( nivel0 )) +".6.", ;
"RETORNAR", ;
1, ;
"Vai p/ menu anterior", ;
)
nivel0++
ItemMenu( AllTrim(Str( nivel0 )) +".", ;
"FORMATAۂO", ;
1, ;
"Formata a entrada registros" )
ItemMenu( AllTrim(Str( nivel0 )) +".1.", ;
"CAMPOS", ;
1, ;
"" )
ItemMenu( AllTrim(Str( nivel0 )) +".2.", ;
"FàRMULAS", ;
3, ;
"" )
ItemMenu( AllTrim(Str( nivel0 )) +".3.", ;
"MENU", ;
2, ;
"Cria menu apartir banco de dados(BDE)" )
ItemMenu( AllTrim(Str( nivel0 )) +".4.", ;
"ACESSO", ;
1, ;
"Controle de acesso ao campo" )
ItemMenu( AllTrim(Str( nivel0 )) +".5.", ;
"RETORNAR", ;
1, ;
"Vai p/ menu anterior" )
nivel0++
ItemMenu( AllTrim(Str( nivel0 )) +".", ;
"RELATORIO", ;
3, ;
"Listagem e Entrada", ;
)
ItemMenu( AllTrim(Str( nivel0 )) +".1.", ;
"IMPRIMIR", ;
1, ;
"", ;
)
ItemMenu( AllTrim(Str( nivel0 )) +".2.", ;
"MALA_DIRETA", ;
1, ;
"", ;
)
ItemMenu( AllTrim(Str( nivel0 )) +".3.", ;
"CAMPOS", ;
2, ;
"Define quais campos serÆo impressos", ;
)
ItemMenu( AllTrim(Str( nivel0 )) +".4.", ;
"CONFIGURAۂO", ;
2, ;
"Configura, o dispotivo de saida, papel, etc...", ;
)
ItemMenu( AllTrim(Str( nivel0 )) +".5.", ;
"RETORNAR", ;
1, ;
"Vai p/ menu anterior", ;
)
nivel0++
ItemMenu( AllTrim(Str( nivel0 )) +".", ;
"ARQUIVO", ;
1, ;
"Manipula Arquivos e Banco de Dado", ;
)
ItemMenu( AllTrim(Str( nivel0 )) +".1.", ;
"CRIAR", ;
1, ;
"", ;
)
ItemMenu( AllTrim(Str( nivel0 )) +".2.", ;
"ALTERAR", ;
1, ;
"", ;
)
ItemMenu( AllTrim(Str( nivel0 )) +".3.", ;
"ABRIR", ;
2, ;
"", ;
)
ItemMenu( AllTrim(Str( nivel0 )) +".4.", ;
"CàPIA_DE_SEGURAN€A", ;
3, ;
"", ;
)
ItemMenu( AllTrim(Str( nivel0 )) +".5.", ;
"TRANSPORTAR", ;
1, ;
"", ;
)
ItemMenu( AllTrim(Str( nivel0 )) +".6.", ;
"RETORNAR", ;
1, ;
"Vai p/ menu anterior" )
nivel0++
ItemMenu( AllTrim(Str( nivel0 )) +".", ;
"SISTEMA", ;
2, ;
"Configra‡Æo personalizada e Infor‡äes sobre o programa", ;
)
ItemMenu( AllTrim(Str( nivel0 )) +".1.", ;
"COR", ;
1, ;
"Defini‡Æo de cores", ;
)
ItemMenu( AllTrim(Str( nivel0 )) +".2.", ;
"TELA", ;
1, ;
"Dimen‡Æo da tela", ;
)
ItemMenu( AllTrim(Str( nivel0 )) +".3.", ;
"DIRETàRIO", ;
1, ;
"Define diret¢rio de uso do sistena", ;
)
ItemMenu( AllTrim(Str( nivel0 )) +".4.", ;
"DRIVE", ;
2, ;
"Inclui ou Exclui dirves dipom¡veis", ;
)
ItemMenu( AllTrim(Str( nivel0 )) +".5.", ;
"ACESSO", ;
1, ;
"Restringe o acesso usando senha", ;
)
ItemMenu( AllTrim(Str( nivel0 )) +".6.", ;
"AJUDA", ;
2, ;
"Listagem na tela fun‡äes de f¢rmulas e teclas", ;
)
ItemMenu( AllTrim(Str( nivel0 )) +".7.", ;
"INFORMAۂO", ;
1, ;
"Informa‡Æo sobre produtor do programa", ;
)
ItemMenu( AllTrim(Str( nivel0 )) +".8.", ;
"REGISTRO", ;
2, ;
"Informa‡Æo sobre registro do programa", ;
)
ItemMenu( AllTrim(Str( nivel0 )) +".9.", ;
"RETORNAR", ;
1, ;
"Vai p/ menu anterior", ;
)
nivel0++
ItemMenu( AllTrim(Str( nivel0 )) +".", ;
"SAIR", ;
1, ;
"Terminar a execussao deste programa", ;
)
ItemMenu( AllTrim(Str( nivel0 )) +".1.", ;
"SIM", ;
1, ;
"", ;
)
ItemMenu( AllTrim(Str( nivel0 )) +".2.", ;
"NÇO", ;
1, ;
"", ;
)
Return
//<-10
Procedure SistContAces( OpcaoSCA)
Local Listar
If OpcaoSCA = 1
NomeRespon := Space( 40)
SenhaAcesso := SenhAcess2 := Space( 20)
EntradaFoco := 1
Listar := .T.
SenhaValida := .F.
Altura := 8
Largura := 42
LinhaInical := (MaxRow() - Altura) /2
ColunInical := (MaxCol() - Largura) /2
TelaFundo := SaveScreen( LinhaInical,ColunInical , ;
LinhaInical + Altura -1,ColunInical + Largura -1)
@ LinhaInical,ColunInical , ;
LinhaInical + Altura -1,ColunInical + Largura -1 Box " " ;
Color JANE_COR_FUN
@ LinhaInical,ColunInical To ;
LinhaInical + Altura -1,ColunInical + Largura -1 Double ;
Color JANE_COR_FUN
@ LinhaInical +1,ColunInical +1 ;
Say "Nome do respons vel pela seguran‡a:" Color SECUN_COR
@ LinhaInical +2,ColunInical +1 ;
Say NomeRespon Color N_FOC_ENTR_COR
@ LinhaInical +3,ColunInical +1 ;
Say "N¡vel de acesso: 5" Color SECUN_COR
@ LinhaInical +4,ColunInical +1 ;
Say "Senha: " Color SECUN_COR
@ LinhaInical +4,ColunInical +8 ;
Say SenhaAcesso Color N_FOC_ENTR_COR
@ LinhaInical +5,ColunInical +1;
Say "Confirmar senha: " Color SECUN_COR
@ LinhaInical +5,ColunInical +18 ;
Say SenhAcess2 Color N_FOC_ENTR_COR
@ LinhaInical +6,ColunInical +1;
Say " COMFIRMAR " Color N_FOC_ENTR_COR
@ LinhaInical +6,ColunInical +14 ;
Say " CANSELAR " Color N_FOC_ENTR_COR
Do While .T.
If Listar
If EntradaFoco = 1
@ LinhaInical +2,ColunInical +1 Say NomeRespon ;
Color COR_MENU_ENTR_FOC
SetPos( LinhaInical +2,ColunInical +1)
Set Cursor On
ElseIf EntradaFoco = 2
@ LinhaInical +4,ColunInical +8 Say Space( Len( SenhaAcesso));
Color COR_MENU_ENTR_FOC
TamanhDigit := Len( RTrim( SenhaAcesso))
If TamanhDigit > 0
@ LinhaInical +4,ColunInical +8 Say Replicate( "*", ;
TamanhDigit) Color COR_MENU_ENTR_FOC
EndIf
SetPos( LinhaInical +4,ColunInical +8)
Set Cursor On
ElseIf EntradaFoco = 3
@ LinhaInical +5,ColunInical +18 Say Space( Len( SenhAcess2));
Color COR_MENU_ENTR_FOC
TamanhDigit := Len( RTrim( SenhAcess2))
If TamanhDigit > 0
@ LinhaInical +5,ColunInical +18 Say Replicate( "*", ;
TamanhDigit) Color COR_MENU_ENTR_FOC
EndIf
SetPos( LinhaInical +5,ColunInical +18)
Set Cursor On
ElseIf EntradaFoco = 4
Set Cursor Off
@ LinhaInical +6,ColunInical +1 Say "[COMFIRMAR]" ;
Color COR_MENU_ENTR_FOC
ElseIf EntradaFoco = 5
Set Cursor Off
@ LinhaInical +6,ColunInical +14 Say "[CANSELAR]" ;
Color COR_MENU_ENTR_FOC
EndIf
EndIf
//<-11////////////////////////////////////////////////////////////////////////
Tecla := Inkey( 0)
//////////////////////////////////////////////////////////////////////////////
If Listar
If EntradaFoco = 1
@ LinhaInical +2,ColunInical +1 Say NomeRespon ;
Color N_FOC_ENTR_COR
ElseIf EntradaFoco = 2
@ LinhaInical +4,ColunInical +8 Say Space( Len( SenhaAcesso));
Color N_FOC_ENTR_COR
TamanhDigit := Len( RTrim( SenhaAcesso))
If TamanhDigit > 0
@ LinhaInical +4,ColunInical +8 Say Replicate( "*", ;
TamanhDigit) Color N_FOC_ENTR_COR
EndIf
ElseIf EntradaFoco = 3
@ LinhaInical +5,ColunInical +18 Say Space( Len( SenhAcess2));
Color N_FOC_ENTR_COR
TamanhDigit := Len( RTrim( SenhAcess2))
If TamanhDigit > 0
@ LinhaInical +5,ColunInical +18 Say Replicate( "*", ;
TamanhDigit) Color N_FOC_ENTR_COR
EndIf
ElseIf EntradaFoco = 4
@ LinhaInical +6,ColunInical +1 Say " COMFIRMAR " ;
Color N_FOC_ENTR_COR
ElseIf EntradaFoco = 5
@ LinhaInical +6,ColunInical +14 Say " CANSELAR " ;
Color N_FOC_ENTR_COR
EndIf
EndIf
If Tecla = 27
EntradaFoco := 5
ElseIf Tecla = 9
EntradaFoco := 4
ElseIf Tecla = 5 .Or. Tecla = 19
Listar := .T.
EntradaFoco--
If EntradaFoco < 1
EntradaFoco := 5
EndIf
ElseIf Tecla = 4 .Or. Tecla = 24
Listar := .T.
EntradaFoco++
If EntradaFoco > 5
EntradaFoco := 1
EndIf
EndIf
If EntradaFoco = 1 .And. (Tecla >= 32 .And. Tecla <= 126 .Or. ;
Tecla = 13 .Or. Tecla = 7 .Or. Tecla = 1 .Or. Tecla = 6 .Or.;
Tecla = 22)
// [ ], ... ,[~], [Enter], [Del], [Home], [End] ou [Insert]
Listar := .T.
If Tecla <> 13
KeyBoard Chr( Tecla)
EndIf
@ LinhaInical +2,ColunInical +1 Get NomeRespon ;
Color COR_MENU_ENTR_FOC
Read
@ LinhaInical +2,ColunInical +1 Say NomeRespon ;
Color N_FOC_ENTR_COR
If LastKey() = 13
If !Empty( NomeRespon)
EntradaFoco++
Else
Item_janela( "P", 1, " - NÆo ‚ permitido nome em branco.")
Item_janela( "P", 4, "COMFIRMAR", 13)
Janela_dialogo( 05,20 , 2)
EndIf
EndIf
ElseIf EntradaFoco = 2 .And. Tecla >= 32 .And. Tecla <= 126
Listar := .T.
SenhaAcesso := Space( 20)
SenhaAcesso := EntradaSenha( LinhaInical +4,ColunInical +8, ;
Stuff( SenhaAcesso, 1, 1, Chr( Tecla)), 2)
If SenhaAcesso = Nil
SenhaAcesso := Space( 20)
ElseIf Len( RTrim( SenhaAcesso)) < 4
Item_janela( "P", 1, " <<<<<<<<<< Senha inv lida! >>>>>>>>>>>>> ")
Item_janela( "P", 1, "")
Item_janela( "P", 1, " - Digite a senha maior que 3 caracteres.")
Item_janela( "P", 1, "")
Item_janela( "P", 4, "COMFIRMAR", 13)
Janela_dialogo( 05,20 , 5)
ElseIf Empty( NomeRespon)
Item_janela( "P", 1, " - NÆo ‚ permitido nome em branco.")
Item_janela( "P", 4, "COMFIRMAR", 13)
Janela_dialogo( 05,20 , 2)
Else
EntradaFoco++
SenhaValida := .T.
EndIf
ElseIf EntradaFoco = 3 .And. Tecla >= 32 .And. Tecla <= 126
Listar := .T.
SenhAcess2 := Space( 20)
SenhAcess2 := EntradaSenha( LinhaInical +5,ColunInical +18, ;
Stuff( SenhAcess2, 1, 1, Chr( Tecla)), 2)
If SenhAcess2 = Nil
SenhAcess2 := Space( 20)
Else
If SenhaAcesso = SenhAcess2
EntradaFoco++
Else
Item_janela( "P", 1, "<<< Senha nÆo confirmada! >>>")
Item_janela( "P", 1, "")
Item_janela( "P", 1, " - Digite a senha novamente.")
Item_janela( "P", 1, "")
Item_janela( "P", 4, "COMFIRMAR", 13)
Janela_dialogo( 05,20 , 5)
EntradaFoco--
SenhaValida := .F.
EndIf
EndIf
ElseIf EntradaFoco = 4 .And. (Tecla = 13 .Or. Tecla = 32)
If SenhaValida
RestScreen( LinhaInical,ColunInical , ;
LinhaInical + Altura -1,ColunInical + Largura -1, ;
TelaFundo)
Exit
Else
Item_janela( "P", 1, "<<<<<< Senha inv lida! >>>>>>")
Item_janela( "P", 1, "")
Item_janela( "P", 1, " - Digite a senha novamente.")
Item_janela( "P", 1, "")
Item_janela( "P", 4, "COMFIRMAR", 13)
Janela_dialogo( 05,20 , 5)
EntradaFoco := 2
EndIf
ElseIf EntradaFoco = 5 .And. (Tecla = 13 .Or. Tecla = 32)
RestScreen( LinhaInical,ColunInical , ;
LinhaInical + Altura -1,ColunInical + Largura -1, ;
TelaFundo)
Return
EndIf
EndDo
//<-12
DriveDest := "A"
OBJETO_EM_FOCO := 10
Do While .T.
Item_janela( "P", 1, " - Um Disco Chave ser criado para que o")
Item_janela( "P", 1, "sistema de seguran‡a do programa possa")
Item_janela( "P", 1, "ser aberto em caso problemas.")
Item_janela( "P", 1, " - Para maior segran‡a crie um segundo")
Item_janela( "P", 1, "disco.")
Item_janela( "P", 1, "")
Item_janela( "P", 1, " - Ensira um disco no drive ")
Item_janela( , 2, "", DriveDest, 1, "A" )
Item_janela( , 1, ":.")
Item_janela( "P", 4, "COMFIRMAR", 13)
Item_janela( , 4, "CANSELAR", 27)
Janela_dialogo( 5,15 , OBJETO_EM_FOCO)
If TeclaSJ_p = 13 .Or. TeclaSJ_p = 9
If OBJETO_EM_FOCO = 2
DriveDest := RETORNO_OBJETO[2]
OBJETO_EM_FOCO := 4
ElseIf RETORNO_OBJETO[TotObjet_p -1] = 13 .Or. TeclaSJ_p = 9
If FCreate ( DriveDest +":\ChavDisc.IDS", 0) <> -1
Close
Set Default to (DriveDest +":\")
IDSistema2 := IDSistema
Save All Like IDSistema2 to ChavDisc.IDS
Release All Like IDSistema2
Set Default to (DiretProgam)
If !File( "Usuario.Dat")
Create StructDat
Append Blank
Replace Field_name With "Senha", ;
Field_type With "C", ;
Field_len With 20, ;
Field_dec With 0
Append Blank
Replace Field_name With "Nome", ;
Field_type With "C", ;
Field_len With 40, ;
Field_dec With 0
Append Blank
Replace Field_name With "NivelAces", ;
Field_type With "N", ;
Field_len With 1, ;
Field_dec With 0
Close
Create Usuario.Dat From StructDat
Erase (DiretProgam +"StructDat.DBF")
Append Blank
Field -> Senha := SenhaAcesso
Field -> Nome := NomeRespon
Field -> NivelAces := 5
Close
EndIf
SisConAce := .T.
UsuarSist := NomeRespon
NivAcesUs := 5
SalvVar( DiretProgam)
Set Default to
Exit
Else
Item_janela( , 1, ">>>> Disco NÇO Acess¡vel. <<<<")
Item_janela( "P", 4, "COMFIRMAR", 13)
Janela_dialogo( 5,15 , 2)
OBJETO_EM_FOCO := TotObjet_p -1
EndIf
ElseIf RETORNO_OBJETO[TotObjet_p] = 27
Exit
EndIf
ElseIf TeclaSJ_p = 27
OBJETO_EM_FOCO := TotObjet_p
EndIf
EndDo
//<-13
ElseIf OpcaoSCA = 2
Set Default to (DiretProgam)
Close All
If !File( "Usuario.Dat")
Item_janela( , 1, ">>>> Escolha Criar primeiro. <<<<")
Item_janela( "P", 4, "COMFIRMAR", 13)
Janela_dialogo( 5,15 , 2)
Return
EndIf
Use Usuario.Dat
NomeUsuari := Space( 40)
_NivelAces := 0
SenhaAcesso := SenhAcess2 := Space( 20)
EntradaFoco := 1
Listar := .T.
Altura := 8
Largura := 42
LinhaInical := (MaxRow() - Altura) /2
ColunInical := (MaxCol() - Largura) /2
EmtradValid := 0
CodigoErro := 0
Private MensagErro := {}
AAdd( MensagErro, "<<<< NÆo ‚ permitido campo em branco! >>>>")
AAdd( MensagErro, "<<<< Nome j existemte! >>>>")
AAdd( MensagErro, "<<<< N¡vel de acesso inexistente! >>>>")
AAdd( MensagErro, "<<<< Senha inv lida! >>>>")
AAdd( MensagErro, "<<<< Senha nÆo confirmada! >>>>")
TelaFundo := SaveScreen( 00,00 , MaxRow(),MaxCol())
SaidaTela( MaxRow(),"C", "Cadastramento de us rios do sistema.", SECUN_COR)
@ LinhaInical,ColunInical , ;
LinhaInical + Altura -1,ColunInical + Largura -1 Box " " ;
Color JANE_COR_FUN
@ LinhaInical,ColunInical To ;
LinhaInical + Altura -1,ColunInical + Largura -1 Double ;
Color JANE_COR_FUN
@ LinhaInical +1,ColunInical +1 ;
Say "Nome do usu rio:" Color SECUN_COR
@ LinhaInical +2,ColunInical +1 ;
Say NomeUsuari Color N_FOC_ENTR_COR
@ LinhaInical +3,ColunInical +1 ;
Say "N¡vel de acesso(0-5): " Color SECUN_COR
@ LinhaInical +3,ColunInical +23 ;
Say Transform ( _NivelAces, "9") Color N_FOC_ENTR_COR
@ LinhaInical +4,ColunInical +1 ;
Say "Senha: " Color SECUN_COR
@ LinhaInical +4,ColunInical +8 ;
Say SenhaAcesso Color N_FOC_ENTR_COR
@ LinhaInical +5,ColunInical +1;
Say "Confirmar senha: " Color SECUN_COR
@ LinhaInical +5,ColunInical +18 ;
Say SenhAcess2 Color N_FOC_ENTR_COR
@ LinhaInical +6,ColunInical +1;
Say " CONFIRMAR " Color N_FOC_ENTR_COR
@ LinhaInical +6,ColunInical +13;
Say " CANSELAR " Color N_FOC_ENTR_COR
Do While .T.
If Listar
If EntradaFoco = 1
@ LinhaInical +2,ColunInical +1 Say NomeUsuari ;
Color COR_MENU_ENTR_FOC
SetPos( LinhaInical +2,ColunInical +1)
Set Cursor On
ElseIf EntradaFoco = 2
@ LinhaInical +3,ColunInical +23 ;
Say Transform ( _NivelAces, "9") Color COR_MENU_ENTR_FOC
SetPos( LinhaInical +3,ColunInical +23)
Set Cursor On
ElseIf EntradaFoco = 3
@ LinhaInical +4,ColunInical +8 Say Space( Len( SenhaAcesso));
Color COR_MENU_ENTR_FOC
TamanhDigit := Len( RTrim( SenhaAcesso))
If TamanhDigit > 0
@ LinhaInical +4,ColunInical +8 Say Replicate( "*", ;
TamanhDigit) Color COR_MENU_ENTR_FOC
EndIf
SetPos( LinhaInical +4,ColunInical +8)
Set Cursor On
ElseIf EntradaFoco = 4
@ LinhaInical +5,ColunInical +18 Say Space( Len( SenhAcess2));
Color COR_MENU_ENTR_FOC
TamanhDigit := Len( RTrim( SenhAcess2))
If TamanhDigit > 0
@ LinhaInical +5,ColunInical +18 Say Replicate( "*", ;
TamanhDigit) Color COR_MENU_ENTR_FOC
EndIf
SetPos( LinhaInical +5,ColunInical +18)
Set Cursor On
ElseIf EntradaFoco = 5
Set Cursor Off
@ LinhaInical +6,ColunInical +1 Say "[CONFIRMAR]" ;
Color COR_MENU_ENTR_FOC
ElseIf EntradaFoco = 6
Set Cursor Off
@ LinhaInical +6,ColunInical +13 Say "[CANSELAR]" ;
Color COR_MENU_ENTR_FOC
EndIf
EndIf
//<-14////////////////////////////////////////////////////////////////////////
Tecla := Inkey( 0)
//////////////////////////////////////////////////////////////////////////////
If Listar
If EntradaFoco = 1
@ LinhaInical +2,ColunInical +1 Say NomeUsuari ;
Color N_FOC_ENTR_COR
ElseIf EntradaFoco = 2
@ LinhaInical +3,ColunInical +23 ;
Say Transform ( _NivelAces, "9") Color N_FOC_ENTR_COR
ElseIf EntradaFoco = 3
@ LinhaInical +4,ColunInical +8 Say Space( Len( SenhaAcesso));
Color N_FOC_ENTR_COR
TamanhDigit := Len( RTrim( SenhaAcesso))
If TamanhDigit > 0
@ LinhaInical +4,ColunInical +8 Say Replicate( "*", ;
TamanhDigit) Color N_FOC_ENTR_COR
EndIf
ElseIf EntradaFoco = 4
@ LinhaInical +5,ColunInical +18 Say Space( Len( SenhAcess2));
Color N_FOC_ENTR_COR
TamanhDigit := Len( RTrim( SenhAcess2))
If TamanhDigit > 0
@ LinhaInical +5,ColunInical +18 Say Replicate( "*", ;
TamanhDigit) Color N_FOC_ENTR_COR
EndIf
ElseIf EntradaFoco = 5
@ LinhaInical +6,ColunInical +1 Say " CONFIRMAR " ;
Color N_FOC_ENTR_COR
ElseIf EntradaFoco = 6
@ LinhaInical +6,ColunInical +13 Say " CANSELAR " ;
Color N_FOC_ENTR_COR
EndIf
EndIf
If Tecla = 13
If SenhaAcesso = SenhAcess2
Append Blank
Field -> Senha := SenhAcess2
Field -> Nome := NomeUsuari
Field -> NivelAces := _NivelAces
CodigoErro := 0
Exit
Else
CodigoErro := 5
Item_janela( "P", 1, MensagErro[ CodigoErro ])
Item_janela( "P", 1, "")
Item_janela( "P", 1, " - Digite a senha novamente.")
Item_janela( "P", 1, "")
Item_janela( "P", 4, "COMFIRMAR", 13)
Janela_dialogo( 05,20 , 5)
EntradaFoco = 3
EndIf
ElseIf Tecla = 27
Exit
ElseIf Tecla = 5 .Or. Tecla = 19
Listar := .T.
EntradaFoco--
If EntradaFoco < 1
EntradaFoco := 6
EndIf
ElseIf Tecla = 4 .Or. Tecla = 24
Listar := .T.
EntradaFoco++
If EntradaFoco > 6
EntradaFoco := 1
EndIf
EndIf
If EntradaFoco = 1 .And. (Tecla >= 32 .And. Tecla <= 126 .Or. ;
Tecla = 13 .Or. Tecla = 7 .Or. Tecla = 1 .Or. Tecla = 6 .Or.;
Tecla = 22)
// [ ], ... ,[~], [Enter], [Del], [Home], [End] ou [Insert]
CodigoErro := EmtradValid := 0
Listar := .T.
If Tecla <> 13
KeyBoard Chr( Tecla)
EndIf
@ LinhaInical +2,ColunInical +1 Get NomeUsuari ;
Color COR_MENU_ENTR_FOC
Read
@ LinhaInical +2,ColunInical +1 Say NomeUsuari ;
Color N_FOC_ENTR_COR
If LastKey() = 13
If Empty( NomeUsuari)
CodigoErro := 1
Item_janela( "P", 1, MensagErro[ CodigoErro ])
Item_janela( "P", 4, "COMFIRMAR", 13)
Janela_dialogo( 05,20 , 2)
Else
Locate For Nome == NomeUsuari
If Found()
CodigoErro := 2
Item_janela( "P", 1, MensagErro[ CodigoErro ])
Item_janela( "P", 4, "COMFIRMAR", 13)
Janela_dialogo( 05,20 , 2)
Else
EmtradValid++
EntradaFoco++
EndIf
EndIf
EndIf
ElseIf EntradaFoco = 2 .And. (Tecla >= 32 .And. Tecla <= 126 .Or. ;
Tecla = 13)
If CodigoErro > 0 .And. CodigoErro <> 3
Item_janela( "P", 1, MensagErro[ CodigoErro ])
Item_janela( "P", 4, "COMFIRMAR", 13)
Janela_dialogo( 05,20 , 2)
Else
Listar := .T.
If Tecla <> 13
KeyBoard Chr( Tecla)
EndIf
@ LinhaInical +3,ColunInical +23 Get _NivelAces Picture "9";
Color COR_MENU_ENTR_FOC
Read
@ LinhaInical +3,ColunInical +23 Say _NivelAces Picture "9";
Color N_FOC_ENTR_COR
If LastKey() = 13
If _NivelAces < 0 .Or. _NivelAces > 5
CodigoErro := 3
Item_janela( "P", 1, MensagErro[ CodigoErro ])
Item_janela( "P", 1, "N¡vel v lidos:")
Item_janela( "P", 1, " 0 - Suspenso")
Item_janela( "P", 1, " 1 - Pesquisa e Listagem")
Item_janela( "P", 1, " 2 - Relat¢rio")
Item_janela( "P", 1, " 3 - InclusÆo dados")
Item_janela( "P", 1, " 4 - Configura‡Æo")
Item_janela( "P", 1, " 5 - Carta-Branca")
Item_janela( "P", 4, "COMFIRMAR", 13)
Janela_dialogo( 05,20 , 9)
Else
CodigoErro := 0
EmtradValid++
EntradaFoco++
EndIf
EndIf
EndIf
ElseIf EntradaFoco = 3 .And. Tecla >= 32 .And. Tecla <= 126
If CodigoErro > 0 .And. CodigoErro <> 4 .And. CodigoErro <> 5
Item_janela( "P", 1, MensagErro[ CodigoErro ])
Item_janela( "P", 4, "COMFIRMAR", 13)
Janela_dialogo( 05,20 , 2)
Else
Listar := .T.
SenhaAcesso := Space( 20)
SenhaAcesso := EntradaSenha( LinhaInical +4,ColunInical +8, ;
Stuff( SenhaAcesso, 1, 1, Chr( Tecla)), 2)
If SenhaAcesso = Nil
SenhaAcesso := Space( 20)
ElseIf Len( RTrim( SenhaAcesso)) < 4
EntradaFoco := 4
Item_janela( "P", 1, MensagErro[ EntradaFoco ])
Item_janela( "P", 1, "")
Item_janela( "P", 1, " - Digite a senha maior que 3 caracteres.")
Item_janela( "P", 1, "")
Item_janela( "P", 4, "COMFIRMAR", 13)
Janela_dialogo( 05,20 , 5)
Else
CodigoErro := 0
EmtradValid++
EntradaFoco++
EndIf
EndIf
ElseIf EntradaFoco = 4 .And. Tecla >= 32 .And. Tecla <= 126
If EmtradValid < 3
CodigoErro := 1
Item_janela( "P", 1, MensagErro[ CodigoErro ])
Item_janela( "P", 4, "COMFIRMAR", 13)
Janela_dialogo( 05,20 , 2)
ElseIf CodigoErro <> 5 .And. CodigoErro <> 0
Item_janela( "P", 1, MensagErro[ CodigoErro ])
Item_janela( "P", 4, "COMFIRMAR", 13)
Janela_dialogo( 05,20 , 2)
Else
Listar := .T.
SenhAcess2 := Space( 20)
SenhAcess2 := EntradaSenha( LinhaInical +5,ColunInical +18, ;
Stuff( SenhAcess2, 1, 1, Chr( Tecla)), 2)
If SenhAcess2 = Nil
SenhAcess2 := Space( 20)
Else
If SenhaAcesso # SenhAcess2
CodigoErro := 5
Item_janela( "P", 1, MensagErro[ CodigoErro ])
Item_janela( "P", 1, "")
Item_janela( "P", 1, " - Digite a senha novamente.")
Item_janela( "P", 1, "")
Item_janela( "P", 4, "COMFIRMAR", 13)
Janela_dialogo( 05,20 , 5)
EntradaFoco--
EndIf
EndIf
EndIf
ElseIf EntradaFoco = 5 .And. (Tecla = 13 .Or. Tecla = 32)
If SenhaAcesso = SenhAcess2
Append Blank
Field -> Senha := SenhAcess2
Field -> Nome := NomeUsuari
Field -> NivelAces := _NivelAces
CodigoErro := 0
Exit
Else
CodigoErro := 5
Item_janela( "P", 1, MensagErro[ CodigoErro ])
Item_janela( "P", 1, "")
Item_janela( "P", 1, " - Digite a senha novamente.")
Item_janela( "P", 1, "")
Item_janela( "P", 4, "COMFIRMAR", 13)
Janela_dialogo( 05,20 , 5)
EntradaFoco = 3
EndIf
ElseIf EntradaFoco = 6 .And. (Tecla = 13 .Or. Tecla = 32)
Exit
EndIf
EndDo
Close Usuario
Set Default to
RestScreen( 00,00 , MaxRow(),MaxCol(), TelaFundo)
//<-15
ElseIf OpcaoSCA = 3
Set Default to (DiretProgam)
Close All
If !File( "Usuario.Dat")
Item_janela( , 1, ">>>> Escolha Criar primeiro. <<<<")
Item_janela( "P", 4, "COMFIRMAR", 13)
Janela_dialogo( 5,15 , 2)
OBJETO_EM_FOCO := 2
Return
EndIf
Use Usuario.Dat
Private ContTab_M := {}, ;
ContInicCel_M, ;
Mascara_M, ;
EntrCond_M, ;
ValidDados_M, ;
FormTab_M := {}
AAdd( FormTab_M, { ;
40, ;
"Nome", ;
Space( 40), ;
"E", ;
"", ;
".F.", ;
".T.", ;
0, {""}, "", "", "", "" } )
AAdd( FormTab_M, { ;
11, ;
"Nivel", ;
'0', ;
"C", ;
"9", ;
".T.", ;
"_VED >= 0 .And. _VED <= 5", ;
7, ;
{ "Os n¡veis v lidos sÆo: ", ;
" 0 - Suspenso", ;
" 1 - Pesquisa e Listagem", ;
" 2 - Relat¢rio", ;
" 3 - InclusÆo de dados", ;
" 4 - Configura‡Æo", ;
" 5 - Respons vel"}, ;
JanelAvis_Cor, SECUN_COR, N_FOC_ENTR_COR, COR_MENU_ENTR_FOC } )
AAdd( FormTab_M, { ;
8, ;
"Excluir?", ;
"N", ;
"C", ;
" !", ;
".T.", ;
'_VED$"SsNn"', ;
2, ;
{ "As op‡äes v lidas sÆo: ", ;
" S - Sim e N - NÆo" }, ;
JanelAvis_Cor, SECUN_COR, N_FOC_ENTR_COR, COR_MENU_ENTR_FOC } )
Go Top
Do While !EOF()
AAdd( ContTab_M, {Nome, NivelAces, "N"} )
Skip
EndDo
If Len( ContTab_M) > 0
Tabela( 04,01 , MaxRow() -2,MaxCol() -1, .F. )
Else
Item_janela( , 1, ">>>> Nenhum Us rio cadastrado. <<<<")
Item_janela( "P", 4, "COMFIRMAR", 13)
Janela_dialogo( 5,15 , 2)
Return
EndIf
If TeclaSJ_p = 9
NumLinhMatr := Len( ContTab_M)
Go Top
For D1 = 1 to NumLinhMatr
Field -> NivelAces := ContTab_M[ D1, 2 ]
If ContTab_M[ D1, 3 ]$"Ss"
Delete
EndIf
Skip
Next
Pack
EndIf
If LastRec() = 0
DriveDest := "A"
OBJETO_EM_FOCO := 3
Do While .T.
Item_janela( , 2, " - Ensira o disco-chave no drive ", ;
DriveDest, 1, "A" )
Item_janela( , 1, ":.")
Item_janela( "P", 4, "DESFAZER", 13)
Item_janela( , 4, "CANSELAR", 27)
Janela_dialogo( 5,15 , OBJETO_EM_FOCO)
If TeclaSJ_p = 13 .Or. TeclaSJ_p = 9
If OBJETO_EM_FOCO = 2
DriveDest := RETORNO_OBJETO[2]
OBJETO_EM_FOCO := 4
ElseIf RETORNO_OBJETO[TotObjet_p -1] = 13 .Or. TeclaSJ_p = 9
Set Default to (DriveDest +":\")
If File( DriveDest +":\ChavDisc.IDS")
Restore From (DriveDest +":\ChavDisc.IDS") AddItive
If IDSistema2 == IDSistema
Erase (DiretProgam +"Usuario.Dat")
IDSistema := DToC( Date()) + Str( Seconds())
SisConAce := .F.
SalvVar( DiretProgam)
Else
Item_janela( , 1, ">>>> Disco-chace inv lido! <<<<")
Item_janela( "P", 4, "CONFIRMAR", 13)
Janela_dialogo( 5,15 , 2)
OBJETO_EM_FOCO := TotObjet_p -1
EndIf
Release All Like IDSistema2
Exit
EndIf
ElseIf RETORNO_OBJETO[TotObjet_p] = 27
Exit
EndIf
ElseIf TeclaSJ_p = 27
OBJETO_EM_FOCO := TotObjet_p
EndIf
EndDo
EndIf
Close Usuario
Set Default to
//<-16
ElseIf OpcaoSCA = 4
EditarTxt( 03,00 , MaxRow() -1,MaxCol() , DiretProgam, DiretProgam, ;
"Relatori.Ace", ENTR_COR_FUN +","+ JANE_COR_FUN +","+ SECUN_COR +;
","+ N_FOC_ENTR_COR +","+ COR_MENU_ENTR_FOC)
//<-17
ElseIf OpcaoSCA = 5
DriveDest := "A"
OBJETO_EM_FOCO := 3
Do While .T.
Item_janela( , 2, " - Ensira o disco-chave no drive ", ;
DriveDest, 1, "A" )
Item_janela( , 1, ":.")
Item_janela( "P", 4, "DESFAZER", 13)
Item_janela( , 4, "CANSELAR", 27)
Janela_dialogo( 5,15 , OBJETO_EM_FOCO)
If TeclaSJ_p = 13 .Or. TeclaSJ_p = 9
If OBJETO_EM_FOCO = 2
DriveDest := RETORNO_OBJETO[2]
OBJETO_EM_FOCO := 4
ElseIf RETORNO_OBJETO[TotObjet_p -1] = 13 .Or. TeclaSJ_p = 9
Set Default to (DriveDest +":\")
If File( DriveDest +":\ChavDisc.IDS")
Restore From (DriveDest +":\ChavDisc.IDS") AddItive
If IDSistema2 == IDSistema
Erase (DiretProgam +"Usuario.Dat")
IDSistema := DToC( Date()) + Str( Seconds())
SisConAce := .F.
SalvVar( DiretProgam)
Else
Item_janela( , 1, ">>>> Disco-chace inv lido! <<<<")
Item_janela( "P", 4, "CONFIRMAR", 13)
Janela_dialogo( 5,15 , 2)
OBJETO_EM_FOCO := TotObjet_p -1
EndIf
Release All Like IDSistema2
Exit
EndIf
ElseIf RETORNO_OBJETO[TotObjet_p] = 27
Exit
EndIf
ElseIf TeclaSJ_p = 27
OBJETO_EM_FOCO := TotObjet_p
EndIf
EndDo
EndIf
Return
//<-18
Procedure AcessSistem()
If NivAcesUs = 0
Set Default to (DiretProgam)
Close All
Use Usuario.Dat
NomeUsuar := Space( 40)
SenhaAcesso := Space( 20)
EntradaFoco := 1
Listar := .T.
Altura := 6
Largura := 42
LinhaInical := (MaxRow() - Altura) /2
ColunInical := (MaxCol() - Largura) /2
TelaFundo := SaveScreen( LinhaInical,ColunInical , ;
LinhaInical + Altura -1,ColunInical + Largura -1)
@ LinhaInical,ColunInical , ;
LinhaInical + Altura -1,ColunInical + Largura -1 Box " " ;
Color JANE_COR_FUN
@ LinhaInical,ColunInical To ;
LinhaInical + Altura -1,ColunInical + Largura -1 Double ;
Color JANE_COR_FUN
@ LinhaInical +1,ColunInical +1 ;
Say "Nome do usu rio:" Color SECUN_COR
@ LinhaInical +2,ColunInical +1 ;
Say NomeUsuar Color N_FOC_ENTR_COR
@ LinhaInical +3,ColunInical +1 ;
Say "Senha: " Color SECUN_COR
@ LinhaInical +3,ColunInical +8 ;
Say SenhaAcesso Color N_FOC_ENTR_COR
@ LinhaInical +4,ColunInical +1;
Say " SAIR " Color N_FOC_ENTR_COR
@ LinhaInical +4,ColunInical +9;
Say " ABRIR " Color N_FOC_ENTR_COR
Do While .T.
If EntradaFoco = 1
@ LinhaInical +2,ColunInical +1 Say NomeUsuar ;
Color COR_MENU_ENTR_FOC
SetPos( LinhaInical +2,ColunInical +1)
Set Cursor On
ElseIf EntradaFoco = 2
@ LinhaInical +3,ColunInical +8 Say Space( Len( SenhaAcesso));
Color COR_MENU_ENTR_FOC
TamanhDigit := Len( RTrim( SenhaAcesso))
If TamanhDigit > 0
@ LinhaInical +3,ColunInical +8 Say Replicate( "*", ;
TamanhDigit) Color COR_MENU_ENTR_FOC
EndIf
SetPos( LinhaInical +3,ColunInical +8)
Set Cursor On
ElseIf EntradaFoco = 3
Set Cursor Off
@ LinhaInical +4,ColunInical +1;
Say "[SAIR]" Color COR_MENU_ENTR_FOC
ElseIf EntradaFoco = 4
Set Cursor Off
@ LinhaInical +4,ColunInical +9;
Say "[ABRIR]" Color COR_MENU_ENTR_FOC
EndIf
//<-19////////////////////////////////////////////////////////////////////////
Tecla := Inkey( 0)
//////////////////////////////////////////////////////////////////////////////
If EntradaFoco = 1
@ LinhaInical +2,ColunInical +1 Say NomeUsuar ;
Color N_FOC_ENTR_COR
ElseIf EntradaFoco = 2
@ LinhaInical +3,ColunInical +8 Say Space( Len( SenhaAcesso));
Color N_FOC_ENTR_COR
TamanhDigit := Len( RTrim( SenhaAcesso))
If TamanhDigit > 0
@ LinhaInical +3,ColunInical +8 Say Replicate( "*", ;
TamanhDigit) Color N_FOC_ENTR_COR
EndIf
ElseIf EntradaFoco = 3
@ LinhaInical +4,ColunInical +1;
Say " SAIR " Color N_FOC_ENTR_COR
ElseIf EntradaFoco = 4
@ LinhaInical +4,ColunInical +9;
Say " ABRIR " Color N_FOC_ENTR_COR
EndIf
If Tecla = 27
Exit
ElseIf Tecla = 5 .Or. Tecla = 19
EntradaFoco--
If EntradaFoco < 1
EntradaFoco := 4
EndIf
ElseIf Tecla = 4 .Or. Tecla = 24
EntradaFoco++
If EntradaFoco > 4
EntradaFoco := 1
EndIf
EndIf
If EntradaFoco = 1 .And. (Tecla >= 32 .And. Tecla <= 126 .Or. ;
Tecla = 13 .Or. Tecla = 7 .Or. Tecla = 1 .Or. Tecla = 6 .Or.;
Tecla = 22)
// [ ], ... ,[~], [Enter], [Del], [Home], [End] ou [Insert]
If Tecla <> 13
KeyBoard Chr( Tecla)
EndIf
@ LinhaInical +2,ColunInical +1 Get NomeUsuar ;
Color COR_MENU_ENTR_FOC
Read
@ LinhaInical +2,ColunInical +1 Say NomeUsuar ;
Color N_FOC_ENTR_COR
If Empty( NomeUsuar)
Item_janela( "P", 1, " - NÆo ‚ v lido nome em branco.")
Item_janela( "P", 1, "")
Item_janela( "P", 4, "COMFIRMAR", 13)
Janela_dialogo( 05,20 , 3)
ElseIf LastKey() = 13
Locate For Nome == NomeUsuar
If Found()
EntradaFoco++
Else
Item_janela( "P", 1, "<<<<<<<<< Usu rio nÆo cadastrado! >>>>>>>>>")
Item_janela( "P", 4, "COMFIRMAR", 13)
Janela_dialogo( 05,20 , 2)
EndIf
EndIf
ElseIf EntradaFoco = 2 .And. Tecla >= 32 .And. Tecla <= 126
Listar := .T.
SenhaAcesso := Space( 20)
SenhaAcesso := EntradaSenha( LinhaInical +3,ColunInical +8, ;
Stuff( SenhaAcesso, 1, 1, Chr( Tecla)), 2)
If SenhaAcesso = Nil
SenhaAcesso := Space( 20)
ElseIf Empty( NomeUsuar)
Item_janela( "P", 1, " - NÆo ‚ v lido nome em branco.")
Item_janela( "P", 1, "")
Item_janela( "P", 4, "COMFIRMAR", 13)
Janela_dialogo( 05,20 , 3)
ElseIf Len( RTrim( SenhaAcesso)) < 4
Item_janela( "P", 1, "<<<<<<<<<<< Senha inv lida! >>>>>>>>>>>>>>")
Item_janela( "P", 1, "")
Item_janela( "P", 1, " - Digite a senha maior que 3 caracteres.")
Item_janela( "P", 1, "")
Item_janela( "P", 4, "COMFIRMAR", 13)
Janela_dialogo( 05,20 , 5)
Else
If Senha == SenhaAcesso
NivAcesUs := NivelAces
UsuarSist := Nome
Close Usuario
Set Default to
RegistAces( DiretProgam, "Relatori.Ace", "A")
Return
Else
Item_janela( "P", 1, "<<<<<<<<<< Acesso Negado! >>>>>>>>>>>>>")
Item_janela( "P", 4, "COMFIRMAR", 13)
Janela_dialogo( 05,20 , 2)
EndIf
EndIf
ElseIf EntradaFoco = 3 .And. (Tecla = 13 .Or. Tecla = 32)
Exit
ElseIf EntradaFoco = 4 .And. (Tecla = 13 .Or. Tecla = 32)
DriveDest := "A"
OBJETO_EM_FOCO := 3
Do While .T.
Item_janela( , 2, " - Ensira o disco-chave no drive ", ;
DriveDest, 1, "A" )
Item_janela( , 1, ":.")
Item_janela( "P", 4, "ABRIR", 13)
Item_janela( , 4, "SAIR", 27)
Janela_dialogo( 5,15 , OBJETO_EM_FOCO)
If TeclaSJ_p = 13 .Or. TeclaSJ_p = 9
If OBJETO_EM_FOCO = 2
DriveDest := RETORNO_OBJETO[2]
OBJETO_EM_FOCO := 4
ElseIf RETORNO_OBJETO[TotObjet_p -1] = 13 .Or. TeclaSJ_p = 9
Set Default to (DriveDest +":\")
If File( DriveDest +":\ChavDisc.IDS")
Restore From (DriveDest +":\ChavDisc.IDS") AddItive
If IDSistema2 == IDSistema
UsuarSist := "Carta-Branca"
NivAcesUs := 5
Else
Item_janela( , 1, ">>>> Disco-chace inv lido! <<<<")
Item_janela( "P", 4, "CONFIRMAR", 13)
Janela_dialogo( 5,15 , 2)
OBJETO_EM_FOCO := TotObjet_p -1
EndIf
Release All Like IDSistema2
Return
EndIf
Set Default to
ElseIf RETORNO_OBJETO[TotObjet_p] = 27
Exit
EndIf
ElseIf TeclaSJ_p = 27
Exit
EndIf
EndDo
EndIf
EndDo
Close Usuario
Set Default to
Else
Item_janela( "P", 1, "================ Sistema ABERTO por ================")
Item_janela( "P", 1, "Usu rio: "+ UsuarSist )
Item_janela( "P", 1, "N¡vel de acesso: "+ LTrim( Str( NivAcesUs)))
Item_janela( "P", 1, "")
Item_janela( "P", 4, "COMTINUAR", 13)
Item_janela( , 4, "FECHAR", 1)
Janela_dialogo( 05,20 , 5)
If RETORNO_OBJETO[TotObjet_p] = 1
NivAcesUs := 0
RegistAces( DiretProgam, "Relatori.Ace", "F")
AcessSistem()
EndIf
EndIf
Return
//<-20
Procedure RegistAces( DiretTrab, RotuloArqu, AbertFech)
FimLinha := Chr( 13) + Chr( 10)
IdentArqu := FOpen( DiretTrab + RotuloArqu, 1)
CodigoErro := FError()
If CodigoErro = 2
IdentArqu := FCreate( DiretTrab + RotuloArqu, 0)
ElseIf CodigoErro <> 0
Item_janela( "P", 1, ;
"<<<<< Erro do DOS ("+ LTrim( Str( CodigoErro)) +") >>>>>")
Item_janela( "P", 4, "COMTINUAR", 13)
Janela_dialogo( 05,20 , 2)
Return
EndIf
If AbertFech == "A"
If FSeek( IdentArqu, 0, 2) = 0
FWrite( IdentArqu, ("Nome - N¡vel"+ FimLinha))
FWrite( IdentArqu, ("Aberto - Fechado" + FimLinha))
FWrite( IdentArqu, FimLinha)
Else
FSeek( IdentArqu, -1, 2)
EndIf
FWrite( IdentArqu, (RTrim( UsuarSist) +" - "+ LTrim( Str( NivAcesUs)) + ;
FimLinha))
FWrite( IdentArqu, (DtoC( Date()) +" "+ Time() +" - "+ FimLinha))
ElseIf AbertFech == "F"
FSeek( IdentArqu, -3, 2)
FWrite( IdentArqu, (DtoC( Date()) +" "+ Time() + FimLinha))
FWrite( IdentArqu, FimLinha)
EndIf
FWrite( IdentArqu, Chr( 26))
FClose( IdentArqu)
Return
//<-21
Function RegistroLU()
Private TeclaSaida := 0, ;
Listar := .T., ;
CompnFocad := 2, ;
TituloJanela := " Registro de Licen‡a Uso "
Private TamTitJan := Len( TituloJanela)
Private PertencObj := {{"L", 1, "", Nil, Nil}}
AAdd( PertencObj, {"L", 2, "Registro: ", Space( 20), TamTitJan -3})
AAdd( PertencObj, {"L", 1, "", Nil, Nil})
AAdd( PertencObj, {"L", 3, "CONFIRMAR", 13, 0})
AAdd( PertencObj, { , 3, "CANSELAR", 27, 0})
TotPertObj := Len( PertencObj)
Private Coordenadas[ TotPertObj, 2]
TLinhas := 1
TColunas := TamTitJan + 8
Coordenadas[ 1, 1 ] = TLinhas
Coordenadas[ 1, 2 ] = 1
For D1 = 2 to TotPertObj
If PertencObj[ D1, 1] == "L"
TLinhas++
Coordenadas[ D1, 2 ] = 1
Else
Coordenadas[ D1, 2 ] = Len( PertencObj[ D1 -1, 3])
If PertencObj[ D1 -1, 2 ] = 2
Coordenadas[ D1, 2 ] += PertencObj[ D1 -1, 5]
ElseIf PertencObj[ D1 -1, 2 ] = 3
Coordenadas[ D1, 2 ] += PertencObj[ D1 -1, 5] +4
EndIf
EndIf
Coordenadas[ D1, 1 ] = TLinhas
Next
LI := (MaxRow() - TLinhas) /2
CI := (MaxCol() - TColunas) /2
LF := LI + TLinhas +1
CF := CI + TColunas +1
@ LI,CI , LF,CF Box Space( 9) Color JANE_COR_FUN
DispBox( LI,CI , LF,CF , 2, JANE_COR_FUN)
@ LI, CI + (TColunas- TamTitJan) /2 Say TituloJanela Color COR_MENU_ENT_FOC
Do While .T.
If Listar
Listar = .F.
For D1 = 1 to TotPertObj
If PertencObj[ D1, 2] = 1
@ LI + Coordenadas[ D1, 1], CI + Coordenadas[ D1, 2] ;
Say PertencObj[ D1, 3] Color SECUN_COR
ElseIf PertencObj[ D1, 2] = 2
@ LI + Coordenadas[ D1, 1], CI + Coordenadas[ D1, 2] ;
Say PertencObj[ D1, 3] Color SECUN_COR
If D1 = CompnFocad
@ LI + Coordenadas[ D1, 1], CI + Coordenadas[ D1, 2] + ;
Len( PertencObj[ D1, 3]) ;
Say Left( PertencObj[ D1, 4], PertencObj[ D1, 5]) ;
Color COR_MENU_ENT_FOC
Else
@ LI + Coordenadas[ D1, 1], CI + Coordenadas[ D1, 2] + ;
Len( PertencObj[ D1, 3]) ;
Say Left( PertencObj[ D1, 4], PertencObj[ D1, 5]) ;
Color N_FOC_ENTR_COR
EndIf
ElseIf PertencObj[ D1, 2] = 3
If D1 = CompnFocad
@ LI + Coordenadas[ D1, 1], CI + Coordenadas[ D1, 2] ;
Say "["+ PertencObj[ D1, 3] +"]" ;
Color COR_MENU_ENT_FOC
Else
@ LI + Coordenadas[ D1, 1], CI + Coordenadas[ D1, 2] ;
Say " "+ PertencObj[ D1, 3] +" " ;
Color N_FOC_ENTR_COR
EndIf
EndIf
Next
EndIf
If PertencObj[ CompnFocad, 2] = 2
SetPos( LI + Coordenadas[ CompnFocad, 1], CI + Coordenadas[ CompnFocad, 2] + ;
Len( PertencObj[ CompnFocad, 3]))
Set Cursor On
ElseIf PertencObj[ CompnFocad, 2] = 3
SetPos( LI + Coordenadas[ CompnFocad, 1] +1, CI + Coordenadas[ CompnFocad, 2])
Set Cursor Off
EndIf
//<-22/////////////////////////////////////////////////////////////////////////
Tecla := Inkey( 0)
//////////////////////////////////////////////////////////////////////////////
If PertencObj[ CompnFocad, 2] = 2 .And. ;
((Tecla >= 32 .And. Tecla <= 126) .Or. Tecla = 13 .Or. ;
Tecla = 6 .Or. Tecla = 1 .Or. Tecla = 7 .Or. Tecla = 4)
Set Cursor On
If Tecla # 13
Keyboard Chr( Tecla)
EndIf
VarivGet := PertencObj[ CompnFocad, 4]
@ LI + Coordenadas[ CompnFocad, 1], CI + Coordenadas[ CompnFocad, 2] + ;
Len( PertencObj[ CompnFocad, 3]) ;
Get VarivGet ;
Picture "@S"+ LTrim( Str( PertencObj[ CompnFocad, 5])) ;
Color N_FOC_ENTR_COR
Read
PertencObj[ CompnFocad, 4] = VarivGet
If LastKey() = 13
Tecla = 4
EndIf
Set Cursor Off
ElseIf PertencObj[ CompnFocad, 2] = 3 .And. (Tecla = 13 .Or. Tecla = 32)
PertencObj[ CompnFocad, 5] = PertencObj[ CompnFocad, 4]
Exit
EndIf
If Tecla = 4 .Or. Tecla = 24 //[St. p/ Dir.] ou [St. p/ Baix.]
Listar = .T.
RolarFoco := CompnFocad
Do While .T.
RolarFoco++
If RolarFoco > TotPertObj
RolarFoco = 1
EndIf
If PertencObj[ RolarFoco, 2 ] # 1 .Or. RolarFoco = CompnFocad
Exit
EndIf
EndDo
CompnFocad = RolarFoco
ElseIf Tecla = 5 .Or. Tecla = 19 //[St. p/ Cim.] ou [St. p/ Esqu.]
Listar = .T.
RolarFoco := CompnFocad
Do While .T.
RolarFoco--
If RolarFoco < 1
RolarFoco = TotPertObj
EndIf
If PertencObj[ RolarFoco, 2 ] # 1 .Or. RolarFoco = CompnFocad
Exit
EndIf
EndDo
CompnFocad = RolarFoco
ElseIf Tecla = 9 .Or. Tecla = 27 //[Tab] ou [Esc]
TeclaSaida = Tecla
Exit
EndIf
EndDo
Return PertencObj[ 2, 4]
//<-23
Function Autenticac()
Private Digito1, Digito2
Private NumerResul := 1
Private TotalCarac := Len( IDSistema)
Private CaracMeio := Int( TotalCarac /2)
If RegisLicen = Nil
Return .F.
EndIf
_PC1 := 1
_PC2 := TotalCarac
Do While _PC1 <= CaracMeio
Digito1 = Val( SubStr( IDSistema, _PC1, 1))
Digito2 = Val( SubStr( IDSistema, _PC2, 1))
If Digito1 = 0 .And. Digito2 = 0
NumerResul *= 10
ElseIf Digito1 <= 1 .Or. Digito2 <= 1
NumerResul *= Digito1 + Digito2
Else
NumerResul += Digito1 ** Digito2
EndIf
/*/
? "CaracMeio <=[", CaracMeio, "]"
? "_PC1 <=[", _PC1, "]"
? "_PC2 <=[", _PC2, "]"
? "Digito1 <=[", Digito1, "]"
? "Digito2 <=[", Digito2, "]"
? "IDSistema <=[", IDSistema, "]"
? "NumerResul <=[", NumerResul, "]"
? "--------------------"
Inkey( 0)
*/
_PC1++
_PC2--
EndDo
If Int( TotalCarac /2) # TotalCarac /2
Digito1 = Val( SubStr( IDSistema, _PC1, 1))
If Digito1 = 0
Digito1 = 1
EndIf
NumerResul *= Digito1
EndIf
/*/
MostCont( 1, "IDSistema", IDSistema)
MostCont( 1, "RegisLicen", RegisLicen)
MostCont( 1, "NumerResul", NumerResul)
MostCont( 6, .T.)
*/
If AllTrim( RegisLicen) == AllTrim( Str( NumerResul, 0))
Return .T.
EndIf
Return .F.
/*
Doações: NOVA CONTA
Contribua depositando $0.50, $1.00, $2.00, $5.00, $10.00, $20.00, $50.00 ou $100.00 na conta:
País: Brasil
Banco: Caixa Econômica Federal (CEF)
Agência: 0014
Conta: 000830215249-6
Tipo de Operação: 013
Obrigado!
*/