Página 1 de 1

CLASSE GET

Enviado: 24 Ago 2017 17:23
por Abel
Ola, estava estudando o PRG TGETLIST.PRG
e descobri algumas coisas no get ativo

o tamanho do get eu consigo por len(oget:buffer)
a linha do get ativo eu consigo por oget:row
a coluna do get ativo eu consigo por oget:col

o problema é que preciso saber qual o tamanho
do get nos casos em que uso a pict '@S20'
se a variavel tiver 30 caracteres len(oget:buffer)
devolve 30 e nao 20 como eu gostaria.

alguem sabe como posso resolver isso ?

estou alterando o TGETLIST.PRG padrao
do harbour. minha programaçao é console.

desde ja agradeço,
ABEL

CLASSE GET

Enviado: 25 Ago 2017 12:04
por acelconsultoria
Acredito que será necessário acrescentar um novo método na classe GET, para que você possa obter esse valor.

No código fonte do arquivo "tget.prg" tem um trecho dentro da definição "METHOD picture" da classe GET, onde se realiza a leitura do tamanho do GET que é exibido na tela. Fica armazenado na variável "nDispLen".

Porém, essa variável não é utilizada para ser "retornável".

CLASSE GET

Enviado: 25 Ago 2017 16:32
por JoséQuintas
oGet:VarGet()
oGet:VarPut()

CLASSE GET

Enviado: 25 Ago 2017 16:36
por JoséQuintas
Só comentário:

Não sei isso de cabeça. É que lembrei que uso na minha calculadora, pra obter valor da tela, e devolver resultado.

Código: Selecionar todos

METHOD LoadSaveValue( lSave ) CLASS CalculatorClass

   LOCAL oGet

   hb_Default( @lSave, .F. )
   oGet := GetActive()
   IF oGet != NIL
      IF oGet:Type == "N"
         IF lSave
            oGet:varPut( Val( ::cValueDisplay ) )
         ELSE
            ::cValueDisplay = ValToString( oGet:varGet() )
         ENDIF
      ENDIF
   ENDIF

   RETURN NIL

CLASSE GET

Enviado: 27 Ago 2017 21:06
por alxsts
Olá!

Verifique se na picture do get existe a string "@S".

Código: Selecionar todos

If At ( "@S", oGet:picture ) > 0
   // Pegar os caracteres numéricos seguintes
Endif