2010-04-30 7 views
24

En estos días, cualquier aplicación de escritorio de Windows decente debe funcionar bien y se ven bien en las siguientes condiciones:¿Cómo deben lidiar los desarrolladores con tantas combinaciones de configuración de GUI?

  1. XP y Vista y Windows 7.
  2. 32 bits y 64 bits.
  3. Con y sin temas.
  4. Con y sin Aero.
  5. En 96 y 120 y quizás DPI personalizados.
  6. Uno o más monitores (pantallas).
  7. Cada sistema operativo tiene su propia fuente preferida.

¡Oh! ¿Qué puede hacer un pequeño desarrollador de aplicaciones de escritorio para Windows? :(

estoy esperando para obtener un hilo comenzó con sugerencias sobre cómo hacer frente a este dilema interfaz gráfica de usuario.

En primer lugar, estoy en Delphi 7.
a) ¿Delphi 2010 aporta nada nuevo a la mesa para ayudar con esta situación?
b) ¿Deberíamos elegir un paquete de componentes del mercado de accesorios y confiar en ellos para resolver todos estos problemas?
c) ¿Deberíamos ir con un motor de rejuvenecimiento?
d) Quizás una GUI de tipo HTML sea el camino a seguir. ¿Podemos hacer una aplicación GUI relativamente compleja con HTML que no requiera el uso de un navegador? (Prefiero mantenerlo basado en formularios)
e) ¿Deberíamos limitarnos y codificar a través de cada uno de estos escenarios y dejar de quejarse al respecto?
f) Y, finalmente, ¿cómo se supone que debemos probar todas estas condiciones?

+0

¡Pregunta difícil! No eclipse tiene un sistema perfectamente portátil? (windows, linux, mac, cada sabor) Me estoy adelantando mucho, pero parece recordar que tenía una interfaz gráfica de Java. Realmente no estoy seguro de mi respuesta, es por eso que lo hago un comentario – Shawn

Respuesta

6

Por el momento me gustaría responder a una sola pregunta:

f) utilizar las máquinas virtuales y si es posible las pruebas automatizadas(). Sé que es un gran trabajo configurar esto, pero nunca te arrepentirás.

0
  • Delphi 2010 ofrece compatibilidad nativa con Unicode.
  • Delphi 2010 trae controles de Windows Vista/Seven.
  • No existe un compilador Delphi de 64 bits por el momento.
  • Usted should'nt tiene ningún problema para manejar dpi y el recuento de monitor de preguntas con Delphi 7
+2

Delphi no es capaz de manejar diferentes fuentes del sistema y la configuración de DPI bien, utiliza diseños basados ​​en píxeles y carece de un administrador de diseño adecuado. También codifica las fuentes en los archivos DFM. – mghie

+1

Aquí es, probablemente, una solución a la pregunta de dpi: http://www.gerixsoft.com/blog/delphi/large-fonts –

0

Delphi hace que bastante fácil, pero al final te han ejecutar el software en todas las versiones de Windows y comprobación visual que todo se ve bien La prueba automatizada es excelente para probar la funcionalidad, pero los cosméticos solo se pueden controlar visualmente.

+0

Eso es parcialmente cierto: solo se puede verificar si un diseño está bien al mirarlo, pero Cuando tomó esta decisión una vez que puede usar pruebas automatizadas para verificar si el diseño actual sigue siendo el mismo. Si es diferente, se le notará y todavía puede echarle un vistazo, pero si es lo mismo, no necesita mirarlo en absoluto. –

0

Delphi 2009 trajo soporte para tematización (es una configuración de nivel de aplicación). Cuando ejecuta una aplicación Delphi 2009 o una versión superior en Vista/Windows 7, cambia los cuadros de mensaje a TdTogs de tareas, por lo que obtiene algunas mejoras de UI de forma gratuita.

