vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 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:  11.578 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Vista, Win7, Win8, Win10 Beispielprojekt auf CD 

Summer-Special bei Tools & Components!
Gute Laune Sommer bei Tools & Components
Top Summer-Special - Sparen Sie teilweise bis zu 120,- EUR
Alle sev-Entwicklerkomponenten und Komplettpakete jetzt bis zu 25% reduziert!
zum Beispiel:
  • Developer CD nur 479,20 EUR statt 599,- EUR
  • sevDTA 3.0 nur 224,30 EUR statt 299,- EUR
  •  
  • vb@rchiv   Vol.6 nur 20,00 EUR statt 24,95 EUR
  • sevCoolbar 3.0 nur 55,20 EUR statt 69,- EUR
  • - Werbung -Und viele weitere Angebote           Aktionspreise nur für kurze Zeit gültig

    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 11.578 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