Com respeito ao ALERT, eu tinha pra te dizer apenas que este deixa menos ágil teu sistema, porque além de dar uma mensagem tipo "ERRO de sistema", pois o usuário se acostuma ver essa janelinha e quando ocorre ERRO, mesmo não te avisa (claro que também tem outra solução para gravar os erros em arquivo). Mas já viu ? É importante a inteiração com o usuário, padronizar as mensagens, visualizando e diferenciando as mesnagens tipo, ERRO, tipo ALERTA, tipo MENSAGEM para informação. O usuário no ALERT() terá que confirmar algo, sendo que se você utilizasse o MENSAGEM() (função ora criada por você), apenas exibiria por tempo determinado e voltaria a edição do GET. Dê uma olhada neste exemplo de MENSAGEM():
Código: Selecionar todos
FUNCTION MENSAGEM( TEXTO, PAUSA )
STATIC ULT_MENSAGEM := ""
LOCAL ULT_CURSOR := SAVECURSOR() // função da CT.LIB
IF TEXTO = NIL; TEXTO := ""; ENDIF
SET CURSOR OFF
@ MAXROW(), 00 SAY PADC( TEXTO, 80 ) COLOR "N/W"
IF PAUSA = NIL
ULT_MENSAGEM := TEXTO
ELSE
INKEY( PAUSA )
@ MAXROW(), 00 SAY PADC( ULT_MENSAGEM, 80 ) COLOR "N/W"
ENDIF
RESTCURSOR(ULT_CURSOR)
RETURN NILVocê entendeu o exemplo na minha primeira mensagem que postei neste tópico ?. Você percebeu que seria conveniente acostumar ao usuário que caso esqueça dos códigos, pressione F2 para obter uma listagem (seja em DBEDIT ou TBROWSE) ?. Desta forma fica mais fácil e padronizada de trabalhar. Como ja disse anteriormente, não induza ao seu usuário para que provoque o erro. Dê opções no seu sistema, mas de forma passiva e padronizada.ederxc escreveu:ou seja se caso o usuario esqueça o codigo "ele sempre esquece" ele pesquisaria por nome e é por isso a necessidade de mais um get
Eu ja ví que pode ser feito com CLEAR GETS, mas eu particularmente não gosto de utilizá-los. Utilizo o GETINPUT da CT.LIB (que assemelha-se ao um GET), veja um exemplo:ederxc escreveu:Pessoal , seria possivel dentro de minha função de pesquisa haver outro Get?
Código: Selecionar todos
VQCORE:=SETCOLOR()
TELA_FUN:=SAVESCREEN(14,13,20,68)
SET COLOR TO (CONTECOR[2])
@ 14,13 CLEAR TO 18,67
SET COLOR TO (CONTECOR[12])
@ 14,13 TO 18,67
SET COLOR TO (CONTECOR[2])
@ 14,14 SAY PADC(" Cadstro de Funcion rio ",53,"Ä") COLOR CONTECOR[12]
@ 15,15 SAY "Nome completo:" COLOR CONTECOR[2]
@ 16,15 SAY "Data Admiss„o:" COLOR CONTECOR[2]
FICA=.T.
SET CURSOR ON
SET KEY 5 TO RET1
SET KEY 24 TO RET2
VQPOS=1
DO WHILE FICA=.T.
IF VQPOS=1
VQPOS++
MENSAGEM("Informe o nome completo do funcion rio.")
@ 15,30 SAY ""
W_EMPRESA=GETINPUT(W_EMPRESA,15,30,,,"@!",SETCOLOR(CONTECOR[8]+"/"+CONTECOR[9]))
ENDIF
IF !LASTKEY()=27 .AND. VQPOS=2
VQPOS++
MENSAGEM("Informe a data que foi admitido na empresa.")
@ 16,30 SAY ""
V_EMP=GETINPUT(W_FANTASIA,16,30,,,"@!",SETCOLOR(CONTECOR[8]+"/"+CONTECOR[9]))
ENDIF
IF !(LASTKEY()=3)
FICA=.F.
ENDIF
IF VQPOS>2
VQPOS=1
ENDIF
ENDDO
SET KEY 5 TO
SET KEY 24 TO
SET CURSOR OFF
IF !LASTKEY()=27
IF BLOQREG(20)
REPLACE
UNLOCK
ENDIF
ENDIF
SETCOLOR(VQCORE)
RESTSCREEN(14,13,20,68,TELA_EMP)
@ 13,33 SAY (4->FANTASIA) COLOR CONTECOR[8]
FUNCTION RET1
VQPOS=VQPOS-2
IF VQPOS<1
VQPOS=5
ENDIF
KEYBOARD CHR(3)
RETURN NIL
FUNCTION RET2
KEYBOARD CHR(3)
RETURN NILSim pode ser feito um segundo GET dentro de outro, mas intenta utilizar o GETINPUT(), para ver como ele funciona. Mas você terá dificuldades na parte de navegação entre GETs. Outra coisa que você pode tentar é alterar o seu GETSYS.PRG para poder navegar é fazer todo o tratamento de saída de GETs, lá onde trata-se os seus GETs como objetos. Mas esta opção, requer mais esforço.ederxc escreveu:ou seria possivel um segundo get dentro da função e eu estrou fazendo coisa errada ?
Um clip-abraço :)Pos



