2010-04-30 11 views
24

In questi giorni, qualsiasi applicazione desktop di Windows decente deve svolgere bene e guardare bene nelle seguenti condizioni:In che modo gli sviluppatori devono far fronte a così tante combinazioni di configurazione della GUI?

  1. XP e Vista e Windows 7.
  2. 32 bit e 64 bit.
  3. Con e senza temi.
  4. Con e senza Aero.
  5. A 96 e 120 e forse DPI personalizzati.
  6. Uno o più monitor (schermi).
  7. Ogni sistema operativo ha il proprio carattere preferito.

Oh mio! Cosa deve fare un piccolo sviluppatore di applicazioni desktop per Windows? :(

Sto sperando di ottenere un filo iniziato con suggerimenti su come affrontare questo dilemma GUI.

Prima di tutto, io sono su Delphi 7.
a) Se Delphi 2010 portano nulla di nuovo al tavolo per aiutare con questa situazione?
b) Dovremmo scegliere una suite di componenti aftermarket e affidarci a loro per risolvere tutti questi problemi?
c) Dovremmo andare con un motore skinning aftermarket?
d) Forse una GUI di tipo HTML più è la strada da percorrere. Possiamo creare un'app GUI relativamente complessa con HTML che non richieda l'uso di un browser? (preferisci mantenerlo basato sulla forma)
e) Dovremmo solo cianciare e codificare ciascuno di questi scenari e smettere di lamentarci?
f) E infine, come mai dovremmo testare tutte queste condizioni nel mondo?

+0

Domanda difficile! Eclipse non ha un sistema perfettamente portatile? (windows, linux, mac, ogni sapore) Sto arrivando molto prima di me stesso, ma mi sembra di ricordare che aveva un gui Java. Sono davvero insicuro della mia risposta, ecco perché ne faccio un commento – Shawn

risposta

6

Per il momento desidero rispondere sola domanda:

f) utilizzare macchine virtuali e (se possibile) test automatizzati. So che è un grande lavoro metterlo in pratica ma non te ne pentirai mai.

0
  • Delphi 2010 supporta nativamente Unicode.
  • Delphi 2010 offre i controlli di Windows Vista/Seven.
  • Per il momento non esiste un compilatore Delphi a 64 bit.
  • È should'nt avete qualche problema a gestire le domande dpi e contare monitor con Delphi 7
+2

Delphi non è in grado di gestire bene i diversi caratteri di sistema e le impostazioni DPI, utilizza layout basati su pixel e manca un gestore di layout adeguato. Inoltre, codifica i caratteri nei file DFM. – mghie

+1

Ecco probabilmente una soluzione alla domanda dpi: http://www.gerixsoft.com/blog/delphi/large-fonts –

0

Delphi fa che abbastanza facile, ma alla fine si dovrà eseguire il software su tutte le versioni di Windows e verificare visivamente che tutto sembra a posto. I test automatici sono ottimi per testare la funzionalità, ma i cosmetici possono essere controllati solo visivamente.

+0

Questo è solo parzialmente vero: puoi solo controllare se un layout è Ok guardandolo, ma quando hai preso questa decisione una volta puoi usare i test automatici per verificare se il layout corrente è sempre lo stesso. Se è diverso puoi essere notato e puoi comunque dare un'occhiata, ma se è lo stesso non devi assolutamente guardarlo. –

0

