+ Rispondi al Thread
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: Posizionare al centro un form

  1. #1
    L'avatar di ceklo
    ceklo non è in linea Scribacchino
    Post
    529

    Posizionare al centro un form

    Cari amici,

    Ho fatto un'applicazione che impiega un form centrato sullo schermo, utilizzando la proprietà StartUpPosition.

    Questo form cambia dimensioni quando aumento il valore della proprietà width. Questa strategia mi serve per visualizzare dati "extra" sulla destra del form, soltanto se premo il tasto F2, (verrà utilizzata raramente ma, funzionerà come un help).

    Il problema è che il form -aumentato in dimensioni- non si sposta per assumere nuovamente la posizione al centro dello schermo.

    Ho scritto questo codice

    .......
    Fomr2.StartUpPosition =2
    End Sub

    e mi da il seguente errore :

    Errore di compilazione:
    Per la funzione o l'interfaccia sono state impostate delle restrizioni oppure la funzione utilizza un tipo di automazione non supporto in Visual Basic.


    Mi serve sapere, se posso centrare nuovamente il form2 una volta allargato. Va menzionato il fatto che la mia applicazione girerà su tanti schermi diversi e quindi immagino che centrare impieganto le proprietà top e left risulti difficile.
    Vi chiedo come fare? Devo "misurare" lo schermo dove si trova a girare l'applicazione per poi applicare left e top? Se si, come si misura lo schermo? cosa succede se l'operatore cambia la risoluzione dello schermo?

    Grazie

    Ceklo

  2. #2
    L'avatar di @Alex
    @Alex non è in linea Very Important Person
    Post
    12,085
    Imposta le misure in Pixel e dopo aver ricavato la dimensione dello schermo
    in CX/CY sottrai Form.Width/2 da CX(larghezza) e Form.Height/2 da CY e la riposizioni.
    @Alex
    Il CROSSPOST è VIETATO
    Mirror al vecchio sito WEB(salvare i Demo riassegnando l'estensione (.Zip/.Rar/.Exe in base all'icona...):
    http://mirror.masterdrive.it/alessandrobaraldi/
    Leggi il
    Regolamento del Forum e nel comprenderne la filosofia rispettalo.

  3. #3
    L'avatar di TheTruster
    TheTruster non è in linea Moderatore Globale Ultimo blog: Mouse Wheel in Visual Basic 6 - ActiveX
    Luogo
    Messina - Italy
    Post
    7,092
    Blogs
    3
    Come ha detto Alex:

    codice:
    Me.Left = (Screen.Width - Me.Width)/2
    Me.Top = (Screen.Height - Me.Height)/2
    l'unica differenza è che non occorre impostare la larghezza del form in Pixel, poichè anche le proprietà Width ed Height dell'oggetto Screen vengono restituite in Twips.

    Ti converrebbe posizionare questo codice all'interno dell'evento Resize del Form in questione

    TheTruster
    Il Crossposting è vietato dalla Netiquette!




  4. #4
    L'avatar di @Alex
    @Alex non è in linea Very Important Person
    Post
    12,085
    Quote Originariamente inviato da TheTruster Visualizza il messaggio
    Come ha detto Alex:

    codice:
    Me.Left = (Screen.Width - Me.Width)/2
    Me.Top = (Screen.Height - Me.Height)/2
    l'unica differenza è che non occorre impostare la larghezza del form in Pixel, poichè anche le proprietà Width ed Height dell'oggetto Screen vengono restituite in Twips.

    Ti converrebbe posizionare questo codice all'interno dell'evento Resize del Form in questione

    TheTruster

    Si corretto... per deformazione visto che uso spesso API lo faccio in partenza di Default.

    Ciao
    @Alex
    Il CROSSPOST è VIETATO
    Mirror al vecchio sito WEB(salvare i Demo riassegnando l'estensione (.Zip/.Rar/.Exe in base all'icona...):
    http://mirror.masterdrive.it/alessandrobaraldi/
    Leggi il
    Regolamento del Forum e nel comprenderne la filosofia rispettalo.

  5. #5
    L'avatar di ceklo
    ceklo non è in linea Scribacchino
    Post
    529
    Ma che meraviglia!!!, e io che mi sono scervellato per ore!
    grazie

    Ceklo

  6. #6
    L'avatar di gibra
    gibra non è in linea Amanuense
    Luogo
    Breganze (VI)
    Post
    4,502
    Il metodo indicato è sostanzialmente esatto, ma stai attento che bisogna sempre fare i conti con questo problema

    PRB: Incorrect Screen Object Width/Height After the Desktop Is Resized

    per cui ti consiglierei di usare la tecnica indicata nell'articolo, per prevenire eventuali problemi nel caso l'utente cambi la risoluzione mentre il programma è avviato. E come dice la ben nota legge di Murphy:
    quando una cosa può accadere, prima o poi accade!

    Ciao

  7. #7
    L'avatar di ceklo
    ceklo non è in linea Scribacchino
    Post
    529
    Quote Originariamente inviato da gibra Visualizza il messaggio
    bisogna sempre fare i conti con questo problema
    Fatto!, grazie del consiglio.

    Saluti
    Ceklo

  8. #8
    L'avatar di TheTruster
    TheTruster non è in linea Moderatore Globale Ultimo blog: Mouse Wheel in Visual Basic 6 - ActiveX
    Luogo
    Messina - Italy
    Post
    7,092
    Blogs
    3
    Quote Originariamente inviato da gibra Visualizza il messaggio
    Il metodo indicato è sostanzialmente esatto
    [...]
    ti consiglierei di usare la tecnica indicata nell'articolo, per prevenire eventuali problemi nel caso l'utente cambi la risoluzione mentre il programma è avviato
    Ciao Giorgio
    Grazie per la precisazione... non ero a conoscenza di questo problema

    TT
    Il Crossposting è vietato dalla Netiquette!




  9. #9
    blumenthal non è in linea Novello
    Post
    4

    Smile Dici giusto

    [Anch'io faccio cosi, è semplice.

  10. #10
    L'avatar di Roby66
    Roby66 non è in linea Scolaretto
    Post
    168
    Quote Originariamente inviato da TheTruster Visualizza il messaggio
    Come ha detto Alex:

    codice:
    Me.Left = (Screen.Width - Me.Width)/2
    Me.Top = (Screen.Height - Me.Height)/2
    l'unica differenza è che non occorre impostare la larghezza del form in Pixel, poichè anche le proprietà Width ed Height dell'oggetto Screen vengono restituite in Twips.

    Ti converrebbe posizionare questo codice all'interno dell'evento Resize del Form in questione

    TheTruster
    Ciao a tutti , ho fatto anch'io qualche prova, e volevo far presente che se il codice viene inserito nell'evento Form_Resize allorchè ci sia necessità di minimizzare lo stesso Form uscirà un problema, precisamente l'errore di run-time n°384 che specifica che non può ri-centrare il form se questo viene minimizzato, ho ovviato a questo problema con un:
    codice:
    On Error Resume Next
    Me.Left = (Screen.Width - Me.Width)/2
    Me.Top = (Screen.Height - Me.Height)/2
    avreste risolto anche voi così?

    Roby

+ Rispondi al Thread
Pagina 1 di 2 12 ultimoultimo

Permessi di invio

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