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