Posicion de un objeto

537 views
Skip to first unread message

Alejandro Placereano

unread,
Jan 3, 2013, 12:08:58 PM1/3/13
to publice...@googlegroups.com
Hola! 
tengo una serie de objetos (botones, grillas, etc), y necesito saber la posicion absoluta de cada uno... 
necesito saber el Left y el Top de cada uno de esos objetos, sin tener en cuenta cual es su Parent... 
Por ejemplo: 
si tengo un boton en el form... es facil... sumo thisform.left + thisform.boton.left... eso me da el left absoluto del boton en la pantalla
pero si tengo un objeto dentro de un page o dentro de un contenedor... coomo hago?? ya que nunca se exactamente donde esta ubicado si en el form, si en un page, o donde sea, nunca lo se... 

lo que se me ocurre es ir recorriendo los parents de cada objeto hasta llegar al de mas arriba... e ir sumando los lefts y tops...

pero hay alguna funcion que lo simplifique??

gracias de antemano

Luis Maria Guayan

unread,
Jan 3, 2013, 12:21:09 PM1/3/13
to publice...@googlegroups.com
Mira esta función que la envié hace mucho tiempo para ver si te ayuda:

PROC CalcularPos
  LPARAMETERS toObj
  LOCAL lo, lnTop, lnLeft
  STORE 0 TO lnTop, lnLeft
  lo = toObj
  DO WHILE .T.
    IF PEMSTATUS(lo,"Top",5) AND PEMSTATUS(lo,"Left",5)
      lnLeft = lnLeft + lo.LEFT
      lnTop = lnTop + lo.TOP
    ENDIF
    IF LOWER(lo.PARENT.CLASS) = "form"
      EXIT
    ENDIF
    lo = lo.PARENT
  ENDDO
  MESSAGEBOX("Top="+TRANSFORM(lnTop)+CHR(13)+"Left="+TRANSFORM(lnLeft))
ENDPROC

Lo llamas con el objeto que quieres saber su Top y Left como parámetro.

Ej:
Thisform.CalcularPos(ThisForm.Pageframe1.Page1.Text1)
ó
Thisform.CalcularPos(ThisForm.Container1.Text1)
ó
Thisform.CalcularPos(ThisForm.Text1)

Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________

--
 
 

leonardo trujillo

unread,
Jan 3, 2013, 1:16:49 PM1/3/13
to grupo google vfp
sólo por curiosidad ¿para qué sirve saber la posición de los objetos? ¿es para reubicarlos si se modifica el tamaño de la ventana?


--
 
 

Alejandro Placereano

unread,
Jan 3, 2013, 1:19:57 PM1/3/13
to publice...@googlegroups.com
es para remarcarlos
yo estoy haciendo una ayuda interactiva, que vas pasando al siguiente item.. te dice que hacer con ese objeto y lo remarca con algun color, y pasa al siguiente, etc

pero necesito mover la pantalla que muestra la ayuda, en un lugar donde no tape el control resaltado... parecido a lo que hace la pantalla de buscar de fox...

Alejandro Placereano

unread,
Jan 3, 2013, 1:20:39 PM1/3/13
to publice...@googlegroups.com
Muchas gracias luis
ya mismo me pongo a revisarla...

leonardo trujillo

unread,
Jan 3, 2013, 1:24:07 PM1/3/13
to grupo google vfp
interesante, gracias por compartir la idea
suerte!!


--
 
 

Mario López

unread,
Jan 3, 2013, 1:39:27 PM1/3/13
to publice...@googlegroups.com
@Alejandro / Luis Maria:

hay una función nativa, OBJTOCLIENT:
http://msdn.microsoft.com/en-us/library/aa978057%28v=vs.71%29.aspx

HTH
Mario
---


El jueves, 3 de enero de 2013 14:21:09 UTC-3, Luis Maria Guayan escribió:

Alejandro Placereano

unread,
Jan 3, 2013, 2:42:35 PM1/3/13
to publice...@googlegroups.com
buenisimo!! ya la reviso!
la de luis maria me vino de 10, pero si hay una nativa mucho mejor porque tengo q haerle unos arreglos

gracias otra vez
Reply all
Reply to author
Forward
0 new messages