Delphi 2009 ha supportato il tema (è un'impostazione a livello di applicazione). Quando si esegue un'applicazione Delphi 2009 o successiva in Vista/Windows 7, le finestre di messaggio vengono modificate in TaskDialogs, in modo da ottenere alcuni miglioramenti dell'interfaccia utente gratuitamente.

Abbiamo avuto un po 'di difficoltà nel porting su Delphi 2009 e Unicode, ma quello era un "debito tecnico" che abbiamo dovuto pagare ad un certo punto.

Spero che questo aiuti.

+0

Delphi ha aggiunto il supporto per i temi Windows in Delphi 7, che è migliorato nelle versioni successive. –

+0

Yeas, tramite XPManifest, ma poi è stato rimosso e D2007 ha un sistema molto migliore. – Mmarquee

1

Anch'io sono un modesto sviluppatore di Windows (D7) - molto più interessato a risolvere i problemi dei miei utenti di applicazioni verticali di mercato rispetto a quelli di M $.

Mi sono avvicinato a un componente per occuparmi di tutti questi problemi, oltre ad alcuni altri.

Per quanto ne so, tutti i pezzi erano di pubblico dominio e li ho accreditati dove possibile.

Queste sono alcune delle proprietà:

tipo TAppEnvironment = class (TComponent)

privato

{ Private declarations } 

// gestione ambientale

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 utilizzando prodotto & 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. 

e alcune utility:

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; 

Ho una funzione di dimensioni ogni modulo correttamente, utilizzando FEnvTitleHeight, ecc

Tutti i percorsi utente muti vengono generati anche, a seconda della versione di Windows .

Non ho idea di come gestire il processo, ma se la gente vuole, getterò tutta la cosa nel piatto - in modo che i maestri possano lavorarci sopra.

+0

Sembra buono! Dove possiamo scaricarlo? – Mawg

+0

Dove è un buon posto?È giusto pubblicare solo testi, pezzi o tutto alla volta? Devo ancora rimuovere qualche codice di sicurezza e correggere i commenti. Più tardi oggi, forse. –

1

Ottima domanda.

Ho sviluppato la mia applicazione per oltre 10 anni, a partire da Delphi 2, 3 e poi 4 e quindi rimanendo lì e aspettando molti anni to upgrade to Delphi 2009 perché Unicode era un must. Aggiornerò di nuovo quando uscirà la versione a 64 bit.

Quindi ho eseguito la gamma di Sistemi operativi: Windows 98, Windows 2000, XP, Vista e ora 7. Ognuno interrompe l'interfaccia utente in qualche modo, ma Delphi è stato piuttosto bravo a riguardo. Ad un certo punto nel tempo, devi decidere che non puoi più supportare i vecchi SO e passare a Unicode finally cut out Windows 98 dal mio elenco supportato.

In generale, ho trovato che il core Delphi offre il miglior supporto per l'interfaccia utente. Alcuni pacchetti di terze parti possono sembrare di fornire di più, ma le loro incongruenze sono problemi peggiori di quanto potrebbero essere i loro benefici. Riduci al minimo altri pacchetti dove puoi.

L'unico obiettivo dell'interfaccia utente che ho avuto è di andare per il programma Windows Vista Logo, e più recentemente il programma Windows 7, e Microsoft does provide a lot of information su quali dovrebbero essere gli standard che riguardano le tue condizioni 1-7 nella tua domanda. Ma ottenere un programma Delphi per usare un manifest e passare attraverso i cerchi di Microsoft era alla fine, non valeva la pena e costava a me, soprattutto perché il mio programma non conforme funzionava bene su Vista e 7.

Mantenere il mio programma correre e mantenere l'interfaccia utente alla stessa maniera su Windows XP, Vista e 7 quando sto sviluppando su una macchina Vista a 64 bit significa che uso Microsoft Virtual Machine quando ne ho bisogno. Mi è stato detto che il mio programma funziona anche su Wine, quindi questa è un'altra macchina di prova.

Ora rispondere alle vostre domande:

a) Se Delphi 2010 portano nulla di nuovo al tavolo per aiutare con questa situazione?

Sì. Ogni versione aggiunge nuovi componenti VCL che sono stati aggiunti ai nuovi SO. per esempio. La nuova interfaccia utente di Windows 7 è stata aggiunta.

b) Dovremmo scegliere una suite di componenti aftermarket e affidarci a loro per risolvere tutti questi problemi ?, e c) Dovremmo andare con un motore di skin aftermarket?

Come ho detto sopra, ritengo sia meglio farlo in Delphi stesso che in un pacchetto di terze parti.

d) Forse un gui di tipo più html è la strada da percorrere. Possiamo creare un'app gui relativamente complessa con html che non richieda l'uso di un browser? (preferisco mantenerlo basato sulla forma)

La mia applicazione è come un elaboratore di testi con Rich Text. Ho esaminato le suite di editor basati su HTML e ce ne sono alcune, ma non penso che sia la strada da percorrere per un'applicazione desktop. Se si desidera un'applicazione basata sul Web, si farebbe meglio con .NET e Prism.

e) Dovremmo solo cazzeggiare e scandire tutti questi scenari e smettere di lamentarci?

Aggiornamento a Delphi 2010 prima. Scoprirai che Delphi gestirà la maggior parte di queste situazioni per te.

f) E infine, come mai dovremmo testare tutte queste condizioni nel mondo?

Farlo autonomamente è un compito importante, anche con le macchine virtuali. Quello che devi fare è avere una Beta aperta e ottenere tanti utenti diversi in ambienti diversi per testare il tuo programma per te. Quindi gestirai tutti gli ambienti più importanti per i tuoi utenti.

Ora, se pensate che ottenere compatibilità con l'interfaccia utente in diversi ambienti Windows sia difficile, aspettate che Embarcadero fornisca la loro versione di Delphi che verrà compilata per il Mac. Le tue attuali preoccupazioni per l'interfaccia utente sembreranno banali in confronto a ciò che diventeranno.

1

Per il ridimensionamento dei moduli su più risoluzioni/dimensioni DPI: per tale motivo utilizziamo DevExpress LayoutControl. Si assicura che i controlli sul modulo siano sempre allineati per utilizzare lo spazio disponibile, indipendentemente da cosa. E fa molto di più. Dai un'occhiata a their site.

Problemi correlati