Achoice com problema

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

cl@udio
Usuário Nível 2
Usuário Nível 2
Mensagens: 88
Registrado em: 25 Jan 2007 16:47

Achoice com problema

Mensagem por cl@udio »

Pessoal
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 
Imatech
Usuário Nível 3
Usuário Nível 3
Mensagens: 350
Registrado em: 24 Ago 2010 23:48
Localização: Goiânia-GO

Achoice com problema

Mensagem por Imatech »

Olá Claudio !
.
.
.
Em Harbour, aparentemente sem problema...
AchoiceSample.rar
Harbour 3.2 SVN
(506.42 KiB) Baixado 125 vezes
.
.
.
Sucesso...
M., Ronaldo

by: IMATECH

IMATION TECNOLOGIA
Responder