Página 1 de 1

Ferramenta para desenho de telas

Enviado: 14 Jan 2016 19:18
por rmlazzari
Amigos, talvez haja quem compartilhe desse problema comigo, não sei... mas cada vez que tenho que "bolar" uma tela no bom e velho 80 x 25 é um suadouro "da peste". Tem vezes que gasto muito mais para definir o lugar de uma mensagem do que do que o complexíssimo algorítimo que a gera.

Será que alguém conhece um utilitário que me permitisse criar janelas e movê-las prá lá e prá cá, ajeitando até que, quando estivesse legal, algum comando transformasse essa imagem naquele monte de @...says? Quem sabe escolher até um fundo hachureado para a tela, uma cor que fosse...

Alguém conhece ferramenta assim?


Em tempo e a propósito de cores de telas, xeretando aqui no fórum uma dica de um forista (de quem, se não se importar, agradeço e declino o Maligno nome que usa, rs...), fiz o seguinte:

Código: Selecionar todos

func esmaece(msg,opc)
loca val_ret := 0
loca abc := savescreen(00,00,24,79)
loca def := ''
loca ligado := .t.
loca i := 0
for i = 1 to len(abc)
   if ligado
      def = def + subs(abc,i,1)
   else
      def = def+'x'
   endi
   ligado = !ligado
next
restscreen(00,00,24,79,def)
if opc = NIL
   alert(msg)
   val_ret = 0
else
   val_ret = alert(msg,opc)
endi
restscreen(00,00,24,79,abc)
retu val_ret
Exemplo de uso:

Código: Selecionar todos

if esmaece("Confirma saida do sistema?",{"Sim","Nao"}) = 1
   quit
endi
Escolhi substituir os bytes pares na string que o savescreen guardou por esse 'x' porque fica uma tela esmecida, um cinza claro com todas as outras cores em cinza escuro (não preto). E escolhi esse caracter depois de testar um monte de outros fazendo um loop de substituição...

Não sei se essa é uma dica importante para a seção de Dicas, se alguém achar que é pode colocar por lá.

Grato.

Ferramenta para desenho de telas

Enviado: 14 Jan 2016 21:48
por JoséQuintas
Bom...
A primeira coisa que me veio à cabeça como ferramenta foi: o cérebro.
Mas não sei de que tipo de tela está dizendo.
Tem vezes que gasto muito mais para definir o lugar de uma mensagem do que do que o complexíssimo algorítimo que a gera.
Não sei de que tipo de mensagem está dizendo. Aqui uso sempre a mesma posição da tela, afinal, o usuário não vai ficar caçando aonde é que a mensagem foi colocada, é melhor sempre no mesmo lugar.
uma tela no bom e velho 80 x 25
Esse tamanho é velho, mas deixou de ser bom.
No Clipper dá pra usar 25 x 80, 28 x 80, 43 x 80, 50 x 80. Estou na dúvida sobre 33 x 80, vai ter que testar.
Na verdade não é o Clipper que limita, é o sistema operacional.

Ao invés de quebrar a cabeça pra posicionar as coisas, porque não deixa o próprio programa fazer isso, pelo menos a maioria das coisas?

Exemplo: Aqui uso as duas linhas de baixo pra mensagem.

Código: Selecionar todos

FUNCTION Mensagem( cTexto )
   @ MaxRow() - 1, 0 CLEAR TO MaxRow(), MaxCol()
   @ MaxRow() - 1, 0 SAY "Mensagem na linha máxima - 1"
   @ MaxRow(),      0 SAY "Mensagem na linha máxima
   RETURN NIL
Isso já vai deixar a mensagem sempre na mesma posição.
Só usar Mensagem( "digite algo" )
E mesmo se alterar o tamanho da tela, a mensagem vai sempre se ajustar automaticamente às duas últimas linhas.

Agora say/get:

Código: Selecionar todos

@ 2, 0 SAY "teste:" GET cTeste
@ Row(), Col() + 5 SAY "outro:" GET cOutro
@ Row(), Col() + 5 SAY "Mais um:" GET cMaisUm
@ Row() + 1, 0 SAY "Segunda linha row + 1 " GET oGet
READ
Row() + 1 já vai posicionar na linha de baixo do say/get anterior
Row(), Col() + 5 já vai posicionar na mesma linha, 5 colunas pra frente

É por aí, Facilita mais do que qualquer ferramenta.
Se precisar depois, vai ser só fazer algum ajuste simples.

É apenas sugestão. Não sei de que tipo de tela está falando.
Mas com certeza aumentar o tamanho de linhas/colunas pode ajudar a distribuir as coisas melhor.

Teste aí estas duas:

Código: Selecionar todos

SetMode( 28, 80 )
SetMode( 33, 80 )
Nota:
No caso de configuração inválida, o Windows define pra 25 x 80.
43 X 80 e 50 X 80 deixam as letras muito juntas
33 x 80 não lembro se é configuração válida
28 X 80 com certeza é válida, são 3 linhas a mais, que ajudam muito.
25 x 80 é o default do DOS

Ferramenta para desenho de telas

Enviado: 14 Jan 2016 22:08
por JoséQuintas
Só mais uma coisa:

Não sei se está se referindo a Clipper ou a Harbour.
O que passei se refere a Clipper/DOS.

No Harbour é à vontade, qualquer quantidade de linhas e colunas.

Ferramenta para desenho de telas

Enviado: 14 Jan 2016 23:55
por rmlazzari
Na verdade falo de telas com as do Windows, talvez só com o Harbour mesmo. Vi um aplicativo seu, "Um teste para deixar com vontade, que abre um monte de pequenas janelas, inclusive com o "X" em cima à direita, que as fecharia, acho que seria algo por aí.

Agora quanto às posições de tela, minha questão é planejar - passar do cérebro para código, mesmo - antes de programá-las, para não saírem desproporcionais ou deslocadas em relação à tela maior... digamos a janela de um achoice. O que eu gostaria é de uma ferramenta que me permitisse mover as janelas na tela, mudá-las de lugar, arranjá-las até que a interação entre usuário e programa fique o mais intuitiva possível. Enfim, um jeito de manipular posições das janelas na tela antes de programá-las. Esses outros setmodes, caro José, mudam o tamanho das fontes, não interessam.
Olha aqui um exemplo de janela que falo:

Imagem



Mas mesmo que não seja assim, tão... Windows, se houver ferramenta para escolher o lugar de um campo ou de uma janela movendo-os pela tela para que essa ferramenta escreva, no final das contas, os @...say, seria o ideal,

Vamos ver se alguém conhece algo assim...

De toda forma, gratíssimo!

Ferramenta para desenho de telas

Enviado: 15 Jan 2016 00:31
por JoséQuintas
Isso já tem a ver com LIB gráfica.
Talvez encontre algo na minigui.

Ferramenta para desenho de telas

Enviado: 15 Jan 2016 11:45
por asimoes
Se não me engano a GasPro tinha essa recurso de desenhar tela.