Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-11-2009
Willer Willer is offline
Registrado
 
Registrado: nov 2009
Posts: 7
Poder: 0
Willer Va por buen camino
Question Resolucion de pantalla

Hola, como estan todos.

Soy principiante en delphi y me gustaria que me ayuden con un problema que tengo con la resolucion de pantalla.

El problema es el siguiente:
He creado una aplicacion en mi laptop donde tengo una resolucion de 1280x798, pero cuando ejecuto la aplicacion en otra pc la cual tiene una de 1024x768 y la aplicacion se muestra muy exajerada. Me gustaria saber si hay alguna forma con el cual yo puedo obtener la resolucion de la targeta de video. Le agradesco su ayuda. gracias
Responder Con Cita
  #2  
Antiguo 18-11-2009
Avatar de radenf
radenf radenf is offline
Miembro
 
Registrado: oct 2007
Ubicación: Viña del Mar,Chile
Posts: 608
Poder: 17
radenf Va por buen camino
Estimado Willer :

El problema que describes es un problema de todos.
Nos gustaría que nuestras aplicaciones se adaptaran a las innumerables resoluciones y tamaños de pantallas, sin deformarse y que lucieran igual como las vemos en el monitor en que programamos.
Yo desarrollé un programa que utiliza múltiples DBEdits, botones, paneles y dbgrids y para evitar que se deformara o alguna parte del programa no se mostrara, lo hize en versiones desktop de 1280x1024 y laptop de 1280x800. Por supuesto no sirven en la resolución de monitor que señalas y se ven ridículos en monitores widescreen.
Obtener la resolución de la tarjeta de video no sé si solucionará el problema, ya que deberías en base a esa información modificar la resolución de vídeo del Pc donde ejecutes tu programa, cosa que no siempre es posible e igual se deformaría tu aplicación.
Una opción es hacer programas con tamaños que no puedan modificarse, definiendo valores en las propiedades constraints del form principal, tan pequeños que quepan en cualquier monitor y a la vez lo suficientemente grandes para que contengan los elementos que quieras mostrar.
Otra opción es desarrollar tu programa en base a un panel contenedor con propiedad align alnone, que contenga elementos con esta propiedad definida alclient, que hará que se expandan para ocupar toda la pantalla, al encontrarse maximizados, debiendo anclar con la propiedad anchor,ya sea a la derecha, izquierda, arriba o abajo y dimensionar con la propiedad size, los botones , edits, etc.

Salu2

Última edición por radenf fecha: 18-11-2009 a las 19:24:19.
Responder Con Cita
  #3  
Antiguo 18-11-2009
fidel fidel is offline
Miembro
 
Registrado: mar 2005
Posts: 381
Poder: 20
fidel Va por buen camino
Con esto puedes saber la resolución y cambiarla, adaptalo a tus necesidades

En este código se mira si es 800, 660 en cuyo caso se sube a 1024, 768 y después al terminar se deja como estaba

No se lo que ocurre si la tarjeta no soporta la resolución nueva, prueba tu mismo.

Código Delphi [-]
    { Public declarations }
  end;

var
  FMenu: TFMenu;
  W, H : integer;  //para coger resolución
  spCambioResolucion: string;  //para cambiar resolución

implementation

Uses UDM;

{$R *.dfm}

function NuevaRes(XRes, YRes: DWord): Integer;
var
  lpDevMode : TDeviceMode;
begin
  EnumDisplaySettings (nil, 0, lpDevMode);
  lpDevMode.dmFields := DM_PELSWIDTH or DM_PELSHEIGHT;
  lpDevMode.dmPelsWidth := XRes;
  lpDevMode.dmPelsHeight := YRes;
  NuevaRes := ChangeDisplaySettings (lpDevMode, 0)
end;


En OnCreate para cambiarla
Código Delphi [-]
procedure TFMenu.FormCreate(Sender: TObject);
begin
  //coger resolución de pantalla
  W := Screen.Width;
  H := Screen.Height;
  spCambioResolucion := 'No';
  //si es 800 por 600 se cambia a 1024 por 768 y se anota el cambio
  if (W = 800) and (H = 600) then
    begin
      NuevaRes(1024, 768);
      spCambioResolucion := 'Si';
    end;
end;

En OnClose para dejarlo como estaba
Código Delphi [-]
procedure TFMenu.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  //si se cambio la resolución que había de 800 por 600 volver a poner 800 por 600
  if spCambioResolucion = 'Si' then
    NuevaRes(800, 600);
end;
Responder Con Cita
  #4  
Antiguo 18-11-2009
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
¿Quien somos nosotros para decirle al usuario cómo ha de ver las cosas?

Esa es mi modesta opinión. Eso sin entrar en detalles de minúsvalías físicas.

En resumen, lo ya dicho, hacer las pantallas a un mínimo de tamaño que juzguemos oportuno según nuestros clientes, (hoy día uso 800x600 o 1024x768) con aligns, anchors y constraints. Una vez se maximiza, el usuario verá otra cosa.

