Tela do sistema

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

RONESMEN
Usuário Nível 1
Usuário Nível 1
Mensagens: 8
Registrado em: 23 Abr 2018 14:15
Localização: Itumbiara-Go

Tela do sistema

Mensagem por RONESMEN »

Bom dia a todos!

Estou começando na minigui, e gostaria de saber de vcs, como fazer a tela fica dimensionada, ou seja se abrir em monitor de 27 pol, e depois em um de 15 pol, o sistema
fica com tela maximizada e todos o seus text, grid etc...

Grato,

Rones
Softwhouse
Usuário Nível 3
Usuário Nível 3
Mensagens: 324
Registrado em: 07 Dez 2011 18:44
Localização: Porto Alegre/RS

Tela do sistema

Mensagem por Softwhouse »

Quando definir a janela Main, coloca:

Width GetDesktopWidth()
Height GetDesktopHeight()
Fernando
RONESMEN
Usuário Nível 1
Usuário Nível 1
Mensagens: 8
Registrado em: 23 Abr 2018 14:15
Localização: Itumbiara-Go

Tela do sistema

Mensagem por RONESMEN »

Fernando,

Mas como fica o grid por exemplo, para ele ficar proporcional aos tamanho dos monitores.

Grato e obrigado pela resposta,

Rones
Softwhouse
Usuário Nível 3
Usuário Nível 3
Mensagens: 324
Registrado em: 07 Dez 2011 18:44
Localização: Porto Alegre/RS

Tela do sistema

Mensagem por Softwhouse »

Redimensiona tudo automaticamente.
Fernando
ivanil
Usuário Nível 3
Usuário Nível 3
Mensagens: 166
Registrado em: 11 Set 2004 15:13
Localização: Florianópolis/SC

Tela do sistema

Mensagem por ivanil »

Caro amigo;
RONESMEN escreveu: Mas como fica o grid por exemplo, para ele ficar proporcional aos tamanho dos monitores.
Rones
Existe 2 formas de lidar com isso;
Opcao 1
navegue pela pasta Minigui\SAMPLES\BASIC\AUTOADJUST

Opcao 2
Recalcule você mesmo, acredito esse o modo mais interessante, porque há coisas que você só quer movimentar, outras quer extender...um grid x os botões por exemplo...
Os formulários tem as propriedades minheight e minwidth, esses valores impedem que usuário diminua a ponto de não caber os objetos;

Código: Selecionar todos


#include <hmg.ch>
Function Main( )
    DEFINE WINDOW MAIN   AT 249, 540 WIDTH 600 HEIGHT 549  MINWIDTH 600 MINHEIGHT 549 TITLE "Test Resize" MAIN ON SIZE (Main_Onsize()) on Maximize (Main_Onsize( ))

        DEFINE GRID oGrid
            HEADERS { "" }
            WIDTHS { 150 }
            COL 18
            HEIGHT 447
            ROW 17
            WIDTH 556
        END GRID

        DEFINE BTNTEXTBOX oBtnText1
            COL 249
            HEIGHT 27
            ROW 473
            WIDTH 326
        END BTNTEXTBOX

    END WINDOW
    
    Main.Center
    Main.activate()

    REturn .T.

    ***********************************************
    ///////////////////////////////////////////////
    ***********************************************
Static Function Main_Onsize( )
    Main.oGrid.width := Main.width-44
    Main.oGrid.height:= Main.height-102
    
    Main.oBtnText1.row := main.height-76
    Main.oBtnText1.col := main.width-Main.oBtnText1.width-25
    Return .T.


Boa Sorte;
RONESMEN
Usuário Nível 1
Usuário Nível 1
Mensagens: 8
Registrado em: 23 Abr 2018 14:15
Localização: Itumbiara-Go

Tela do sistema

Mensagem por RONESMEN »

Caro amigo Ivanil,

Muito obrigado, vou testar ai!

Estou com uma outra dúvida aqui, como faço para ir para a ultima linha de uma grid, sempre vai para a primeira?

