O seguinte exemplo foi tirado do manual do xHarbour.
Quando voce percorre com setas para cima e para baixo podem ver que a mensagem do rodape e atualizada.
Mas quando voce digita uma letra ou numero para acessar um item do menu ele nao atualiza.
Podem me ajudar com isto.
[]s
claudio
Código: Selecionar todos
#include "achoice.ch"
#include "inkey.ch"
Memvar aFiles
Procedure Main
LOCAL nSelect
LOCAL aItems := Directory()
LOCAL i, imax := Len( aItems )
LOCAL aSelect := Array( imax )
LOCAL cScreen
SetColor( "W/N" )
CLS
SetColor( "N/BG,W+/B,,,W/BG" )
PRIVATE aFiles := AClone( aItems )
FOR i:=1 TO imax
aItems[i] := Upper( aItems[i,1] )
aSelect[i] := ( ".TXT" $ aItems[i] .OR. ;
".PRG" $ aItems[i] )
NEXT
DO WHILE LastKey() <> K_ESC
nSelect := Achoice( 2, 2, MaxRow()-5, 30, ;
aItems, aSelect, "USERFUNC" )
IF nSelect <> 0
// Display selected file
SAVE SCREEN TO cScreen
MemoEdit( MemoRead( aItems[nSelect] ) )
RESTORE SCREEN FROM cScreen
KEYBOARD Chr(255) // sets Lastkey() to 255
Inkey()
ENDIF
ENDDO
RETURN
FUNCTION UserFunc( nMode, nElement, nRow )
LOCAL nKey := LastKey()
LOCAL nRet := AC_CONT
LOCAL cMsg
DO CASE
CASE nMode == AC_IDLE
// do some idle processing
cMsg := " File: " + aFiles[nElement,1] + ;
" Size: " + Str( aFiles[nElement,2] ) + ;
" Date: " + DtoC( aFiles[nElement,3] ) + ;
" Time: " + aFiles[nElement,4]
DispOutAt( MaxRow(), 0, Padr(cMsg, MaxCol()+1), "W+/R" )
CASE nMode == AC_EXCEPT
// key handling for unknown keys
IF nKey == K_ESC
nRet := AC_ABORT
ELSEIF nKey == K_RETURN .OR. nKey == K_LDBLCLK
nRet := AC_SELECT
ELSEIF nKey > 31 .AND. nKey < 255
nRet := AC_GOTO
ENDIF
ENDCASE
RETURN nRet

