Ferramenta para desenho de telas

Fórum sobre ferramentas de apoio à programação (Clipper/[x]Harbour)

Moderador: Moderadores

rmlazzari
Usuário Nível 2
Usuário Nível 2
Mensagens: 64
Registrado em: 09 Dez 2013 14:18
Localização: são paulo

Ferramenta para desenho de telas

Mensagem 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.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Ferramenta para desenho de telas

Mensagem 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
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Ferramenta para desenho de telas

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
rmlazzari
Usuário Nível 2
Usuário Nível 2
Mensagens: 64
Registrado em: 09 Dez 2013 14:18
Localização: são paulo

Ferramenta para desenho de telas

Mensagem 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!
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Ferramenta para desenho de telas

Mensagem por JoséQuintas »

Isso já tem a ver com LIB gráfica.
Talvez encontre algo na minigui.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Ferramenta para desenho de telas

Mensagem por asimoes »

Se não me engano a GasPro tinha essa recurso de desenhar tela.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Responder