Grato,

Rones
Avatar do usuário
marcosLP
Usuário Nível 1
Usuário Nível 1
Mensagens: 47
Registrado em: 13 Nov 2020 10:24
Localização: guarpauava/pr

Tela do sistema

Mensagem por marcosLP »

eu como não uso IDE e faça de forma realmente grafica as janelas (os elementos dela for a dentro) sofri feito ouriço pra dar cria mas consegui e agora só alegria. Tem varios exemplos no meu grupo do facebook e aqui uns modelos que publiquei.
mmarcondes
Usuário Nível 2
Usuário Nível 2
Mensagens: 81
Registrado em: 02 Jul 2021 15:06
Localização: witmarsum

Tela do sistema

Mensagem por mmarcondes »

Marcos, onde encontro seu grupo no facebook ?
Avatar do usuário
Poka
Usuário Nível 4
Usuário Nível 4
Mensagens: 563
Registrado em: 25 Out 2004 21:26
Localização: Leme/SP

Tela do sistema

Mensagem por Poka »

Boa tarde,

aqui no meu sistema tenho uma rotina inicial, onde salvo todas as coordenadas, para usar no sistema
qq alteração em uma coordenada, muda no sistema inteiro.
uso minigui extend
antes de abrir a janela principal, vir nesta rotina
fonte uso somente courier new (tamanhos das letras iguais), pra facilitar
declaro todas as variaveis que preciso no sistema baseado um indice
fiz umas medidas aqui consideranto total de pixel
Eu fiz em um monitor grande primeiro então, falha em alguns menores
faz em um monitor de 14" , aí no grande acho que não tem erro.
na rotina INICIO declaro as variáveis que serão usadas para as telas , gets , box etc

Código: Selecionar todos

funct inicio
   local xindice:=0
   *--------coordenadas para usar na janela principal 
 		publ wlarguraPrincipal      :=System.DesktopWidth
			publ WalturaPrincipal       :=System.DesktopHeight 
			publ walturaTiTuloPrincipal := round(walturaPrincipal/11,0 ) 
			publ walturaBotaoPrincipal  := int(wAlturaPrincipal*0.060 )    //int( walturaPrincipal*0.060)
			publ wlarguraBotaoPrincipal :=int(wLarguraPrincipal*0.292 )
			publ wEspacoBotaoPrincipal  :=  int(wAlturaPrincipal*0.010 )
 		publ wSizeBotaoPrincipal    := int(wlarguraPrincipal * 0.012675)   // tamanho equivalente a 13
   *----------------------
	  xindice:= round(18/768,3)  
   publ waltGet:= round( (walturaPrincipal+80)  *xindice ,0)  // 31/12/2023 tava esytrapolando
			xindice:= round( 25/768,3)
			publ wespacoGet  := round(walturaPrincipal* xindice ,0)  
			*----coordenadas janela secundaria---------------
   xindice  := round(3/768,3)     
			publ wespacoLin  := round(wlarguraPrincipal*xindice,0)  // nao mudar
			xindice  := round(9/1024,3)     
  	publ wsize:= round(wlarguraPrincipal* xindice,0)   
  	if wsize>10
  	   wsize:=10
  	endif 
  	// botões
			publi wLinBt     := waltTit+waltTit+wespacoGet+wespacolin
			publ waltBt      := 3*waltget 
			publ waltBrowse  := WalturaPrincipal -(13*waltget)  // altura do browse
 		publ WlinBtBase  := WalturaPrincipal  - (4*waltget)   // linha botao da base
			xindice  := round(3/1024,3)     
			publ wespacoCol  := round(wlarguraPrincipal*xindice,0)       // usado entre os botoes por exemplo
			publ wsizeBtMenu := wsizeBotaoPrincipal    // letra de menu secundarios
			*------- pera telas secundárias
   publ wcolTela:=0
   publ wLargTela   := wLarguraPrincipal 
			// deixei = principal  mas pode deixar menor
   publ wLargTela   := wLarguraPrincipal - (20*wsize)  
			// deixei = principal  mas pode deixar menor
 		publ waltTela    := wAlturaPrincipal     
 		publ waltTela    := wAlturaPrincipal-(20*wsize)     

   *------------------   
   publ wCol        := 2*wsize // coluna de inicio geral ,  label , titulo etc
 		publ wLargLabel  := 20*wsize   // largura do label
   publ wColGet       := wcol+wlarglabel + wsize  // coluna de inicio do campo get 
			publ wLargBt     := 13*wsize   // largura do botao (todos)
   publ wLinBrowse  := wlinTit + WaltTit+ waltBt + waltBt + wespacoLin  +wespacoLin + wespacoLin  
  	publ wLinMenu    := waltTit+waltTit+(wespacoget*2)   // linha inicial dos menu NAO PRINCIPAL
			*--------para carta-----------------------------------
			*--------- diversos------------
			publ wfonte     :="courier new"  // para tudo
   publ wBackColorJanelaBrowse :={255,255,255}
   publ wBackColorBotaoBrowse  := {173,216,230}
   publ wFontColorBotaoBrowse  := {000,000,000}
  	publ wBackColorTelaGet      := {236,245,216}   
  	publ wFontColorLabelGet     := {000,000,000}
  	publ wBackColorCampoGet     := {255,255,255}
  	publ wFontColorCampoGet     := {000,000,000}
			
			*-------para menu de escolha secundaria , não a principal ----------
			*--------para usar em buttonex no meio da tela , não em botoes no topo e base da tela
			publ wlargButonex :=int(wLarguraPrincipal*0.292 )    //largura do buttonex
			publ wAltButonex  := int( walturaPrincipal*0.060)    // altura butonex
			*--fim------para usar em buttonex no meio da tela , não em botoes no topo e base da tela
retu nil
*-------------------------------------
exemplos usando tbtowse no sistema, uma tela qualquer aqui.

      DEFINE WINDOW telaTabelas ;
         AT wlinTela,wColTela ;
         WIDTH wlargTela;
									HEIGHT waltTela ;  
						   MODAL; 
								 on init  Inicio()  ;
								 NOSYSMENU ;
         nocaption;
         on size wsize     ;  
         backcolor wbackcolorJanelaBrowse    

									*-------------botoes da tela----------
         DEFINE BUTTONEX botaoinclui
					       cOL wcol
            ROW wlinBt
            WIDTH wlargbt 
            HEIGHT waltBT 
            CAPTION "<Insert>"+fl +"Inclui" 
            ACTION funcoes("I")
            FONTNAME wfonte
            FONTSIZE wsize 
            backcolor wbackcolorBotaoBrowse
            fontcolor wFontColorBotaoBrowse
            NOXPSTYLE .T.
          END BUTTONEX  
          
         DEFINE BUTTONEX botaoaltera
					       cOL ultcol("telaTabelas","botaoinclui")  
            ROW wlinBt
            WIDTH wlargbt 
            HEIGHT waltBT 
            CAPTION "<Insert>"+fl +"Inclui" 
            ACTION funcoes("A")
            FONTNAME wfonte
            FONTSIZE wsize 
            backcolor wbackcolorBotaoBrowse
            fontcolor wFontColorBotaoBrowse
            NOXPSTYLE .T.
          END BUTTONEX  
         *------------BOTOES BASE DA TELA
         DEFINE BUTTONEX Botaofiltro
					       cOL wcol
            ROW wlinBtbase 
            WIDTH wlargbt  
            HEIGHT waltBT 
            CAPTION "<F5>"+fl+"filtra campos" 
            ACTION filtro()
            FONTNAME wfonte
            FONTSIZE wsize
            backcolor wbackcolorBotaoBrowse
            fontcolor wFontColorBotaoBrowse
            NOXPSTYLE .T.
          END BUTTONEX  
									//
         DEFINE BUTTONEX BotaopageU
					       cOL ultcol("telaTabelas","botaofiltro")
            ROW wlinBtbase 
            WIDTH wlargbt  
            HEIGHT waltBT 
            CAPTION "<PgUp>"+fl+"tela anterior" 
            ACTION telaAnteiror() 
            FONTNAME wfonte
            FONTSIZE wsize
            backcolor wbackcolorBotaoBrowse
            fontcolor wFontColorBotaoBrowse
            NOXPSTYLE .T.
          END BUTTONEX  
									//  tbbrowse
         DEFINE TBROWSE browsePesq AT wlinbrowse, 0   ;
            WIDTH wlargTela;
	    							HEIGHT waltBrowse    ;
	    							font wfonte ;
            size wsize ;				
            fontcolor  wFontColorBrowse  ;
												backcolor wBackColorBrowse 
												// colunas   , so pra mostrar as variaveis fixas
												// aqui defino o tamanho , mas sempre baseado em wsize, que varia dependendo da configuração do monitor
            ADD COLUMN TO TBROWSE browsepesq ;
            DATA ARRAY ELEMENT 1;
            TITLE "Código" SIZE 7*wsize
            //
            ADD COLUMN TO TBROWSE browsepesq ;
            DATA ARRAY ELEMENT 2;
            TITLE "Nome" SIZE 30*wsize
            
         END TBROWSE
      END WINDOW
     	CENTER WINDOW telaTabelas
     	ACTIVATE WINDOW telaTabelas
Return  nil
*-------------
exemplo com get box  qualquer
   DEFINE WINDOW EntraDadosCademp ;
      AT wlintela,wcol ;
      WIDTH wlargtela ;
						HEIGHT waltTela ;   
			   MODAL;
						on init inicio() ;
      NOSYSMENU ;
      nocaption;
      on size wsize ;
      backcolor wbackcolorTelaget
      // botoes = exemplo acima
      // label e getbox
      @ wlin ,wcol  label L_codigo  value "Codigo" ;
    	 width wlarglabel height waltGet font wfonte	size Wsize ;
						BACKCOLOR wbackcolorTelaget fontcolor wfontcolorlabelget
						//
      @ Wlin,wcolGet("EntraDadosCademp","l_codigo") GETBOX t_codigo;
      width 10*Wsize    ;
      HEIGHT waltGet  ;
      value vcodigo   ;
      picture"@k9"    ;
      font wfonte;
      size Wsize ;
      backcolor wbackcolorCampoGet
      fontcolor wFontColorCampoGet
      *---------------------------------------------------------------
      
      @ wlin+=wespacoget  ,wcol  label L_nome  value "Nome Empresa*" ;
    	   width wlargLabel height waltGet font wfonte;
     			size Wsize   ;
  						BACKCOLOR wbackcolortelaget fontcolor wFontColorLabelGet

         @ Wlin,wcolGet GETBOX t_nome;
         width 30*Wsize    ;
         HEIGHT waltget  ;
         value vnome   ;
         picture"@x"    ;
         font wfonte;
         size Wsize ;
         backcolor wbackcolorCampoGet
         fontcolor wFontColorCampoGet
   end window
   center window EntraDadosCademp
  	activate window EntraDadosCademp
  	
retu nil
*------------------
			
func ultCol(xjanela,xpropriedade)
   //retorna a ultima coluna do botao, label da janela etc + espaco da coluna  padrao
   declare window &(xjanela)
retu (&(xjanela).&(xpropriedade).col+&(xjanela).&(xpropriedade).width+wespacoCol)  
*----------------------------------
func ultLin(xjanela,xpropriedade)
   //retorna a ultima lina do botao, label da janela etc + espacoGET padrao
   local xlin
   declare window &(xjanela)
   wlin:=&(xjanela).&(xpropriedade).row+&(xjanela).&(xpropriedade).height  + wespacoLin 
retu wlin
*------------------------------------

Poka
Responder