VBATools

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.

Obrazek

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).

Obrazek

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:

Obrazek

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.

Obrazek

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.