Tipp 0433 Tastenkürzel ein- und ausblenden
Autor/Einsender:
Datum:
  Jürgen Beil
22.01.2005
Entwicklungsumgebung:   VB 6
Um die Tastaturnavigation zu vereinfachen, werden die Tastenkürzel von Menüs, Schaltflächen, Kontrollkästchen, usw. unterstrichen dargestellt. Ab Windows 2000 kann man diese Funktion in den Systemeinstellungen auch abschalten (Anzeige-Eigenschaften).
Das entsprechende Kontrollkästchen heißt unter
Win XP 'Unterstrichene Buchstaben für Tastaturnavigation ausblenden (mit Alt-Taste einblenden)' und befindet sich im Dialog Effekte. Dieses wird über die Schaltfläche Effekte... auf dem Registerblatt Darstellung geöffnet.
Win 2000 'Tastaturnavigationszeiger ausblenden (mit Alt-Taste einblenden)' und befindet sich auf dem Registerblatt Effekte.
Mit der API-Funktion SystemParametersInfo kann man diese Einstellung unter
Win 98 & ME zwar ändern, dies hat aber nur auf wenige Fenster eine Auswirkung (z. B. den Windows-Beenden-Dialog). Es ist nicht möglich, die gewählte Option als Standard in der Registry zu speichern.
Anmerkungen
Sind die Buchstaben für die Tastaturnavigation ausgeblendet, erlebt man mit Visual Basic die ein oder andere Überraschung, abhängig vom Betriebssystem.
In der alternativen Darstellung werden nur die Menüs immer richtig angezeigt.
Win XP (Visual Styles) VB-Programme legen ein unterschiedliches Verhalten an den Tag, je nach dem, ob das Programm in der Entwicklungsumgebung (IDE) oder als EXE ausgeführt wird.
Tastenkürzel von Schaltflächen, Kontrollkästchen usw. werden in der IDE immer unterstrichen, in der EXE hingegen werden sie niemals unterstrichen!
Win 2000 & XP (Klassisch) Tastenkürzel von Schaltflächen, Kontrollkästchen usw. werden immer unterstrichen!
Win 98 & ME Tastenkürzel von Schaltflächen, Kontrollkästchen usw. werden niemals unterstrichen!
Code im Codebereich des Moduls
 
Option Explicit

Private Declare Function SystemParametersInfo Lib "user32" Alias _
    "SystemParametersInfoA" (ByVal uAction As Long, _
    ByVal uParam As Long, ByRef lpvParam As Any, _
    ByVal fuWinIni As Long) As Long

Private Const SPI_GETMENUUNDERLINES = &H100A
Private Const SPI_SETMENUUNDERLINES = &H100B

Private Const SPIF_SENDWININICHANGE = &H2
Private Const SPIF_UPDATEINIFILE = &H1

Public Function GetMenuUnderlines() As Long
  Dim lngMenuUnderlines As Long

  On Error Resume Next
  Call SystemParametersInfo(SPI_GETMENUUNDERLINES, 0, _
      lngMenuUnderlines, 0)

  GetMenuUnderlines = lngMenuUnderlines
  On Error GoTo 0
End Function

Public Sub SetMenuUnderlines(ByVal lngMenuUnderlines As Long, _
    Optional ByVal boolUpdateINIFile As Boolean = False)

  Dim lngUpdateINIFile As Long

  On Error Resume Next
  If boolUpdateINIFile Then lngUpdateINIFile = SPIF_UPDATEINIFILE

  Call SystemParametersInfo(SPI_SETMENUUNDERLINES, 0, _
      ByVal lngMenuUnderlines, SPIF_SENDWININICHANGE Or _
      lngUpdateINIFile)

  On Error GoTo 0
End Sub
 
Hinweis für VBA-Anwender
Die im Download befindliche *.bas-Datei kann für die Verwendung in einem (Office-)Programm im VB-Editor des entsprechenden Programms importiert werden, ein Import der *.frm-Datei ist nicht möglich.

Windows-Version
95
98/SE
ME
NT
2000
XP
Vista
Win 7
VB-Version
VBA 5
VBA 6
VB 4/16
VB 4/32
VB 5
VB 6


Download  (4 kB) Downloads bisher: [ 528 ]

Vorheriger Tipp Zum Seitenanfang Nächster Tipp

Startseite | Projekte | Tutorials | API-Referenz | VB-/VBA-Tipps | Komponenten | Bücherecke | VB/VBA-Forum | VB.Net-Forum | DirectX-Forum | Foren-Archiv | DirectX | VB.Net-Tipps | Chat | Spielplatz | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Sonntag, 22. Mai 2011