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.
Posición de los widgets
Re: Posición de los widgets
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.
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.
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.
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
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"
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