Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   reconocer resolucion de pantalla (https://www.clubdelphi.com/foros/showthread.php?t=60087)

pablopessoa 19-09-2008 13:12:55

reconocer resolucion de pantalla
 
hola!! hay alguna manera de reconocer con delphi que resolucion de pantalla tiene la persona que corre mi aplicacion? si se puede reconocer... hay alguna forma de que delphi reacomode todo automaticamente a esa resolucion? o lo tengo que hacer a mano? como lo ajusto a mano?
gracias y espero en algun momento poder responder algo yo... soy nuevo en este lenguaje

xEsk 19-09-2008 13:13:41

Hola, si es posible: Screen.Width y Screen.Height

Saudos.

DarkMan 19-09-2008 13:51:28

Normalmente los componentes tienen la propiedad align que permite ajustarse al tamaño de la forma, incluso con los cambios de tamaño. Seguramente cuando dices
Cita:

hay alguna forma de que delphi reacomode todo automaticamente a esa resolucion? o lo tengo que hacer a mano? como lo ajusto a mano?
supongo que te refieres a algunos componentes como TButton o TEdit que carecen de esa propiedad. En los TEdit puedes usar "Anchors" para que se autoreajuste al tamaño cuando se realizan cambios. En los TButton tendrás que usar el evento OnResize y ajustar su tamaño/posición a mano.

pablopessoa 19-09-2008 13:56:30

lo voy a probar, muchas gracias!!

dec 19-09-2008 14:14:21

Hola,

Cita:

Empezado por DarkMan
En los TEdit puedes usar "Anchors" para que se autoreajuste al tamaño cuando se realizan cambios. En los TButton tendrás que usar el evento OnResize y ajustar su tamaño/posición a mano.

De hecho "Anchors" se implementa ya en "TControl", y, cualquier componente derivado de este podría publicar dicha propiedad: los "TButtons" también lo hacen, pero, igual puede decirse en general que lo hacen todos los componentes visuales. ;)

pablopessoa 19-09-2008 15:33:50

hola, gracias por responderme tan rapido
estoy probando las cosas que me dijero pero no me funciona bien o yo lo estoy haciendo mal
el tamaño de mi boton por ejemplo es width =158 entonces calcule que lo tengo que reducir un 70 % (lo multiuplico por 0.7) pero me lo reduce muchisimo, me deja un cuadradito nada mas.
te muestro el codigo con el que lo hago

Código Delphi [-]
procedure TForm1.FormActivate(Sender: TObject);
var
x,y,I:integer;
begin
      x:=screen.Width;
      y:=screen.Height;
      if ((x<1024)and (y<768)) then
      begin
          form1.Width:= round (form1.Width *0.8);
          form1.Height:= round (form1.Height *0.8);

          for I := 0 to form1.ComponentCount - 1 do
          begin
              if (form1.Components[i] is TButton) then
                begin
                   tbutton(form1.Components[i]).Width:= Round (tbutton(form1.Components[i]).Width* 0.9);
                   tbutton(form1.Components[i]).Width:= Round (tbutton(form1.Components[i]).Height* 0.9);
                end;

(perdon por el post largo)

pablopessoa 19-09-2008 15:34:41

perdon olvide decir que esta en 1155 x 864 y lo quiero pasar a 800x600

dec 19-09-2008 15:37:23

1 Archivos Adjunto(s)
Hola,

Como norma general, no debes necesitar sino usar las propiedades "Align" y "Anchors" de los componentes. Sobre todo esta última te permite especificar cómo ha de situarse y adaptarse un determinado control en el formulario: independientemente del tamaño de dicho formulario, al menos hasta cierto punto: si un formulario es demasiado pequeño es evidente que no cabrán los controles, los pongas como los pongas. Pero, ya digo, en general, con las propiedades referidas sería suficiente para adaptar tus formularios y sus controles a distintos tamaños del formulario. Estúdialas y verás que no necesitas hacer cálculos más o menos peregrinos para conseguir lo que quieres. O mucho me equivoco.

Edito: Te adjunto un sencillo ejemplo a ver si se aproxima a lo que necesitas. Fíjate que no se usa código para posicionar los componentes, sino sólo sus propiedades "Anchors".

pablopessoa 19-09-2008 17:07:11

disculpa que este tan molesto... pero no la pego con esas propiedades... no logro que me queden bien...
probe este codigo que busque en internet en el oncreate del form

Height := Height * Screen.Height div alto;
Width := Width * Screen.Width div ancho;
ScaleBy(Screen.Width, ancho);

y si bien acomoda el formulario y el tamaño de las componentes y las letras... no acomoda la posicion de los componentes...

la verdad es un tema que esta volviendo loco...

dec 19-09-2008 17:32:38

Hola,

Pues te conviene hacer pruebas con esas propiedades, antes, digo, de buscarle tres pies al gato. Si no te apañan al final, igual entonces es menester otro tipo de solución. ¿Viste el ejemplo que adjunté en mi anterior mensaje? Los componentes y su tamaño se adaptan a la pantalla... ¿no? Por otro lado, considero más sencillo desarrollar "a lo pequeño" y no "a lo grande". Porque lo pequeño cabe en lo grande, pero, lo grande acaso no quepa en lo pequeño, o no como tú esperarías. No sé. Si tratas de concretar algo más igual puede ayudársete un poco mejor. Para empezar, ¿podrías adjuntar algún proyecto que nos sirva de punto de partida?

pablopessoa 19-09-2008 18:48:22

si creo que subiendo un ejemplo se va a ver mas claro.
ahi adjunte el ejemplo con el que estoy probando , la idea es que yo loestoy haciendo con una resolucion de 1152x864 y tiene que acomodarse para verse en 800x600.
te agradezco muchisimo la ayuda y la molestia

egostar 19-09-2008 18:52:53

Hola

Una pregunta antes de ver tu ejemplo, has intentado ver la forma desde una resolución 800x600, digo, no estaría de mas ver si con esa resolución se puede contener todos tus componentes y se ven apropiadamente.

Digo, solo es una idea antes de quebrarse la cabeza con algo que no fuese posible y/o visualmente adecuado.

Salud OS

pablopessoa 19-09-2008 19:39:04

si te entiendo, pero ya me fije, lo que mande es un ejemplo, la aplicacion real tiene un formulario con muchas cosas que no puedo hacer entrar en 800x600 ni apretando todas las componentes jajaja por eso la idea era que se adapten a la resolucion de pantalla

José Luis Garcí 19-09-2008 20:30:36

Prueba con algunos componentes , según sea tu versión de Delphi. Personalmente he probado algunos que funcionan bien , te dejo el enlace y tu puedes comprobarlo.

TFormResizer v.2.0

Espero te funcione.

pablopessoa 19-09-2008 23:11:07

la verdad les agradezco la ayuda y la preocupacion.
hace rato estoy probando con la componente esa.. pero lamentablemente no me nada, la instale, le setee las opciones, en fin, segui el txt que trae al pie de la letra.. pero hasta ahora obtuve mejores resultados con el ScaleBy y con los anchors... solo que no le pego la combinacion ... sobre todo con un tpanel que esta seteado "aling=Altop", en ese caso todo lo que tengo adentro del panel no lo puedo modificar....
ya me esta haciendo sentir frustrado....

MAXIUM 19-09-2008 23:24:52

Yo tengo problemas cuando la pantalla no es 4:3 (widescreen)

FGarcia 20-09-2008 01:21:28

Je y ya todas seran de 16:9!!

Yo tengo mi monitor de 22" con resolucion de 1680 x 1050.
¡¡¡¡Lo que quieras poner en un formulario se ve fantastico!!!! sin embargo es cierto en las oficinas, en la industria y en general aun se encuentra las resoluciones de 800 x 600, por lo tanto, yo lo que hago es crear un form con medidas de 750 x 550 y ahi colocar mis componentes, en modo normal (no maximizado) al final si tus componentes no aparecen todos en tu pantalla el form tiene las barras de desplazamiento para que avanze el usuario y si aun asi no caben entonces replanteate el form y tal vez un form auxiliar. Por cierto ¿haz visto que algunas aplicaciones "comerciales" te piden dentro de los requerimientos de la misma una resolucion minima?
"Se recomienda una resolucion de pantalla de 1024 x 768"

Saludos y buen fin de semana

MAXIUM 20-09-2008 03:26:01

Así es, dice se RECOMIENDA no OBLIGA. Muchos usuarios tienen problemas a la vista, más que nada por los textos, por ende usan resoluciones bajas como lo es 800x600.

Ahora, por lo menos en mi pais, la tendencia es a usar notebook y monitores LCD, los cuales la mayoría se comercializa en formato Widescreen. Si restringo mi software tambien lo hago con los clientes y ventas.

Esto lo coloco en el evento onCreate del Formulario principal con las dimensiones 800x600 en tiempo de diseño.

Código Delphi [-]
  // Redimensiona la aplicación en base a la resolución de la pantalla.
     If Screen.Width = 1024 then ScaleBy(740, 572);
     If Screen.Width =  800 then ScaleBy(578, 572);

pablopessoa 20-09-2008 14:01:19

gente creo que pude dar con una solucion aceptable. Hasta ahora con ScaledBy el formulario se acoplaba bien... pero no se acomodaban bien algunas componentes. por lo que opte por poner las componentes dentro de un panel y el panel ocupando todo el formulario entonces en el OnCreate del Form no solo le aplico ScaledBy el form si no tambien al panel, de ese modo hasta ahora se ajusta todo muy bien, le acomodo las Font cambiando el PixelPerInch y listo. Cualquier novedad los mantengo al tanto por que luego voy a probar que pasa con monitores widescreen (supngo queigual quedara cuadrado.. no creo que lo estire a lo ancho).
Saludos y muchas gracias!!!


La franja horaria es GMT +2. Ahora son las 04:51:14.

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