CC1 – Slider
Slider to kontrolka ActiveX z zestawu biblioteki Common Controls 1 (plik mscomctl.ocx) dla kompilacji Office 32/64 bit.
Kontrolka którą dość rzadko się używa w projektach, niemniej jednak dopełnia ona zestaw dając możliwość wyboru opcji podobnie jak RadioButtony jednakże wizualnie sprowadzona do jednego poziomego lub pionowego paska ze wskaźnikiem. Poniżej pokazuje wszystkie interesujące ustawienia realizowane parametrami Orientation, SelectRange, TickStyle. Obsługuje się ją myszą,po przez przytrzymanie lewego klawisza i wybraniu odpowiedniej pozycji.

Kontrolka posiada ustawienie (Custom) z którego możemy się dowiedzieć jakie elementy kontrolki możemy wykorzystać. Z istotniejszych jest pozycja startowa SelStart (poniżej ustawiona na 5) z max 10. Interesującym parametrem jest SmallChange, który polega na możliwości przesunięcia wskaźnika strzałkami (w tym przypadku o 2).

No to spróbujmy sobie coś oprogramować, tak aby przykład na zastosowanie nam się umocnił. Przyjmijmy że jest to wskaźnik odchylenia od -100/100 oraz ma on wskazywać dynamicznie przesuwaną pozycję na podziałce. Wartość wskazania będzie prezentować kontrolka label, która wraz z dwoma innymi ma pokazywać Max i Min określając kierunek, a samo najechanie na suwak ma pokazać w chmurce wartość kontrolki:

Jak zatem wygląda ustawienie takiej kontrolki w formularzu:
Private Sub Slider1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As stdole.OLE_XPOS_PIXELS, ByVal y As stdole.OLE_YPOS_PIXELS)
Slider1.ControlTipText = Slider1.Value 'dynamiczne przekazanie wartości suwaka
End Sub
Private Sub Slider1_Scroll()
Label1.Caption = " Przesunięto na pozycję: " & Slider1.Value 'opis w chmurce poniżej widoczne po najechaniu myszą
End Sub
Private Sub UserForm_Initialize()
With Slider1
.Text = "Przytrzymaj i przesuń na odpowiednią pozycję"
.Max = 100
.Min = -100
.SelStart = 0 'ustawienie początkowe
.TickFrequency = 10 'ilość kresek widoczne pod wskaźnikiem
Label1.Caption = " Przesunięto na pozycję: " & .SelStart 'przekazanie ustawień początkowych do kontrolki Ladel
End With
End Sub
Mając zwróconą wartość Value możemy to wykorzystać w dalszym przebiegu kodu, a łatwość obsługi takiej kontrolki jest jej zaletą. Można też przekazać wartość do tej kontrolki, aby wskazać postęp przeprowadzonych kroków formularza. Spróbujmy zatem wykonać przykład mechanizmu przekazującego dynamicznie co 1 sek wartość kontrolki Slider.

Oto prosty kod realizujący tą czynność czym zakańczamy możliwości tej kontrolki.
Private Sub CommandButton1_Click()
Dim x&
For x = 1 To 10
DoEvents
With Slider1
.Value = x
Label1 = Format(x / 10, "0%")
End With
Application.Wait (Now + TimeValue("00:00:01")) 'oczekiwanie 1 sek
Next
End Sub
Jeśli uważasz że pokazane materiały są godne polecenia – podziel się tą wiadomością z innymi pozostawiając odnośnik to tego materiału.
(c) Shon Oskar – http://VBATools.pl
Wszelkie prawa zastrzeżone. Żadna część ani całość tego artykułu nie może być powielana ani publikowana bez zgody autora.