Click here to Skip to main content
16,016,229 members
Home / Discussions / Visual Basic
   

Visual Basic

 
GeneralRe: Event on Scrolling to the end in flowlayoutpanel Pin
Nick Otten3-Jul-12 0:16
Nick Otten3-Jul-12 0:16 
GeneralRe: Event on Scrolling to the end in flowlayoutpanel Pin
Ammar_Ahmad3-Jul-12 13:36
Ammar_Ahmad3-Jul-12 13:36 
GeneralRe: Event on Scrolling to the end in flowlayoutpanel Pin
Nick Otten4-Jul-12 1:01
Nick Otten4-Jul-12 1:01 
GeneralRe: Event on Scrolling to the end in flowlayoutpanel Pin
Ammar_Ahmad6-Jul-12 13:24
Ammar_Ahmad6-Jul-12 13:24 
GeneralRe: Event on Scrolling to the end in flowlayoutpanel Pin
Nick Otten8-Jul-12 20:38
Nick Otten8-Jul-12 20:38 
GeneralRe: Event on Scrolling to the end in flowlayoutpanel Pin
Ammar_Ahmad10-Jul-12 2:32
Ammar_Ahmad10-Jul-12 2:32 
GeneralRe: Event on Scrolling to the end in flowlayoutpanel Pin
Nick Otten10-Jul-12 3:13
Nick Otten10-Jul-12 3:13 
GeneralRe: Event on Scrolling to the end in flowlayoutpanel Pin
Ammar_Ahmad10-Jul-12 15:15
Ammar_Ahmad10-Jul-12 15:15 
Alright so here is what I got so far:

VB
Dim WithEvents scrollhandler As MyListener 'class that will watch windows to see if your scrolling
    Private scrolled As Boolean = False 'boolean you can use to flip if a message box was displayed or not...(so it wont loop the messagebox.show)
    Private maxscroll As Int64 'int used to store the max value of the scrollbar
    '   Private index As Int32 = 0 'used for random loops to fill the txtscroll
    Private Const SB_HORZ As Integer = &H0
    Private Const SB_VERT As Integer = &H1

    'dll used to get the scrollbar value NOTE: if the scrollbar is not visible or you go higher then your max it will crash!
    <DllImport("user32.dll", CharSet:=CharSet.Auto)> _
    Public Shared Function GetScrollPos(ByVal hWnd As IntPtr, ByVal nBar As Integer) As Integer
    End Function

    'dll used to set the scrollbar value NOTE: if the scrollbar is not visible or you go higher then your max it will crash!
    <DllImport("user32.dll")> _
    Private Shared Function SetScrollPos(ByVal hWnd As IntPtr, ByVal nBar As Integer, ByVal nPos As Integer, ByVal bRedraw As Boolean) As Integer
    End Function


    Public Property HScrollPos() As Integer 'property to set or get the horisontal scrollbar value
        Get
            Return GetScrollPos(DirectCast(FlowLayoutPanel1.Handle, IntPtr), SB_HORZ) 'change txtscroll to the control you use. dont forget the .handle
        End Get
        Set(ByVal value As Integer)
            SetScrollPos(DirectCast(FlowLayoutPanel1.Handle, IntPtr), SB_HORZ, value, True) 'change txtscroll to the control you use. dont forget the .handle
        End Set
    End Property


    Public Property VScrollPos() As Integer 'Property to set or get the Vertical scrollbar value
        Get
            Return GetScrollPos(DirectCast(FlowLayoutPanel1.Handle, IntPtr), SB_VERT) 'change txtscroll to the control you use. dont forget the .handle
        End Get
        Set(ByVal value As Integer)
            SetScrollPos(DirectCast(FlowLayoutPanel1.Handle, IntPtr), SB_VERT, value, True) 'change txtscroll to the control you use. dont forget the .handle
        End Set
    End Property

    'will add load in the end.

    Private Sub FlowLayoutPanel1_MouseWheelScroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FlowLayoutPanel1.MouseWheel
        scrollhandler_MyScroll(e, e) 'needed to catch the scrollwheel event.
    End Sub


    Private Sub scrollhandler_MyScroll(ByVal sender As Object, ByVal e As System.EventArgs) Handles scrollhandler.MyScroll
        If VScrollPos = maxscroll And scrolled Then 'the scrollbar is down and no message was given, showing a messagebox
            MessageBox.Show("you reached the max on the verticle scrollbar!", "yay")
            scrolled = False 'messagebox was shown, flip bool to prevent loop
        ElseIf VScrollPos < maxscroll Then
            scrolled = True 'the scroll value is smaller then the maximum scroll value. meaning the next time the bar hits the bottem a new textbox should be shown
        End If
    End Sub

    Private Function CalcMaxScroll(ByVal controlhight As Int32, ByVal controlwith As Int32, ByVal itemhight As Int32, ByVal itemwith As Int32, ByVal totalitems As Int32)
        Return totalitems - (Math.Floor(controlwith / itemwith) * Math.Floor(controlhight / itemhight))
    End Function

    Private Class MyListener
        Inherits NativeWindow

        Public Event MyScroll(ByVal sender As Object, ByVal e As EventArgs)
        Const WM_MOUSEACTIVATE = &H21
        Const WM_MOUSEMOVE = &H200
        Private control As Control

        Public Sub New(ByVal control As Control)
            AssignHandle(control.Handle) 'docks handler to given control
        End Sub

        Protected Overrides Sub WndProc(ByRef Messageevent As Message)
            Const WM_HSCROLL = &H114
            Const WM_VSCROLL = &H115
            If Messageevent.Msg = WM_HSCROLL Or Messageevent.Msg = WM_VSCROLL Then 'looks if the horisontal or verticle scrollbar is moving
                'one of the scrollbars is moving, throw event
                RaiseEvent MyScroll(control, New EventArgs)
            End If
            MyBase.WndProc(Messageevent)
        End Sub

        Protected Overrides Sub Finalize()
            'not used in example but drops the scroll watcher
            ReleaseHandle()
            MyBase.Finalize()
        End Sub

    End Class


    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        scrollhandler = New MyListener(FlowLayoutPanel1)
        maxscroll = CalcMaxScroll(FlowLayoutPanel1.Size.Height, FlowLayoutPanel1.Size.Width, 114, 1075, 19)

        '19 number of tweets
        '114 height of tweettimelinecontrol
        '1075 width of flowlayoutpanel1
        'last number tells the number of items. (read that from a global var)

    End Sub


