FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Clausula Pixel
Posts: 166
Joined: Mon Dec 12, 2005 09:56 AM
Clausula Pixel
Posted: Fri Jul 09, 2021 04:45 PM
No se si me he perdido algo con la clausula PIXEL en los controles, pero hay algo que se me escapa, siempre he hecho mis aplicaciones con recursos. Pero ahora estoy haciendo una aplicaci贸n que necesito que el tama帽o y colocaci贸n de los controles dentro de un dialogo aparezcan a una determinada distancia dependiendo de la resoluci贸n de la pantalla.
Para resumir, el problema que estoy teniendo, por ejemplo, es el siguiente:
Code (fw): Select all Collapse
nresv := GetDeviceCaps( hDC, VERTRES )
nresh := GetDeviceCaps( hDC, HORZRES )
n_ini_v_fold := 100 聽// el valor es lo de menos, en realidad es un % de la resoluci贸n de la pantalla
n_ini_h_fold := 20
n_fin_h_fold := 300
n_fin_v_fold := 250
DEFINE DIALOG oDlgNotas FROM 0,0 TO nresv, nresh
....
@ n_ini_v_fold, n_ini_h_fold FOLDEREX oFolder PROMPT afolders DIALOGS aDialogs OF oDlgNotas PIXEL SIZE n_fin_h_fold, n_fin_v_fold FONT oFontn
.... 
ACTIVATE DIALOG oDlgNotas 
...


Aqui me pone el Folder en una determinada posici贸n, pero por motivos de que las pesta帽as del folder cambian al seleccionar un elemento de un combobox, tengo que destruirlo y volver a declararlo en otra funci贸n:
Code (fw): Select all Collapse
 function ponfolder(ccombo)
.....
@ n_ini_v_fold, n_ini_h_fold FOLDEREX oFolder PROMPT afolders DIALOGS aDialogs OF oDlgNotas PIXEL SIZE n_fin_h_fold, n_fin_v_fold FONT oFontn
....
return

Y aqu铆 est谩 el problema, en ning煤n momento se cambian los valores de las variables n_ini_v_fold.... Sin embargo, me muestra el folder en otra posici贸n totalmente distinta, es como si los valores de las variables se hubieran reducido a menos de la mitad, cuando no es as铆 (Comprobado mostrando msgalert(str(n_ini_v_fold) justo delante de la declaraci贸n del folder.
Eso mismo me pasa con todos los controles (xbrowse, btnbmp, comobobox. etc.), si est谩n en la funci贸n donde se declara el dialogo, los muestra en la posicic贸n correcta, si se declaran en otra funcion, los muestra en otra posici贸n. Incluso el tama帽o de los botones y las distancias de un control a otro, varian. Me estoy volviendo loco.
驴Alguna sugerencia?
Saludos
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Clausula Pixel
Posted: Fri Jul 09, 2021 04:55 PM
Sebastian, a帽ade estas clausulas y prueba
Code (fw): Select all Collapse
DEFINE DIALOG oDlgNotas FROM 0,0 TO nresv, nresh PIXEL TRUEPIXEL
Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noci贸n del tiempo

El secreto de la felicidad no est谩 en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 166
Joined: Mon Dec 12, 2005 09:56 AM
Re: Clausula Pixel
Posted: Fri Jul 09, 2021 05:06 PM

Jo..r Cristobal, gracias, funciona a la perfecci贸n, no tenia ni idea de la clausula TRUEPIXEL para los dialogos, llevo cuatro d铆as peleandome con esto.
Saludos

Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Clausula Pixel
Posted: Sat Jul 10, 2021 04:33 PM
Bu茅n dia. Master Navarro, no uso C贸digo, podrias porfa, explicar que hace:

Code (fw): Select all Collapse
   PIXEL TRUEPIXEL


Gracias.

Regards, saludos.
Jo茫o Santos - S茫o Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Clausula Pixel
Posted: Sat Jul 10, 2021 05:51 PM
Estimado Joao
Fijate en el siguiente ejemplo:
Code (fw): Select all Collapse
#include "Fivewin.ch"

Function Main()

   Pixels()
   TruePixels()

Return nil


Function Pixels()

   local oDlg
   local oGet
   local cVar  := Space( 30 )
   local oFont

   DEFINE FONT oFont NAME "Calibri" SIZE 0, -16   

   DEFINE DIALOG oDlg FROM 1, 1 TO 501, 701 PIXEL
   oDlg:lHelpIcon := .F.

      @ 10, 10 GET oGet VAR cVar SIZE 200, 24 OF oDlg FONT oFont PIXEL

   ACTIVATE DIALOG oDlg
   RELEASE FONT oFont

Return nil

Function TruePixels()

   local oDlg
   local oGet
   local cVar  := Space( 30 )
   local oFont

   DEFINE FONT oFont NAME "Calibri" SIZE 0, -16   

   DEFINE DIALOG oDlg FROM 1, 1 TO 501, 701 PIXEL TRUEPIXEL
   oDlg:lHelpIcon := .F.

      @ 10, 10 GET oGet VAR cVar SIZE 200, 24 OF oDlg FONT oFont PIXEL

   ACTIVATE DIALOG oDlg
   RELEASE FONT oFont

Return nil


Las diferencias entre programar usando un dialog o una ventana como contenedor es que las unidades por defecto que toman los dialogs respecto a las windows son el doble, aunque definas la clausula PIXEL en la definici贸n del Dialog ( esta caracter铆stica no es un tema de Fivewin, sino del propio Windows que lo tiene as铆 establecido ).
Ante esa circunstancia y para que no haya diferencias de apariencia entre utilizar windows o dialog como contenedores de nuestros controles, se implement贸 la cla煤sula TRUEPIXEL en los dialog, para que Fw internamente divida por dos las coordenadas y tama帽os que definimos en los controles, y aparezcan con las mismas dimensiones que si us谩ramos una window.
En resumen, la cla煤sula TRUEPIXEL se define en los dialog para ser aplicada a las coordenadas y dimensiones de nuestros controles.
Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noci贸n del tiempo

El secreto de la felicidad no est谩 en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Clausula Pixel
Posted: Mon Jul 12, 2021 12:45 PM

Perfecto Master. Con TRUEPIXEL, 茅s bi茅n mejor para trabajar. Gracias, saludos.

Jo茫o Santos - S茫o Paulo - Brasil - Phone: +55(11)95150-7341

Continue the discussion