Olá Pessoal, para quem ainda trabalha no console já deve se deparado com a mão de obra de ficar passando parâmetros nas funções saveScreen e restScreen. Alguns já devem ter feito libs próprias para facilitar o trabalho mas mesmo assim tenho verificado que muitos ainda passam os parâmetros de top, bottom, left e right. Ee isso, querendo ou não é ocupa um tempo precioso dos devs.
Ate entendo de onde veio esta preocupação do clipper. Antes tínhamos kilo bytes disponíveis na aplicação e economizar qualquer tipo de memoria fazia sentido. Afinal, porque guarda a janela inteira e “gastar” 2k se podíamos guardar apenas 300 bytes. Hoje com o Harbour temos disponíveis gigabytes para usarmos.
Pensando nisso crie duas rotinas bem simples que agilizam o desenvolvimento. Basta chamar openScreen () (sem parâmetros) que a função grava a tela numa pilha. Dai você pode montar a sua nova tela e ao retorna a tela anterior, basta chamar closeScreen () (também sem parâmetros) que retira a tela da pilha. Não há limites do numero de telas que podem ser empilhadas. Logo você pode chamar em cascata vários open e close.
Exemplo:
openScreen ()
@ 00,00@ say ‘minha nova tela1’
openScreen ()
@ 00,00 say ‘minha nova tela 2’
closeScreen ()
closeScreen ()
Basta incluir as rotinas assessorias junto com o seu fonte e pronto, não precisa iniciar nenhum objeto nem nada. Muito simples, e simples de programador. Caso você chamar duas closeSCreen() seguidas mesmo sem elemento na pilha a rotina não gera exceção de erro.
Exemplo:
openScreen ()
@ 00,00@ say ‘minha nova tela1’
openScreen ()
@ 00,00 say ‘minha nova tela 2’
closeScreen ()
closeScreen ()
closeScreen ()