Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Formularios cortados (https://www.clubdelphi.com/foros/showthread.php?t=5392)

guillotmarc 20-11-2003 04:36:20

Formularios cortados
 
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
Código:

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.


La franja horaria es GMT +2. Ahora son las 21:02:53.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi