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

    [vb6] datagrid scroll mouse

    Salve raga' , ho letto in rete come scorrere un datagrid con l' ausilio della rotellina del mouse , ma non ho capito un granche'.
    Potreste spegarmi come fare????

    Grazie mille

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    61
    risolto cosi :


    codice:
    Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
    Public Const GWL_WNDPROC = (-4)
    Public lpPrevWndProc As Long
    Const WM_MOUSEWHEEL = &H20A
    Const WHEEL_DELTA = 120
    Dim Count As Integer
    Function WndProc(ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
        If Msg = WM_MOUSEWHEEL Then
            Dim Delta As Long
            Static Travel As Long
            Delta = HiWord(wParam)
            Travel = Travel + Delta
            MouseWheel Travel \ WHEEL_DELTA, LoWord(lParam), HiWord(lParam)
            Travel = Travel Mod WHEEL_DELTA
        End If
        WndProc = CallWindowProc(lpPrevWndProc, hWnd, Msg, wParam, lParam)
    End Function
    
    Sub MouseWheel(Travel As Integer, X As Long, Y As Long)
        magazzino.datagrid1.Scroll 0, -Travel
    End Sub
    
    Function HiWord(DWord As Long) As Integer
        CopyMemory HiWord, ByVal VarPtr(DWord) + 2, 2
    End Function
    
    Function LoWord(DWord As Long) As Integer
        CopyMemory LoWord, DWord, 2
    End Function
    nell' evento load del form invece:
    codice:
     lpPrevWndProc = SetWindowLong(datagrid1.hWnd, GWL_WNDPROC, AddressOf WndProc)
    e tutto funge ...............................................

  3. #3
    Utente di HTML.it L'avatar di icosimo
    Registrato dal
    Sep 2001
    Messaggi
    259
    Ciao IVANO78,
    sono interessato alla tua soluzione, però ho bisogno di aiuto e spero che tu abbia tanta pazienza:

    ho inserito il codice da te riportato nel Generale\Dichiarazioni, (non sapevo dove devo metterlo, forse in qualche modulo....e come si fa) e nel Load del Form la stringa indicata: ma all'vvio mi segnala l'errore come da allegato evidenziando la quarta riga che riporto "Public Const GWL_WNDPROC = (-4)".

    Il codice è stato inserito con copia e incolla.

    Cosa mi suggerisci di fare???

    Comunque grazie
    Immagini allegate Immagini allegate
    Windows 7 Home Premium SP1 64 bit - AMD Athlon(tm) 64x2 Dual Core Processor 6000+ 3.00 GHz - 4 GB RAM - NVIDIA GeForce 8400 GS

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Guarda che il messaggio a cui rispondi e' di

    giugno

    e ivano potrebbe non partecipare piu' al forum o non controllarlo piu' ...

    In ogni caso, la prima parte del codice va inserito in un MODULO .bas e la seconda, come gia' detto, "nell' evento load del form" ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it L'avatar di StegcO
    Registrato dal
    Aug 2008
    Messaggi
    371
    Ecco come si scrolla con la rotellina:

    codice:
    Private Sub WheelCatcher_WheelRotation(Rotation As Long, X As Long, Y As Long, CtrlHwnd As Long)
    dgr_agenda.Scroll 0, -Rotation
    End Sub
    e nei riferimenti devi aggiungere WheelCatcher che scarichi da itnernet

    aggiungi l'oggetto nella form, e grazie aquelle 3 righe la DataGrid ti scorre

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    grazie aquelle 3 righe la DataGrid ti scorre
    No ... non e' grazie a quelle 3 righe, ma grazie a tutto il codice inserito nella libreria WheelCatcher che funziona ... e devi avere la libreria installata e registrata.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it L'avatar di StegcO
    Registrato dal
    Aug 2008
    Messaggi
    371
    nei riferimenti devi aggiungere WheelCatcher che scarichi da internet e aggiungi l'oggetto nella form, e grazie aquelle 3 righe la DataGrid ti scorre




  8. #8
    Utente di HTML.it L'avatar di icosimo
    Registrato dal
    Sep 2001
    Messaggi
    259
    Grazie Ragazzi.


    Per Oregon:
    sì immaginavo quanto dici circa IVANO78, ma un tentativo andava comunque fatto.

    Ho provato ad inserire nel progetto un modulo.bas che ho chiamato "SCROLL".
    Ma il modulo come si richiama, o viene letto all'avvio?
    Dopo aver inserito la riga singola nel form all'avvio viene segnalato "Necessario oggetto" e a questo punto non so cosa fare. Mi dai ancora un suggerimento? Grazie.


    Per StegCO:
    Ho fatto come mi hai indicato ma non succedde proprio nulla. Dove vanno inserite esattamente le famose tre righe e come?


    Ancora grazie Ragazzi.
    Windows 7 Home Premium SP1 64 bit - AMD Athlon(tm) 64x2 Dual Core Processor 6000+ 3.00 GHz - 4 GB RAM - NVIDIA GeForce 8400 GS

  9. #9
    Utente di HTML.it L'avatar di StegcO
    Registrato dal
    Aug 2008
    Messaggi
    371
    dove vuoi, è una sub routine, mettila per ultima..

    ricordati, come suggerito da oregon, di aggiugnere il riferimento e poi creare l'oggetto nella form

  10. #10
    Utente di HTML.it L'avatar di icosimo
    Registrato dal
    Sep 2001
    Messaggi
    259
    Sì StegCO,

    Ho scaricato WheelCatcher che è un ocx.

    allora per poter avere l'oggetto (il lucchetto) da inserire nella FORM devo inserire WheelCatcher nei componenti e non nei riferimenti in quanto viene richiesta uan DLL.

    E' necessaria anche una dll? e dove la trovo esattamente dato che ho trovato solo OCX??

    Scusami se ti disturbo.
    Windows 7 Home Premium SP1 64 bit - AMD Athlon(tm) 64x2 Dual Core Processor 6000+ 3.00 GHz - 4 GB RAM - NVIDIA GeForce 8400 GS

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.