 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Lun 16 Ene, 2017 7:13 pm Asunto: Diseño de pantalla |
|
|
A ver quien me puede echar una mano, que yo me estoy volviedo loco. Tengo una aplicación con unas 50 ó 60 pantallas. El problema es que no als veo igual yo a como las ve el cliente. Os subo un par de ejemplos:
Pantalla 1ª
Esto es como lo veo yo.
Esto es como lo ve el cliente.
Pantalla 2ª
Esto es como lo veo yo.
Y esto como lo ve el cliente.
Si os fijáis en la primera pantalla los dos ListView que hay al pie de la misma no tienen las mismas dimensiones y en la segunda pantalla en lo que ve el cliente se amontonan los botones.
Al arrancar la aplicación fuerzo el tipo y tamaño de letra así:
| Código: | AnsiString cAux, NombreUser, FontName, cMensaje, cPerFac, cRefInt, cReportTitle;
int ColorFondo, ColorPapel, ColorTinta, FontSize, LineaAct, nForFac, nIcono, nTipoEjecucion, nTipoEmision, nTotPag, PrinterDefault, ScrollWidth;
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
[...]
try
{
FontName = "Arial";
FontSize = 10;
ScrollWidth = 17;
rRegistro->RootKey = HKEY_CURRENT_USER;
if (rRegistro->OpenKeyReadOnly("Control Panel\\Desktop\\WindowMetrics"))
ScrollWidth = MulDiv(-StrToFloat(rRegistro->ReadString("ScrollWidth")), Screen->PixelsPerInch, 1440);
Application->Initialize();
Application->Title = cVersion;
PrinterDefault = Printer()->PrinterIndex;
Application->CreateForm(__classid(TfPersona), &fPersona);
Application->Run();
}
catch(Exception &exception)
{
Application->ShowException(&exception);
}
catch(...)
{
try
{
throw Exception("");
}
catch(Exception &exception)
{
Application->ShowException(&exception);
}
}
return 0;
} |
De forma que al iniciarse cualquiera de los módulos de la aplicación se ajustan todos los tipos de letra a esa definción:
| Código: | extern void ColorForm(TForm *Form);
//---------------------------------------------------------------------------
__fastcall TfRefact::TfRefact(TComponent* Owner)
: TForm(Owner)
{
ColorForm(this);
}
//--------------------------------------------------------------------------- |
Y en esa función ColorForm:
| Código: | void ColorForm(TForm *Form)
{
TComponent *Source;
Form->Icon = Application->Icon;
Form->Caption = Application->Title;
Form->Font->Name = FontName;
Form->Font->Size = FontSize;
[...]
}
//--------------------------------------------------------------------------- |
¿Cómo puedo resolver ese problema? _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Jue 19 Ene, 2017 2:59 pm Asunto: |
|
|
Sin verlo completo es complicado.. pero fíjate que tengas la propiedad AutoScroll de los Forms en false (ya que afecta al escalado), y revisa que no hayas tocado la propiedad Anchors de esos botones. O también si creas o posicionas algunos componentes desde código tienes que revisarlo pensando en el escalado.
Teniendo en cuenta esto, el escalado básico incluso con versiones viejas de C++Builder se hace correctamente, aunque es cierto que hay algunos componentes que no se diseñaron pensando en el escalado y no lo hacen bien, pero los básicos del sistema si suelen funcionar.
A ultimo remedio puedes poner la propiedad Scaled a false, aunque claro con esto anularías el escalado que aplica el cliente en su sistema, y con la resolución tan alta que tienen muchos monitores actualmente sería un fastidio para el cliente. |
|
| 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.
|