ScrResolution(), descontrol de dialogos?

ScrResolution(), descontrol de dialogos?

Postby noe aburto » Sat Jul 11, 2015 3:33 am

Saludos

Estimados, uso la funcion ScrResolution() para poder ubicar la ventana principal en cierto lugar de la pantalla (ejemplo abajo).
Pero al usarla, algunos dialogos que creo posterior a la funcion ScrResolution() ya no me funcionan igual.
por ejemplo: en un dialogo uso:

nBot:=oDlg:nBottom

y este ya no tiene relacion alguna con el oDlg:Bottom del dialogo...

Esta funcion tiene algo que ver con las dimensiones o posiciones de mis dialogos o ventanas que creo?

Gracias.

// --- regresa las coor. de pantalla
function CoordenadasPant(nAncho,nAlto)

nAncho:=ScrResolution()[1]
nAlto :=ScrResolution()[2]
return NIL
Noé Aburto Sánchez
Tec. Prog. de Sistemas. -Morelia, Mich. México.
fwh 20.06, Harbour 3.2.0, bcc 7.4
TsBrowse 9.0, TsButton 7.0, xEdit 6.1
naburtos@gmail.com, noeaburto67@hotmail.com
User avatar
noe aburto
 
Posts: 418
Joined: Wed Nov 26, 2008 6:33 pm
Location: Morelia, Mich. Mexico.

Re: ScrResolution(), descontrol de dialogos?

Postby Antonio Linares » Sat Jul 11, 2015 2:47 pm

Noe,

Tienes que modificar la posición del diálogo desde la claúsula ON INIT:

ACTIVATE DIALOG oDlg ON INIT ...

ya que en ese momento el diálogo ha sido creado por Windows y las coordenadas ya estan basadas en pixeles y no en "units":

https://msdn.microsoft.com/en-us/library/windows/desktop/ms645475(v=vs.85).aspx

Retrieves the system's dialog base units, which are the average width and height of characters in the system font. For dialog boxes that use the system font, you can use these values to convert between dialog template units, as specified in dialog box templates, and pixels
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42099
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: ScrResolution(), descontrol de dialogos?

Postby Jairo Barbosa » Sat Jul 11, 2015 4:48 pm

Noe buen dia

Yo he utilizado con exito pero en ventanas
nResoancho := GetSysMetrics(0)
nResoAlto := GetSysMetrics(1)

Si te puedo colaborar en algo cuenta conmigo con gusto

Jairo
User avatar
Jairo Barbosa
 
Posts: 194
Joined: Fri Jan 23, 2009 2:50 am
Location: Cali Valle Colombia

Re: ScrResolution(), descontrol de dialogos?

Postby antolin » Wed Jul 15, 2015 9:51 am

Noe, Antonio tiene razón, la única solución es el ON INT.

Normalmente creo mis diálogos asi:
Code: Select all  Expand view
LOCAL aCtrl[10]
*
DEFINE DIALOG oDlg ...
   @ 0,0 SAY oCtrl[1] ....
   @ 0,0 SAY oCtrl[2] ....
   ...
   @ 0,0 SAY oCtrl[10] ....
ACTIVATE DCIALOG oDLg ON INIT IniDiag(oCtrl)
*
FUNCTION IniDiag(oCt)
   oCt[1]:Move(10,10)
   oCt[2]:Move(26,10)
   ...
   oCt[10]:Move(144,10,100,20)
   ...
RETURN NIL
 

Y para solventar problemas de resolución, utilizo coordenadas relativas en luigar de absolutas.
Por ejemp,lo 50 pixel antes del bottom, Ancho pabntalla/3+20, oCtrl[1]:nLeft+oCtrl[1]:nWidth+10, etc..

los GetSysMetrics son muy socorridos. Por ejemplo, para calcular la parte baja de mi pantalla, justo por encima de la barra de estado utilizo:
Code: Select all  Expand view
GetSysMetrics(4)+GetSysMetrics(17)
Que es lo que mide el titulo+altura área de clientes


Un saludo
Peaaaaaso de foro...
FWH 2007 - xHarbour - BCC55
antolin
 
Posts: 498
Joined: Thu May 10, 2007 8:30 pm
Location: Sevilla


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 88 guests