RSS
StartseiteKnowledge LibraryTop 10Impressum

Registersprünge

Register im TabStrip-Steuerelement per Standard-Tastenkombination wechseln

Wussten Sie schon... dass Sie über die Tastenkombination Strg+Tab zwischen den einzelnen Registerseiten eines Dialogfeldes wechseln können? Wenn ja, zeigt Ihnen dieser Artikel, wie Sie Ihre eigenen TabStrip-Dialoge Standardkonform aufpeppen können...

Wer länger mit Windows vertraut ist, wird wissen, dass man über die Tastenkombination <Strg>+<Tab> bzw. <Strg>+<Umschalt>+<Tab> in einem MDI Fenster zwischen den einzelnen Dokument-Fenstern wechseln kann. In Dialogfeldern dient diese Tastenkombination zum Wechsel zwischen den einzelnen Dialogseiten, die meist durch ein TabStrip-Steuerelement dargestellt werden, wie zum Beispiel der Dialog "Optionen" in Word.

Doch das TabStrip selber ist nicht für die Unterstützung dieser Tastenkombination zuständig. Diese müssen Sie selber im KeyDown-Ereignis des Form umsetzen. Dazu ist die KeyPreview-Eigenschaft des Form auf True zu setzen. Das KeyDown-Ereignis des TabStrip selber ist nicht geeignet, da die Tastenkombination <Strg>+<Tab> bzw. <Strg>+<Umschalt>+<Tab> auch dann funktionieren muss, wenn das TabStrip keinen Eingabefokus hat.

Die Umsetzung ist recht simpel: Wird die Kombination <Strg>+<Tab> gedrückt, wird der Index des aktuellen Registers erhöht, also das nächste Register ausgewählt. Folgt dem aktuellem Register kein weiteres, wird das erste Register gewählt. Die Kombination <Strg>+<Umschalt>+<Tab> invertiert diesen Vorgang; der Index aktuellen Registers wird verringert und somit das vorhergehende Register gewählt. Ist das aktuelle Register das erste Register, wird das letzte Register gewählt. Im Code schaut dies, wie folgt aus:
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
  If Shift And vbCtrlMask Then
    If KeyCode = vbKeyTab Then
      If Shift And vbShiftMask Then
        With TabStrip1
          If .SelectedItem.Index > 1 Then
            .Tabs(.SelectedItem.Index - 1).Selected = True
          Else
            .Tabs(.Tabs.Count).Selected = True
          End If
        End With
      Else
        With TabStrip1
          If .SelectedItem.Index < .Tabs.Count Then
            .Tabs(.SelectedItem.Index + 1).Selected = True
          Else
            .Tabs(1).Selected = True
          End If
        End With
      End If
    End If
  End If
End Sub

Die Anzeige der Inhalte der einzelnen Registerseiten erfolgt, wie gehabt, im Click-Ereignis des TabStrip. Dieses wird auch dann ausgelöst, wenn ein Register per Code ausgewählt wird.