Navegação de gets usando gets comuns e com listbox
Moderador: Moderadores
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
ACHOICE vs GETSYS => listbox
Pois é Ademir, na minha opinião você vai perder mais tempo tentado consertar situações quanto a navegação dos GETs do que fazendo um GETSYS.PRG específico. Gostariamos saber como você resolveu o caso e poste o exemplo. Se precisar de ajuda, estamos aqui.
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
-
Ademir
- Usuário Nível 3

- Mensagens: 170
- Registrado em: 31 Jul 2007 16:28
- Localização: Porto Ferreira-SP
Re: Navegação de gets usando gets comuns e com listbox
Bom dia Pablo !
Apenas criei uma função chamada Help() que abre um achoice com as opções dependendo do campo editado. Ela é acionada atraves do F1. Achei melhor o F1 porque descobrí recentemente que se vc criar uma função com o nome Help(), não é necessário usar o Set Key 28 to funçao() (pelo menos na 5.3). O achoice é aberto abaixo do get, como se fosse um listbox(). É isso... []s
Apenas criei uma função chamada Help() que abre um achoice com as opções dependendo do campo editado. Ela é acionada atraves do F1. Achei melhor o F1 porque descobrí recentemente que se vc criar uma função com o nome Help(), não é necessário usar o Set Key 28 to funçao() (pelo menos na 5.3). O achoice é aberto abaixo do get, como se fosse um listbox(). É isso... []s
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Re: Navegação de gets usando gets comuns e com listbox
Ahhh então você abandonou a idéia de sair do seu LISTBOX quando usuário vai até o primeiro intem do listbox e continua pressionando seta para cima e daí sai do LISTBOX e passa para o GET anterior ? Ou você conseguiu reproduzir justamente isso ?. Porque seria interessante ver como foi feito. Eu com achoice tive muitas dificuldades (por não dizer muitas gambiarras, para que desse certo), mas no GETSYS ficou melhor que os ACHOICEs que eu tinha feito. Se puder postar exemplo, caso tenha obtido sucesso, digo.
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
-
Ademir
- Usuário Nível 3

