Crear ventana en una determinada posición

Post Reply
User avatar
AngelSalom
Posts: 664
Joined: Fri Oct 07, 2005 7:38 am
Location: Vinaros (Castellón ) - España
Contact:

Crear ventana en una determinada posición

Post by AngelSalom »

Buenas amigos, tengo un diálogo creado y al pulsar un botón quiero que se cree UNA VENTANA en la misma posición.
He montado este pequeño ejemplo :

Code: Select all

#include "fivewin.ch"

Static oMain, oDlgGet, oBtn, oWndPop

function main()
   
   define dialog oMain title "Principal" FROM 0,0 TO 50,160 
   activate dialog oMain CENTERED NOMODAL

   define dialog oDlgGet title "Test Autoget" size 600, 50 pixel COLOR CLR_WHITE, CLR_BLUE OF oMain
   @ 0.5,20 BUTTON oBtn PROMPT "&Crear" OF odlgGet ACTION MuestraPop()

   activate dialog oDlgGet centered 

return nil

Function Muestrapop()
   Local oRect

      // Prueba 1
      oRect:=oDlgGet:GetRect()
      nTop:= oRect:nTop
      nLeft:= oRect:nLeft

      // Prueba 2
      aRect := GetWndRect( oDlgGet:hWnd )
      nTop := aRect[ 1 ]
      nLeft := aRect[ 2 ]
   
      // Coincide 
      DEFINE DIALOG oWndPop FROM nTop, nLeft TO nTop+300, nLeft+500 OF oMain PIXEL 
      ACTIVATE DIALOG oWndPop 

      // No coincide 
      DEFINE WINDOW oWndPop FROM nTop, nLeft TO nTop+300, nLeft+500 OF oMain PIXEL 
      ACTIVATE WINDOW oWndPop 
   
REturn (nil)   

 
Si se trata de un diálogo respeta las posiciones, pero si lo que se crea es una ventana (que es lo que necesito) ésta aparece desplazada abajo y a la derecha de la posición que debería.

¿Alguna explicación?

Gracias!
Angel Salom
http://www.visionwin.com
---------------------------------------------
fwh 19.05 - harbour 3.2 - bcc 7.0
JESUS MARIN
Posts: 91
Joined: Wed Jan 02, 2019 8:36 am

Re: Crear ventana en una determinada posición

Post by JESUS MARIN »

Buenos días Ángel.
Saludos desde La Eliana (Valencia)

Como veo que nadie te contesta, me atrevo a comentarte....
¿tienes en tu versión, en cuanto a la creación de los diálogos, la opción TRUEPIXEL ?

Los diálogos creo recordar que utilizan coordenadas distintas.

Por si sirve de ayuda .

Saludos
User avatar
AngelSalom
Posts: 664
Joined: Fri Oct 07, 2005 7:38 am
Location: Vinaros (Castellón ) - España
Contact:

Re: Crear ventana en una determinada posición

Post by AngelSalom »

Gracias Jesús, al final lo solucioné de otro modo :

Code: Select all

  
oRectGet    :=oGet:GetRect()
oRectDialogo:=oWnd:GetRect()

nTop :=(oRectGet:nBottom-oRectDialogo:nTop)
nLeft:=(oRectGet:nLeft-oRectDialogo:nLeft)
Quería montar una ventana justo debajo del objeto oGet, con esta operación obtengo la posición del diálogo y la posición del get y obtengo la posición relativa del get dentro del diálogo.

Son mejoras que estoy haciendo a la clase tAutoget.
Angel Salom
http://www.visionwin.com
---------------------------------------------
fwh 19.05 - harbour 3.2 - bcc 7.0
User avatar
José Luis Sánchez
Posts: 484
Joined: Thu Oct 13, 2005 9:23 am
Location: Novelda - Alicante - España
Contact:

Re: Crear ventana en una determinada posición

Post by José Luis Sánchez »

Angel, creo que la clase Autoget de Daniel García te hace esto de manera automática.

Saludos,
User avatar
AngelSalom
Posts: 664
Joined: Fri Oct 07, 2005 7:38 am
Location: Vinaros (Castellón ) - España
Contact:

Re: Crear ventana en una determinada posición

Post by AngelSalom »

José Luis, precisamente esa clase es la que he adaptado para que muestre la TGetlist() en el diálogo padre del AUTOGET en el que estoy editando.
Imagina el escenario: un diálogo en el que el Autoget está "rozando" el borde inferior. Al desplegarse la lista no se ve nada ya que no cabe en el diálogo contenedor (en otro post pregunté si sería posible obtener el mismo funcionamiento que un combobox que se muestra sin límites), lo que he hecho es que si se le indica un diálogo padre, la tGetList se crea allí, con estupendos resultados.
Angel Salom
http://www.visionwin.com
---------------------------------------------
fwh 19.05 - harbour 3.2 - bcc 7.0
Post Reply