PDA

Ver la Versión Completa : Formularios cortados


guillotmarc
20-11-2003, 04:36:20
Hola.

Tengo usuarios que a veces cambian la configuración de puntos por pulgada (en la pestaña General de las opciones avanzadas de las propiedades de pantalla) de su ordenador a tamaño grande (120 ppp).

En ese caso, aumentan los elementos dentro de los formularios (labels, edits, ...) pero los formularios mantienen su mismo tamaño, por lo que quedan cortados. Parte de su contenido no llega a verse.

¿ Alguien ha podido solucionar este problema ? (imagino que debe conseguirse que los formularios crezcan en la misma proporción que los controles que posee).

NOTA : Habitualmente trabajo con aplicaciones MDI.

Gracias.

Julià T.
20-11-2003, 21:30:48
Hola guillotmarc:

No sé si será tan facil como em mi caso con Linux y colocar la propiedad Scaled (y autoscroll si hace falta) a false o hacer un ScaleBy(96,PixelsperInch); (96 son los pixeles por defecto creo)

guillotmarc
24-11-2003, 14:59:12
Hola.

No conocía esa propiead. Voy a probarlo. En efecto parece que el tamaño por defecto es 96 (al menos este es el valor que tiene la propiedad PixelsPerInch).

¿ Que diferencia hay entre el Scaled a False, o el ScaleBy(9&) ?

Por cierto, la verdad es que no me desagrada que se reajusten todos los controles al cambiar la configuración de pantalla, lo unico que no queda bien es que no se amplia en correspondencia el formulario. ¿ Hay alguna formar de forzar que el formulario también se amplie ?

Gracias

guillotmarc
24-11-2003, 15:32:36
Cambiar el Scaled a False, no me sirve.

Realmente los controles no cambian de tamaño, pero como las fuentes són distintas a las de 96 ppp (són mayores), entonces las etiquetas mismas se montan unas encima de las otras.

Me parece que la única solución valida es que el formulario también se escale, pero no se como hacerlo. No puedo cambiarle el tamaño por código, primero porqué no sé detectar si la pantalla está a 96 ppp o a 120, y después porqué si amplio la pantalla, como tengo los controles anclados, me ajustará también los controles y el efecto será el mismo.

Saludos.

Julià T.
25-11-2003, 04:15:57
Poner scaled a false, sirve para que al canviar al pasar de una resolucion (PixelsPerInch) a otra, no varie ni el tamaño, ni el tamaño de la fuente.
Utilizar ScaleBy, escalaremos el formulario y las fuentes a nuestro gusto.
supongo que el problema es que en este caso el formulario se mantiene a los 96 pixeles/pulgada pero al tener fuentes grandes 120, no nos sirve de nada escalar el formulario, ya que el formulario mantiene sus 96.

prueba con un código similar al siguiente
uses TypInfo;

Var
i,n:integer;
O:TObject;
begin
for i:=0 to ComponentCount-1 do
if Components[i] is TControl then
begin
O:=GetObjectProp(Components[i],'Font');
if O<>nil then
begin
TFont(O).size:=(TFont(O).size * 96) div TFont(O).PixelsPerInch;
// no sé si funcionará correctamente
// TFont(O).PixelsPerInch:=96;
// TFont(O).Height:=(TFont(O).Height * 96) div TFont(O).PixelsPerInch;
end;
end;
end;

Julià T.
25-11-2003, 04:19:33
se me olvidaba, la propiedad que se llama PixelsPerInch, te indica la resolución de la pantalla, al menos en el moenteo de abrirse es correcta.