- Mensagens: 170
- Registrado em: 31 Jul 2007 16:28
- Localização: Porto Ferreira-SP
Re: Navegação de gets usando gets comuns e com listbox
É Pablo... fazer a saida do listbox para o get anterior com as setas achei meio complicado, pra não dizer inviavel. Imagine um listbox com 50 itens. O usuário posiciona o cursor no penultimo, e aí vê que o campo anterior está errado. Imagina eu falar pro cara que ele tem que mover a seta até o primeiro para voltar ao campo anterior ? Se bem que pra isso, eu tambem teria que quebrar a cabeça para descobrir como fazer com que o listbox reconheça que o usuario está no primeiro item, apesar de achar que isso é possível pelo que estudei do listbox até agora. Tambem tem o "problema" de quando a lista está aberta, se o usuário teclar ESC, a edição de todos os gets é simplesmente abortada. Nesse caso, tambem teria que desabilitar a tecla ESC quando a lista estiver aberta. Resumindo: como disse, apenas criei um achoice normal e agora posso navegar tranquilamente entre os gets.
Obs.: preferí não alterar meu getsys visto que a solução com o achoice resolveu o problema plenamente.
[]s.
Ademir
Obs.: preferí não alterar meu getsys visto que a solução com o achoice resolveu o problema plenamente.
[]s.
Ademir
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Navegação de gets usando gets comuns e com listbox
Pois é, visto por esse ângulo... realmente fica esquisito e desnecessário. Eu mencionei meu exemplo porque a quantidade de elemento a escolher eram fixa, por exemplo: SIM e NÃO.fazer a saida do listbox para o get anterior com as setas achei meio complicado, pra não dizer inviavel. Imagine um listbox com 50 itens.
Mas acho que valeu todos os comentários, pois ajudaram a compor um conceito sobre saída dos LISTBOX.
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Re: Navegação de gets usando gets comuns e com listbox
Amiguinho
tente usar esta solução:
Funcao EDIT_PESQ()
Funcao SAYIT()
tente usar esta solução:
Código: Selecionar todos
...
LinSAY := 10
ColSAY := 10
@ LinSAY, ColSAY SAY "Cidade..:" GET M->CIDADE PICTURE "@!@K" WHEN SAYIT( 'Digite o CIDADE.' );
VALID IIF(!EMPTY(M->CIDADE),.T.,EDIT_PESQ(LinSAY, ; // Linha do box
ColSAY, ; // Coluna do box
M->CIDADE, ; // dado passado para pesquisa
"CIDADE", ; // base de dados pesquisada
1, ; // ordem do indice
"CIDADE", ; // campo com conteudo retornado
"CIDADE+'|'+ESTADO+'|'+DDD", ; // cabecalho do box
"M->CIDADE", ; // variavel de retorno
{|| .T. }))
...
Código: Selecionar todos
#include "NF.CH"
#include "NFMOU.CH"
#include "NFERROR.CH"
FUNCTION EDIT_PESQ( M_LIN, M_COL, M_RELACAO, M_AREA, M_ORDEM, M_CAMPO, M_STRING, M_SAIDA, M_FUNCAO, M_LISTA, M_ELISTA )
IF M_LISTA = NIL; M_LISTA := .T.; ENDIF
SET KEY 22 TO
PUBLIC M_CAMPO2, M_EDLISTA, RET_CAMPO, M_RELAC2, M_LIN2, M_COL2, TA_MA_NHO
M_LIN2 := M_LIN
M_COL2 := M_COL
M_RELAC2 := ALLTRIM(M_RELACAO)
M_CAMPO2 := M_CAMPO
M_EDLISTA := IIF(M_ELISTA=NIL,.F.,M_ELISTA)
//M_LIN := BLA1
//M_COL := BLA2
//M_LIN := GETFLDROW()
//M_COL := GETFLDCOL()
IF M_LISTA = .F. // Se limitar a uma lista analisa conteudo dos campos
IF VALTYPE( M_RELACAO ) = 'C'
IF VAL(M_RELACAO) <> 0 .OR. EMPTY(M_RELACAO)
M_LISTA := .T. // Se o campo caracter nao estiver VAZIO, lista
ENDIF
ENDIF
IF VALTYPE( M_RELACAO ) = 'N'
IF M_RELACAO <> 0
M_LISTA := .T. // Se o campo numerico nao estiver com ZERO, lista
ENDIF
ENDIF
ENDIF
IF M_LISTA = .T. // Se limita somente a lista teste o tipo
DECLARE M_CAMPOS[1]
M_CAMPOS[1] := M_STRING
U_AREATUA := ALLTRIM( STR( SELECT(), 3 ) ) // pega area atual
U_ORDEM := INDEXORD() // pega ordem atual
SELE &M_AREA // seleciona area de pesquisa
SET ORDER TO M_ORDEM // coloca nova ordem
M_REC := RECCO()
IF M_REC = 0
BEEP(); MENSAGEM('Esta tabela esta VAZIA!!!',5)
RETURN .F.
ENDIF
IF (M_LIN+1+8) > MAXROW()
M_LIN := M_LIN-11
ENDIF
IF (M_COL+LEN(&M_STRING)+1) > MAXCOL()
M_COL := MAXCOL()-(LEN(&M_STRING)+2)
ENDIF
SET SOFTSEEK ON
SEEK M_RELACAO // pesquisa dado
IF !FOUND()
IF EMPTY(M_RELACAO)
GO TOP
ENDIF
MOUSE( DESLIGA )
SAVE SCREEN TO M->T_ELA
MOUSE( LIGA )
COR( "JANELA DE DIALOGO" )
TA_MA_NHO := IIF(M_REC>7,7,M_REC)
@ M_LIN+1,M_COL CLEAR TO M_LIN+2+2+TA_MA_NHO,M_COL+LEN(&M_STRING)+1
@ M_LIN+1,M_COL TO M_LIN+2+2+TA_MA_NHO,M_COL+LEN(&M_STRING)+1
IF M_EDLISTA
MENSAGEM("INSere DELeta ESCape")
ENDIF
@ M_LIN2+2+TA_MA_NHO, M_COL2+1 SAY REPL('-',LEN(&M_STRING))
DBEDIT(M_LIN+2,M_COL+1,M_LIN+1+TA_MA_NHO,M_COL+LEN(&M_STRING),M_CAMPOS,"F_PESQ",'','','')
MOUSE( DESLIGA )
RESTORE SCREEN FROM M->T_ELA
MOUSE( LIGA )
COR( "GETS" )
ENDIF
RETORNO := &M_CAMPO
&M_SAIDA := RETORNO
SET SOFTSEEK OFF
EVAL( M_FUNCAO )
SELE &U_AREATUA // seleciona antiga area
SET ORDER TO U_ORDEM // seleciona antiga ordem
ENDIF
RETURN .T.
FUNCTION F_PESQ
PARAMETERS MODO, PONTEIRO
PRIVATE POS_CURSOR,REGISTRO
POS_CURSOR = ROW()
DO CASE
CASE MODO < 4
RETORNO = 1
CASE LASTKEY() = 27 .OR. LASTKEY() = 13
RETORNO = 0
CASE LASTKEY() = 21 .or. LASTKEY() = 7
IF M_EDLISTA
REGLOCK
dbDELETE()
COMMIT
ENDIF
RETORNO = 2
CASE LASTKEY() = 22 .or. LASTKEY() = 14
IF M_EDLISTA
SAVE GET TO ED_LISTA
M->RET_CAMPO := &M_CAMPO2
@ POS_CURSOR,COL() GET M->RET_CAMPO PICT "@!"
SET CURSOR ON
READ
SET CURSOR OFF
RESTORE GET FROM ED_LISTA
APPEND BLANK
REPLACE &M_CAMPO2 WITH M->RET_CAMPO
COMMIT
IF LASTKEY() = 27
RETORNO = 2
ENDIF
ENDIF
RETORNO = 2
OTHERWISE
RETORNO = 1
ENDCASE
RETURN(RETORNO)
FUNCTION PSQ_TAB2( LIN, COL, HISTORY, RE_TORNO, QUE_DADO )
PRIVATE TELA1,OPCAO
SAVE SCREEN TO TELA1
POSF := ASCAN(HISTORY,QUE_DADO)
TAMF := IIF(LEN(HISTORY)>10,10,LEN(HISTORY))+1
LINF := IIF( (LIN+TAMF)>MAXROW(), MAXROW()-TAMF, LIN+TAMF )
COLF := IIF( (COL+20) > 79 , 80-20 , COL+20 )
@ LIN, COL CLEAR TO LINF, COLF
@ LIN, COL TO LINF, COLF
M->OPCAO := ACHOICE( LIN+1, COL+1, LINF-1, COLF-1, HISTORY,,, POSF )
REST SCREEN FROM TELA1
IF OPCAO = 0
RETURN( .F. )
ENDIF
&RE_TORNO := UPPER(HISTORY[ M->OPCAO ])
RETURN( .T. )
Código: Selecionar todos
Function SayIT( cMsg )
@ 24,0 say cMsg
RETURN( .T. )
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
-
labaroazul
- Usuário Nível 2

