Clipper On Line • Ver Tópico - HMG 3.4.4 - Auto Ajuste de várias telas e componentes
Página 1 de 1

HMG 3.4.4 - Auto Ajuste de várias telas e componentes

MensagemEnviado: 13 Ago 2017 15:56
por luiz antonio da silva
Boa Tarde !

Precisei do recurso de ajustar tela e componentes no sistema que estamos desenvolvendo na empresa que trabalho, recorri ao velho e bom forum, mas o que encontrei foram exemplos para uma unica tela (claro que poderia ser retrabalhado para mais...rs) com tal problema reiniciei um projeto aqui do forum de autoria do Pablo, cheguei no resultado ainda não é 100% o que esperava mas tá funcionando, espero que seja de valia para outros.

Abraço.
Luiz

HMG 3.4.4 - Auto Ajuste de várias telas e componentes

MensagemEnviado: 25 Jan 2018 13:55
por NiltonGM
Luiz, ficou muito bom, eu fiz isso uma fez na tela principal para se adequar a uma tela de 15" notebook e de monitores de 23" ou maiores, dá um trabalho da preula.

Abraços.

HMG 3.4.4 - Auto Ajuste de várias telas e componentes

MensagemEnviado: 31 Jan 2018 20:19
por microvolution
luiz antonio da silva escreveu:espero que seja de valia para outros.

OLÁ Luiz, não testei ainda, mas, vou testar o mais breve possível, mas, uma pergunta "tola": a compilação é via IDE/HMG?

HMG 3.4.4 - Auto Ajuste de várias telas e componentes

MensagemEnviado: 31 Jan 2018 21:28
por JoséQuintas
Legal.
Uma rotina que dá pra usar um recurso que só o Harbour tem !!!
Já testei aqui e funciona.

For EACH cType, cName, nNumber IN _HMG_SYSDATA[ 1 ], _HMG_SYSDATA[ 2 ], _HMG_SYSDATA[ 4 ]
   k := cType:__EnumIndex
   IF nNumber = NWIND
      If cName<>"Message" .AND. cType <> "STATUSBAR" .AND. LEN(cName) > 0 .AND. ;
            !Empty( cName ) .And. !( cType $ "MENU,HOTKEY,TOOLBAR,MESSAGEBAR,ITEMMESSAGE,TIMER" )
         _ctrl:= nNumber
         IF getproperty(hwnd,cName,"FONTsize")=0
            _fnt:=(100/hd_ini)*10
         ELSE
            _fnt:=(100/hd_ini)*getproperty(hwnd,cName,"FONTsize")
         ENDIF
         _row:=(100/hd_ini)*getproperty(hwnd,cName,"row")
         _col:=(100/wd_ini)*getproperty(hwnd,cName,"col")
         _wid:=(100/wd_ini)*getproperty(hwnd,cName,"width")
         _hei:=(100/hd_ini)*getproperty(hwnd,cName,"height")

         RT:=AScan(_metrics, { |x| x[2] == k })
         if rt==0
            AADD(_METRICS,{ hwnd,k,_fnt,_row,_col,_wid,_hei,_ctrl,cName})
         endif
      ENDIF
    Endif
Next


Só achei estranho não aceitar cType:__EnumIndex direto no codeblock....

HMG 3.4.4 - Auto Ajuste de várias telas e componentes

MensagemEnviado: 31 Jan 2018 21:43
por JoséQuintas
e descobri coisa nova no fonte, não sei se foi proposital

               IF hwnd,_HMG_SYSDATA[4][K] > 0


IF 5, 4 > 3
   ? "os dois são maiores"
ENDIF

HMG 3.4.4 - Auto Ajuste de várias telas e componentes

MensagemEnviado: 01 Fev 2018 19:31
por microvolution
show show

HMG 3.4.4 - Auto Ajuste de várias telas e componentes

MensagemEnviado: 13 Fev 2018 20:48
por microvolution
gente acabei de testar!
que perfeição do AUTO ajuste viu!

HMG 3.4.4 - Auto Ajuste de várias telas e componentes

MensagemEnviado: 21 Fev 2018 08:17
por luiz antonio da silva
Bom dia !

Que bom que gostaram, foi preciso usar uma OG (Orientação a Gambiarra...kkkk) pois ainda não sei quais são ou se tem algum _HMG_SYSDATA que me retornaria os controles de uma tela específica dentre várias ativas...mas vamos que vamos...rsrs

* Alguém teria uma lista dos _HMG_SYSDATA e sua funcionalidade ?

Abraço.
Luiz

HMG 3.4.4 - Auto Ajuste de várias telas e componentes

MensagemEnviado: 21 Fev 2018 11:05
por asimoes
Offtopic: Voltando ao assunto, achei curioso isso:

Compila, mas dá o seguinte erro na execução: Erro nos parƒmetros: =
IF 5, 4 = .T.
   ? "Estranho"
ENDIF

HMG 3.4.4 - Auto Ajuste de várias telas e componentes

MensagemEnviado: 21 Fev 2018 11:08
por JoséQuintas
Tá comparando número com verdadeiro/falso.

HMG 3.4.4 - Auto Ajuste de várias telas e componentes

MensagemEnviado: 21 Fev 2018 11:19
por asimoes
Sim,

Isso eu entendo perfeitamente, o que não poderia acontecer é a compilação, enfim, esse tipo de erro pode passar por distração.

HMG 3.4.4 - Auto Ajuste de várias telas e componentes

MensagemEnviado: 21 Fev 2018 11:21
por JoséQuintas
Correção:
Só aceita com -w0 -es0
Xi... perigoso isso.....

PROCEDURE Main

   IF 3, 4 = 5
      ? "= 5"
   ENDIF
   IF 3, 4 != 5
      ? "!= 5"
   ENDIF
   IF 3, 4 > 2
      ? "> 2"
   ENDIF
   IF 3, 4 > 5
      ? "> 5"
   ENDIF
   IF 5, 4 > 3
      ? "teste"
   ENDIF

   RETURN


-w0 -es0

d:\temp>test

!= 5
> 2


-w3 -es2

Compiling 'test.prg'...
test.prg(3) Warning W0027 Meaningless use of expression 'Numeric'
test.prg(6) Warning W0027 Meaningless use of expression 'Numeric'
test.prg(9) Warning W0027 Meaningless use of expression 'Numeric'
test.prg(12) Warning W0027 Meaningless use of expression 'Numeric'
test.prg(15) Warning W0027 Meaningless use of expression 'Numeric'

HMG 3.4.4 - Auto Ajuste de várias telas e componentes

MensagemEnviado: 11 Jul 2018 23:07
por luiz antonio da silva
Boa Noite !

Terminei algumas atualizações para o Auto-Ajuste, peguei algumas informações da pasta samples e adaptei para tentar simplificar.

segue o exemplo com as telas do primeiro modelo.