Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    40

    [VB6] ScrollBar di una Picture con Rotellina

    Salve, come posso fare per far fare muovere la scrollbar con la rotellina del mouse in una form ad esempio???Grazie, devo utilizzare le api di Windows???GRAZIE GRAZIE

  2. #2
    Utente di HTML.it L'avatar di Boolean
    Registrato dal
    Oct 2005
    Messaggi
    758
    è necessario attivare un Hook di sistema... che potrebbe rendere instabile il tuo programma provocando anche dei crash dell'IDE in caso di errore....

    oppure utilizzare un mio OCX

    si chiama WheelCatcher

    una volta registrato nella lista dei componenti di VB lo trovi come Mouse Wheel Catcher

    per usarlo lo metti sul form in cui vuoi intercettare il movimento della rotella del mouse.

    il componente rilascia un evento, al movimento della rotella:

    codice:
    Private Sub WheelCatcher1_WheelRotation(Rotation As Long, X As Long, Y As Long, CtrlHwnd As Long)
    
    End Sub
    Rotation assume valore 1 e -1 a seconda che la rotella vada su o giù, segnala quindi il verso di rotazione.

    X e Y sono le coordinate del mouse in cui la rotella viene mossa.

    CtrlHwnd è l'Handle del controllo su cui la rotella viene azionata.

    se quindi vuoi muovere la scrollbar del form non devi fare altro che incrementare o decrementare il Value della scrollbarr, a seconda del valore di Rotation, e se l'hWnd rilevato in CtrlHwnd è uguale a TuoForm.hWnd

    tutto qui

    se dovessi avere problemi, chiedi pure...

    Boolean

  3. #3
    Utente di HTML.it L'avatar di Artemio
    Registrato dal
    Jan 2006
    Messaggi
    178
    [OT] @Boolean scusate l'OT... volevo solo fare i complimenti a Boolean per l'OCX. veramente carina e molto utile, avrei sempre voluto fare delle scrollbars con la rotellina, ma ho sempre creduto che fosse troppo complicato, ed invece ho scoperto che con la tua OCX è anche molto facile. [/OT]

  4. #4
    Utente di HTML.it L'avatar di Boolean
    Registrato dal
    Oct 2005
    Messaggi
    758
    Grazie Artemio

    in effetti uno degli scopi dell'informatica è sempre stato quello di semplificare la vita...

    Boolean

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    40

    [VB6] Chiarimenti su rotellina mouse

    Ciao innanzitutto grazie mille, solo che non ho ben capito l'ultima parte per assegnare la rotation al valore della scrollBar GRAZIE

  6. #6
    Utente di HTML.it L'avatar di Boolean
    Registrato dal
    Oct 2005
    Messaggi
    758
    prova così:

    codice:
    Private Sub WheelCatcher1_WheelRotation(Rotation As Long, X As Long, Y As Long, CtrlHwnd As Long)
    Dim ActValue As Integer
    Dim Increm As Integer
    
    ActValue = VScroll1.Value
    Increm = VScroll1.SmallChange * Rotation
    
    If CtrlHwnd = Me.hWnd Then
        If ActValue - Increm < VScroll1.Min Then VScroll1.Value = VScroll1.Min: Exit Sub
        If ActValue - Increm > VScroll1.Max Then VScroll1.Value = VScroll1.Max: Exit Sub
        VScroll1.Value = ActValue - Increm
    End If
    
    End Sub
    la routine si basa sul valore di SmallChange della ScrollBar, quindi puoi ottenere un incremento più o meno ampio impostando diversamente questo valore.

    Boolean

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    40

    [VB6]Mouse Wheel NON VA

    Non va come mi hai fatto provare, non succede nulla e la scrollBar con la rotellina non funziona
    PERCHE'?

  8. #8
    Utente di HTML.it L'avatar di Boolean
    Registrato dal
    Oct 2005
    Messaggi
    758
    controlla i valori Min e Max della tua ScrollBar, forse li hai ancora impostati di defalut cioè 0 e 32767.

    considerato che, come ti dicevo prima, quel codice si basa sulla proprietà SmallChange, che di default è impostata a 1, direi che è piuttosto difficile apprezzare il movimento dello slider, non credi?!

    Boolean.

    P.S.: il codice, comunque, funziona.

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    40
    Scusami ma il mio problema non è questo che come ctrlHwnd mi dà sempre lo stesso Hwnd che non coincide con l'Hwnd della form ed è sempre 66454.

  10. #10
    Utente di HTML.it L'avatar di Boolean
    Registrato dal
    Oct 2005
    Messaggi
    758
    allora togli la condizione per il controllo dell'hWnd, così la rotellina sarà attiva per qualsiasi posizione abbia il mouse...

    in pratica:

    codice:
    Private Sub WheelCatcher1_WheelRotation(Rotation As Long, X As Long, Y As Long, CtrlHwnd As Long)
    Dim ActValue As Integer
    Dim Increm As Integer
    
    ActValue = VScroll1.Value
    Increm = VScroll1.SmallChange * Rotation
    
    If ActValue - Increm < VScroll1.Min Then VScroll1.Value = VScroll1.Min: Exit Sub
    If ActValue - Increm > VScroll1.Max Then VScroll1.Value = VScroll1.Max: Exit Sub
    VScroll1.Value = ActValue - Increm
    
    End Sub
    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.