 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Marcos Invitado
|
Publicado: Vie 23 Ago, 2002 4:28 pm Asunto: Ajustar resolución |
|
|
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 |
|
 |
Enrique Master


Registrado: 13 Ago 2002Mensajes: 261Ubicación: La Vila Joiosa (Alacant)
|
Publicado: Sab 24 Ago, 2002 12:43 am Asunto: |
|
|
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 |
|
 |
LIGERO Invitado
|
Publicado: Jue 12 Sep, 2002 5:55 pm Asunto: Re: Ajustar resolución |
|
|
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 |
|
 |
LIGERO Cmdr


Registrado: 13 May 2004Mensajes: 134Ubicación: Granada
|
Publicado: Mie 03 Nov, 2004 7:13 pm Asunto: Nadie sabe hacer esto? |
|
|
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 |
|
 |
rayder Master

Registrado: 03 Mar 2004Mensajes: 207
|
Publicado: Vie 05 Nov, 2004 8:53 am Asunto: |
|
|
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 |
|
 |
LIGERO Cmdr


Registrado: 13 May 2004Mensajes: 134Ubicación: Granada
|
Publicado: Vie 05 Nov, 2004 11:24 am Asunto: Reescalado de formulario |
|
|
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 |
|
 |
Touchsoftwares Master


Registrado: 16 Dic 2002Mensajes: 869Ubicación: MEXICO Playa del Carmen
|
Publicado: Vie 05 Nov, 2004 12:15 pm Asunto: |
|
|
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 |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
|
| Volver arriba |
|
 |
TObject Cdt

Registrado: 28 Jun 2004Mensajes: 17
|
Publicado: Vie 05 Nov, 2004 3:54 pm Asunto: Re: Ajustar resolución |
|
|
| 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 |
|
 |
|
|
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
|
© 2002–2026 Club Builder · Funciona con phpBB.
|