× Linguagem de Programação ADVPL

Perguntas Ajuda com MsObjGetPos

Mais
10 anos 2 meses atrás #24677 por inocenciojr
Boa Tarde Pessoal,

Estou criando uma tela customizada e estou com algumas duvidas com o MsObjGetPos.

Criei o objeto e chamei ele assim

aSize := MsAdvSize(.T.)
AADD( _aObj, { 100, 015, .T., .F. })

// Cálculo automático da dimensões dos objetos (altura/largura) em pixel
aInfo := { aSize[1], aSize[2], aSize[3], aSize[4], 3, 3 }
_aPObj := MsObjSize( aInfo, _aObj,.T.,.F. )

// Cálculo automático de dimensões dos objetos MSGET
_aPGet := MsObjGetPos( (aSize[3] - aSize[1]), 315, { {nLinIni, nColIni, nLinFim, nColFim},{nLinIni+8, nColIni, nLinFim+55, nColFim+9},{130,420,295,560}} )

DEFINE MSDIALOG oDlg FROM aSize[7],aSize[1] TO aSize[6],aSize[5] TITLE _cCadastro PIXEL
@ 001,002 TO 119, 600 OF oDlg PIXEL

oFld := TFolder():New( 120, 0, aFolder, aFolder, oDlg,,,, .T., , 400,150 )

@ 120,419 SAY "Historico do Atendimento" SIZE 065,07 OF oDlg PIXEL
@ _aPGet[3][1],_aPGet[3][2]GET cMemo Var _mMemo MULTILINE SIZE _aPGet[3][3],_aPGet[3][4] WHEN .T. OF oDlg HSCROLL Pixel

@ _aPGet[1][1],_aPGet[1][2] SAY "Numero *" SIZE _aPGet[1][3],_aPGet[1][4] OF oDlg PIXEL
@ _aPGet[2][1],_aPGet[2][2] MSGET _cNumero SIZE _aPGet[2][3],_aPGet[2][4] WHEN .F. OF oDlg PIXEL


Os arrays ao qual o _aPGet se referem é de acordo com as cores que marquei mesmo?
Se não for, de onde vem isso?

Obrigado

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 2 meses atrás #24697 por AndersonBR
Respondido por AndersonBR no tópico Ajuda com MsObjGetPos
Veja se isso te ajuda:
#INCLUDE "PROTHEUS.CH"
#include "rwmake.ch"

User function Posget()
Local aSize := {}
Local oGet1,oGet2, oDlgaSize := MsAdvSize()

aPosGet := MsObjGetPos(aSize[3]-aSize[1], 315,{{003,033,073,103}} )

DEFINE MSDIALOG oDlg TITLE "Teste MsObjGetPos" From 0,0 to 500,500  PIXEL
@ 10,aPosGet[1,1] SAY "Label 1" 	SIZE 050,009 	OF oDlg PIXEL
@ 10,aPosGet[1,2] MSGET oGet1 	SIZE 060,009 	OF oDlg PIXEL 
@ 10,aPosGet[1,3] SAY "Label 2" 	SIZE 050,009 	OF oDlg PIXEL
@ 10,aPosGet[1,4] MSGET oGet2 	SIZE 060,009 	OF oDlg PIXEL 
ACTIVATE MSDIALOG oDlg

Return

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 2 meses atrás #24701 por inocenciojr
Respondido por inocenciojr no tópico Ajuda com MsObjGetPos
Boa Tarde Anderson,.

Obrigado pela ajuda.
Também achei esse exemplo, mas ainda estou brigando para posicionar os campos nas tela e não estou conseguindo de jeito nenhum.

Com esse exemplo ele trás os seguintes valores

aPosGet[1,1]
5.8
aPosGet[1,2]
63.8
aPosGet[1,3]
141.13333333
aPosGet[1,4]
199.13333333

Ele posiciona corretamente os objetos na tela, porém não consigo reproduzir o mesmo efeito no meu fonte e não entendi como ele chegou exatamente aqueles números.

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 2 meses atrás #24703 por AndersonBR
Respondido por AndersonBR no tópico Ajuda com MsObjGetPos
Inocencio, na verdade eu não uso essa forma para redimensionar meus objetos, só para entender o problema nesse caso é por causa da resolução da tela?

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 2 meses atrás #24704 por inocenciojr
Respondido por inocenciojr no tópico Ajuda com MsObjGetPos
Anderson, exatamente.

Tive de criar um tela na mão para atender as necessidades de forma que não conseguia fazer com a mbrowse.

Porém, por um acaso do destino, tive de testar em outra maquina com monitor full screen e com a resolução mais baixa (que é a resolução máxima da maquina). pois estava sem a minha e vi que os objetos ficaram fora da tela.

Até brinquei aqui que só iria homologar para tela Wide, mas é exatamente nesta tela que uma das pessoas mais irá usar e futuramente outro no monitor Wide que estou usando como base para o desenvolvimento.

Qual forma usa para redimensionar?
Pois até então nunca tive de desenvolver a tela toda na mão, (ao menos nenhum objeto grande) e nem havia me passado pela cabeça esse problema.

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 2 meses atrás - 10 anos 2 meses atrás #24705 por AndersonBR
Respondido por AndersonBR no tópico Ajuda com MsObjGetPos
Eu tenho esse problema aqui, cada monitor de um tamanho, cada usuário uma resolução.

Passei a fazer desta forma, aqui tem resolvido e mais disparidades que aqui não tem viu, bacana que assim redimensiona tudo!

Se ajudar segue:
Static Function D(nTam)	//	QDO TELA Eh DESENVOLVIDA COM RESOLUCAO 1080
***********************************************************************
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Ajusta Tamanho dos Objetos            ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
Local nHRes    :=    oMainWnd:nClientWidth		// Resolucao horizontal do monitor

   If nHRes == 640                            	// Resolucao 640x480 (soh o Ocean e o Classic aceitam 640)
       nTam /= 1.28
   ElseIf (nHRes == 798).Or.(nHRes == 800)    	// Resolucao 800x600
       nTam /= 1.28
   Else                                        	// Resolucao 1024x768 e acima
      nTam *= 1.28
   EndIf

   //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
   //³Tratamento para tema "Flat"³
   //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
   If "MP8" $ oApp:cVersion .Or. '10' $ cVersao 
       If (Alltrim(GetTheme()) == "FLAT") .Or. SetMdiChild()
           nTam /= 1.04
       EndIf
   EndIf
Return Int(nTam)

E chamo assim:
oDlgRec    := MSDialog():New( D(095),D(232),D(462),D(829),"XXXXXX",,,.F.,,,,,,.T.,,oFont1,.T. )
oGrp       := TGroup():New( D(004),D(004),D(156),D(284),"",oDlgRec,CLR_BLACK,CLR_WHITE,.T.,.F. )

oSay1      := TSay():New( D(012),D(008),{||"YYYYY"},oGrp,,oFont1,.F.,.F.,.F.,.T.,CLR_BLACK,CLR_WHITE,D(208),D(008))
oGet1      := TGet():New( D(020),D(008),{|u| If(PCount()>0,cForEmail:=u,cForEmail)},oGrp,D(272),D(008),'',,CLR_BLACK,CLR_WHITE,oFont1,,,.T.,"",,,.F.,.F.,,.F.,.F.,"","",,)
Ultima edição: 10 anos 2 meses atrás por AndersonBR.

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.081 segundos
Joomla templates by a4joomla