- Mensagens: 83
- Registrado em: 26 Fev 2008 14:52
- Localização: São Paulo - SP
- Contato:
Re: Navegação de gets usando gets comuns e com listbox
Ademir,
Sei que você quer reduzir código no .prg, mas abaixo coloquei uma soluçãp que eu uso e que até agora funcionou comigo. Pode ser, então, que lhe seja útil!
Sei que você quer reduzir código no .prg, mas abaixo coloquei uma soluçãp que eu uso e que até agora funcionou comigo. Pode ser, então, que lhe seja útil!
Código: Selecionar todos
SET KEY -7 TO EMPGOP
DO WHILE .T.
cNUMERO = SPACE(4)
cNOME = SPACE(50)
cATIVO = SPACE(3)
cPONTUAL = SPACE(4)
cMATRICULA = SPACE(4)
cENTREVISTA = SPACE(10)
cADMISSAO = SPACE(10)
cTIPOADM = SPACE(40)
cCBO = SPACE(7)
cCARGO = SPACE(40)
cDEPTO = SPACE(20)
cCATEGORIA = SPACE(40)
nSALARIO = 0
cFORMAPAGTO = SPACE(20)
cBANCO = SPACE(50)
cAGENCIA = SPACE(50)
cCONTA = SPACE(50)
cSINDICATO = SPACE(40)
nTAXASOCIO = 0
cCESTA = SPACE(3)
cMESCESTA = SPACE(7)
nVALETRANSP = 0
nNOFILHOS = 0
nNODEPEND = 0
nPENSAO = 0
cPENSOBRE = SPACE(20)
cPENBANCO = SPACE(50)
cPENAGENCIA = SPACE(50)
cPENCONTA = SPACE(50)
cPENTITULAR = SPACE(50)
cDEMISSAO = SPACE(10)
cTIPODEM = SPACE(40)
cNASCIMENTO = SPACE(10)
cLOCAL = SPACE(30)
cNACIONALID = SPACE(20)
cRACA = SPACE(20)
cPELE = SPACE(20)
cOLHOS = SPACE(20)
cCABELOS = SPACE(20)
cBARBA = SPACE(3)
cBIGODE = SPACE(3)
cDEFICIENTE = SPACE(3)
cTIPODEF = SPACE(10)
cSEXO = SPACE(9)
cNOMEPAI = SPACE(40)
cNACIOPAI = SPACE(20)
cNOMEMAE = SPACE(40)
cNACIOMAE = SPACE(20)
cESTCIVIL = SPACE(10)
cCONJUGE = SPACE(50)
cINSTRUCAO = SPACE(40)
cRG = SPACE(20)
cCPF = SPACE(20)
cTITELEITOR = SPACE(20)
cRESERVISTA = SPACE(20)
cCTPSNO = SPACE(5)
cCTPSSERIE = SPACE(3)
cCTPSUF = SPACE(2)
cPISPASEP = SPACE(20)
cHABILITACA = SPACE(20)
cENDERECO = SPACE(50)
cBAIRRO = SPACE(40)
cCEP = SPACE(9)
cCIDADE = SPACE(40)
cUF = SPACE(2)
cTEL = SPACE(50)
cCEL = SPACE(50)
cFAX = SPACE(50)
cEMAIL = SPACE(50)
cDOM_ENTR1 = "00:00"
cDOM_SAID1 = "00:00"
cDOM_ENTR2 = "00:00"
cDOM_SAID2 = "00:00"
cSEG_ENTR1 = "00:00"
cSEG_SAID1 = "00:00"
cSEG_ENTR2 = "00:00"
cSEG_SAID2 = "00:00"
cTER_ENTR1 = "00:00"
cTER_SAID1 = "00:00"
cTER_ENTR2 = "00:00"
cTER_SAID2 = "00:00"
cQUA_ENTR1 = "00:00"
cQUA_SAID1 = "00:00"
cQUA_ENTR2 = "00:00"
cQUA_SAID2 = "00:00"
cQUI_ENTR1 = "00:00"
cQUI_SAID1 = "00:00"
cQUI_ENTR2 = "00:00"
cQUI_SAID2 = "00:00"
cSEX_ENTR1 = "00:00"
cSEX_SAID1 = "00:00"
cSEX_ENTR2 = "00:00"
cSEX_SAID2 = "00:00"
cSAB_ENTR1 = "00:00"
cSAB_SAID1 = "00:00"
cSAB_ENTR2 = "00:00"
cSAB_SAID2 = "00:00"
cDIADSR = SPACE(3)
cVALORDSR = SPACE(5)
cNOTA01 = SPACE(76)
cNOTA02 = SPACE(76)
cNOTA03 = SPACE(76)
cNOTA04 = SPACE(76)
SETCOLOR("B/W")
CLEAR SCREEN
SET CURSOR ON
@ 02,01 SAY "NUMERO: "
@ 02,14 SAY "NOME: "
@ 03,01 SAY "ATIVO?" + CHR(31)
@ 03,12 SAY "MATRICULA: "
@ 03,28 SAY "PONTO ELETRONICO: "
@ 03,51 SAY "ENTREVISTA: "
@ 04,01 SAY "ADMISSAO: "
@ 04,22 SAY "TIPO:" + CHR(31)
@ 05,01 SAY "C.B.O.: "
@ 05,17 SAY "CARGO: "
@ 06,01 SAY "DEPTO: "
@ 06,29 SAY "CATEG:" + CHR(31)
@ 07,01 SAY "SALARIO: "
@ 07,21 SAY "FORMA DE PAGAMENTO:" + CHR(31)
@ 09,00 TO 13,79
@ 09,01 SAY "DADOS BANCARIOS PARA DEPOSITO EM CONTA"
@ 10,01 SAY "BANCO: "
@ 11,01 SAY "AGENCIA: "
@ 12,01 SAY "CONTA: "
@ 15,01 SAY "SINDICATO:" + CHR(31)
@ 15,53 SAY "TAXA SOCIO: "
@ 17,01 SAY "RECEBE CESTA BASICA?" + CHR(31)
@ 17,26 SAY "CESTA BASICA A RECEBER: "
@ 19,01 SAY "VALE TRANSPORTE (INFORMAR VALOR POR DIA, IDA + VOLTA): "
@ 21,01 SAY "DEMISSAO: "
@ 21,22 SAY "MOTIVO:" + CHR(31)
@ 02,09 GET cNUMERO PICTURE "@!" SEND COLORSPEC := "N/W,W+/N"
@ 02,20 GET cNOME PICTURE "@!" SEND COLORSPEC := "N/W,W+/N"
@ 03,08 GET cATIVO PICTURE "@!" SEND COLORSPEC := "N/W,W+/N"
@ 03,23 GET cMATRICULA PICTURE "@!" SEND COLORSPEC := "N/W,W+/N"
@ 03,46 GET cPONTUAL PICTURE "@!" SEND COLORSPEC := "N/W,W+/N"
@ 03,63 GET cENTREVISTA PICTURE "99/99/9999" SEND COLORSPEC := "N/W,W+/N"
@ 04,11 GET cADMISSAO PICTURE "99/99/9999" SEND COLORSPEC := "N/W,W+/N"
@ 04,28 GET cTIPOADM PICTURE "@!" SEND COLORSPEC := "N/W,W+/N"
@ 05,09 GET cCBO PICTURE "@!" SEND COLORSPEC := "N/W,W+/N"
@ 05,24 GET cCARGO PICTURE "@!" SEND COLORSPEC := "N/W,W+/N"
@ 06,08 GET cDEPTO PICTURE "@!" SEND COLORSPEC := "N/W,W+/N"
@ 06,36 GET cCATEGORIA PICTURE "@!" SEND COLORSPEC := "N/W,W+/N"
@ 07,10 GET nSALARIO PICTURE "@E 9999999.99" SEND COLORSPEC := "N/W,W+/N"
@ 07,41 GET cFORMAPAGTO PICTURE "@!" SEND COLORSPEC := "N/W,W+/N"
@ 10,08 GET cBANCO PICTURE "@!" SEND COLORSPEC := "N/W,W+/N"
@ 11,10 GET cAGENCIA PICTURE "@!" SEND COLORSPEC := "N/W,W+/N"
@ 12,08 GET cCONTA PICTURE "@!" SEND COLORSPEC := "N/W,W+/N"
@ 15,12 GET cSINDICATO PICTURE "@!" SEND COLORSPEC := "N/W,W+/N"
@ 15,65 GET nTAXASOCIO PICTURE "@E 9999999.99" SEND COLORSPEC := "N/W,W+/N"
@ 17,22 GET cCESTA PICTURE "@!" SEND COLORSPEC := "N/W,W+/N"
@ 17,50 GET cMESCESTA PICTURE "99/9999" SEND COLORSPEC := "N/W,W+/N"
@ 19,56 GET nVALETRANSP PICTURE "@E 9999999.99" SEND COLORSPEC := "N/W,W+/N"
@ 21,11 GET cDEMISSAO PICTURE "99/99/9999" SEND COLORSPEC := "N/W,W+/N"
@ 21,30 GET cTIPODEM PICTURE "@!" SEND COLORSPEC := "N/W,W+/N"
READ
IF LASTKEY() = 27
EXIT
ENDIF
ENDDO
SET COLOR TO
CLEAR SCREEN
RETURN
FUNCTION EMPGOP
LOCAL aOPCAO := {}
LOCAL nOPCAO
LOCAL nATUAL
LOCAL cEMPGTEL := SAVESCREEN(00,00,24,79)
LOCAL cEMPGCOR := SETCOLOR()
IF READVAR() = LEFT("CATIVO",10)
AADD(aOPCAO,"SIM")
AADD(aOPCAO,"NAO")
SETCOLOR("W+/B,W+/N")
@ 03,08 CLEAR TO 06,12
DBGSHADOW(03,08,06,12)
@ 03,08 TO 06,12
nOPCAO = ACHOICE(04,09,05,11,aOPCAO)
IF nOPCAO <> 0
cATIVO = aOPCAO[nOPCAO]
ENDIF
ELSEIF READVAR() = LEFT("CTIPOADM",10)
AADD(aOPCAO,"10-PRIMEIRO EMPREGO ")
AADD(aOPCAO,"20-EMPREGO ANTERIOR / REEMPREGO ")
AADD(aOPCAO,"25-CONTRATO POR PRAZO DETERMINADO ")
AADD(aOPCAO,"35-REINTEGRACAO ")
AADD(aOPCAO,"70-TRANSFERENCIA DE ENTRADA ")
SETCOLOR("W+/B,W+/N")
@ 04,28 CLEAR TO 09,69
DBGSHADOW(04,28,09,69)
@ 04,28 TO 09,69
nOPCAO = ACHOICE(05,29,08,68,aOPCAO)
IF nOPCAO <> 0
cTIPOADM = aOPCAO[nOPCAO]
ENDIF
ELSEIF READVAR() = LEFT("CFORMAPAGTO",10)
AADD(aOPCAO,"01-MENSAL ")
AADD(aOPCAO,"02-QUINZENAL ")
AADD(aOPCAO,"03-SEMANAL ")
AADD(aOPCAO,"04-DIARIO ")
AADD(aOPCAO,"05-POR HORA ")
AADD(aOPCAO,"06-POR TAREFA ")
AADD(aOPCAO,"07-POR PECA ")
AADD(aOPCAO,"08-POR AULA ")
SETCOLOR("W+/B,W+/N")
@ 07,41 CLEAR TO 12,63
DBGSHADOW(07,41,12,63)
@ 07,41 TO 12,63
nOPCAO = ACHOICE(08,42,11,62,aOPCAO)
IF nOPCAO <> 0
cFORMAPAGTO = aOPCAO[nOPCAO]
ENDIF
ELSEIF READVAR() = LEFT("CCESTA",10)
AADD(aOPCAO,"SIM")
AADD(aOPCAO,"NAO")
SETCOLOR("W+/B,W+/N")
@ 17,22 CLEAR TO 20,26
DBGSHADOW(17,22,20,26)
@ 17,22 TO 20,26
nOPCAO = ACHOICE(18,23,19,25,aOPCAO)
IF nOPCAO <> 0
cCESTA = aOPCAO[nOPCAO]
ENDIF
ELSEIF READVAR() = LEFT("CTIPODEM",10)
AADD(aOPCAO,"00-SEM DEFINICAO ")
AADD(aOPCAO,"31-DISPENSA SEM JUSTA CAUSA ")
AADD(aOPCAO,"32-DISPENSA POR JUSTA CAUSA ")
AADD(aOPCAO,"40-PEDIDO DE DEMISSAO ")
AADD(aOPCAO,"43-FIM DE CONTRATO POR PRAZO DETERMINADO")
AADD(aOPCAO,"45-TERMINO DE CONTRATO ")
AADD(aOPCAO,"50-APOSENTADORIA ")
AADD(aOPCAO,"60-FALECIMENTO ")
AADD(aOPCAO,"80-TRANSFERENCIA DE SAIDA ")
SETCOLOR("W+/B,W+/N")
@ 15,30 CLEAR TO 21,72
DBGSHADOW(15,30,21,72)
@ 15,30 TO 21,72
nOPCAO = ACHOICE(16,31,20,71,aOPCAO)
IF nOPCAO <> 0
cTIPODEM = aOPCAO[nOPCAO]
ENDIF
ENDIF
SET COLOR TO cEMPGCOR
CLEAR SCREEN
RESTSCREEN(00,00,24,79,cEMPGTEL)
RETURN(.T.)
Windows XP Professional + Clipper 5.2e + Exospace + Dbase III Plus + SIX3 + NoDosImp + LXPic
"O trabalho afasta três males: o vício, a pobreza e o tédio." (Voltaire)
Site: http://www.labaroazul.xpg.com.br
Repositório: http://www.4shared.com/dir/31334106/e79 ... aring.html
"O trabalho afasta três males: o vício, a pobreza e o tédio." (Voltaire)
Site: http://www.labaroazul.xpg.com.br
Repositório: http://www.4shared.com/dir/31334106/e79 ... aring.html
-
Ademir
- Usuário Nível 3

