PDA

Visualizza la versione completa : [delphi] Far si che il programma abbia i controlli al posto giusto SEMPRE, come????


Lyll0
21-11-2003, 17:33
ciao, il titolo è un pò criptico, ma volevo sintetizzare il mio problema.

mi sapreste dire come fare a disporre i controlli di un form in modo tale che la visualizzazione sia corretta su ogni tipo di monitor, a qualsiasi risoluzione?

voglio dire: io dispongo MANUALMENTE i controlli su un form.
il problema è che se massimizzassi il form e ci lavorassi sul MIO monitor (17" 1268x1024) otterrei una certa disposizione, ma su unn display 15" 800x600 il form NEPPURE ci entrerebbe all'interno dell'area visibile!

quindi, come posso fare?

grazie

alka
21-11-2003, 18:58
Originariamente inviato da Lyll0
ciao, il titolo è un pò criptico, ma volevo sintetizzare il mio problema.

No, il titolo è fin troppo esaustivo... :)



mi sapreste dire come fare a disporre i controlli di un form in modo tale che la visualizzazione sia corretta su ogni tipo di monitor, a qualsiasi risoluzione?

Non è possibile ottenere garanzie sulla "correttezza" della visualizzazione, ma è possibile chiedere a Delphi di riscalare i controlli di una forma attraverso il metodo ScaleBy.

Sebbene Delphi sia in grado di eseguire correttamente la scalatura, non è garantito che l'effetto a video sia comunque ottimale ed elegante (ad esempio, alcuni font potrebbero diventare troppo piccoli, illeggibili, o troppo grandi e "pacchiani").

In definitiva, suggerirei di uscire da questa visione stilistica adottando una delle due soluzioni che generalmente seguo:
[list=1]
progettare l'interfaccia in base ad una risoluzione standard (es. 800x600)
rendere l'interfaccia indipendente dalla dimensione dello schermo (ad es. usando Align, Anchors, ecc.)
[/list=1]

Osservando il panorama dei software distribuiti nel mondo, se ne vedono ben pochi (io non ne ho mai visti) che si adeguano automaticamente alla risoluzione senza allineamenti dei controlli.



voglio dire: io dispongo MANUALMENTE i controlli su un form.
il problema è che se massimizzassi il form e ci lavorassi sul MIO monitor (17" 1268x1024) otterrei una certa disposizione, ma su unn display 15" 800x600 il form NEPPURE ci entrerebbe all'interno dell'area visibile!

Spero che il tuo monitor sia LCD, perchè con un CRT a quella risoluzione potresti aver presto bisogno di un paio d'occhiali e, dopo qualche anno, di un buon psichiatra. ;)

Ad ogni modo, quello che hai scritto è normale che avvenga; il fatto che tu disponga di uno schermo a 1268x1024 non significa necessariamente che le form della tua applicazione debbano raggiungere una simile dimensione.



quindi, come posso fare?

Prendi una risoluzione modello, meglio la 800x600, e adegua la tua applicazione a lavorare bene con tale risoluzione minima specificandola nei requisitit di sistema per l'utilizzo del software, oppure adotta un'interfaccia che non sia dipendente dalla risoluzione: ad esempio, allineando un navigatore in basso, una griglia al centro della pagina per occupare lo spazio rimanente e scorrendo il contenuto con una normale scrollbar visualizzando le colonne nascoste è un'implementazione che va bene per qualsiasi risoluzione, anche se è ovvio che la maggior usabilità sarà godibile da chi ha un monitor più grande ed è in grado di raggiungere risoluzioni maggiori.

Ciao! :ciauz:

Lyll0
22-11-2003, 01:44
;) ;) mmmm...

grazie...

solo che rimango perplesso.
è un peccato non poter avere un piano di lavoro pulito...

PS: si, ho un LCD! :dhò: :dhò: :dhò: :dhò:

alka
22-11-2003, 04:00
Originariamente inviato da Lyll0
solo che rimango perplesso.
è un peccato non poter avere un piano di lavoro pulito...

Non capisco cosa intendi, ad ogni modo tieni conto del fatto che magari stai sviluppando un programma che acquisisce nuovi elementi a poco a poco attraverso i quali stai anche apprendendo cose nuove sull'ambiente di sviluppo e sugli strumenti che mette a disposizione.

Se un domani tu dovessi pensare ad un restyling della tua applicazione, sicuramente sarà meno difficile, con cognizione di causa, strutturare bene la propria applicazione, conoscendo già le problematiche che si vanno ad incontrare e gli elementi a propria disposizione.

Lyll0
22-11-2003, 16:25
in realtà ho già disposto i controlli nel modo migliore per ottimizzare lo spazio,

solo che il poter sfurttare OGNI schermo al 100% ottimizza lo spazio

alka
22-11-2003, 17:35
L'ottimizzazione dello spazio non è strettamente legata all'occupazione dei controlli visuali.

Mi spiego: prendi Windows XP e osserva la dimensione della barra del titolo e dei pulsanti, non sembra più grande rispetto ai sistemi operativi precedenti che sicuramente sono ritenuti più obsoleti?

La spiegazione sta nel fatto che, probabilmente, Microsoft ha preferito puntare tutto sull'intuitività dei comandi, adottando soluzioni di visualizzazione dei controlli che permettessero, con un minore spazio, di gestire al meglio le informazioni mostrate a video.

Ad esempio, se volessi mostrare 100 pannelli di comando, potrei disporli su una form gigante e fare in modo che l'utente con schermo piccolo li scorra con una barra per vederseli tutti...ma a questo punto, non sarebbe meglio (se possibile) usare un controllo a pagine (PageControl) e selezionare solo il pannello desiderato riportandolo una volta sola affinchè mostri solo le informazioni che si vogliono vedere?

In definitiva, ma credo che tu abbia capito, l'ottimizzazione dello spazio non è solo nella grandezza dei controlli che ci metti dentro, ma anche nella scelta degli stessi e il modo in cui li disponi all'interno di appositi contenitori o frame in modo da rivalutare lo spazio senza far diminuire l'intuitività del programma.

Il problema è che spesso questo non è possibile nello stadio iniziale di sviluppo di un programma poichè le esigenze nascono a poco a poco e si dovrebbe ogni volta riprogettare e ridisporre i controlli, con un conseguente spostamento e modifica del codice, a meno che il tutto non sia già stato progettato per bene a priori, cosa che suggerisco di fare, sempre per quanto possibile.

Altro non so... :)

Lyll0
22-11-2003, 18:59
k. grazie.

a presto.

Loading