Suggerimenti per applicazioni Delphi multi-risoluzione

click fraud protection

Durante la progettazione le forme nel Delphi, è spesso utile scrivere il codice in modo che l'applicazione (moduli e tutti gli oggetti) appaia sostanzialmente la stessa indipendentemente dalla risoluzione dello schermo.

La prima cosa che si desidera ricordare all'inizio nella fase di progettazione del modulo è se si consentirà il ridimensionamento del modulo o meno. Il vantaggio di non ridimensionare è che non cambia nulla in fase di esecuzione. Lo svantaggio di non ridimensionare è quello nulla cambia durante l'esecuzione (il modulo potrebbe essere troppo piccolo o troppo grande per essere letto su alcuni sistemi se non è ridimensionato).

Se non ridimensionerai il modulo, imposta Scaled falso. Altrimenti, imposta la proprietà su True. Inoltre, impostare Scorrimento automatico su Falso: il contrario significherebbe non modificare le dimensioni del frame del modulo in fase di esecuzione, il che non sembra buono quando il contenuto del modulo fare cambia taglia.

Considerazioni importanti

Impostare il carattere del modulo su un carattere TrueType scalabile, come Arial. Solo Arial ti darà un carattere all'interno di un pixel dell'altezza desiderata. Se il carattere utilizzato in un'applicazione non lo è installato sul computer di destinazione, quindi Windows selezionerà un carattere alternativo all'interno della stessa famiglia di caratteri da utilizzare anziché.

instagram viewer

Imposta il modulo Posizione proprietà a qualcosa di diverso da poDesigned, che lascia la forma dove l'hai lasciata in fase di progettazione. Questo di solito finisce a sinistra su uno schermo 1280x1024 e completamente fuori dallo schermo 640x480.

Non raggruppare i controlli nel modulo: lascia almeno 4 pixel tra i controlli in modo che una modifica di un pixel nelle posizioni dei bordi (a causa del ridimensionamento) non venga visualizzata come controlli sovrapposti.

Per le etichette a riga singola che sono alLeft o Tutto a posto allineato, impostato Dimensione dell'auto vero. Altrimenti, imposta Dimensione dell'auto falso.

Assicurarsi che vi sia spazio sufficiente in un componente dell'etichetta per consentire la modifica della larghezza del carattere, uno spazio vuoto pari al 25% della lunghezza della corrente corda la lunghezza del display è un po 'troppo ma sicura. Avrai bisogno di almeno il 30% di spazio di espansione per le etichette di stringa se intendi tradurre la tua app in altre lingue. Se Dimensione dell'auto è False, assicurati di impostare correttamente la larghezza dell'etichetta. Se Dimensione dell'auto è vero, assicurati che ci sia spazio sufficiente per far crescere l'etichetta da sola.

Nelle etichette a più righe e a capo inverso, lasciare almeno una riga di spazio vuoto nella parte inferiore. Ne avrai bisogno per catturare l'overflow quando il testo si sposta in modo diverso quando la larghezza del carattere cambia con il ridimensionamento. Non dare per scontato che, poiché stai utilizzando caratteri di grandi dimensioni, non devi consentire l'overflow del testo: i caratteri di grandi dimensioni di qualcun altro potrebbero essere più grandi dei tuoi!

Fare attenzione all'apertura di un progetto nell'IDE con risoluzioni diverse. Il modulo è PixelsPerInch La proprietà verrà modificata non appena viene aperto il modulo e verrà salvata in DFM se si salva il progetto. È meglio testare l'app eseguendola autonomamente e modificare il modulo con una sola risoluzione. La modifica a varie risoluzioni e dimensioni dei caratteri invita alla deriva dei componenti e ai problemi di dimensionamento. Assicurati di impostare il tuo PixelsPerInch per tutti i tuoi moduli a 120. Il valore predefinito è 96, che causa problemi di ridimensionamento a una risoluzione inferiore.

Parlando della deriva dei componenti, non ridimensionare un modulo più volte, in fase di progettazione o runtime. Ogni riscalamento introduce errori di arrotondamento che si accumulano molto rapidamente poiché le coordinate sono rigorosamente integrali. Man mano che quantità frazionarie vengono troncate dalle origini e dalle dimensioni del controllo ad ogni successivo ridimensionamento, i controlli sembreranno strisciare a nord-ovest e ridursi. Se si desidera consentire ai propri utenti di ridimensionare il modulo un numero qualsiasi di volte, iniziare con un modulo appena caricato / creato prima di ogni ridimensionamento in modo che gli errori di ridimensionamento non si accumulino.

In generale, non è necessario progettare moduli con una particolare risoluzione, ma è fondamentale rivederli aspetto a 640x480 con caratteri grandi e piccoli, e ad alta risoluzione con caratteri piccoli e grandi, prima di rilasciare la tua app. Questo dovrebbe far parte del normale elenco di controllo per la verifica della compatibilità del sistema.

Prestare molta attenzione a tutti i componenti che sono essenzialmente a linea singola TMemos-cose come TDBLookupCombo. Il controllo di modifica multilinea di Windows mostra sempre solo intere righe di testo: se il controllo è troppo corto per il carattere, a TMemo non mostrerà nulla (a TEdit mostrerà il testo troncato). Per tali componenti, è meglio renderli pochi pixel troppo grandi rispetto a un pixel troppo piccolo e non mostrare alcun testo.

Tieni presente che tutto il ridimensionamento è proporzionale alla differenza dell'altezza del carattere tra tempo di esecuzione e tempo di progettazione, non la risoluzione in pixel o le dimensioni dello schermo. Ricorda anche che le origini dei tuoi controlli verranno modificate quando il modulo viene ridimensionato: non puoi benissimo ingrandire i componenti senza spostarli un po '.

Ancore, allineamento e vincoli: VCL di terze parti

Una volta che sai quali problemi tenere a mente quando ridimensiona i moduli Delphi su diverse risoluzioni dello schermo, sei pronto per alcuni codifica.

Quando si lavora con Delphi versione 4 o successiva, diverse proprietà sono progettate per aiutarci a mantenere l'aspetto e il layout dei controlli in un modulo.

Uso Allineare per allineare un controllo in alto, in basso a sinistra o a destra di un modulo o pannello e farlo rimanere lì anche se le dimensioni del modulo, pannello o componente che contiene il controllo, cambiano. Quando il padre viene ridimensionato, viene ridimensionato anche un controllo allineato in modo che continui a estendersi sul bordo superiore, inferiore, sinistro o destro del padre.

Uso vincoli per specificare la larghezza e l'altezza minima e massima del controllo. Quando i Vincoli contengono valori massimi o minimi, il controllo non può essere ridimensionato per violare tali vincoli.

Uso ancore per garantire che un controllo mantenga la sua posizione corrente rispetto a un bordo del suo genitore, anche se il genitore viene ridimensionato. Quando il suo genitore viene ridimensionato, il controllo mantiene la sua posizione rispetto ai bordi a cui è ancorato. Se un controllo è ancorato ai bordi opposti del suo genitore, il controllo si allunga quando il suo genitore viene ridimensionato.

procedura ScaleForm
(F: TForm; ScreenWidth, ScreenHeight: LongInt);
inizio
F.Scaled: = True;
F.AutoScroll: = False;
Posizione F.: = poScreenCenter;
F.Font. Nome: = 'Arial';
if (schermo. Larghezza <> ScreenWidth), quindi iniziare
F.Height: =
LongInt (F.Height) * LongInt (Schermo. Altezza)
div ScreenHeight;
F.Width: =
LongInt (F.Width) * LongInt (Schermo. Larghezza)
div ScreenWidth;
F.ScaleBy (schermo. Larghezza, Larghezza schermo);
fine;
fine;
instagram story viewer