Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [VB6] Intercettare Click su MaxButton (o soluzione alternativa) e risoluzione schermo

    Oggi sforno domande a raffica... Scusatemi... :rollo:

    Vorrei riposizionare i controlli di un form quando la finestra viene ingrandita con MaxButton.. È possibile intercettare il click su maxbutton o ci sono soluzioni alternative?
    È possibile inoltre scoprire la risoluzione del pc sul quale viene eseguito il programma?

    Grazie a tutti...
    zoodany..

    www.zoodany.it

  2. #2
    Utente di HTML.it L'avatar di Brainjar
    Registrato dal
    Nov 2004
    Messaggi
    1,162
    Il click sul maxbutton lo intercetti nella Form_Resize
    codice:
    Private Sub Form_Resize()
        If Me.WindowState = vbMaximized Then
            MsgBox "Hai cliccato il bottone Maximize !!"
        End If
    End Sub
    Ciao, Brainjar

  3. #3
    Si, questo mi tornava...
    Però l'evento resize è attivato anche da altre cose.. O sbaglio?
    zoodany..

    www.zoodany.it

  4. #4
    Utente di HTML.it L'avatar di Brainjar
    Registrato dal
    Nov 2004
    Messaggi
    1,162
    No, non sbagli.
    Ma se noti il codice che ho postato, vedi che è
    possibile scoprire se la resize è stata scatenata dal
    click sul bottone max, ed intervenire solo in questo caso,
    volendo.
    L'unico evento 'parallelo' è il doppio_click nel titolo del
    form. Che comunque scatena a sua volta il resize.
    Tutti gli altri resize manuali non ti mettono lo stato a
    vbMaximized. Per cui l'evento è unico, c'è un solo click che
    ti imposta lo stato a vbMaximized, il click sul bottone max,
    appunto.
    Ciao, Brainjar

  5. #5
    Grazie!!

    Per sapere la risoluzione? Sai nulla?
    zoodany..

    www.zoodany.it

  6. #6
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    Ciao zoodany.
    Per leggere la risoluzione dello schermo ed intervenire sul pannello di controllo di WinXP, se non è conforme al programma, puoi utilizzare la seguente routine:
    codice:
    'Da inserire in un modulo bas:
    Public Function CheckScreenSize(pixelWidth As Long, pixelHeight As Long) As Boolean
       
        pixelWidth = Screen.Width / Screen.TwipsPerPixelX
        pixelHeight = Screen.Height / Screen.TwipsPerPixelY
    
    'Verifica delle dimensioni schermo:
        If pixelWidth >= 1024 And pixelHeight >= 768 Then
            CheckScreenSize = True
        Else
            CheckScreenSize = False
        End If
        
    End Function
    
    '---------------------------------------------------------
    
    'Da inserire in una Frm:
    Private Sub Form_Load()
    
     Form1.Show
    
    'Determina la risoluzione corrente dello schermo
    'Funzione CheckScreenSize Modulo bas:
        Dim HRes As Integer, VRes As Integer
        Dim PauseTime, start, Finish, TotalTime
        
        HRes = Screen.Width / Screen.TwipsPerPixelY
        VRes = Screen.Height / Screen.TwipsPerPixelX
    
    'Funzione per verificare le dimensioni dello schermo - Modulo bas:
            If CheckScreenSize(1024, 768) = False Then
                MsgBox "Il programma è ottimizzato per una risoluzione dello schermo di 1024 per 768" & Chr(13) _
                & "Pixel, o superiore." & Chr(13) _
                & "Prego aumentare la risoluzione.", vbExclamation, Me.Caption
                
                'Riduce a icona ed Apre il pannello di comando
                'per modificare la risoluzione:
                Form1.WindowState = 1
                'MDIForm1.WindowState = 1
                Shell "rundll32 shell32,Control_RunDLL desk.cpl"
                ElseIf CheckScreenSize(1024, 768) = True Then
                    LblRisol.Caption = "La risoluzione dello schermo " & HRes & " per " & VRes & "  è compatibile con il programma"
                    'Esegue una pausa per visualizzare il messaggio:
                    PauseTime = 2                       'Imposta la durata, circa 2 secondi
                    start = Timer                      'Imposta il tempo d'inizio
                    Do While Timer < (start + PauseTime)
                    DoEvents                            'Passa il controllo ad altri processi
                    Loop
                    Finish = Timer                      'Imposta l'ora di fine pausa
                    TotalTime = (Finish - start)        'Calcola il tempo totale
                        If TotalTime >= PauseTime Then
                            LblRisol.Caption = ""       'Cancella il messaggio
                        End If
            End If
    End Sub
    Il codice l'ho provato e funziona.
    LM

  7. #7
    Grazie a tutti e due..
    Ho risolto, ho adattato il codice di LMondi alle mie esigenze, me ne serviva solo una piccola parte in effetti..

    Quello che voglio fare è dimensionare e spostare i controlli quando viene premuto il pulsante MaxButton, si può fare solo agendo manualmente sulle proprietà .width .height .top e .left, vero?

    Grazie ancora..
    zoodany..

    www.zoodany.it

  8. #8
    Utente di HTML.it L'avatar di Boolean
    Registrato dal
    Oct 2005
    Messaggi
    758
    se stai pensando ad un comando tipo ResizeItAll, no... non esiste...

    tutto a manina...

    al limite, in giro su internet, c'è qualche ocx.

    Boolean

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.