Página 1 de 1

Diferentes resolucoes

Enviado: 14 Abr 2009 10:38
por marcos.gurupi
Caros, como vcs fazem para preparar o sistema para diferentes resolucoes, eu fiz o sistema na mao e entaum fiz na resolucao 1024 x 768 acontece q agora encontrei um cliente q o micro dele n aceita essa resolucao, entaum eu quero preparar o sistema para aceitar varias resolucoes ou mesmo c adaptar para a resolucao escolhida. Como vcs fazem?

Marcos Roberto

Re: Diferentes resolucoes

Enviado: 16 Abr 2009 18:46
por sygecom
Respondi no grupo da Hwgui:
Olá Marcos,
Eu faço tudo para 800 x 600, ai não tem erro, Menos que isso não deixo nem o sistema iniciar dando uma mensagem de que a resolução mínima é 800 x 600. Agora tem pequenos módulos do sistema que fiz para ser acessado pelo IPHONE que roda em mini-resoluções ai já é outra historia, mas também não tem muito segredo é só definir o mínimo que o resto é tranqüilo.

Re: Diferentes resolucoes

Enviado: 24 Abr 2009 14:27
por marcos.gurupi
Acontece q assim pelo menos comigo n dar certo, tenho uma figura por exemplo na tela de vendas q tem o nome total do cupom total do item e etc. e os campos get em suas posicoes, quando mudo a resolucao fica tudo fora de contexto. Terei q repensar essa tela.

Marcos Roberto.

Re: Diferentes resolucoes

Enviado: 24 Abr 2009 22:36
por esbasso
Voces tem de aprenderem a usar o anchor para todos os objetos.
Desta forma eles podem serem redimensionado, reposicionados, de forma absoluta ou de forma relativa nas telas e em qualquer resolução

Re: Diferentes resolucoes

Enviado: 25 Abr 2009 22:20
por marcos.gurupi
Vc poderia demonstrar em forma de exemplo como fazer?

Marcos Roberto

Re: Diferentes resolucoes

Enviado: 28 Abr 2009 00:40
por esbasso
tem de sempre partir da resolução menor para a maior
poste um codigo de uma tela numa resolução mostrarei como ficaria numa resolução maior.

Re: Diferentes resolucoes

Enviado: 28 Abr 2009 15:11
por marcos.gurupi
Caro, segue abaixo a tela q tenho o principal problema pois uso uma imagem no fundo.

Código: Selecionar todos

Function Vendas()

LOCAL oButton09