Tuvimos un poco de lucha porting a Delphi 2009, y Unicode, pero eso era una 'deuda técnica' que tuvimos que pagar en algún momento.

Espero que esto ayude.

+0

Delphi agregó el soporte de temas de Windows en Delphi 7, que ha mejorado en las versiones posteriores. –

+0

Sí, a través del XPManifest, pero luego fue retirado y el D2007 tiene un sistema mucho mejor. – Mmarquee

1

Yo también soy un desarrollador de Windows (D7) modesto, mucho más interesado en resolver los problemas de usuario de mi aplicación de mercado vertical que en lidiar con M $ foibles.

Construí un componente para hacer frente a todos estos problemas, más algunos más.

Hasta donde yo sé, todas las piezas eran de dominio público, y las he acreditado siempre que sea posible.

Estas son algunas de las propiedades:

tipo TAppEnvironment = class (TComponent)

privado

{ Private declarations } 

// gestión del medio ambiente

FEnvError    : TEnvError;   // environment error code 
FEnvErrorMsg   : string;    // environment error message 
FEnvLocalComputerName : string;    // name of the client computer 
FEnvCurrentUserName : string;    // logged-on user 
FEnvCurrentUserAdmin : Boolean;   // is logged-on user Admin? 
FEnvProduct   : string;    // windows edition 
FEnvProductFlavour  : string;    // windows flavour (Home/Pro) 
FEnvBuildNumber  : string;    // windows build number 
FEnvServicePack  : string;    // windows service pack 
FEnvThemeActive  : Boolean;   // Windows Theme active 

// calc usando producto & tema

FEnvTitleHeight  : integer;   // window title height 
FEnvMenuHeight   : integer;   // window menu height 
FEnvStatusHeight  : integer;   // window status bar height 
FEnvBorderHeight  : integer;   // window border height 
FEnvMainHeight   : integer;   // main menu window height 
FEnvMainWidth   : integer;   // main menu window width 
FEnvHeightAdjust  : integer;   // window height adjust 
FEnvWidthAdjust  : integer;   // window width adjust 
FEnvLocalPath   : string;    // App exe home folder 
FEnvAppFolderName  : string;    // application name less extension 
FEnvAppFileVersionStr : string;    // like 6.0.0.4567 
FEnvAppFileVersion  : TFileVersion;  // HiVersion, LoVersion, etc. 

Y algunas utilidades:

function EnvironmentReady : TEnvError; 
function GetLocalComputerName : string;    // network needs this 
function GetAppFolderName : string; 
function BuildNumber : Integer; 
procedure GetFileInfo(const AFileName: string; var RFileInfo: TFileInfo); 
function GetLocalPath : string; 
procedure getEnvWindowAdjust(bar : TStatusBar); 
function setAppFileVersionStr : string; 
function GetFileTime(const FileName: string): LongInt; 
function initEnvironment : Boolean; 
function exitEnvironment : Boolean; 
function AlreadyRunning : Boolean; 
function specialBuild : Boolean; 

Tengo una función al tamaño de cada forma correcta, utilizando FEnvTitleHeight, etc., también se generan

Todas las rutas de usuario mudos, según la versión de Windows .

No tengo ni idea de cómo gestionar el proceso, pero si la gente lo desea, lo arrojaré todo al pozo, para que los maestros puedan resolverlo.

+0

¡Se ve bien! ¿Dónde podemos descargarlo? – Mawg

+0

¿Dónde está un buen lugar?¿Está bien simplemente publicar mensajes de texto o todo a la vez? Todavía tengo que eliminar algún código de seguridad y corregir los comentarios. Más tarde hoy, quizás. –

1

Excelente pregunta.

He estado desarrollando mi aplicación durante más de 10 años, comenzando con Delphi 2, 3 y luego 4 y luego quedándome allí y esperando muchos años to upgrade to Delphi 2009 porque Unicode era imprescindible. Actualizaré de nuevo cuando salga la versión de 64 bits.

