Scrollbar werkt niet

Status
Niet open voor verdere reacties.

tyrope

Gebruiker
Lid geworden
10 feb 2006
Berichten
58
Hallo lezer,

Ik werk al een tijdje aan een programma dat data uit een spel servers haalt (zoals de namen, score en ping van spelers online) en dat netjes verwerkt in een interface.
sinds versie 1.2.2 is er onder het "spelers online" lijstje een nieuw lijstje gekomen, met de namen van alle clanleden in al onze server haalt, om ruimte te maken heb ik deze twee "groupBox"en een verticaal scrollbalkje gegeven, deze werkt niet helemaal.

stel er zijn 8 spelers in de geselecteerde server, in de lijst passen er maar 6, dus moeten er 2 "verstopt" worden achter het scrollbalkje. dit verstoppen werkt perfect, alleen het tevoorschijn halen niet helemaal.
omlaag scrollen: dit kan met 1 naam (dus speler 8 zal je nooit te zien krijgen), en hierna weigert de balk om omhoog of omlaag te gaan.

hieronder het deel van de source waar de scrollbalk veranderd word.

updateUI() - de functie die de data ververst, word aangeroepen door timer of knop.
Code:
    Public Sub updateUI()

		[knip]

		'prepare UI, empty boxes

		mainWindow.boxPlayerList.Controls.Clear()
		mainWindow.boxWhosPlaying.Controls.Clear()

		[knip]

		'print scrollbars

		PLScrollbar.Parent = mainWindow.boxPlayerList
		PLScrollbar.Location = New Point(242, 10)
		PLScrollbar.Size = New Point(17, mainWindow.boxPlayerList.Height - 15)
		WPScrollbar.Parent = mainWindow.boxWhosPlaying
		WPScrollbar.Location = New Point(242, 10)
		WPScrollbar.Size = New Point(17, mainWindow.boxWhosPlaying.Height - 15)

		[knip]

		'PlayerList Scrollbar

		If arrPlayers.GetUpperBound(0) > 6 Then
			PLScrollbar.Maximum = arrPlayers.GetUpperBound(0) + 1
			PLScrollbar.Enabled = True
			PLScrollbar.Minimum = 1
			PLScrollbar.Value = 1
			AddHandler PLScrollbar.Scroll, AddressOf playerListScroll
		Else
			PLScrollbar.Enabled = False
		End If
		PLScrollbar.Show()

		[knip]

		'Who's Playing Scrollbar

		If Soggy.GetUpperBound(0) > 8 Then
			WPScrollbar.Maximum = Soggy.GetUpperBound(0) + 1
			WPScrollbar.Enabled = True
			WPScrollbar.Minimum = 0
			WPScrollbar.Value = 0
			AddHandler WPScrollbar.Scroll, AddressOf whosPlayingScroll
		Else
			WPScrollbar.Enabled = False
		End If
		WPScrollbar.Show()

		[knip]
	End Sub
playerListScroll() - je raad het al, de functie die de lijst van de spelers moet scrollen
Code:
    Private Sub playerListScroll()
        For Each ctrl In GetChildControls(mainWindow.boxPlayerList)
            ctrl.location = New Point(ctrl.location.X, ctrl.location.Y - (PLScrollbar.Value - prevValuePL) * 15)
            If ctrl.Location.Y + ctrl.Height > mainWindow.boxPlayerList.Height - 2 Or ctrl.location.Y < 15 Then
                ctrl.Hide()
            Else
                ctrl.show()
            End If
        Next
        prevValuePL = PLScrollbar.Value
    End Sub
whosPlayingScroll() - de scroll functie voor de nieuwe lijst. (is iets groter)
Code:
    Private Sub whosPlayingScroll()
        For Each ctrl In GetChildControls(mainWindow.boxWhosPlaying)
            ctrl.location = New Point(ctrl.location.X, ctrl.location.Y - (WPScrollbar.Value - prevValueWP) * 15)
            If ctrl.Location.Y + ctrl.Height > mainWindow.boxPlayerList.Height - 2 Or ctrl.location.Y < 15 Then
                ctrl.Hide()
            Else
                ctrl.show()
            End If
        Next
        prevValueWP = WPScrollbar.Value
    End Sub
GetChildControls(parent) - de functie die alle labels (min de header, die in bold is) geeft aan de scroll functies
Code:
    Private Function GetChildControls(ByVal parent As Control) As ArrayList
        Dim result As New ArrayList()
        For Each ctrl As Control In parent.Controls
            If ctrl.GetType.ToString = "System.Windows.Forms.Label" And ctrl.Font.Bold = False Then
                result.Add(ctrl)
            End If
        Next
        Return result
    End Function
ik ben redelijk terughoudend wanneer het gaat om source code geven, dus als jullie meer nodig hebben moet je maar even roepen wat precies en ik plak 't erbij...

alvast bedankt voor de hulp, en uiteraard voor het lezen.

Mvg,
Tyrope
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan