Posición de los widgets

Post Reply
bioalexy
Posts: 12
Joined: 11 Feb 2016, 16:19

Posición de los widgets

Post by bioalexy »

Hola,

Como puedo hacer que los widgets mantengan su posición relativa con respecto al tamaño de la ventana?

Por ejemplo tengo un menú principal donde coloco 3 logos (Picture widgets) y me gustaría que quedaran centrados relativos al tamaño de la ventana.

He intentado usar las propiedades del "attach" pero no me ha funcionado.

Gracias y Saludos.
luis.vila
Posts: 194
Joined: 17 Sep 2011, 12:46

Re: Posición de los widgets

Post by luis.vila »

Centrados es complicado. Con los split-bars los puedes dejar alinear a la izquiera o a la derecha y mantener su posición con respecto a los extremos derecho e izquierdo de la ventana.
Para centrarlos no es tan sencillo.

Code: Select all

variables
   string VA_MAX
   numeric VNCELX, VNCELY
endvariables
VA_MAX = $windowproperties($instancename, "XPOS·;YPOS·;XSIZE·;YSIZE")
VNCELX = $item("xsize", $cellinfo)
VNCELY = $item("ysize", $cellinfo)
;VA_MAX tiene el tamaño del form en pixels
;VNCELX y VNCELY el tamaño de un carácter
El "problema" es que los widgets se posicionan usando carácteres como coordenada (y no pixels). $cellinfo te devuelve el tamaño del carácter de referencia (font0) y será algo como "xsize=7;ysize=16"
Mientras que $windowproperties te dirá que XSIZE será de 400 [px].

Has de convertir los 400 a carácteres (400/7 = 57) para saber que el form tiene un tamaño aproximado de 57 chars. Luego el centro será el carácter 28.

Ahora lo siguiente será hacer cálculos teniendo en cuenta el tamaño de cada picture para posicionarlos a partir de ese 28.

Code: Select all

$paintedfieldproperties("CPI2","1") = "xpos=27"
Suponiendo que CPI2 tenga un tamaño horizontal de 3, ocupará las posiciones [27, 28 y 29]

Te recomiendo que ese menú esté en un FormContainer porque si cambia el tamaño del form padre, lo podrás interceptar con el ExtendedTrigger resized y ajustar de nuevo la pantalla. Y también que hagas una operación para ese ajuste y que el form "sepa" qué hacer. Queda más expresivo un $instancehandle->maquillaje() que un call LP_POSICION_MENU.

$status=0 ; se acabaron los problemas
Post Reply