IF .NOT. ABRE("ESCOLAS.DBF", 5,"C")
Note que, na função ABRE("ESCOLAS.DBF",5,"C"), "ESCOLAS.DBF" é o nome do arquivo, 5 é o tempo em segundos que o programa deve esperar para testar se pode abrir e "C" quer dizer "COMPARTILHADO". Substitua o "C" por "E" quando quiser abrir em modo Exclusivo!
IF .NOT. INCLUI(5)
Onde INCLUI(5) chama a função inclui e pergunta o tempo que o sistema deve testar (5).
IF .NOT. BLOQUEIA(5)
Bem... E, para exemplificar o que eu disse em "partes", abaixo envio uma das telas básicas de um sistema de controle de escolas que eu fiz. Espero que o estudo desse código elucide alguma coisa...
Código: Selecionar todos
SELECT 1
IF .NOT. ABRE("ESCOLAS.DBF", 5,"C")
ALERT("ARQUIVO ESCOLAS.DBF INDISPONIVEL NO MOMENTO! ",{"OK"},"W+/N")
SET COLOR TO
CLEAR SCREEN
SET CURSOR ON
RETURN
ENDIF
SET INDEX TO ESC0001.CDX, ESC0002.CDX
cRECARREGAR = "SIM"
nINDICE = 1
DO WHILE .T.
SET CURSOR OFF
SET COLOR TO W+/N
CLEAR SCREEN
@ 00,00 SAY "ESCOLAS"
@ 24,00 SAY "<ESC>SAIR <F5>INCLUIR <F6>ALTERAR <F7>CONSULTAR <F8>EXCLUIR <F9>LOCALIZAR"
SELECT 1
SET ORDER TO nINDICE
IF RECCOUNT() > 0
GOTO TOP
ENDIF
@ 01,00 TO 23,79
DBEDIT(02,01,22,77,,"EDESCOLAS")
IF cRECARREGAR = "NAO"
EXIT
ELSEIF cRECARREGAR = "SIM"
LOOP
ENDIF
ENDDO
SET COLOR TO
CLEAR SCREEN
CLEAR TYPEAHEAD
CLOSE DATA
SET CURSOR OFF
RETURN
FUNCTION EDESCOLAS(nMODO, nPOSICAO)
LOCAL nRETORNO := 2
IF nMODO > 0 .AND. nMODO < 4
TONE(1000)
ENDIF
RESTSCREEN(ROW(),01,ROW(),77,TRANSF(SAVESCREEN(ROW(),01,ROW(),77),;
REPLICATE("X"+CHR(112),2*77)))
INKEY(0)
KEYBOARD CHR(LASTKEY())
IF LASTKEY() = 27
CLEAR TYPEAHEAD
cRECARREGAR = "NAO"
nRETORNO = 0
ELSEIF LASTKEY() = 13
cRECARREGAR = "SIM"
nRETORNO = 0
ELSEIF LASTKEY() = -4
DO WHILE .T.
CLEAR TYPEAHEAD
cCIE = SPACE(10)
cNOME = SPACE(50)
cENDERECO = SPACE(50)
cBAIRRO = SPACE(40)
cCEP = SPACE(10)
cCIDADE = SPACE(50)
cUF = SPACE(02)
cTEL = SPACE(50)
cFAX = SPACE(50)
cEMAIL = SPACE(50)
cCRIACAO = SPACE(50)
cINSTALACAO = SPACE(50)
cENSINO01 = SPACE(01)
cENSINO02 = SPACE(01)
cENSINO03 = SPACE(01)
cENSINO04 = SPACE(01)
cENSINO05 = SPACE(01)
cENSINO06 = SPACE(01)
cENSINO07 = SPACE(01)
cENSINO08 = SPACE(01)
cENSINO09 = SPACE(01)
cENSINO10 = SPACE(01)
cENSINO11 = SPACE(01)
cENSINO12 = SPACE(01)
cENSINO13 = SPACE(01)
cENSINO14 = SPACE(01)
cENSINO15 = SPACE(01)
cENSINO16 = SPACE(01)
SET COLOR TO W+/N,W+/N
CLEAR SCREEN
@ 00,00 SAY "ESCOLAS - CADASTRO"
@ 24,01 SAY "<ESC> SAIR"
@ 01,00 CLEAR TO 23,79
@ 01,00 TO 23,79
SET CURSOR ON
@ 01,00 SAY ""
@ PULAR("G",1),01 SAY "CIE:" GET cCIE PICTURE "@!" VALID((LEN(ALLTRIM(cCIE)) > 0) .AND. (TEM(1,1,cCIE) = .F.)) SEND COLORSPEC := "W+/N,N/W"
@ PULAR("G",1),01 SAY "NOME:" GET cNOME PICTURE "@!" SEND COLORSPEC := "W+/N,N/W"
@ PULAR("G",1),01 SAY "ENDERECO:" GET cENDERECO PICTURE "@!" SEND COLORSPEC := "W+/N,N/W"
@ PULAR("G",1),01 SAY "BAIRRO:" GET cBAIRRO PICTURE "@!" SEND COLORSPEC := "W+/N,N/W"
@ PULAR("G",0),50 SAY "CEP:" GET cCEP PICTURE "99.999-999" SEND COLORSPEC := "W+/N,N/W"
@ PULAR("G",1),01 SAY "CIDADE:" GET cCIDADE PICTURE "@!" SEND COLORSPEC := "W+/N,N/W"
@ PULAR("G",0),60 SAY "UF:" GET cUF PICTURE "@!" SEND COLORSPEC := "W+/N,N/W"
@ PULAR("G",1),01 SAY "TEL:" GET cTEL PICTURE "@!" SEND COLORSPEC := "W+/N,N/W"
@ PULAR("G",1),01 SAY "FAX:" GET cFAX PICTURE "@!" SEND COLORSPEC := "W+/N,N/W"
@ PULAR("G",1),01 SAY "E-MAIL:" GET cEMAIL PICTURE "@!" SEND COLORSPEC := "W+/N,N/W"
@ PULAR("G",1),01 SAY "CRIACAO:" GET cCRIACAO PICTURE "@!" SEND COLORSPEC := "W+/N,N/W"
@ PULAR("G",1),01 SAY "INSTALACAO:" GET cINSTALACAO PICTURE "@!" SEND COLORSPEC := "W+/N,N/W"
@ PULAR("G",1),00 SAY ""
@ PULAR("G",1),01 TO PULAR("G",1),78
@ PULAR("G",-1),03 SAY "TIPOS DE ENSINO OFERECIDOS PELO ESTABELECIMENTO"
@ PULAR("G",1),01 SAY "01 ENSINO FUNDAMENTAL DE 8 ANOS....." GET cENSINO01 PICTURE "@!" VALID(cENSINO01$" X") SEND COLORSPEC := "W+/N,N/W"
@ PULAR("G",0),40 SAY "09 EDUCACAO ESPECIAL - DM..........." GET cENSINO09 PICTURE "@!" VALID(cENSINO09$" X") SEND COLORSPEC := "W+/N,N/W"
@ PULAR("G",1),01 SAY "02 ENSINO MEDIO....................." GET cENSINO02 PICTURE "@!" VALID(cENSINO02$" X") SEND COLORSPEC := "W+/N,N/W"
@ PULAR("G",0),40 SAY "10 EDUCACAO ESPECIAL - DV..........." GET cENSINO10 PICTURE "@!" VALID(cENSINO10$" X") SEND COLORSPEC := "W+/N,N/W"
@ PULAR("G",1),01 SAY "03 EJA CICLO I (ENSINO FUNDAMENTAL)." GET cENSINO03 PICTURE "@!" VALID(cENSINO03$" X") SEND COLORSPEC := "W+/N,N/W"
@ PULAR("G",0),40 SAY "11 ................................." GET cENSINO11 PICTURE "@!" VALID(cENSINO11$" X") SEND COLORSPEC := "W+/N,N/W"
@ PULAR("G",1),01 SAY "04 EJA CICLO II (ENSINO FUNDAMENTAL)" GET cENSINO04 PICTURE "@!" VALID(cENSINO04$" X") SEND COLORSPEC := "W+/N,N/W"
@ PULAR("G",0),40 SAY "12 ................................." GET cENSINO12 PICTURE "@!" VALID(cENSINO12$" X") SEND COLORSPEC := "W+/N,N/W"
@ PULAR("G",1),01 SAY "05 EJA ENSINO MEDIO................." GET cENSINO05 PICTURE "@!" VALID(cENSINO05$" X") SEND COLORSPEC := "W+/N,N/W"
@ PULAR("G",0),40 SAY "13 CURSO NORMAL....................." GET cENSINO13 PICTURE "@!" VALID(cENSINO13$" X") SEND COLORSPEC := "W+/N,N/W"
@ PULAR("G",1),01 SAY "06 EDUCACAO INFANTIL................" GET cENSINO06 PICTURE "@!" VALID(cENSINO06$" X") SEND COLORSPEC := "W+/N,N/W"
@ PULAR("G",0),40 SAY "14 ENSINO FUNDAMENTAL DE 9 ANOS....." GET cENSINO14 PICTURE "@!" VALID(cENSINO14$" X") SEND COLORSPEC := "W+/N,N/W"
@ PULAR("G",1),01 SAY "07 EDUCACAO ESPECIAL - DA..........." GET cENSINO07 PICTURE "@!" VALID(cENSINO07$" X") SEND COLORSPEC := "W+/N,N/W"
@ PULAR("G",0),40 SAY "15 CEL - CENTRO DE ENSINO DE LINGUAS" GET cENSINO15 PICTURE "@!" VALID(cENSINO15$" X") SEND COLORSPEC := "W+/N,N/W"
@ PULAR("G",1),01 SAY "08 EDUCACAO ESPECIAL - DF..........." GET cENSINO08 PICTURE "@!" VALID(cENSINO08$" X") SEND COLORSPEC := "W+/N,N/W"
@ PULAR("G",0),40 SAY "16 EDUCACAO ESPECIAL (DMU).........." GET cENSINO16 PICTURE "@!" VALID(cENSINO16$" X") SEND COLORSPEC := "W+/N,N/W"
READ
IF LASTKEY() = 27
EXIT
ENDIF
nSALVAR = ALERT("SALVAR AS INFORMACOES?",{"SIM","NAO"},"W+/N")
IF (nSALVAR = 0) .OR. (nSALVAR = 2)
EXIT
ELSEIF nSALVAR = 1
SELECT 1
IF .NOT. INCLUI(5)
ALERT("REGISTRO INDISPONIVEL NO MOMENTO!",{"OK"},"W+/N")
EXIT
ELSE
REPLACE CIE WITH cCIE,;
NOME WITH cNOME,;
ENDERECO WITH cENDERECO,;
BAIRRO WITH cBAIRRO,;
CEP WITH cCEP,;
CIDADE WITH cCIDADE,;
UF WITH cUF,;
TEL WITH cTEL,;
FAX WITH cFAX,;
EMAIL WITH cEMAIL,;
CRIACAO WITH cCRIACAO,;
INSTALACAO WITH cINSTALACAO,;
ENSINO01 WITH cENSINO01,;
ENSINO02 WITH cENSINO02,;
ENSINO03 WITH cENSINO03,;
ENSINO04 WITH cENSINO04,;
ENSINO05 WITH cENSINO05,;
ENSINO06 WITH cENSINO06,;
ENSINO07 WITH cENSINO07,;
ENSINO08 WITH cENSINO08,;
ENSINO09 WITH cENSINO09,;
ENSINO10 WITH cENSINO10,;
ENSINO11 WITH cENSINO11,;
ENSINO12 WITH cENSINO12,;
ENSINO13 WITH cENSINO13,;
ENSINO14 WITH cENSINO14,;
ENSINO15 WITH cENSINO15,;
ENSINO16 WITH cENSINO16
DBUNLOCK()
DBCOMMIT()
ENDIF
ENDIF
EXIT
ENDDO
cRECARREGAR = "SIM"
nRETORNO = 0
ELSEIF LASTKEY() = -5
CLEAR TYPEAHEAD
IF .NOT. BLOQUEIA(5)
ALERT("REGISTRO INDISPONIVEL NO MOMENTO!",{"OK"},"W+/N")
ELSE
DO WHILE .T.
CLEAR TYPEAHEAD
SET COLOR TO W+/N,W+/N
CLEAR SCREEN
@ 00,00 SAY "ESCOLAS - ALTERACAO"
@ 24,01 SAY "<ESC> SAIR"
@ 01,00 TO 23,79
@ 01,00 SAY ""
SELECT 1
SET CURSOR ON
@ PULAR("G",1),01 SAY "CIE:" + CIE
@ PULAR("G",1),01 SAY "NOME:" GET NOME PICTURE "@!" SEND COLORSPEC := "W+/N,N/W"
@ PULAR("G",1),01 SAY "ENDERECO:" GET ENDERECO PICTURE "@!" SEND COLORSPEC := "W+/N,N/W"
@ PULAR("G",1),01 SAY "BAIRRO:" GET BAIRRO PICTURE "@!" SEND COLORSPEC := "W+/N,N/W"
@ PULAR("G",0),50 SAY "CEP:" GET CEP PICTURE "99.999-999" SEND COLORSPEC := "W+/N,N/W"
@ PULAR("G",1),01 SAY "CIDADE:" GET CIDADE PICTURE "@!" SEND COLORSPEC := "W+/N,N/W"
@ PULAR("G",0),60 SAY "UF:" GET UF PICTURE "@!" SEND COLORSPEC := "W+/N,N/W"
@ PULAR("G",1),01 SAY "TEL:" GET TEL PICTURE "@!" SEND COLORSPEC := "W+/N,N/W"
@ PULAR("G",1),01 SAY "FAX:" GET FAX PICTURE "@!" SEND COLORSPEC := "W+/N,N/W"
@ PULAR("G",1),01 SAY "E-MAIL:" GET EMAIL PICTURE "@!" SEND COLORSPEC := "W+/N,N/W"
@ PULAR("G",1),01 SAY "CRIACAO:" GET CRIACAO PICTURE "@!" SEND COLORSPEC := "W+/N,N/W"
@ PULAR("G",1),01 SAY "INSTALACAO:" GET INSTALACAO PICTURE "@!" SEND COLORSPEC := "W+/N,N/W"
@ PULAR("G",1),01 SAY ""
@ PULAR("G",1),01 TO PULAR("G",1),78
@ PULAR("G",-1),03 SAY "TIPOS DE ENSINO OFERECIDOS PELO ESTABELECIMENTO"
@ PULAR("G",1),01 SAY "01 ENSINO FUNDAMENTAL DE 8 ANOS....." GET ENSINO01 PICTURE "@!" VALID(ENSINO01$" X") SEND COLORSPEC := "W+/N,N/W"
@ PULAR("G",0),40 SAY "09 EDUCACAO ESPECIAL - DM..........." GET ENSINO09 PICTURE "@!" VALID(ENSINO09$" X") SEND COLORSPEC := "W+/N,N/W"
@ PULAR("G",1),01 SAY "02 ENSINO MEDIO....................." GET ENSINO02 PICTURE "@!" VALID(ENSINO02$" X") SEND COLORSPEC := "W+/N,N/W"
@ PULAR("G",0),40 SAY "10 EDUCACAO ESPECIAL - DV..........." GET ENSINO10 PICTURE "@!" VALID(ENSINO10$" X") SEND COLORSPEC := "W+/N,N/W"
@ PULAR("G",1),01 SAY "03 EJA CICLO I (ENSINO FUNDAMENTAL)." GET ENSINO03 PICTURE "@!" VALID(ENSINO03$" X") SEND COLORSPEC := "W+/N,N/W"
@ PULAR("G",0),40 SAY "11 ................................." GET ENSINO11 PICTURE "@!" VALID(ENSINO11$" X") SEND COLORSPEC := "W+/N,N/W"
@ PULAR("G",1),01 SAY "04 EJA CICLO II (ENSINO FUNDAMENTAL)" GET ENSINO04 PICTURE "@!" VALID(ENSINO04$" X") SEND COLORSPEC := "W+/N,N/W"
@ PULAR("G",0),40 SAY "12 ................................." GET ENSINO12 PICTURE "@!" VALID(ENSINO12$" X") SEND COLORSPEC := "W+/N,N/W"
@ PULAR("G",1),01 SAY "05 EJA ENSINO MEDIO................." GET ENSINO05 PICTURE "@!" VALID(ENSINO05$" X") SEND COLORSPEC := "W+/N,N/W"
@ PULAR("G",0),40 SAY "13 CURSO NORMAL....................." GET ENSINO13 PICTURE "@!" VALID(ENSINO13$" X") SEND COLORSPEC := "W+/N,N/W"
@ PULAR("G",1),01 SAY "06 EDUCACAO INFANTIL................" GET ENSINO06 PICTURE "@!" VALID(ENSINO06$" X") SEND COLORSPEC := "W+/N,N/W"
@ PULAR("G",0),40 SAY "14 ENSINO FUNDAMENTAL DE 9 ANOS....." GET ENSINO14 PICTURE "@!" VALID(ENSINO14$" X") SEND COLORSPEC := "W+/N,N/W"
@ PULAR("G",1),01 SAY "07 EDUCACAO ESPECIAL - DA..........." GET ENSINO07 PICTURE "@!" VALID(ENSINO07$" X") SEND COLORSPEC := "W+/N,N/W"
@ PULAR("G",0),40 SAY "15 CEL - CENTRO DE ENSINO DE LINGUAS" GET ENSINO15 PICTURE "@!" VALID(ENSINO15$" X") SEND COLORSPEC := "W+/N,N/W"
@ PULAR("G",1),01 SAY "08 EDUCACAO ESPECIAL - DF..........." GET ENSINO08 PICTURE "@!" VALID(ENSINO08$" X") SEND COLORSPEC := "W+/N,N/W"
@ PULAR("G",0),40 SAY "16 EDUCACAO ESPECIAL (DMU).........." GET ENSINO16 PICTURE "@!" VALID(ENSINO16$" X") SEND COLORSPEC := "W+/N,N/W"
READ
IF LASTKEY() = 27
EXIT
ENDIF
nSALVAR = ALERT("SALVAR AS INFORMACOES?",{"SIM","NAO"},"W+/N")
IF (nSALVAR = 0) .OR. (nSALVAR = 2)
EXIT
ELSEIF nSALVAR = 1
DBUNLOCK()
DBCOMMIT()
ENDIF
EXIT
ENDDO
ENDIF
cRECARREGAR = "SIM"
nRETORNO = 0
ELSEIF LASTKEY() = -6
CLEAR TYPEAHEAD
DO WHILE .T.
SET COLOR TO W+/N,W+/N
CLEAR SCREEN
@ 00,00 SAY "ESCOLAS - CONSULTA"
@ 24,01 SAY "<ESC>SAIR"
@ 01,00 TO 23,79
@ 01,00 SAY ""
SELECT 1
@ PULAR("S",1),01 SAY "CIE:" + CIE
@ PULAR("S",1),01 SAY "NOME:" + NOME
@ PULAR("S",1),01 SAY "ENDERECO:" + ENDERECO
@ PULAR("S",1),01 SAY "BAIRRO:" + BAIRRO
@ PULAR("S",0),50 SAY "CEP:" + CEP
@ PULAR("S",1),01 SAY "CIDADE:" + CIDADE
@ PULAR("S",0),60 SAY "UF:" + UF
@ PULAR("S",1),01 SAY "TEL:" + TEL
@ PULAR("S",1),01 SAY "FAX:" + FAX
@ PULAR("S",1),01 SAY "E-MAIL:" + EMAIL
@ PULAR("S",1),01 SAY "CRIACAO:" + CRIACAO
@ PULAR("S",1),01 SAY "INSTALACAO:" + INSTALACAO
@ PULAR("S",1),01 SAY ""
@ PULAR("S",1),01 TO PULAR("G",1),78
@ PULAR("S",-1),03 SAY "TIPOS DE ENSINO OFERECIDOS PELO ESTABELECIMENTO"
@ PULAR("S",1),01 SAY "01 ENSINO FUNDAMENTAL DE 8 ANOS....." + ENSINO01
@ PULAR("S",0),40 SAY "09 EDUCACAO ESPECIAL - DM..........." + ENSINO09
@ PULAR("S",1),01 SAY "02 ENSINO MEDIO....................." + ENSINO02
@ PULAR("S",0),40 SAY "10 EDUCACAO ESPECIAL - DV..........." + ENSINO10
@ PULAR("S",1),01 SAY "03 EJA CICLO I (ENSINO FUNDAMENTAL)." + ENSINO03
@ PULAR("S",0),40 SAY "11 ................................." + ENSINO11
@ PULAR("S",1),01 SAY "04 EJA CICLO II (ENSINO FUNDAMENTAL)" + ENSINO04
@ PULAR("S",0),40 SAY "12 ................................." + ENSINO12
@ PULAR("S",1),01 SAY "05 EJA ENSINO MEDIO................." + ENSINO05
@ PULAR("S",0),40 SAY "13 CURSO NORMAL....................." + ENSINO13
@ PULAR("S",1),01 SAY "06 EDUCACAO INFANTIL................" + ENSINO06
@ PULAR("S",0),40 SAY "14 ENSINO FUNDAMENTAL DE 9 ANOS....." + ENSINO14
@ PULAR("S",1),01 SAY "07 EDUCACAO ESPECIAL - DA..........." + ENSINO07
@ PULAR("S",0),40 SAY "15 CEL - CENTRO DE ENSINO DE LINGUAS" + ENSINO15
@ PULAR("S",1),01 SAY "08 EDUCACAO ESPECIAL - DF..........." + ENSINO08
@ PULAR("S",0),40 SAY "16 EDUCACAO ESPECIAL (DMU).........." + ENSINO16
INKEY(3)
IF LASTKEY() = 27
EXIT
ENDIF
ENDDO
cRECARREGAR = "SIM"
nRETORNO = 0
ELSEIF LASTKEY() = -7
CLEAR TYPEAHEAD
cCIE = CIE
nEXCLUIR = ALERT(ALLTRIM(CIE) + " - EXCLUIR ESTE REGISTRO?",{"SIM","NAO"},"W+/N")
IF (nEXCLUIR = 0) .OR. (nEXCLUIR = 2)
//NADA FAZ
ELSEIF nEXCLUIR = 1
SELECT 1
IF .NOT. BLOQUEIA(5)
ALERT("REGISTRO INDISPONIVEL NO MOMENTO!",{"OK"},"W+/N")
ELSE
DELETE
DBUNLOCK()
DBCOMMIT()
ENDIF
ENDIF
cRECARREGAR = "SIM"
nRETORNO = 0
ELSEIF LASTKEY() = -8
CLEAR TYPEAHEAD
tLOCTEL = SAVESCREEN(00,00,24,79)
tLOCCOR = SETCOLOR()
DO WHILE .T.
SET CURSOR ON
cPROCURARPOR = "1"
cLOCALIZAR = SPACE(50)
SET COLOR TO W+/N,W+/N
@ 20,00 CLEAR TO 23,79
@ 20,00 TO 23,79
@ 21,02 SAY "1-CIE 2-NOME"
@ 22,02 SAY "PROCURAR POR: "
@ 22,16 GET cPROCURARPOR PICTURE "@!" VALID(cPROCURARPOR$"12") SEND COLORSPEC := "W+/N,N/W"
@ 22,18 GET cLOCALIZAR PICTURE "@!" SEND COLORSPEC := "W+/N,N/W"
READ
IF LASTKEY() = 27
cRECARREGAR = "SIM"
nRETORNO = 0
EXIT
ENDIF
IF LEN(TRIM(cLOCALIZAR)) = 0
cRECARREGAR = "SIM"
nRETORNO = 0
EXIT
ENDIF
SELECT 1
nINDICE = VAL(cPROCURARPOR)
SET ORDER TO nINDICE
IF DBSEEK(ALLTRIM(cLOCALIZAR),.T.)
cRECARREGAR = "SIM"
nRETORNO = 2
EXIT
ELSE
ALERT("NENHUM REGISTRO ENCONTRADO!",{"OK"},"W+/N")
cRECARREGAR = "SIM"
nRETORNO = 0
LOOP
ENDIF
ENDDO
nINDICE = VAL(cPROCURARPOR)
SET ORDER TO nINDICE
SET CURSOR OFF
SET COLOR TO tLOCCOR
CLEAR SCREEN
RESTSCREEN(00,00,24,79,tLOCTEL)
ELSEIF LASTKEY() = 19
KEYBOARD CHR(26)
ELSEIF LASTKEY() = 4
KEYBOARD CHR(2)
ENDIF
RETURN(nRETORNO)
E, só para esclarecer de onde tirei estas, funções: elas são do livro "CLIPPER EM REDE"! Só não me lembro o nome dos autores, em o nome da editora ou o ano de publicação... :%