Seite 1 von 1

Klick auf MenuTitle detektieren

Verfasst: 27.07.2013 21:49
von Daffy0815
Hallo,

wie kann man einen Klick auf einen Menütitel wie im folgenden Beispiel detektieren?
Ein rein horizontales Menü ohne "MenuItems".
Mit EventMenu gings irgendwie nicht.

Code: Alles auswählen

If OpenWindow(0, 200, 200, 300, 200, "Test")
    If CreateMenu(0, WindowID(0))
      MenuTitle("Erster Eintrag")
      MenuTitle("Zweiter Eintrag")
      MenuTitle("Dritter Eintrag")
    EndIf
    Repeat 
      
      
    Until WaitWindowEvent() = #PB_Event_CloseWindow
  EndIf
Gruß

Daffy

Re: Klick auf MenuTitle detektieren

Verfasst: 27.07.2013 21:59
von RSBasic
Ganz einfach:

Code: Alles auswählen

EnableExplicit

Define EventID

If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  If CreateMenu(0, WindowID(0))
    MenuItem(1, "Erster Eintrag")
    MenuItem(2, "Zweiter Eintrag")
    MenuItem(3, "Dritter Eintrag")
  EndIf
  
  Repeat
    EventID = WaitWindowEvent()
    If EventID = #PB_Event_Menu
      Select EventMenu()
        Case 1
          Debug "Erster Eintrag"
        Case 2
          Debug "Zweiter Eintrag"
        Case 3
          Debug "Dritter Eintrag"
      EndSelect
    EndIf
    If EventID = #PB_Event_CloseWindow
      End
    EndIf
  ForEver
EndIf

Re: Klick auf MenuTitle detektieren

Verfasst: 27.07.2013 22:54
von Daffy0815
Danke!

Die Verknüpfung mit dem Window in dem das Menü sich befindet muss man also in die Schleife "selbst" einbauen falls es mehrere Fenster mit solchen Menüs gibt.
Ich dachte man würde die Referenz über die ID des Menüs herstellen.

Also praktisch so:

Code: Alles auswählen

EnableExplicit

Define EventID
#WindowNum = 10
#MenuNum=20

If OpenWindow(#WindowNum, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  If CreateMenu(#MenuNum, WindowID(#WindowNum))
    MenuItem(1, "Erster Eintrag")
    MenuItem(2, "Zweiter Eintrag")
    MenuItem(3, "Dritter Eintrag")
  EndIf
 
  Repeat
    EventID = WaitWindowEvent()
    If EventID = #PB_Event_Menu
        If GetActiveWindow() = #WindowNum
          Select EventMenu()
            Case 1
              Debug "Erster Eintrag"
            Case 2
              Debug "Zweiter Eintrag"
            Case 3
            Debug "Dritter Eintrag"
        EndSelect
      EndIf
    EndIf  
    If EventID = #PB_Event_CloseWindow
      End
    EndIf
  ForEver
EndIf

Gruß

Daffy

Re: Klick auf MenuTitle detektieren

Verfasst: 27.07.2013 23:08
von ts-soft
Daffy0815 hat geschrieben:Ich dachte man würde die Referenz über die ID des Menüs herstellen.
Nein, über die WindowID() dahinter :wink:

Re: Klick auf MenuTitle detektieren

Verfasst: 30.07.2013 01:11
von Daffy0815
Kann man in ein solches, rein horizontales Menü eigentlich auch einen Trenner einfügen?
MenuBar() zeigt hier keine Wirkung!

Gruß

Daffy

Re: Klick auf MenuTitle detektieren

Verfasst: 30.07.2013 08:30
von RSBasic
MenuBar() erstellt eine horizontale Linie zwischen zwei MenuItems in einem aufgeklappten Menü.
Bild

Ansonsten wenn kein MenuTitle() angegeben wird, dann wird ein Zwischenraum (vertikal) eingefügt.
Bild

Wie sieht dein Code aus und was möchtest du genau?
Wo soll ein Trenner eingefügt werden? Im aufgeklappten Menü oder direkt in der Menüzeile zwischen zwei MenuItems/MenuTitles?

PS: Das nächste Mal bitte einfach ein neues Thema eröffnen. Es hat nichts mehr mit dem Thema "Klick auf MenuTitle" zu tun! Denk bitte daran! Sonst wirds einfach unüberslichlich, wenn jemand im Forum was suchen möchte.