Redimensionamento automático

Projeto HwGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

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

Redimensionamento automático

Mensagem por JoséQuintas »

No caso da GTWVG, o tamanho do fonte é a referência pra redimensionamento automático.
É que conforme altera o tamanho da janela, o tamanho do fonte é proporcional.
Então basta usar font.width e font.height

Existe alguma referência na hwgui que poderia ser usada?
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

Redimensionamento automático

Mensagem por asimoes »

►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)
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Redimensionamento automático

Mensagem por alxsts »

Olá!

Tanto Dialogs como Windows HwGUI possuem o método ON SIZE. Tente colocar um code block neste método que troque a fonte (A fonte. O fonte, para mim, é o código fonte de um programa)
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Redimensionamento automático

Mensagem por JoséQuintas »

Seria um esquema parecido como ANCHOR.

Eu não tinha pensado nisso, mas.... se fizer o resize automático.... quem fez rotina de resize pode ter problemas....

Não tem como não dizer isso, mas... parecido com GTWVG !
Fica super-hyper-moleza.
Quem quiser pode comprovar

1) Precisa DOIS números, fator de altura e fator largura

Bom... ao redimensionar, mover, etc. a Main avisa todas as filhas pra se repintarem... e assim por diante.
Nessa hora, é só repassar o fator de conversão
A janela pode usar ( tamanho * fator ) ao invés de apenas o tamanho.
Se for 1, não muda nada, se for outro valor, vai ser proporcional.
Pronto. resolvido totalmente o redimensionamento automático.
Totalmente MESMO.

2) O que falta: os dois números do fator.

Podemos fazer igual console/GTWVG, ou igual GUI, tanto faz.

Vamos fazer igual GUI primeiro, partindo do tamanho do desktop e da janela.

Digamos de 1024 X 768 pra 1920 X 1080, numa tela 3840 x 2160
A main começa considerando como referência pra largura 0.266 (1024 / 3840 ), a o novo tamanho vai ser 0.5 ( 1920 / 3840 )
0.5 / 0.266, Isso dá um fator de conversão de 1.879 pra largura

Agora igual console, considerando 25 linhas.
1024 / 25 = 40.96 pixels pra altura do fonte
1920 / 25 = 76.80 pixels pra altura do fonte
76.80 / 40.96 = 1.875

vamos a prova:

1024 x 1.879 = 1924
1024 x 1.875 = 1920

os dois cálculos podem ser considerados iguais, variação de 4 pixels, mas por coincidência, por caracteres ficou exatamente certo.
E seria a mesma coisa pra largura.

A Main precisa "se lembrar" do tamanho anterior, comparar com o atual e repassar para as filhas o fator de conversão.
Ou as filhas pegam diretamente da janela mãe.
E as filhas podem sempre usar tamanho * fator, desde sempre, sem o usuário precisar fazer mais nada.

Ta aí... redimensionamento automático, usando apenas linhas x colunas e tamanho do fonte !!!
Quando eu digo que a resposta tá no Harbour, vocês não acreditam... kkkkk
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

Redimensionamento automático

Mensagem por JoséQuintas »

Pensando bem..... talvez...
Porque o fator de conversão precisaria ser usado pra TUDO SEMPRE.

No caso do console, SEMPRE usa o font.size e font.width pra tudo.
A GT lembra do tamanho da janela em caracteres, e tem lá salvo.
No caso da GUI.... ela terá que sempre lembrar dos valores originais, e usar convertido nas rotinas Windows.

Resta a opção de, após o resize completo, a Main resetar o valor pra 1, pra começar tudo de novo a partir do novo tamanho.

Mais prático fazer igual console de vez, ter dois valores: o referência e o verdadeiro.
No resize, usa o referência para o cálculo, atualizando o verdadeiro, antes de qualquer outra operação.
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

Redimensionamento automático

Mensagem por JoséQuintas »

Ajudem a pensar... talvez dê sim, quase isso que mencionei.

A mãe redimensiona, e repassa o fator para as filhas. a mãe vai precisar lembrar o anterior e atual.
As filhas ao receberem o fator, se redimensionam, repassam pras suas filhas e resetam o valor.
O próprio fator acaba sendo o sinal de que precisa redimensionar primeiro.
redimensionou, volta pra 1.
Nem precisa lembrar do original, porque recebeu o fator tá no original, e após o cálculo não interessa mais o anterior, e nem o fator.

Por um instante me veio a dúvida se isso funciona minimizado....
Mas se tá minimizado, o usuário não está mexendo na janela... kkkkk

Ah sim... os comentários eram pra fazer o resize inicial, aqui estou falando sobre o resize permanente, durante toda vida útil do aplicativo.

Nesse caso, melhor ter o referência, de repente usuário reduz a janela pra 10 pixels, e depois disso nenhuma conta vai consertar.
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/
Responder