Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Diseño de pantalla (https://www.clubdelphi.com/foros/showthread.php?t=91363)

Angel.Matilla 16-01-2017 19:15:14

Diseño de pantalla
 
A ver quien me puede echar una mano, que yo me estoy volviedo loco. Tengo una aplicación hecha en BCB 6 con unas 50 ó 60 pantallas. El problema es que no las 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?

olbeup 17-01-2017 08:24:50

Hola Angel.Matilla,

Eso es posible que el tipo de letra que usas en el programa, el cliente no la tenga, también puede ser que el cliente tenga una configuración de tipo de letra mas grande.

Haz un prueba, sólo crea un formulario con algo dentro y comprueba si el tipo de letra que usas lo tiene el cliente.


p.d.: En lo sucesivo, evita poner datos reales de tus clientes y menos la dirección de donde reside o la cuenta corriente del banco, me parece muy fuerte.

p.d2.: Haber si algún Administrador puede ocultar esos datos.

Un saludo.

Angel.Matilla 17-01-2017 09:21:53

Cita:

Empezado por olbeup (Mensaje 512388)
Hola Angel.Matilla,

Eso es posible que el tipo de letra que usas en el programa, el cliente no la tenga, también puede ser que el cliente tenga una configuración de tipo de letra mas grande.

¿Podría tener algo que ver con las definiciones de pantalla que tengan hechas en la máquina? Porque el tipo de letra Arial es uno de los que se instala por defecto con Windows.
Cita:

Empezado por olbeup (Mensaje 512388)
Haz un prueba, sólo crea un formulario con algo dentro y comprueba si el tipo de letra que usas lo tiene el cliente.

Haré la prueba que me sugieres. El problema principal que tengo es que el cleinte está a 150 Km. de donde estoy yo.

Cita:

Empezado por olbeup (Mensaje 512388)
p.d.: En lo sucesivo, evita poner datos reales de tus clientes y menos la dirección de donde reside o la cuenta corriente del banco, me parece muy fuerte.

p.d2.: Haber si algún Administrador puede ocultar esos datos.

Un saludo.

Tienes toda la razón en este punto. Y es un tema con el que siempre tengo mucho cuidado y procuro no poner datos personales reales; no sé que me pasó esta vez.

dec 17-01-2017 10:57:52

Hola,

¿No será una mala idea, generalmente, trastear con el tamaño de la fuente tal como lo haces? Quiero decir que tú tratas de "forzar" una determinada fuente, pero, otra posible configuración en el cliente puede hacer que lo que vale en tu sistema no sirva en otro. Yo eliminaría el código que "fuerza" el uso de la fuente completamente. Si lo que quieres es que la letra sea un poco más grande, incrementa su tamaño en el mismo formulario: o bien deja todo "por defecto" y que el cliente decida, a nivel de sistema, si necesita una letra más grande.

P.D. Es mi opinión, ¿eh? Por si sirve de algo... :)

Angel.Matilla 17-01-2017 11:10:44

Cita:

Empezado por dec (Mensaje 512391)
Hola,

¿No será una mala idea, generalmente, trastear con el tamaño de la fuente tal como lo haces? Quiero decir que tú tratas de "forzar" una determinada fuente, pero, otra posible configuración en el cliente puede hacer que lo que vale en tu sistema no sirva en otro. Yo eliminaría el código que "fuerza" el uso de la fuente completamente. Si lo que quieres es que la letra sea un poco más grande, incrementa su tamaño en el mismo formulario: o bien deja todo "por defecto" y que el cliente decida, a nivel de sistema, si necesita una letra más grande.

P.D. Es mi opinión, ¿eh? Por si sirve de algo... :)

Se agradece cualquier opinión. Uno de los problemas es que el formulario se puede agrandar ya poco si no quiero que sea algo desmesurado. Por otra parte el tipo de letra está puesto así a petición del cliente. La sugerencia de que sea el usuario, a nivel de sistema, el que decida (como haríamos cualquiera de nosotros) es peligrosa; como casi siempre el usuario no es un experto en ordenadores. Digamos que usa más bien una máquina de escribir sofisticada.

ElKurgan 17-01-2017 11:13:40

¿Qué versión de Windows tiene el cliente?

En mi trabajo ha pasado que en ordenadores donde hay gente mayor y pone tamaños más grandes de letra, pasa algo parecido.

Sobre todo donde hay Windows 7 o superior; En la opción de pantalla de "Facilitar lectura de elementos de pantalla" (es decir, tamaño de fuente, lupa, etc), si no escoge la opción Pequeño (predeterminado), los botones y otros controles desaparecen de la pantalla, o quedan tapados por paneles más grandes, o directamente se ve la fuente gigantesca.

No sé si irán los tiros por ahí

Un saludo

Angel.Matilla 17-01-2017 11:21:46

Cita:

Empezado por ElKurgan (Mensaje 512393)
¿Qué versión de Windows tiene el cliente?

En mi trabajo ha pasado que en ordenadores donde hay gente mayor y pone tamaños más grandes de letra, pasa algo parecido.

Sobre todo donde hay Windows 7 o superior; En la opción de pantalla de "Facilitar lectura de elementos de pantalla" (es decir, tamaño de fuente, lupa, etc), si no escoge la opción Pequeño (predeterminado), los botones y otros controles desaparecen de la pantalla, o quedan tapados por paneles más grandes, o directamente se ve la fuente gigantesca.

No sé si irán los tiros por ahí

Un saludo

Windows 10, y sí: puede que la razón sea la que apuntas, pero recuerda que obligo al formulario a una fuente y tamaño concretos. No me gusta, pero creo que es la mejhor solución.

Casimiro Notevi 17-01-2017 11:48:02

Cita:

