Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problemas en Pc con diferente resolución (https://www.clubdelphi.com/foros/showthread.php?t=61371)

Bauhaus1975 05-11-2008 12:00:26

Problemas en Pc con diferente resolución
 
Hola de nuevo,
(Trabajo con Delphi Studio 2006 para Win32)
Parece que trabajando en un proyecto en ordenadores con resolución, el primero de 1280 y otro con 1024 al abrir el proyecto los formularios y fuentes aparecen reducidos en algunos casos (creo que los que trabajé en el PC a mayor resolución)

¿Hay alguna manera de hacer que todo quede a dimensiones y tamaños de fuentes estables, independientemente con el ordenador con el que abra el proyecto?
Gracias y un saludo.

BlueSteel 05-11-2008 14:38:06

Cita:

Empezado por Bauhaus1975 (Mensaje 324261)
Hola de nuevo,
(Trabajo con Delphi Studio 2006 para Win32)
Parece que trabajando en un proyecto en ordenadores con resolución, el primero de 1280 y otro con 1024 al abrir el proyecto los formularios y fuentes aparecen reducidos en algunos casos (creo que los que trabajé en el PC a mayor resolución)

¿Hay alguna manera de hacer que todo quede a dimensiones y tamaños de fuentes estables, independientemente con el ordenador con el que abra el proyecto?
Gracias y un saludo.

Hola, bueno, existen varias formas de hacer lo que necesitas...

lo que yo utilizo es usar una función que me cambie la resolucion de la pantalla...

te dejo la función...

Código Delphi [-]
// Funcion que permite cambiar la resolución de la Pantalla
Function SetScreenResolution(Ancho, Altura: integer): Longint;
var
 DeviceMode: TDeviceMode;
begin
 with DeviceMode do begin
   dmSize := SizeOf(TDeviceMode);
   dmPelsWidth := Ancho;
   dmPelsHeight := Altura;
   dmFields := DM_PELSWIDTH or DM_PELSHEIGHT;
 end;
 Result := ChangeDisplaySettings(DeviceMode, CDS_UPDATEREGISTRY);
end;

y para llamarla solo debes poner esto

Código Delphi [-]
 SetScreenResolution(1024, 768);

creo que esto lo debieras complementar con una función que te entrege la resolución del sistema (no tengo ninguna a mano)..... cosa que cuando ingreses al sistema preguntes si la resolución es igual a la que necesita tu sistema, si la cumple no haces nada, pero si no la cumple guardas la resolución en una variable, cambias la resolucción a la deseada y cuando salgas del sistema restableces la resolución del sistema a la que tenia ...

Salu2:p:D

Lepe 05-11-2008 17:28:10

Otra forma es diseñar tus ventanas basadas en la resolución mínima que deseas, (hoy día 1024x768 según mi parecer). A partir de ahí usas los Constraints y Anchors de los controles para hacer que la ventana se adapte dinámicamente a la resolución.

La resolución, puedes pillarla de la variable Screen.width y Screen.Height, también tienes otras propiedades del objeto Screen que indica el area de trabajo (workarea) que te ofrece el alto sin barras de herramientas ni barra de tareas.

Cambiar la resolución tiene sus detalles, debes tenerlo en cuenta:
- Al usuario no le gusta los textos tan pequeños (porque su monitor es un 14 pulgadas).
- El monitor no soporta dicha resolución. Hoy existen muchos tipos de monitores, CRT, TFT, TFT pantalla ancha, super ancha, etc.

saludos

Bauhaus1975 06-11-2008 19:40:25

Hola, gracias por vuestra ayuda.
no sé realmente si vuestra respuesta es para lo que me pasa.
Ocurre que en vista de diseño los formularios se reducen de tamaño (al abrir el proyecto en otro pc), y parece que con las fuentes ocurre igual.

¿Hay alguna manera de hacer que se mantega el tamaño de los formularios independientemente de la resolucion del PC en el que se vaya a abrir el proyecto?

Lepe 06-11-2008 20:11:58

Parece que ambos te entendimos mal.

Si quieres que se vean igual, pon la misma resolución, no hay más salida (bueno si, compra un monitor más grande para la resolución más alta :p).

Saludos

Bauhaus1975 13-12-2008 19:08:59

Hola de nuevo.
Perdonad, pero creo que no me he explicado bien. Vuelvo a intentarlo con un ejemplo real:

-1º Trabajo en un PC1 a 1024x780. Los formularios miden 'width'=690píxeles, y la propiedad 'PixelesPerInch'=96.

-2º El mismo proyecto lo abro en un PC2 a 1280x1024. Ahora los formularios aparecen con 'width'=900píxeles, y la propiedad 'PixelesPerInch'=120. Además aunque los tamaño de las fuentes estén igual (Tahoma, Normal, 8), el aspecto también es diferente.

¿Sabéis algo para que estos valores estén fijos, independientemente del ordenador donde se esté programando?
Gracias.

Lepe 14-12-2008 11:02:37

ainsssss


1024x780 no es la resolución estandard, la estandard es 1024x768, ahora no sé si se trata de un error de tecleo o es que tu monitor no tiene una relación de aspecto 4:3. De todas formas me inclino por que sea un error mecanográfico.

Si divides 1024/768 = 1,3333
Si divides 1280/1024 = 1.25

Puesto que no te da la misma relación de aspecto, verás de distintas forma la ventana que diseñas y en general toda ventana de windows.

Suponiendo que ambos monitores son cuadrados (nada de pantalla ancha, pantalla plana ultra ancha ni cosas de esas...) tendrías que usar una resolución de 1280x960 pixels en el segundo ordenador para ver todo correcto (ya que dividiendo 1280/960 = 1,33 el mismo factor que el primer monitor).

Si tu segundo ordenador es una pantalla ancha, ultra ancha, etc, debes usar una resolución que tenga su misma relación de aspecto (busca en google por el modelo del monitor, encontrarás que es formato 16:10, es decir 1,66 pues ahora busca una resolución de pantalla que dividiendo sus números te den ese 1.66). Así lograrás ver todo igual en ambos ordenadores, incluso en el primer ordenador puedes usar 1024x768 (relación 4:3)y en el segundo 1920x1200 (relación 16:10), pero como ambas resoluciones son adecuadas para cada monitor, no se desvirtúa ninguna ventana.

El meollo de la cuestión, es que se han popularizado las pantallas LCD y cada fabricante las hace con la relación de aspecto que le salió del.... bolsillo, así que no hay un estandard para todos los monitores, tienes que buscar la resolución para cada uno de ellos.

Saludos

Bauhaus1975 14-12-2008 13:25:41

Cita:

Empezado por Lepe (Mensaje 330809)
ainsssss

1024x780 no es la resolución estandard, la estandard es 1024x768, ahora no sé si se trata de un error de tecleo o es que tu monitor no tiene una relación de aspecto 4:3. De todas formas me inclino por que sea un error mecanográfico.

Estás en lo cierto, ha sido un error mecanográfico. Es 1024x768. Y los monitores, ambos son 'cuadrados', es decir normales. No son panorámicos.
Eligí mal la resolución del PC2. Voy a cambiarla y veré si se mantienen los tamaños trabajando en ambos.
Muchas gracias por la apreciación y un saludo.

MAXIUM 15-12-2008 04:49:43

Duro dolor de cabeza, pero esta es mi solución, funciona has en widescreen (99%..) :p

Código Delphi [-]
  // Redimensiona la aplicación en base a la resolución de la pantalla.
     ScaleBy(Screen.WorkAreaHeight*Width Div Height, Width);
     Height:= Screen.WorkAreaHeight;
     Left:= (Screen.Width - Width) Div 2;
     BorderIcons:= BorderIcons - [biMaximize];

Colocar en Form.Create.

Ojo, es para cuando quieres que tu aplicación ocupe toda la pantalla. La propiedad BorderStyle = bsSingle y debe estar en modo normal, no maximizado.

Lepe 15-12-2008 12:23:55

Gracias MAXIUM, pero has caído igual que yo, este hilo, debería ir en el foro Windows en lugar de varios.

No es tema de programación ;), pero se agradece tu aporte, seguro que lo aplico.

Saludos

Bauhaus1975 22-12-2008 16:39:39

Hola de nuevo.
Al final lo que he hecho ha sido fijar el ancho y alto para los formularios, y poner la propiedad 'scaled = false'. Ahora parece que se mantiene el tamaño (y aspecto) independientemente de dónde haya abierto el proyecto anteriormente.
Un saludo.


La franja horaria es GMT +2. Ahora son las 04:39:23.

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