ABOUT Visual Basic Programmieren Programmierung Download Downloads Tips & Tricks Tipps & Tricks Know-How Praxis VB VBA Visual Basic for Applications VBS VBScript Scripting Windows ActiveX COM OLE API ComputerPC Microsoft Office Microsoft Office 97 Office 2000 Access Word Winword Excel Outlook Addins ASP Active Server Pages COMAddIns ActiveX-Controls OCX UserControl UserDocument Komponenten DLL EXE
Diese Seite wurde zuletzt aktualisiert am 01.02.2001

Diese Seite wurde zuletzt aktualisiert am 01.02.2001
Aktuell im ABOUT Visual Basic-MagazinGrundlagenwissen und TechnologienKnow How, Tipps und Tricks rund um Visual BasicAddIns für die Visual Basic-IDE und die VBA-IDEVBA-Programmierung in MS-Office und anderen AnwendungenScripting-Praxis für den Windows Scripting Host und das Scripting-ControlTools, Komponenten und Dienstleistungen des MarktesRessourcen für Programmierer (Bücher, Job-Börse)Dies&Das...

Themen und Stichwörter im ABOUT Visual Basic-Magazin
Code, Beispiele, Komponenten, Tools im Überblick, Shareware, Freeware
Ihre Service-Seite, Termine, Job-Börse
Melden Sie sich an, um in den vollen Genuss des ABOUT Visual Basic-Magazins zu kommen!
Informationen zur AVB-Web-Site, Kontakt und Impressum

Zurück...

Rückwärtsregler

Zurück...

(-hg) mailto:hg_reverseslider@aboutvb.de

Leider ist das Slider-Steuerelement aus den Microsoft Common Controls etwas einseitig veranlagt - es besteht darauf, dass der minimale Wert oben bzw. links zu sein habe. Aber gerade beim vertikalen Einsatz eines Schiebereglers ist man eigentlich gewohnt, den minimalen Wert unten vorzufinden und nach oben hin "aufzudrehen". Im Gegensatz zu den Scrollbars können Sie das Slider-Steuerelement jedoch nicht einfach dadurch überlisten, indem Sie die Werte der Min- und Max-Eigenschaften vertauschen.

Die Klasse clsReverseSlider sorgt für eine Umkehrung der Werte, indem sie automatisch den aktuellen Wert vom Max-Wert abzieht und somit den eigentlich gewünschten Wert der umgekehrten Orientierung liefert. Bis auf einen kleinen Schönheitsfehler funktioniert das prächtig: Nur die im Slider eingebaute automatische ToolTip-Anzeige des aktuellen Wertes klebt nach wie vor an der ursprünglichen Orientierung. Die einfachste Abhilfe ist, diese Anzeige einfach abzuschalten und auf Wunsch (Eigenschaft AutoToolTip der Klasse) in die normale, von Visual Basic selbst verwaltete ToolTipText-Eigenschaft zu verlagern. Das sieht zwar nicht ganz so elegant aus, wie das Slider-Original - aber darum können Sie das ja über die Eigenschaft AutoToolTipp der Klasse abschalten.

Sie legen im Modul des Forms, auf dem der Slider platziert werden soll, eine Objekt-Variable des Typs clsReverseSlider an und weisen ihr, beispielsweise im Form_Load-Ereignis, eine Instanz der Klasse zu. Dann rufen Sie deren Init-Methode auf und übergeben ihr als ersten Parameter den betreffenden Slider. Im zweiten, optionalen Parameter AutoToolTip können Sie die erwähnte Anzeige des aktuellen Slider-Wertes unterbinden, indem Sie False übergeben. Voreingestellt ist True. Im Code der Init-Methode wird der Wert der Value-Eigenschaft auch gleich auf die umgekehrten Verhältnisse umgestellt.

Sie können die Eigenschaften Max, Min und Value wie gewohnt im Design-Modus setzen. Damit Sie in Ihrem weiteren Code nicht mit zwei verschiedenen Objekt-Zugriffen hantieren müssen, reicht die Klasse die wichtigsten Eigenschaften des Sliders direkt durch und stellt auch die beiden Ereignisse Change und Scroll zur Verfügung. Die Eigenschaften Max, Min und Value der Klasse geben automatisch die Werte der Umkehrung zurück. Direkten Zugriff auf den Slider selbst erhalten Sie über die Eigenschaft Slider.

Private Declare Function SendMessage Lib "user32" _
 Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, _
 ByVal wParam As Long, lParam As Any) As Long

Public Event Change()
Public Event Scroll()

Private WithEvents eSlider As Slider

Private pAutoToolTip As Boolean

Public Property Get Max() As Long
  Max = eSlider.Min
End Property

Public Property Let Max(New_Max As Long)
  eSlider.Min = New_Max
End Property

Public Property Get Min() As Long
  Min = eSlider.Max
End Property

Public Property Let Min(New_Min As Long)
  eSlider.Max = New_Min
End Property

Public Property Get AutoToolTip() As Boolean
  AutoToolTip = pAutoToolTip
End Property

Public Property Let AutoToolTip(New_AutoToolTip As Boolean)
  pAutoToolTip = New_AutoToolTip
End Property

Public Property Get Slider() As Slider
  Set Slider = eSlider
End Property

Public Property Get Value() As Long
  With eSlider
    Value = .Max - .Value
  End With
End Property

Public Property Let Value(New_Value As Long)
  With eSlider
    .Value = .Max - New_Value
  End With
End Property

Public Function Init(Slider As Slider, _
 Optional ByVal AutoToolTip As Boolean = True) As Long

  Const TBM_SETTOOLTIPS = &H41D
  
  Set eSlider = Slider
  pAutoToolTip = AutoToolTip
  With eSlider
    SendMessage .hwnd, TBM_SETTOOLTIPS, 0, 0
    .Value = .Max - .Value
    Init = .Max - .Value
  End With
  zAutoToolTip
End Function

Private Sub eSlider_Click()
  zAutoToolTip
  RaiseEvent Change
End Sub

Private Sub eSlider_Scroll()
  zAutoToolTip
  RaiseEvent Scroll
End Sub

Private Sub zAutoToolTip()
  If pAutoToolTip Then
    With eSlider
      .ToolTipText = .Max - .Value
    End With
  End If
End Sub

Die Klasse clsReverseSlider und Beispiel-Projekt (reverseslider.zip - ca. 3,5 KB)



Komponenten-Übersicht

Schnellsuche




Zum Seitenanfang

Copyright © 1999 - 2023 Harald M. Genauck, ip-pro gmbh  /  Impressum

Zum Seitenanfang

Zurück...

Zurück...