Empezado por Angel.Matilla (Mensaje 512394)
... obligo al formulario a una fuente y tamaño concretos. No me gusta, pero creo que es la mejhor solución.

Una de las principales normas "autoimpuestas" por los programadores es: "Nunca cambiar las preferencias del usuario en cuanto a gustos de letras, tamaños, colores, fondo de pantalla, etc."

Angel.Matilla 17-01-2017 12:10:04

Cita:

Empezado por Casimiro Notevi (Mensaje 512395)
Una de las principales normas "autoimpuestas" por los programadores es: "Nunca cambiar las preferencias del usuario en cuanto a gustos de letras, tamaños, colores, fondo de pantalla, etc."

Lo sé y lo cumplo siempre salvo en este caso por petición expresa del cliente.

Casimiro Notevi 17-01-2017 15:16:03

Pero no vas a modificar un programa para un cliente determinado. Y si el cliente quiere letras más grandes, que las ponga él en su windows, ¿no?

Angel.Matilla 17-01-2017 17:20:06

Cita:

Empezado por Casimiro Notevi (Mensaje 512404)
Pero no vas a modificar un programa para un cliente determinado. Y si el cliente quiere letras más grandes, que las ponga él en su windows, ¿no?

Estamos de acuerdo. Dicho todo esto sobre los gustos del cliente y sus exigencias, ¿alguien me puede explicar por qué con idénticas definiciones de entorno (comprobadas) se ven muestran distintos resultados en las pantallas? Porque sigo sin entender que con las mismas definiciones de tipo y tamaño de fuente no se vea los mismo.

mamcx 18-01-2017 00:13:08

No es debido a que cambiaron el DPI?

https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx
http://www.techrepublic.com/blog/win...g-dpi-scaling/

AgustinOrtu 18-01-2017 02:07:52

Cita:

Empezado por mamcx (Mensaje 512420)

Iba a comentar lo mismo... y de hecho, si no recuerdo mal, en la vesion XE8 la Vcl se volvio "dpi-aware" pero Embarcadero ha tenido bastantes problemas con respecto a DPI

Una busqueda rapida lo muestra: link

Angel.Matilla 18-01-2017 09:46:00

Cita:

Empezado por mamcx (Mensaje 512420)
No es debido a que cambiaron el DPI?

Gracias a los dos por vuestras respuestas. Como intuía que parte del problema podía venir por ese lado hice que el programa al arrancar me mostrara la condiguración de la pantyalla (Screen->PixelsPerInch); tanto en mi máquina como en la del cliente es la misma: 96.

Leyendo los enlaces que me habéis pasado una de las posibilidades tiene que ver con la definición de la propia pantalla, que eso si que no se me ha ocurrido comprobar; yo tengo definido 1366x768 pero no se me ha ocurrido mirar la del cliente. No obstante, si este fuera el problema se deformarían todos los elementos del formulario y no sólo los TListView que había en la parte baja.

Esta primera pantalla es como lo veo yo en mi máquina


Y esta otra como lo ve el cliente


Y lo que me tiene despistado que sean sólo los ListView los que modifican de forma apreciable su aspecto. Es evidente que algo hay en las propiedades de la pantalla porque aun siendo el mismo tipo de letra Arial 10 (reitero que por exigencia del cliente), se ve claramente que los tamaños son diferentes pero eso o afecta a todo el formulario o nada pero no solamente a una parte del mismo.

Casimiro Notevi 18-01-2017 10:27:04

¿Seguro que el cliente no tiene seleccionada "fuentes grandes"?

Angel.Matilla 18-01-2017 10:53:59

Buena pregunta. Lo comprobaré.

WHILENOTEOF 18-01-2017 12:22:55

Yo tuve una vez un problema parecido con un cliente, y si que era porque tenía marcado visualizar con 125 % en el panel de control (no recuerdo desde donde se cambiaba). Estuve probando varias cosas, entre ellas esto en la inicialización de la aplicación. Ten en cuenta que no estoy seguro que esto lo solucionara, porque si bien no volví a recibir quejas no confirmé si funcionaba o no.

Código:

if (Win32MajorVersion >= 6) then
  begin
    SetProcessDPIAware;
  end;
  Application.Initialize;

  ....

  Application.Run;


kurono 21-01-2017 00:05:08

y no sera la resolucion de la pantalla

Angel.Matilla 28-01-2017 09:26:50

Cita:

Empezado por WHILENOTEOF (Mensaje 512432)
Yo tuve una vez un problema parecido con un cliente, y si que era porque tenía marcado visualizar con 125 % en el panel de control (no recuerdo desde donde se cambiaba). Estuve probando varias cosas, entre ellas esto en la inicialización de la aplicación. Ten en cuenta que no estoy seguro que esto lo solucionara, porque si bien no volví a recibir quejas no confirmé si funcionaba o no.

Efectivamente este es el probelma: tiene activadas las fuentes grandes. Muchas gracias.

Casimiro Notevi 28-01-2017 13:26:18

Cita:

Empezado por Angel.Matilla (Mensaje 512690)
Efectivamente este es el probelma: tiene activadas las fuentes grandes. Muchas gracias.

Es lo primero que se te dijo, quizás no lo entendiste.
Cita:

Empezado por olbeup (Mensaje 512388)
Eso es posible que el tipo de letra que usas en el programa, el cliente no la tenga, también puede ser que el cliente tenga una configuración de tipo de letra mas grande.

Y por eso volví a insistir más tarde:
Cita:

Empezado por Casimiro Notevi (Mensaje 512430)
¿Seguro que el cliente no tiene seleccionada "fuentes grandes"?

Estas cosas pasan :)


La franja horaria es GMT +2. Ahora son las 20:48:40.

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