Source code also attached:
http://www.mediafire.com/?m63ox9sllr887dd[^]

I am pretty sure I am doing everything right... but its just not working with flowlayoutpanel :/
GeneralRe: Event on Scrolling to the end in flowlayoutpanel Pin
Nick Otten10-Jul-12 20:41
Nick Otten10-Jul-12 20:41 
AnswerRe: Event on Scrolling to the end in flowlayoutpanel Pin
Luc Pattyn29-Jun-12 2:56
sitebuilderLuc Pattyn29-Jun-12 2:56 
JokeRe: Event on Scrolling to the end in flowlayoutpanel Pin
Nick Otten29-Jun-12 3:01
Nick Otten29-Jun-12 3:01 
GeneralRe: Event on Scrolling to the end in flowlayoutpanel Pin
Luc Pattyn29-Jun-12 4:19
sitebuilderLuc Pattyn29-Jun-12 4:19 
GeneralRe: Event on Scrolling to the end in flowlayoutpanel Pin
Nick Otten29-Jun-12 4:31
Nick Otten29-Jun-12 4:31 
GeneralRe: Event on Scrolling to the end in flowlayoutpanel Pin
Ammar_Ahmad29-Jun-12 8:28
Ammar_Ahmad29-Jun-12 8:28 
AnswerRe: Event on Scrolling to the end in flowlayoutpanel Pin
Luc Pattyn29-Jun-12 9:00
sitebuilderLuc Pattyn29-Jun-12 9:00 
GeneralRe: Event on Scrolling to the end in flowlayoutpanel Pin
Ammar_Ahmad30-Jun-12 0:08
Ammar_Ahmad30-Jun-12 0:08 
QuestionHelp for FTP client upload Pin
mikrophun27-Jun-12 21:01
mikrophun27-Jun-12 21:01 
AnswerRe: Help for FTP client upload Pin
Bernhard Hiller27-Jun-12 21:37
Bernhard Hiller27-Jun-12 21:37 
GeneralRe: Help for FTP client upload Pin
mikrophun27-Jun-12 21:42
mikrophun27-Jun-12 21:42 
GeneralRe: Help for FTP client upload Pin
mikrophun27-Jun-12 22:27
mikrophun27-Jun-12 22:27 
AnswerRe: Help for FTP client upload Pin
Eddy Vluggen28-Jun-12 1:55
professionalEddy Vluggen28-Jun-12 1:55 
AnswerRe: Help for FTP client upload Pin
mikrophun28-Jun-12 17:40
mikrophun28-Jun-12 17:40 
QuestionBasic program, very basic code, but still error, why!. [rich text box] Pin
Student1023027-Jun-12 20:55
Student1023027-Jun-12 20:55 
AnswerRe: Basic program, very basic code, but still error, why!. [rich text box] Pin
Bernhard Hiller27-Jun-12 21:39
Bernhard Hiller27-Jun-12 21:39 
GeneralRe: Basic program, very basic code, but still error, why!. [rich text box] Pin
Student1023027-Jun-12 23:33
Student1023027-Jun-12 23:33 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.