- Mensagens: 170
- Registrado em: 31 Jul 2007 16:28
- Localização: Porto Ferreira-SP
Re: Navegação de gets usando gets comuns e com listbox
Boa tarde !
Agradeço a cooperação de todos, mas acabei desistindo de usar o ListBox, visto que com a achoice consegui um efeito muito legal e parecido com o listbox. O exemplo abaixo mostra uma lista de UFs. Se a variavel for inicializada com SP por exemplo, ao pressionar F1 a lista se posiciona no item SP automaticamente.
Agradeço a cooperação de todos, mas acabei desistindo de usar o ListBox, visto que com a achoice consegui um efeito muito legal e parecido com o listbox. O exemplo abaixo mostra uma lista de UFs. Se a variavel for inicializada com SP por exemplo, ao pressionar F1 a lista se posiciona no item SP automaticamente.
Código: Selecionar todos
proc help(nomprog,numlin,nomvar)
loca opcant,telant:=savescreen(0,0,24,79),corant:=setcolor()
if nomvar#'ESTA_010V' .and. nomvar#'ESTA_060V'
retu
endi
vexnom={'AC','AL','AM','AP','BA','CE','DF','ES','GO','MA','MG','MS','MT','PA','PB','PE','PI','PR','RJ','RN','RO','RR','RS','SC','SE','SP','TO'}
janela(row()+1,col()-1,23,col()+2,'w+/rb,w+/bg')
opcant=achoice(row(),col(),22,col()+1,vexnom,,,ascan(vexnom,&nomvar))
&nomvar=if(opcant=0,&nomvar,vexnom[opcant])
restscreen(0,0,24,79,telant)
setcolor(corant)
retu