A Compilar: RVLMSG.PRG...
A Compilar: RVLMENU.PRG...
RVLMENU.PRG(29) Warning W0001 Ambiguous reference: 'PSTOP'
RVLMENU.PRG(29) Warning W0001 Ambiguous reference: 'PTOTREG'
A Compilar: RVLSTART.PRG...
A Criar livraria: rvl.lib...
2 Warnings, 0 Errors
O erro esta acontecendo no rvlmenu.prg
#include "acesso.ch"
/*
* EscCampo() - Mostra por ACHOICE o conteudo de pArray[ 2 ] ( Descricao ),
* para escolha, devolvendo o conteudo de pArray[ 1 ] ( codigo )
* selecionada.
*
* pVarCod - Variavel passada como endere‡o
* pArray[1] - Nome da array com os codigos
* - O QUE OBTEMOS POR REFERENCIA
* pArray[2] - Nome da array com as descricoes
* - O QUE VEMOS
*/
FUNCTION EscCampo( pVarCod, pArray, pTop, pLeft, pBottom, pRight )
LOCAL tTotReg:= LEN( pArray[1] )
LOCAL tEscolha
LOCAL wTela:= SAVESCREEN( pTop, pLeft, pBottom, pRight )
LOCAL tCor:= SETCOLOR( CorJan() )
LOCAL tBottom:= IF( tTotReg > ( pBottom - pStop -1 ), pBottom, pTop + pTotReg +1 )
IF EMPTY( pVarCod )
@ pTop, pLeft, pBottom, pRight BOX BoxFrame()
RvlShadow( pTop, pLeft, pBottom, pRight )
tEscolha:= ACHOICE( pTop, pLeft+1, pBottom-1, pRight-1, pArray[2] )
RESTSCREEN( pTop, pLeft, pBottom, pRight, wTela )
IF ( tEscolha != 0 )
pVarCod:= pArray [ 1 ] [ tEscolha ]
ENDIF
ELSE
tEscolha:= ASCAN( pArray[1], pVarCod )
ENDIF
SETCOLOR( tCor )
RETURN( tEscolha != 0 )
/*
* PullDown( pTop, pLeft, paMenu, pPrg, pDigitos )
*
*
* pTop, pLeft : Linha superior e coluna da esquerda
* paMenu : Array contendo as opcoes a serem mostradas
* pPrg : Nome do programa de menu que chama esta funcao
* pDigitos : Numero de digitos acrescentados a pPrg para a
* formacao do nome do programa a ser chamado
*/
FUNCTION PullDown( pTop, pLeft, paMenu, pPrg, pDigitos )
LOCAL wTela, tPrg, tX
LOCAL wOpcao:= 0
LOCAL wNumOpcoes:= LEN( paMenu )
LOCAL aMenuAutorizado:= {}
FOR tX:= 1 TO wNumOpcoes
IF Autorizado( paMenu[tX][2], MSG_NAO )
AADD( aMenuAutorizado, { paMenu[tX][1], tX } )
ENDIF
NEXT tX
wNumOpcoes:= LEN( aMenuAutorizado )
IF ( wNumOpcoes = 0 )
Autorizado( paMenu[1][2], MSG_SIM )
ELSE
@ pTop, pLeft, pTop + wNumOpcoes +1,;
pLeft + LEN( aMenuAutorizado[1][1] ) +1;
BOX BoxFrame()
RvlShadow( pTop, pLeft, pTop + wNumOpcoes +1,;
pLeft + LEN( aMenuAutorizado[1][1] ) +1 )
ENDIF
WHILE ( wNumOpcoes > 0 )
SETCOLOR( CorMenu() )
FOR tX:= 1 TO wNumOpcoes
@ pTop + tX, pLeft + 1 PROMPT aMenuAutorizado[tX][1]
NEXT tX
MENU TO wOpcao
wTela:= SAVESCREEN( 0, 0, MAXROW(), MAXCOL() )
IF ( LASTKEY() = ESCAPE ) .OR. ( wOpcao = 0 )
EXIT
ELSE // IF (wOpcao>=1 .and. wOpcao<= NumOpcoes ) ( faixa abrangida )
tPrg:= pPrg + STRZERO( aMenuAutorizado[wOpcao][2], pDigitos )
&Tprg.()
ENDIF
CLEAR TYPEAHEAD
RESTSCREEN( 0, 0, MAXROW(), MAXCOL(), wTela )
ENDDO
RETURN( NIL )
/*
* CHOOSE() - Busca codeblock em arquivo e coloca conteudo em um array
* Mostra o conteudo do array por achoice()
*
* pBlkCond : Bloco com a condicao para teste no Arquivo Selecionado
* pBlkLinha : Bloco com o conteudo que deve ter cada linha de Opcao
* pTop,
* pLeft,
* pBottom,
* pRight : Coordenadas de posicao em tela
* pInclui : Logico ( deve(.T.) ou nao(.F.) aceitar inclusoes )
* pBlkRet : Bloco com o conteudo a ser retornado. Se = NIL, RECNO()
*
*/
FUNCTION Choose( pBlkCond, pBlkLinha, pTop, pLeft, ;
pBottom, pRight, pInclui, pBlkRet ;
)
LOCAL wTotReg:= 0, tEscolha:= 0, tBottom
LOCAL tInclui:= IIF( pInclui = NIL, .T., pInclui )
LOCAL aSalva:= { {}, {} }
LOCAL wTela:= SAVESCREEN( pTop, pLeft, pBottom, pRight )
LOCAL tCor:= SETCOLOR( CorJan() )
LOCAL tBlkRet:= IIF( pBlkRet = NIL, { || RECNO() }, pBlkRet )
IF ( !EOF() )
WHILE ( !EOF() .AND. EVAL( pBlkCond ) )
wTotReg++
AADD( aSalva[1], EVAL( pBlkLinha ) )
AADD( aSalva[2], EVAL( tBlkRet ) )
SKIP
ENDDO
IF tInclui
wTotReg++
AADD( aSalva[1], PADC( "*** INCLUI OUTRO REGISTRO ***",;
pRight-pLeft, "" ))
AADD( aSalva[2], 0 )
SKIP
ENDIF
tBottom:= IIF( wTotReg > ( pBottom - pTop -1 ), pBottom,;
pTop +wTotReg + 1 )
@ pTop, pLeft, tBottom, pRight BOX BoxFrame()
RvLShadow( pTop, pLeft, tBottom, pRight )
tEscolha:= ACHOICE( pTop +1, pLeft +1, tBottom -1,;
pRight -1, aSalva[1], .T., )
RESTSCREEN( pTop, pLeft, pBottom, pRight, wTela )
IF (( tEscolha = wTotReg ) .AND. ( tInclui )) .OR. ( tEscolha = 0 )
GO BOTTOM // Se inclui ou ESC, vai para eof
SKIP // se pBlkRet (codblock) nÆo ‚ pas-
ELSEIF ( pBlkRet = NIL ) // sado como parƒmetro, posiciona no
GO aSalva[2][tEscolha] // recno() escolhido, devolvendo nu-
ELSE // mero escolhido se passar, devolve
tEscolha:= aSalva[2][tEscolha] // o conteudo do mesmo
ENDIF
ENDIF
SETCOLOR( tCor )
RETURN( tEscolha )
/*
* GetNewOrder() - Procura o ultimo item do campo-de-ordem ( sequˆncia )
* e devolve o valor do ultimo incrementado de 1, a partir
* do registro corrente. Depois vai para o fim do Arquivo.
*
* pBlkCond - Bloco com a condicao para teste no arquivo selecionado
*
* pBlkRet - Bloco com o campo de ordem
*
*/
FUNCTION GetNewOrder( pBlkCond, pBlkRet )
LOCAL tOrdem:= EVAL( pBlkRet )
WHILE ( EVAL( pBlkCond ) .AND. !EOF()) .AND. ;
( VAL( EVAL( pBlkRet )) <= VAL( tOrdem ) + 1 )
tOrdem:= EVAL( pBlkRet )
SKIP
ENDDO
GO LASTREC() + 1 // VAI PARA O FIM DO ARQUIVO - INCLUSÇO
RETURN( STRZERO( VAL( tOrdem ) +1, LEN( tOrdem )))
// eof - RVLMenu.prg
* PRG...................: Spacing
* CLASSE................: Espacejamento
* PREFIXO...............: Spa
* EXPORTA...............: Spa_Spacing()
* CONSTRUTORA...........:
* DESTRUTORA............:
* USA...................:
*
* COMENTARIOS...........: Compilar com /a /m /n /w
* NUMERICO[] spa_spacing(texts, l, r)
* CARACTERE texts[] - Textos a espacejar
* NUMERICO l, r - entre estas duas colunas
* RETURN: Vetor de colunas iniciais
* Determina coluna inicial para cada texto, espacado uniformemente
* entre l e r
*
FUNCTION RvlSpacing( aTextos, nLeft, nRight )
LOCAL nSumLens, nTextNum, nSpacesBetween, ;
aCols:= ARRAY( LEN( aTextos ))
* Determina o tamanho total das mensagens
nSumLens:= 0
FOR nTextNum:= 1 TO LEN( aTextos )
nSumLens += LEN( aTextos[nTextNum] )
NEXT
* Quantidade de espacos entre itens
nSpacesBetween:= INT((( nRight - nLeft +1 ) - nSumLens ) / ;
( LEN( aTextos ) +1 ))
* Primeira posicao nao e conhecida
aCols[1]:= 1 + nSpacesBetween
* Determina outros a partir desta
FOR nTextNum:= 2 TO LEN( aTextos )
aCols[nTextNum]:= aCols[nTextNum -1] + ;
LEN( aTextos[nTextNum -1] ) + ;
nSpacesBetween
NEXT
RETURN aCols
* : : : : :
FUNCTION RvlPrompt( cTexto )
@ 01,00 SAY REPLICATE( CHR(32), 80 )
@ 01,05 SAY cTexto
RETURN NIL
Compilando com clipper nao ocorre este erro.