INIT DIALOG oFormVendas CLIPPER NOEXIT TITLE "Vendas "+iif(M->Tef_Uti="S",Space(202)+"T.E.F. ATIVADO",Space(198)+"T.E.F. DESATIVADO");
        ON INIT {||oButton01:ENABLE(),oButton02:ENABLE(),oButton03:ENABLE(),;
                   iif(xitem#0,oButton04:ENABLE(),oButton04:DISABLE()),iif(xitem#0,oButton05:ENABLE(),oButton05:DISABLE()),;
                   iif(xitem#0,oButton06:ENABLE(),oButton06:DISABLE()),iif(xitem#0,oButton07:ENABLE(),oButton07:Disable()),;
                   oButton08:Disable(),Iif(Config->ECFINT="N",Veri_Transacao(),.T.),iif(M->Tef_Uti="S".AND.Config->ECFINT="N",VerificaGP(),.T.),iif(CONFIG->ECFINT="N".AND.M->Tef_Uti="S",VerificaTEF(),.T.),;
						 Iif(Config->ECFINT="N",VerificaECF(),.T.),;
						 Iif(Config->ECFINT="N".and.M->Tef_Uti="S",oButton10:Enable(),.T.),HideWindow( nHandleBarraDeTarefas ),;
						 oRef:SetFocus()};
		  ON EXIT {||IIF(xitem#0,CancelarVenda(),.T.)};
        FONT HFont():Add( 'Courier New',0,-36,400,,,) ;
        AT 0, 0 ;
        SIZE GetDesktopWidth(), GetDesktopHeight();
        STYLE DS_CENTER + WS_VISIBLE + WS_POPUP + WS_VISIBLE

   
   //SET KEY FSHIFT,ASC("A") TO MsgInfo("SHIFT-A") 
//   SET KEY FCONTROL,VK_F3 TO MsgInfo("Ctrl-F3") 
   SET KEY 0,VK_F1  TO {||BuscPro("?"),oRef:SetFocus(),.T.}
   SET KEY 0,VK_F2  TO {||IIF(XITEM#0,CancelarItem(),.T.),oRef:SetFocus(),.T.}
   SET KEY 0,VK_F3  TO {||AbreGaveta(),oRef:SetFocus(),.T.}
   SET KEY 0,VK_F4  TO {||iif(xitem#0,FinalizarVenda(),.T.),inicia:=1,oButton02:ENABLE(),oButton03:ENABLE(),oButton04:DISABLE(),oButton05:DISABLE(),oButton06:DISABLE(),oButton07:Disable(),oButton08:Disable()}
   SET KEY 0,VK_F5  TO {||Desconto(),oRef:SetFocus(),.T.} 
   SET KEY 0,VK_F6  TO {||Iif(xItem=0,ConfigTef(),.T.),inicia:=1,oButton02:ENABLE(),oButton03:ENABLE(),oButton04:DISABLE(),oButton05:DISABLE(),oButton06:DISABLE(),oButton07:Disable(),oButton08:Disable()}
   SET KEY 0,VK_F7  TO {||iif(xitem#0,Orcamento(),.T.),inicia:=1,oButton02:ENABLE(),oButton03:ENABLE(),oButton04:DISABLE(),oButton05:DISABLE(),oButton06:DISABLE(),oButton07:Disable(),oButton08:Disable()}
   SET KEY 0,VK_F8  TO {||Iif(xItem=0,Config(),.T.),inicia:=1,oButton02:ENABLE(),oButton03:Enable(),oButton04:DISABLE(),oButton05:DISABLE(),oButton06:DISABLE(),oButton07:Disable(),oButton08:Disable()}
   SET KEY 0,VK_F9  TO {||VerificaGP(),oRef:SetFocus(),.T.}
   SET KEY 0,VK_F10 TO {||PADM(),oRef:SetFocus(),.T.}

 
   @   0,0  IMAGE oImage SHOW oVendas SIZE GetDesktopWidth(),GetDesktopHeight()




   @ 737,650  GET oRef       VAR vRef   VALID {||Iif(Empty(vRef),.F.,BuscPro(vRef)),iif(empty(vref),.F.,oQuant:Setfocus()),.T.} MAXLENGTH 13 PICTURE "@!"        Size 270,50 STYLE ES_AUTOHSCROLL TOOLTIP "F1 Pesquisar produto pela descricao"
   @ 747,177  GET oQuant     VAR vQuant VALID {||oPreco:SetFocus(),.T.}   MAXLENGTH 08 PICTURE "9999.999"  Size 257,60 FONT HFont():Add( 'Courier New',0,-38,400,,,) STYLE ES_AUTOHSCROLL + ES_RIGHT
   @ 747,308  GET oPreco     VAR vPreco VALID {||iif(!Empty(vRef),ValidPrc(vPreco),.T.),IIF(PEVENDE#0,LancItem(),.T.),oRef:SetFocus(),.T.} PICTURE "@E 9,999.99" Size 257,60 FONT HFont():Add( 'Courier New',0,-38,400,,,) STYLE ES_AUTOHSCROLL + ES_RIGHT
   @  30, 43  SAY oDescricao CAPTION Transform(vDescricao,"@!@S43") OF oFormVendas Size 950,50 FONT HFont():Add( 'Courier New',0,-36,800,,,) BACKCOLOR RGB(186,227,247) 

   @ 747,435  SAY oTotUnt    CAPTION Transform(vTotUnt,"@E 99,999.99") OF oFormVendas Size 257,60 BACKCOLOR RGB(186,227,247) FONT HFont():Add( 'Courier New',0,-38,800,,,) STYLE ES_RIGHT 
   @ 747,560  SAY oTotal     CAPTION Transform(vTotal,"@E 99,999.99") OF oFormVendas Size 257,60 COLOR x_RED FONT HFont():Add( 'Courier New',0,-38,800,,,) BACKCOLOR RGB(186,227,247) STYLE ES_RIGHT

   @  30,420 BROWSE oBrwItem DATABASE ON GETFOCUS {||oRef:SetFocus()} ON POSCHANGE {||oBrwItem:Refresh()} ON UPDATE {|| VerificaProd() } SIZE GetDesktopWidth()-375, 280 FONT HFont():Add( 'Courier New',0,-12,400,,,)
   oBrwItem:alias:= ARQUITMP
   oBrwItem:aColumns := {}
   ADD COLUMN FieldBlock(Fieldname(4))  TO oBrwItem HEADER 'Codigo'    TYPE 'C' LENGTH 5   PICTURE "99999" JUSTIFY HEAD DT_CENTER JUSTIFY LINE DT_CENTER
   ADD COLUMN FieldBlock(Fieldname(5) ) TO oBrwItem HEADER 'Descrição' TYPE 'C' LENGTH 35  PICTURE "@!@S35"    JUSTIFY HEAD DT_CENTER //        JUSTIFY LINE DT_RIGHT
   ADD COLUMN FieldBlock(Fieldname(6) ) TO oBrwItem HEADER 'Quant.'    TYPE 'N' LENGTH 10  DEC 2 PICTURE "9999.99" VALID {||IIF(QUANT=0,MSGSTOP("Quantidade nao pode ser 0.00","Aviso"),.T.),.T.} JUSTIFY HEAD DT_CENTER JUSTIFY LINE DT_RIGHT
   ADD COLUMN FieldBlock(Fieldname(7) ) TO oBrwItem HEADER 'Vlr.Unit.' TYPE 'N' LENGTH 12  DEC 2 PICTURE "@E 99,999.99" JUSTIFY HEAD DT_CENTER JUSTIFY LINE DT_RIGHT
   ADD COLUMN FieldBlock(Fieldname(8) ) TO oBrwItem HEADER 'Total'     TYPE 'N' LENGTH 12  DEC 2 PICTURE "@E 99,999.99" JUSTIFY HEAD DT_CENTER JUSTIFY LINE DT_RIGHT
   oBrwItem:aColumns[3]:lEditable := .T.
   oBrwItem:aColumns[4]:lEditable := .T.
   oBrwItem:aColumns[1]:bColorBlock := {|| IF(&ARQUITMP->QUANT=0,{x_RED, x_WHITE, x_CYAN, x_DARKBLUE} ,{x_BLACK, x_WHITE , x_WHITE, x_DARKBLUE })}
   oBrwItem:aColumns[2]:bColorBlock := {|| IF(&ARQUITMP->QUANT=0,{x_RED, x_WHITE, x_CYAN, x_DARKBLUE} ,{x_BLACK, x_WHITE , x_WHITE, x_DARKBLUE })}
   oBrwItem:aColumns[3]:bColorBlock := {|| IF(&ARQUITMP->QUANT=0,{x_RED, x_WHITE, x_CYAN, x_DARKBLUE} ,{x_BLACK, x_WHITE , x_WHITE, x_DARKBLUE })}
   oBrwItem:aColumns[4]:bColorBlock := {|| IF(&ARQUITMP->QUANT=0,{x_RED, x_WHITE, x_CYAN, x_DARKBLUE} ,{x_BLACK, x_WHITE , x_WHITE, x_DARKBLUE })}
   oBrwItem:aColumns[1]:bColorBlock := {|| IF(&ARQUITMP->QUANT=0,{x_RED, x_WHITE, x_CYAN, x_DARKBLUE} ,{x_BLACK, x_WHITE , x_WHITE, x_DARKBLUE })}


   @  10,716 BUTTON oButton01 CAPTION "[F3] Abrir Gaveta"           SIZE 160, 20 ON CLICK {||AbreGaveta(),oRef:SetFocus()} FONT HFont():Add( 'Courier New',0,-11,800,,,)
   @ 170,716 BUTTON oButton02 CAPTION "[F6] Funcoes T.E.F."         SIZE 160, 20 ON CLICK {||ConfigTef(),oRef:SetFocus(),.T.} STYLE WS_TABSTOP FONT HFont():Add( 'Courier New',0,-11,800,,,)
   @ 330,716 BUTTON oButton03 CAPTION "[F8] Funcoes E.C.F."         SIZE 160, 20 ON CLICK {||Config(),oRef:SetFocus(),.T.} STYLE WS_TABSTOP FONT HFont():Add( 'Courier New',0,-11,800,,,)

   @ 490,716 BUTTON oButton04 CAPTION "[F4] Finalizar Venda"        SIZE 160, 20 ON CLICK {||FinalizarVenda(),inicia:=1,oButton02:Enable(),oButton04:DISABLE(),oButton05:DISABLE(),oButton06:DISABLE(),oButton07:Disable(),oButton08:Disable(),oRef:SetFocus(),.T.} STYLE WS_TABSTOP FONT HFont():Add( 'Courier New',0,-11,800,,,)
   @ 650,716 BUTTON oButton05 CAPTION "[F2] Cancelar Item"          SIZE 160, 20 ON CLICK {||CancelarItem(),oRef:SetFocus(),.T.} STYLE WS_TABSTOP FONT HFont():Add( 'Courier New',0,-11,800,,,) COLOR x_BLUE
   @ 810,716 BUTTON oButton06 CAPTION "[ESC] Cancelar Cupom"        SIZE 150, 20 ON CLICK {||CancelarVenda(),EndDialog()} STYLE WS_TABSTOP FONT HFont():Add( 'Courier New',0,-11,800,,,) COLOR x_BLUE

   @ 170, 10 BUTTON oButton11 CAPTION "[F11] Consultar Cheque"      SIZE 160, 20 ON CLICK {||ValidarCartao(3),oRef:SetFocus(),.T.} STYLE WS_TABSTOP FONT HFont():Add( 'Courier New',0,-11,800,,,)
   @ 330, 10 BUTTON oButton10 CAPTION "[F10] Funcoes ADM TEF"       SIZE 160, 20 ON CLICK {||PADM(),oRef:SetFocus(),.T.} STYLE WS_TABSTOP FONT HFont():Add( 'Courier New',0,-11,800,,,)
   @ 490, 10 BUTTON oButton03 CAPTION "[F9] Verificar G.P."         SIZE 160, 20 ON CLICK {||VerificaGP(),oRef:SetFocus(),.T.} STYLE WS_TABSTOP FONT HFont():Add( 'Courier New',0,-11,800,,,)
   @ 650, 10 BUTTON oButton08 CAPTION "[F7] Orcamento"              SIZE 160, 20 ON CLICK {||iif(xitem#0,Orcamento(),.T.),inicia:=1,oButton04:DISABLE(),oButton05:DISABLE(),oButton06:DISABLE(),oButton07:Disable(),oButton08:Disable()} STYLE WS_TABSTOP FONT HFont():Add( 'Courier New',0,-11,800,,,)
   @ 810, 10 BUTTON oButton07 CAPTION "[F5] Desconto "              SIZE 160, 20 ON CLICK {||Desconto(),oRef:SetFocus(),oBrwItem:Refresh(),.T.} STYLE WS_TABSTOP FONT HFont():Add( 'Courier New',0,-11,800,,,)

   @  10,746 SAY oStatusSAY1 CAPTION "Status da E.C.F.: " SIZE 130, 20  FONT HFont():Add( 'Courier New',0,-11,800,,,) COLOR x_BLUE BACKCOLOR RGB(186,227,247)
   @ 140,746 SAY oStatusECF  CAPTION vStatusECF SIZE 450, 20  FONT HFont():Add( 'Courier New',0,-11,800,,,) COLOR x_RED BACKCOLOR RGB(186,227,247)
   @ 600,746 SAY oStatusSAY2 CAPTION "Status do G.P.: " SIZE 110, 20  FONT HFont():Add( 'Courier New',0,-11,800,,,) COLOR x_BLUE BACKCOLOR RGB(186,227,247)
   @ 710,746 SAY oStatusGP   CAPTION vStatusGP SIZE 250, 20  FONT HFont():Add( 'Courier New',0,-11,800,,,) COLOR x_RED BACKCOLOR RGB(186,227,247)
//   @ 620,746 SAY oStatusSAY2 CAPTION "Status do Banco de Dados.: " SIZE 200, 20  FONT HFont():Add( 'Courier New',0,-11,800,,,) COLOR x_BLUE BACKCOLOR RGB(186,227,247)
   @ 1620,746 SAY oStatusSAY2 CAPTION "Status do Banco de Dados.: " SIZE 200, 20  FONT HFont():Add( 'Courier New',0,-11,800,,,) COLOR x_BLUE BACKCOLOR RGB(186,227,247)
   @ 1810,746 SAY oStatusBD   CAPTION vStatusBD SIZE 200, 20  FONT HFont():Add( 'Courier New',0,-11,800,,,) COLOR x_RED BACKCOLOR RGB(186,227,247)
//   @ 810,746 SAY oStatusBD   CAPTION vStatusBD SIZE 200, 20  FONT HFont():Add( 'Courier New',0,-11,800,,,) COLOR x_RED BACKCOLOR RGB(186,227,247)
//ReadExit( .T. )
ACTIVATE DIALOG oFormVendas
//oVendas:ACTIVATE()
ShowWindow( nHandleBarraDeTarefas )
RETURN NIL




Re: Diferentes resolucoes

Enviado: 28 Abr 2009 16:35
por esbasso
logo após
@ 0,0 IMAGE oImage SHOW oVendas SIZE GetDesktopWidth(),GetDesktopHeight() coloque
oImage:anchor := 15 para ser redimensionado junto com a TELA

Re: Diferentes resolucoes

Enviado: 28 Abr 2009 16:49
por sygecom
Buenas Basso,
Falando em ANCHOR, não teria como colocar ele em um DIALOG e a DIALOG redimencionar todos os obj dentro dela automaticamente ?

Re: Diferentes resolucoes

Enviado: 29 Abr 2009 10:09
por esbasso
Naõ seria uma boa ideia pois nem todo controle deva ser redimensiona reposicionado.
Por exemplo um GET talvez deva ser apenas aumentado na largura e não na altura
O Anchor serve para redimensionar o objeto ou reposicionar o objeto sem alterar seu tamanho.

Re: Diferentes resolucoes

Enviado: 29 Abr 2009 23:56
por sygecom
Mas seria uma mão na roda, se tive-se uma forma de apenas definir o Anchor no DIALOG. e o resto fosse no automatico. No meu caso hoje é complicado implantar isso no sistema, eu teria que rever todos os objetos do sistema em cada dialog e isso levaria muito tempo. Mas lhe agradeço pela atenção. Abraços

Re: Diferentes resolucoes

Enviado: 01 Mai 2009 11:34
por esbasso
voce pode varrer todos os teus objetos no INIT do DIALOG e atribuir o valor do anchor que quiser dependendo do objeto
exemplo
FOR i = 1 to LEN(odlg:acontrols)
obj := odlgacontrols
if type("obj:anchor") !- "U"
obj:anchor := 15 && exemplo
endif
NEXT

Re: Diferentes resolucoes

Enviado: 01 Mai 2009 18:03
por sygecom
Buenas Basso,
Coloquei no INIT DIALOG mas ficou muito fora do normal quando maximizado. Acho que não tem como mesmo, a não ser um a um dos Objetos.