vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Newsletter  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2017
 
zurück
Rubrik: Oberfläche · Menüs   |   VB-Versionen: VB4, VB5, VB604.08.06
PopUp-Menü wird nicht angezeigt :-(  Tipp des Monats

In diesem Tipp verraten wir Ihnen, wie Sie Probleme mit PopUp-Menüs umgehen können, wenn diese unter bestimmten Umständen einfach nicht angezeigt werden.

Autor:   Dieter OtterBewertung:     [ Jetzt bewerten ]Views:  9.720 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Vista, Win7, Win8, Win10 Beispielprojekt auf CD 

Folgendes Szenario:

  1. Auf einem Formular befindet sich ein ListView-Control
  2. Bei Rechtsklick auf einen Eintrag soll ein PopUp-Menü angezeigt werden (via Me.PopUpMenu ...)
  3. Im Click-Event des Menü-Eintrags wird eine zweite Form modal aufgerufen, die ebenfalls ein ListView oder TreeView-Control enthält
  4. Auch im zweiten Formular soll per Rechtsklick auf einen Listeneintrag wieder ein PopUp-Menü aufgerufen werden können
  5. Leider Fehlanzeige! Das PopUp-Menü wird nicht angezeigt!

Ursache:
Beim Aufruf des PopUp-Menüs im ersten Formular beansprucht das Menü alle Tastatur- und Mausereignisse für sich und zwar solange, bis das Click-Event des PopUp-Menüs vollständig abgearbeitet wurde. Dadurch dass die zweite Form aber modal geladen wird, bleibt die Ausführung des Codes in Form1 zunächst nach Aufruf der "Form2.Show vbModal"-Methode stehen.

Abhilfe schafft hier der Einsatz eines Timers.
Anstelle die zweite Form im Click-Event des PopUp-Menüs aufzurufen wird der Timer mit einer kurz eingestellten Intervallzeit gestartet. Die Click-Prozedur hat nun genügend Zeit den restlichen Code abzuarbeiten, ehe dann das Timer-Ereignis eintritt. Von hier aus wird dann die zweite Form aufgerufen und schon funktioniert's mit dem PopUp-Menü in der zweiten Form.

Beispiel:
Erstellen Sie ein neues Projekt:

  1. Platzieren Sie auf die Form1 einen CommandButton (Command1) und ein Timer-Control (Timer1)
  2. Öffnen Sie den VB-Menüeditor und erstellen einen neuen Menü-Eintrag "MyPopUp" mit Visible = False
  3. Fügen Sie ein paar Untermenüs ein (mnuPopUp(0), mnuPopUp(1), etc.)
  4. Fügen Sie dem Projekt eine neue Form hinzu (Form2)
  5. Platzieren Sie auf die 2. Form ebenfalls wieder einen CommandButton (Command1)
  6. Erstellen Sie für die zweite Form das gleiche PopUp-Menü wie für die erste Form

Code für die Form1
Fügen Sie nachfolgenden Code in den Codeteil der Form1:

Private Sub Command1_Click()
  ' Bei Klick auf den Button, PopUp-Menü öffnen
  Me.PopupMenu MyPopUp
End Sub
Private Sub mnuPopUp_Click(Index As Integer)
  ' Test: ohne Timer wird die zweite Form
  ' zwar korrekt angezeigt, jedoch wird dort dann kein 
  ' weiteres PopUp-Menü mehr angezeigt
  ' If Index = 0 Then
  '   Load Form2
  '   Form2.Show vbModal
  ' End If
  ' Exit Sub
 
  ' Form2 öffnen
  ' Umweg über Timer!
  Timer1.Tag = Index
  Timer1.Interval = 20
  Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
  Dim Index As Integer
 
  ' Timer deaktivieren  
  Timer1.Enabled = False
 
  ' mnuPopUp_Click hier auswerten!
  Index = Val(Timer1.Tag)
 
  If Index = 0 Then
    ' Bei Auswahl des ersten Menü-Eintrags, Form2 anzeigen
    Load Form2
    Form2.Show vbModal
  End If
End Sub

Code für die Form2:
Fügen Sie nachfolgenden Code in den Codeteil der Form2 ein:

<code>Private Sub Command1_Click()
  ' Bei Klick auf den Button, PopUp-Menü öffnen
  Me.PopupMenu MyPopUp
End Sub

Dieser Tipp wurde bereits 9.720 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2017 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel