Standard- und Kontextmenüs


Menüs (Standardmenüs) sind in Windows-Anwendungen weit verbreitet. Sie haben eine Reihe von Vorteilen:

Wenn eine neue Anwendung in VB entworfen wird, sollten existierende Menü-Konventionen benutzt werden, es sei denn, es gibt einen sehr guten Grund, von diesen abzuweichen.

Menüs werden mit dem Menü-Editor erstellt (in der Menüleiste von VB im Extras-Menü zu finden). Dieser Editor kann auch durch einen Click auf das -Symbol in der Symbolleiste aufgerufen werden.

Die obere Hälfte des Menü-Editors enthält die Eigenschaften des jeweiligen Menüeintrages. Die untere Hälfte enthält das Menü-Listenfeld, in dem die Menüstrukturierung (Hauptmenü/Untermenü/weiteres Untermenü/etc.) für die aktuelle Form erstellt wird. Der zuvor abgebildete Menü-Editor erzeugt folgendes Menü:


Die Schaltflächen im Menü-Editor haben folgende Funktionen:

Schaltfläche Beschreibung
Nächstes Verschiebt die Markierung in die nächste Zeile.
Einfügen Fügt im Listenfeld eine Zeile über der momentan ausgewählten Zeile ein.
Löschen Löscht die momentan ausgewählte Zeile.
OK Schließt den Menü-Editor und übernimmt alle Änderungen für die zuletzt ausgewählte Form. Das Menü ist zur Entwurfszeit verfügbar, aber das Auswählen eines Menüs zur Entwurfszeit öffnet das Codefenster für das Click-Ereignis dieses Menüs, statt Ereigniscode auszuführen.
Abbrechen Schließt den Menü-Editor und verwirft alle Änderungen.

Wenn ein Entrag im Caption-Textfeld eingegeben wird, erscheint er gleichzeitig auch im Menü-Listenfeld. Wird ein Eintrag aus dem Menü-Listenfeld ausgewählt, können im oberen Teil des Menü-Editors dessen Eigeschaften bearbeitet werden (in ähnlicher Weise wie das Bearbeiten von Steuerelemente-Eigenschaften im Eigenschaften-Fenster).


Um dies (das Setzen eines Häkchens) zur Laufzeit zu tun (Fallunterscheidungen und Indexzahlen können nur übernommen werden, wenn die Anordnung der Menü-Einträge so wie im gezeigten Beispiel aussieht):

  Sub mnuLaufweite_Click (Index As Integer)
    Dim MenüWahl As Integer

    For MenüWahl = 1 To 3
      Rem Häkchen aus jedem Eintrag des Untermenüs entfernen.
      mnuLaufweite(MenüWahl).Checked = False
    Next MenüWahl

    Rem Häkchen setzen beim neu gewählten Menüeintrag.
    mnuLaufweite(Index).Checked = True

    Select Case Index
      Case 1    ' Eng
        Rem  Code einfügen für 'Eng'.
      Case 2    ' Normal
        Rem  Code einfügen für 'Normal'.
      Case 3    ' Weit
    End Select
  End Sub


Kontextmenüs

Ein Kontextmenü ist ein Menü, das auf der Oberfläche einer Form angezeigt wird, und nicht mit der Menüleiste verbunden ist.

Beispiel für die Kontextmenü-Methode:

Der folgende Code zeigt ein Kontextmenü an der Cursorposition wenn der Benutzer mit der rechten Maustaste auf die Form clickt. Um dieses Beispiel auszuprobieren, erstellen sie eine Form mit einem Menü namens "mnuDatei" ("mnuDatei" braucht zumindest ein Untermenü). Kopieren sie den Code in den Deklarationsabschnitt der Form und starten Sie dieses Programm anschließend.

  Sub Form_MouseDown (Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button = 2 Then PopupMenu mnuDatei

  End Sub

In obigem Beispiel erscheint das Kontextmenü an der Position X, Y des Cursors, wenn die rechte Maustaste gedrückt wird (Button = 2). Schauen Sie in der Online-Hilfe von VB nach, um mehr über die Einstellungen zu erfahren, die für ein bestimmtes Verhalten von Kontextmenüs verwendet werden können.

Anmerkung: Alle Steuerelemente werden relativ zu den Koordinaten des einbettenden Objekts angezeigt, demnach würde ein Setzen von X und Y auf 0 ein Kontextmenü in der linken oberen Ecke der Form anzeigen.


Hauptseite

Übungen mit Standard- oder Kontextmenüs:

Übung 4 (Menü- und Listen-Bearbeitung)
Übung 12 (Multiple Document Interface)