También podemos dar la posibilidad al usuario de ocultar o mostrar más paneles (usando dock/frames). Si usa una pantalla ancha puede añadir más paneles verticales. El programa recuerda los paneles adosados y los muestra siempre al crear la ventana.
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #5  
Antiguo 18-11-2009
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Lepe Ver Mensaje
¿Quien somos nosotros para decirle al usuario cómo ha de ver las cosas?[..]
Estoy de acuerdo con eso, si instalo un programa que me modifique la resolución de mi pantalla... lo desinstalo al momento.
Responder Con Cita
  #6  
Antiguo 20-11-2009
fidel fidel is offline
Miembro
 
Registrado: mar 2005
Posts: 381
Poder: 20
fidel Va por buen camino
>>>>¿Quien somos nosotros para decirle al usuario cómo ha de ver las cosas?

Cuando no haces un programa a medida, siempre es el programador el que decide todo: color, aspecto, botones, etc, etc, etc.

Los usuarios estamos siempre supeditados a lo que nos hagan, y si no intenta por ejemplo comprar hoy en día un monitor o portatil que no tenga la pantalla panorámica, verás que dificil es, y dentro de poco será imposible.

Además puede haber casos particulares en que viene bien cambiarla, por ejemplo yo uso dos o tres aplicaciones personales en el lápiz que a veces pincho en ordenadores con resolución 800 x 600, lo detectan cambian la resolución a mi gusto, y lo vuelvo a dejar como estaba.
Responder Con Cita
  #7  
Antiguo 20-11-2009
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Si te quieres ahorrar el trabajo, mira a http://www.devexpress.com/Products/VCL/ExLayoutControl/. Es lo mejor que conozco para estos menesteres.

De lo contrario, ahi codigo por ahi que re-dimensiona los controles de acuerdo a la resolucion. En las versiones nuevas de delphi (Delphi 2007+) esta el layout manager que es la version del pobre de lo de DevExpress, pero nada parecido en la facilidad de uso.
__________________
El malabarista.
Responder Con Cita
  #8  
Antiguo 30-04-2010
hackcgm hackcgm is offline
Registrado
 
Registrado: ene 2010
Posts: 9
Poder: 0
hackcgm Va por buen camino
Cita:
Empezado por radenf Ver Mensaje
Estimado Willer :

El problema que describes es un problema de todos.
Nos gustaría que nuestras aplicaciones se adaptaran a las innumerables resoluciones y tamaños de pantallas, sin deformarse y que lucieran igual como las vemos en el monitor en que programamos.
Yo desarrollé un programa que utiliza múltiples DBEdits, botones, paneles y dbgrids y para evitar que se deformara o alguna parte del programa no se mostrara, lo hize en versiones desktop de 1280x1024 y laptop de 1280x800. Por supuesto no sirven en la resolución de monitor que señalas y se ven ridículos en monitores widescreen.
Obtener la resolución de la tarjeta de video no sé si solucionará el problema, ya que deberías en base a esa información modificar la resolución de vídeo del Pc donde ejecutes tu programa, cosa que no siempre es posible e igual se deformaría tu aplicación.
Una opción es hacer programas con tamaños que no puedan modificarse, definiendo valores en las propiedades constraints del form principal, tan pequeños que quepan en cualquier monitor y a la vez lo suficientemente grandes para que contengan los elementos que quieras mostrar.
Otra opción es desarrollar tu programa en base a un panel contenedor con propiedad align alnone, que contenga elementos con esta propiedad definida alclient, que hará que se expandan para ocupar toda la pantalla, al encontrarse maximizados, debiendo anclar con la propiedad anchor,ya sea a la derecha, izquierda, arriba o abajo y dimensionar con la propiedad size, los botones , edits, etc.

Salu2

hola tengo un problema parecido, esq necesito obtener las coordenadas del raton para crear objetos en donde se da el click y hago esto:

x:= mouse.CursorPos.X-450;
y:=mouse.CursorPos.Y-250;

pero cuando muevo el formulario las coordenadas cambian y el objeto se crea en otro lado y no donde se dio el click, igual por eso queria q cuando se ejecuta el programa saliera maximizado, pero hay pantallas en las q el formulario no cabe y algunos objetos no se ven.
pensaba en evitar q el formulario de pueda mover, pero no se que propiedad es, espero me puedan ayudar

gracias
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
resolucion de la pantalla??? Negriz C++ Builder 3 19-05-2008 00:52:01
Resolucion de pantalla oregon Windows 1 22-03-2007 15:09:43
Resolucion de Pantalla Elias_02 Varios 2 10-05-2006 20:35:44
resolucion de pantalla rtorioa OOP 5 26-09-2005 19:18:52
resolución de la pantalla lfidanza Varios 1 03-10-2003 15:25:52


La franja horaria es GMT +2. Ahora son las 18:21:22.


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