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 09.01.2000

Diese Seite wurde zuletzt aktualisiert am 09.01.2000
Aktuell im ABOUT Visual Basic-MagazinGrundlagenwissen und TechnologienKnow How, Tipps und Tricks rund um Visual BasicActiveX-Komponenten, Controls, Klassen und mehr...AddIns 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 zum ABOUT Visual Basic-Magazin, Kontakt und Impressum

Zurück...

Zurück...


Anzeige

(-hg) mailto:hg_scrollbarsize@aboutvb.de

Die Breiten und Höhen von Bildlaufleisten (ScrollBars) sollten auch in Ihren eigenen Anwendungen immer den Systemeinstellungen entsprechen. Leider bieten die Visual Basic-eigenen Steuerelemente HScrollBar und VScrollBar keine eingebaute Mögilchkeit, sich automatisch auf diese Größen einzustellen und bei Änderungen durch den Anwender auch nachträglich darauf einzustellen.

Die im System eingestellten Größen erhalten Sie über Aufrufe der API-Funktion MSDN-Library - API GetSystemMetricsGetSystemMetrics, denen die Kennungen SM_CYHSCROLL für die Höhe einer horizontalen und SM_CXVSCROLL für die Breite einer vertikalen Bildlaufleiste als Parameter übergeben werden. Wie bei API-Funktionen üblich, erhalten Sie diese Größen in der Maßeinheit Pixels.

Private Declare Function GetSystemMetrics Lib "user32" _
 (ByVal nIndex As Long) As Long
Private Const SM_CYHSCROLL = 3
Private Const SM_CXVSCROLL = 2

ScrollBarHeight = GetSystemMetrics(SM_CYHSCROLL)
ScrollBarWidth = GetSystemMetrics(SM_CXVSCROLL)

Mittels der Methoden MSDN Library - VB ScaleX, ScaleYScaleX und ScaleY eines Containers (Forms, UserControls usw.) können Sie die Größen auch gleich dessen Maßeinheit (MSDN Library - VB ScaleModeScaleMode) umrechnen lassen, beispielsweise in einem Form:

With Me
  ScrollBarHeight = .ScaleY(GetSystemMetrics(SM_CYHSCROLL), _
   vbPixels, .ScaleMode)
  ScrollBarWidth = .ScaleY(GetSystemMetrics(SM_CXVSCROLL), _
   vbPixels, .ScaleMode)
End With

In praktische Funktionen verpackt sieht das so aus:

Private Declare Function GetSystemMetrics Lib "user32" _
 (ByVal nIndex As Long) As Long

Public Function HScrollBarSysHeight(Container As Object, _
 Optional ScaleMode As Integer) As Single
  Const SM_CYHSCROLL = 3
  
  With Container
    If ScaleMode = 0 Then
      HScrollBarSysHeight = .ScaleY(GetSystemMetrics(SM_CYHSCROLL), _
       vbPixels, .ScaleMode)
    Else
      HScrollBarSysHeight = .ScaleY(GetSystemMetrics(SM_CYHSCROLL), _
       vbPixels, ScaleMode)
    End If
  End With
End Function

Public Function VScrollBarSysWidth(Container As Object, _
 Optional ScaleMode As Integer) As Single
  Const SM_CXVSCROLL = 2
  
  With Container
    If ScaleMode = 0 Then
      VScrollBarSysWidth = .ScaleX(GetSystemMetrics(SM_CXVSCROLL), _
       vbPixels, .ScaleMode)
    Else
      VScrollBarSysWidth = .ScaleX(GetSystemMetrics(SM_CXVSCROLL), _
       vbPixels, ScaleMode)
    End If
  End With
End Function

Über diese Funktionen erfahren Sie die Systemgrößen der Bildlaufleisten

Sie übergeben diesen Funktionen im ersten Parameter eine Referenz auf den betreffenden Container und erhalten die jeweilige Größe in der Maßeinheit dieses Containers oder in der optional im zweiten Parameter angebbaren Maßeinheit zurück.

Eine Änderung der Bildlaufleisten-Größen durch den Anwender können Sie mit einem einfachen Kniff jederzeit in Erfahrung bringen, selbst wenn Ihre Anwendung läuft, ohne ein gesondertes Steuerelement wie das MSDN-Library - VB SysInfo-SteuerelementSysInfo-Steuerelement verwenden zu müssen. Da die beiden Funktions-Aufrufe kaum ins Gewicht fallen, können Sie diese auch aus dem Paint-Ereignis des Containers heraus aufrufen. Sie werden dann zwar jedes Mal aufgerufen, wenn der Container neu dargestellt wird, aber eben auch dann, wenn gerade die Systemeinstellungen geändert worden sind.


Modul modScrollSizes (modScrollSizes.bas - ca. 1 KB)






Themen - Allgemeines
Themen - Entwicklungsumgebung (VB-IDE)
Themen - Forms
Themen - Steuerelemente (Controls)
Themen - Grafik
Themen - Dateien
Themen - UserControls
Themen - Einsteiger-Tipps
Themen - Wussten Sie...?

Übersicht nach Titeln in alphabetischer Reihenfolge
Übersicht nach Erscheinungsdatum

Schnellsuche



Zum Seitenanfang

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

Zum Seitenanfang

Zurück...

Zurück...

Download Internet Explorer