Así que he recorrido toda la gama de sistemas operativos: Windows 98, Windows 2000, XP, Vista y ahora 7. Cada uno rompe su interfaz de usuario de alguna manera, pero Delphi ha sido bastante bueno al respecto. En algún punto del tiempo, debe decidir que ya no puede soportar los sistemas operativos más antiguos y pasar a Unicode finally cut out Windows 98 de mi lista compatible.

En general, he encontrado que Core Delphi te ofrece la mejor compatibilidad con la interfaz de usuario. Es posible que algunos paquetes de terceros proporcionen más, pero sus incoherencias son peores que sus beneficios. Minimice otros paquetes donde pueda.

El único objetivo de la IU que he tenido es ir al programa de logotipo de Windows Vista y, más recientemente, al programa de Windows 7 y Microsoft does provide a lot of information sobre cuáles deberían ser los estándares que relacionan las condiciones del 1 al 7 en su pregunta. Pero conseguir un programa Delphi para usar un manifiesto y pasar por los aros de Microsoft fue al final, no me costó la molestia y el costo, especialmente porque mi programa no conforme funcionaba bien en Vista y 7.

Manteniendo mi programa ejecutar y mantener la interfaz de usuario con el mismo aspecto en Windows XP, Vista y 7 cuando estoy desarrollando en una máquina Vista de 64 bits significa que utilizo Microsoft Virtual Machine cuando lo necesito. Me han dicho que mi programa también funciona en Wine, por lo que es otra máquina de prueba.

Ahora responder a sus preguntas:

a) ¿Delphi 2010 aporta nada nuevo a la mesa para ayudar con esta situación?

Sí. Cada versión agrega nuevos componentes de VCL que se han agregado a los nuevos sistemas operativos. p.ej. Se agregaron las nuevas IU de Windows 7.

b) ¿Deberíamos elegir un paquete de componentes del mercado de accesorios y confiar en ellos para resolver todos estos problemas ?, yc) ¿Deberíamos ir con un motor de revisión del mercado de accesorios?

Como dije antes, creo que es mejor hacerlo en Delphi que en un paquete de terceros.

d) Quizás un gui de tipo más html sea el camino a seguir. ¿Podemos hacer una aplicación de interfaz gráfica de usuario relativamente compleja con html que no requiera el uso de un navegador? (prefiero mantenerlo basado en el formulario)

Mi aplicación es como un procesador de textos con texto enriquecido. He visto conjuntos de editores basados ​​en HTML y hay algunos, pero no creo que sea el camino a seguir para una aplicación de escritorio. Si desea una aplicación basada en la web, estaría mejor con .NET y Prism.

e) ¿Deberíamos simplemente manipular y codificar cada uno de estos escenarios y dejar de quejarse al respecto?

Actualice a Delphi 2010 primero. Descubrirá que Delphi se encargará de la mayoría de esas situaciones por usted.

f) Y finalmente, ¿cómo se supone que debemos probar todas estas condiciones?

Hacerlo usted mismo es una gran tarea, incluso con máquinas virtuales. Lo que tienes que hacer es tener una versión beta abierta y obtener tantos usuarios diferentes en diferentes entornos para probar tu programa por ti. Luego, manejará todos los entornos que son más importantes para sus usuarios.

Ahora, si cree que es difícil conseguir la compatibilidad de la interfaz de usuario en diferentes entornos de Windows, simplemente espere hasta que Embarcadero presente su versión de Delphi que se compilará para la Mac. Sus preocupaciones de UI actuales parecerán triviales en comparación con lo que será.

1

Para escalar sus formularios en múltiples resoluciones/tamaños DPI: utilizamos DevExpress LayoutControl para eso. Se asegura de que los controles en su formulario siempre se alineen para usar el espacio disponible, pase lo que pase. Y hace mucho más. Eche un vistazo al their site.

Cuestiones relacionadas