Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-11-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 23
guillotmarc Va por buen camino
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.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #2  
Antiguo 20-11-2003
Julià T. Julià T. is offline
Miembro
 
Registrado: may 2003
Ubicación: en el teclado
Posts: 314
Poder: 21
Julià T. Va por buen camino
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)
Responder Con Cita
  #3  
Antiguo 24-11-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 23
guillotmarc Va por buen camino
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
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #4  
Antiguo 24-11-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 23
guillotmarc Va por buen camino
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.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #5  
Antiguo 25-11-2003
Julià T. Julià T. is offline
Miembro
 
Registrado: may 2003
Ubicación: en el teclado
Posts: 314
Poder: 21
Julià T. Va por buen camino
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;
Responder Con Cita
  #6  
Antiguo 25-11-2003
Julià T. Julià T. is offline
Miembro
 
Registrado: may 2003
Ubicación: en el teclado
Posts: 314
Poder: 21
Julià T. Va por buen camino
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.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 00:50:20.


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
Copyright 1996-2007 Club Delphi