Discussione chiusa
Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Come adattare un Form alla risoluzione dello schermo

  1. #1
    L'avatar di alextyx
    alextyx non è in linea Moderatore Globale
    Luogo
    Prato
    Post
    2,585

    Come adattare un Form alla risoluzione dello schermo

    Spesso si sente parlare di necessità di ridimensionare un Form alla risoluzione dello schermo.
    Già tempo addietro avevo implementato una funzioncina atta all'uopo, che utilizzava il metodo 'Scale', che però allora (VB2002 o 2003 non ricordo) risultava 'deprecato'.
    Mi risolsi quindi di riscrivere il tutto in altro modo.
    Ultimamente, con mia grande sorpresa, ecco che ti trovo il nuovo 'Scale', introdotto col Framework 2.0 e non più 'deprecato'.
    Per festeggiare il ritorno del figliol prodigo, ho rispolverato le antiche usanze e dato vita ad una procedurina che, nelle intenzioni, dovrebbe consentire di adattare al meglio il Form allo spazio disponibile.
    Più in dettaglio:
    Si potrà stabilire la percentuale di occupazione dello schermo da parte del form, indipendentemente dalla risoluzione dello schermo stesso.
    Si otterrà un Form con le stesse proporzioni di partenza, ma in grado di occupare la percentuale di schermo da noi voluta, con la più 'ingombrante' delle sue dimensioni (rispetto alla corrispondente dimensione dell'area dello schermo).

    Tanto per fare un esempio, se ho un Form di Width=150 e Height=450 e impongo una percentuale del 100% e il Form si trova su un'area di lavoro(cioè escluse le barre) del desktop di Width=1440 e Height=900, avremo che il rapporto più alto fra la dimensione del Form e quella corrispondente dell'area , è sul verticale, infatti il rapporto vale 0,5. Avendo specificato una occupazione voluta del 100%, dobbiamo portare a 1 questo rapporto, per cui avremo un Form con queste nuove dimensioni: O=300 e H=900.
    In pratica il Form si è ampliato al massimo consentito per non debordare dall'area visiva. Ovviamente, mentre in verticale la riempie totalmente, in orizzontale, date le differenti proporzioni, rimarranno delle zone non occupate dal Form.

    Con questa procedura, anche i controlli del Form e il font degli stessi (opzionalmente), saranno ridimensionati.
    Mentre il metodo Scale fa il lavoro sporco per quanto riguarda le dimensioni e il posizionamento dei controlli, per i font bisogna ricorrere alle note procedure ricorsive.
    Va considerato, anche se personalmente non ne apprezzo molto l'utilità, che il metodo 'Scale' consente di ridimensionare in maniera indipendente la Width e la Heigth del Form.
    Nella procedura presentata, non si è fatto uso di questa possibilità, in quanto si desidera mantenere le proporzioni invariate.
    Un'ultima annotazione: a meno di non renderle multiline, non sarà possibile ridimensionare in altezza le textbox, se non si accetta di ridimensionare anche il font.
    Detto questo non mi resta che indirizzarvi al progetto.
    Nell'esempio, il form si ridimensiona cliccando sul bottone. Questo consente di apprezzarne il funzionamento, ma in fase operativa, si potrà richiamare la procedura direttamente nell'evento Load.
    Il codice è banale, ma utile!
    File allegati File allegati

  2. #2
    skiokk non è in linea Scolaretto
    Post
    147
    Se cambio risoluzione il mio form viene tagliato dopo aver applicato la tua funzione... mentre se resto nella mia risoluzione(quella di progettazione) e applico la tua funziona il form nn mi viene tagliato ma solo ridimensionato

  3. #3
    g.guido non è in linea Novello
    Post
    19
    Ciao Alextyx, avendo lo stesso problema, ho provato a scaricare e inserire il tuo codice nel mio progetto,ma ho notato alcuni comportamenti, provo a spiegare (perdona la mia sintassi errata...sono un autodidatta..e quindi con molte lacune):
    ho un progetto realizzato su un portatile, e quando lo vado ad eseguire nel fisso (schermo 17" 1024x768) pur espandendosi il form al max alcuni oggetti restano fuori dallo schermo, utilizzando il tuo codice ho notato che rientra tutto all'interno del form, ma se go una label che definisce il campo testo e questi sono in linea, dopo il ridimensionamento la label sovrappone la casella testo....c'è un modo per sistemare questo comportamento?

    Grazie
    Guido

  4. #4
    L'avatar di sistemista
    sistemista non è in linea Topo di biblioteca
    Luogo
    Prato
    Post
    2,688
    Non ci si accoda ad un thread così datato di 7 anni fa.
    Questo thread sarà chiuso da un moderatore.Fai attenzione per la prossima volta.
    Sono stato nella terra del terrore e dei Vampiri...la transilvania? No!..in Banca.
    A Lupara?Min***a...Tecnologia Sicula è!

Discussione chiusa

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi