Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Ajustar resolución

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Ajustar resolución Responder citando

Hola a todos!!!
Tengo una pequeña duda, ¿Cómo puedo ajustar mi apliacación a la resolución de la computadora? Me refiero a que si uno crea una aplicación en una resolucón de 1024 por 768 al momento de ejecutarla en una PC con resolución menor, la aplicación aparece de un tamaño enrome, y si lo hacemos alreves de una resolucion menor a una mayor la aplicación aparece muy pequeña. Entoconces ¿como puedo ajustar la aplicación para que se adecue a la resolución? y también cuando se crea una aplicación, por ejemplo, si se tienen los controles centrados en la pantalla, ¿como le hago para que cuando se maximice la ventana, también se ajuste la posición de los controles?
Volver arriba
Mensaje    Asunto: Responder citando

Hola, para conocer la resolución puedes usar el objeto Screen, con las propiedades PixelsPerInch, Height y Width supongo que podrás adaptar tu programa a la resolución del usuario. No puedo explicarte más porque no las he usado.

La segunda pregunta es más compleja. Depende de los controles que estés usando y del número de ellos. Si sólo tuvieras un Memo (p.ej.) te bastaría con poner su propiedad Align a alClient. Pero si tienes más de un objeto y no quieres que cambie su tamaño tendrás que escribir código en el evento OnResize del Form, poniendo cosas como
Código:
Button1->Left = (Form1->ClientWidth - Button1->Width) / 2;

para que te deje centrado horizontalmente el botón.

Suerte.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Re: Ajustar resolución Responder citando

Yo tambien tengo este problema. He probado con Scaled, PixelsPerInch, etc pero no he conseguido nada.

Te rogaría que si lo consigues me envíes un email a webmaster@laragranada.com

Muchas Gracias
Volver arriba
Mensaje    Asunto: Nadie sabe hacer esto? Responder citando

Esta consulta se formuló hace tiempo, pero no se ha conseguido resolver.

A nadie se le ha planteado este problema?
_________________
La pintura es la expresión de la mente.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Hola.

Lo que yo hago es ajustar los controles en anchura y altura por código y despues colocarlos en el formulario. Posteriormente, en el evento OnResize coloco el código necesario para el control de la posición de los controles en pantalla.

Algo que se puede hacer es colocar el código que lo controla todo en un función y despues hacer las llamadas pertinentes.
Un ejemplo rápido.

Código para el Unit1.cpp

Código:

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormShow(TObject *Sender)
{
   Button1->Height = 50;
   Button1->Width = 200;
   Button1->Top = (Form1->Height - Button1->Height)-27;
   Button1->Left = (Form1->Width - Button1->Width)-8;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Application->Terminate();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormResize(TObject *Sender)
{
   Button1->Height = 50;
   Button1->Width = 200;
   Button1->Top = (Form1->Height - Button1->Height)-27;
   Button1->Left = (Form1->Width - Button1->Width)-8;
}
//---------------------------------------------------------------------------


Esto ajusta el Button1 a la esquina inferior derecha del monitor, con una anchura y altura definida por mi.

Un saludo
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Reescalado de formulario Responder citando

Todo esto está muy bien, pero cuando en vez de ser un solo control, tenemos 50, ¿esta operación hay que hacerla con los 50 controles?.

No lo veo lógico, pero a lo mejor es eso.

¿Alguien lo sabe?
_________________
La pintura es la expresión de la mente.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Mi humilde opinion, dependiento la clase de aplicacion que desarrolles es el enfoque que le des a este "problema", si tu aplicacion es generica , para diversos perfiles de usuarios. aplica este dilema , como por ejemplo: Un editor de texto editor de imagenes, chat, utileria , antivirus etc etc.

Pero si tu aplicacion es comercial (admnistrativa, contable, ventas , albaranes etc etc) defines una resolucion minima y sugieres al usuario que la use, en dado caso de ser mayor la del usuario, puedes "jugar" con algunos controles que SI conviene redimensionar, como por ejemplo un dbgrid, un list box, un memo.

Pero no se compliquen pensando en que TODO cambie proporcionalmente.

Espero comentarios.
_________________
Ing. Gabriel Góngora Navarrete
TouchSoftwares Inc

http://www.touchsoftwares.com
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

Añadiendo un poco a lo que te sugiere Gabriel, yo te aconsejaría no sólo que inidcaras la resolución mejor para trabajar: cais te diría que obligaría a la aplicación a emplear esa resolución. En Cambia la resolucion del monitor tienes el código para ello.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Re: Ajustar resolución Responder citando

Cita:
TControl::Anchors
Specifies how the control is anchored to its parent.

__property TAnchors Anchors = {read=FAnchors, write=SetAnchors, stored=IsAnchorsStored, default=3};

Description

Use Anchors to ensure that a control maintains its current position relative to an edge of its parent, even if the parent is resized. When its parent is resized, the control holds its position relative to the edges to which it is anchored.

If a control is anchored to opposite edges of its parent, the control stretches when its parent is resized. For example, if a control has its Anchors property set to [akLeft,akRight], the control stretches when the width of its parent changes.

Anchors is enforced only when the parent is resized. Thus, for example, if a control is anchored to opposite edges of a form at design time and the form is created in a maximized state, the control is not stretched because the form is not resized after the control is created.

Note: If a control should maintain contact with three edges of its parent (hugging one side of the parent and stretching the length of that side), use the Align property instead. Unlike Anchors, Align allows controls to adjust to changes in the size of other aligned sibling controls as well as changes to the parent’s size.


Como podras observar puedes "anclar" el control en la posición que desees dentro del contenedor correspondiente a dicho control. El uso del Anchors no realiza un "resize" proporcional en cuanto al tamaño de la fuente ... pero si lo realiza para el tamaño del control.

Ejemplo: por default el anchors trae activado:
Cita:

akLeft = true
akTop = true
alRight = false
akBottom = false

Esto significa que la redimension del contenedor no afecta la posicion ni el tamaño del control.

si quieres redimensionar la altura del control únicamente ... debes especificar:

akLeft = true
akTop = true
alRight = false
akBottom = true

Puedes realizar combinaciones de dichos valores y seguro obtendras resultados interesantes.


Espero que te haya servido de ayuda

Por cierto ..... debes indicar en la Propiedad TForm::WindowState = wsMaximized para tu form principal ... De esa manera tu aplicación toma la resolucion de el monitor...
Volver arriba
Ver perfil de usuario Enviar mensaje privado Yahoo Messenger MSN Messenger
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.