Em determinadas rotinas do sistema, uso o comando SETMODE(25,80) ou SETMODE(43,80),
como faço para verificar se determinadas rotinas está configurado com um com outro ?
if configurado(25,80)
...
else
...
endif
Obrigado.
Harbour 3.2.0(dev)
Moderador: Moderadores
if configurado(25,80)
...
else
...
endif
Function configurado(nLin_,nCol_)
Local lRet_:=.F.
If nLin_==MaxRow()+1
If nCol_==MaxCol()+1
lRet_:=.T.
Endif
Endif
Return (lRet_)
como faço para verificar se determinadas rotinas está configurado com um com outro ?
PROCEDURE Main
LOCAL nMaxRow, nMaxCol
SetMode( 25, 80 )
CLS
nMaxRow := MaxRow()
nMaxCol := MaxCol()
DO WHILE Inkey(1) != 27
IF nMaxRow != MaxRow() .OR. nMaxCol != MaxCol()
? MaxRow(), MaxCol()
nMaxRow := MaxRow()
nMaxCol := MaxCol()
ENDIF
ENDDO
RETURN
24 94
31 94
31 103
34 103
34 136
47 136
47 135
47 46
47 63
47 65
52 66
d:\temp>
//----------------------------------------------------------------
Function Main()
//----------------------------------------------------------------
// Salva as dimensoes atuais da tela
PUBLIC nLarguraOriginal := MaxCol()
PUBLIC nAlturaOriginal := MaxRow()
// Determina novas dimensoes
PUBLIC nLarguraDaTela := 30 // Largura da tela do app
PUBLIC nAlturaDaTela := 5 // Altura da tela do app
PUBLIC COR_PADRAO := "W+/BG,W/R,,,N/W"
PUBLIC COR_RESULTADO := "R+/BG"
nVoltas:=1
Do while .t.
//SetColor(COR_PADRAO)
SetMode(nAlturaDaTela, nLarguraDaTela) // Aplica as novas dimensoes
Cls
@ 02,02 SAY "nVoltas=" +Alltrim(Str(nVoltas))
@ 04,02 SAY "<Esc> para Sair"
If Inkey(2)=27
Exit
Endif
//SetColor(COR_RESULTADO)
SetMode(nAlturaOriginal, nLarguraOriginal) // Volta para as originais
X=GeraNumero(99999, 1)
@ 02, 02 SAY StrZero ( X, 5) // ... ele mostra um numero aleatorio a cada vez.
nVoltas++
If Inkey(2)=27
Exit
Endif
EndDo
Return Nil
//----------------------------------------------------------------
// Gera numero aleatorio entre o SEGUNDO parametro e o PRIMEIRO
Function GeraNumero(nLimite, nInicio)
//----------------------------------------------------------------
Local nNumeroGerado, nPausa, nSegundoAtual
nInicio:=iif(nInicio==Nil, 1, nInicio)
nNumeroGerado := Int( rand()* nLimite ) +nInicio
RETURN nNumeroGerado
//----------------------------------------------------------------
JoséQuintas escreveu:terminou o programa, ele fecha, isso é normal.
JoséQuintas escreveu:Vai poder acompanhar linha a linha pelo debug.
carlaoonline escreveu:O BUG acontece bem na linha do SetMode
JoséQuintas escreveu:Coloque alguma coisa no final pra ele parar.
Talvez Alert( "terminou" )
carlaoonline escreveu:uando chaga na linha do SetMode ele fecha a tela visível
JoséQuintas escreveu:Tá chamando isso de dentro de uma LIB GUI ?
JoséQuintas escreveu:O que chama de tela visível ?
JoséQuintas escreveu:Cuidado com esse tipo de uso.
SetMode() parece não ter sido feito pra ser usado toda hora.
É usar no início e nada mais.
FUNCTION Main()
LOCAL nVoltas := 0, nKey := 0, nNumero
SetMode(25,80)
SetColor( "W/B" )
CLS
hb_ThreadStart( { || Mostra( @nNumero ) } )
DO WHILE nKey != 27
@ 2, 2 SAY "nVoltas=" + Ltrim( Str( nVoltas ) )
@ 4, 2 SAY "ESC pra sair"
nNumero := GeraNumero( 99999, 1 )
nKey := Inkey(2)
nVoltas += 1
ENDDO
RETURN Nil
FUNCTION Mostra( nNumero )
hb_gtReload( "WVG" )
SetMode( 5, 30 )
SetColor( "W/R" )
CLS
DO WHILE .T.
@ 2, 2 SAY StrZero( nNumero, 5 )
Inkey(1)
ENDDO
RETURN Nil
//----------------------------------------------------------------
// Gera numero aleatorio entre o SEGUNDO parametro e o PRIMEIRO
Function GeraNumero(nLimite, nInicio)
//----------------------------------------------------------------
Local nNumeroGerado
nInicio:=iif(nInicio==Nil, 1, nInicio)
nNumeroGerado := Int( rand()* nLimite ) +nInicio
RETURN nNumeroGerado
//----------------------------------------------------------------
Usuários vendo este fórum: Nenhum usuário registrado online e 6 visitantes