¿ Porque Dialogo realizado sin recursos al pasarlo a Ventata (o Viceversa)
cambia sus posiciones y dimensiones en los controles que contiene?
como si cada pixel de una window equivaliese a 2 en un dialogo
Cordenadas en pixeles diferentes en Windows y en Dialogs
- creswinman
- Posts: 33
- Joined: Thu Aug 24, 2006 3:14 am
- Location: mexico
- Contact:
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Ignacio,
Es un comportamiento propio de Windows, ya que con las ventanas usa pixeles, pero con los diálogos usa "unidades base de diálogo" que calcula en base a GetDialogBaseUnits().
Si revisas la documentación de GetDialogBaseUnits() encontrarás una explicación de como calcular, más ó menos, de unas a otras.
Es un comportamiento propio de Windows, ya que con las ventanas usa pixeles, pero con los diálogos usa "unidades base de diálogo" que calcula en base a GetDialogBaseUnits().
Si revisas la documentación de GetDialogBaseUnits() encontrarás una explicación de como calcular, más ó menos, de unas a otras.
- creswinman
- Posts: 33
- Joined: Thu Aug 24, 2006 3:14 am
- Location: mexico
- Contact:
Pues creo que ese comportamiento natural de Windows solo genera problemas.....
Se puede corregir en el Metodo Initiate de la TDialog si al final ponemos...
AEVAL( ::aControls, { | o , n | IF( o:ClassName()=="TIMAGE" .OR.
o:ClassName()=="TBITMAP" , ;
o:Move( o:nTop/2 , o:nLeft/2 , 0 , 0 , .T. ) , ;
o:Move( o:nTop/2 , o:nLeft/2 , o:nWidth/2 , o:nHeight/2,.T. ) ) } )
Se puede corregir en el Metodo Initiate de la TDialog si al final ponemos...
AEVAL( ::aControls, { | o , n | IF( o:ClassName()=="TIMAGE" .OR.
o:ClassName()=="TBITMAP" , ;
o:Move( o:nTop/2 , o:nLeft/2 , 0 , 0 , .T. ) , ;
o:Move( o:nTop/2 , o:nLeft/2 , o:nWidth/2 , o:nHeight/2,.T. ) ) } )
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact: