Seite 1 von 1
MenuItem aufrufen
Verfasst: 08.10.2009 17:13
von SIS
Hallo,
Mal wieder habe ich eine Anfängerfrage, bei der ich einfach nicht weiter weiß
Ich habe in meinem Programm ein Menü, anhand "CreateMenu" mit einzelnen Submenüs erstellt. Diese haben ja eine eigene Id um sie aufzurufen. Und genau da liegt mein Problem..wie rufe ich ein MenuItem(1, "MENU" +Chr(9)+"Ctrl+O") auf, sodass ich ein MessageRequester einbauen kann?
Ich hab da Stunden rumexperementiert und nichts ist bei rumgekommen -.-
Wäre um eure Hilfe sehr dankbar.
Code: Alles auswählen
CreateMenu(#Menu, WindowID(0))
MenuTitle("MENU")
MenuItem(1, "MENU" +Chr(9)+"Ctrl+O")
MenuItem(2, "MENU2" +Chr(9)+"Ctrl+S")
MenuTitle("SETTINGS")
MenuItem(4, "fgh"+Chr(9)+"Ctrl+A")
MenuItem(5, "gfh"+Chr(9)+"Ctrl+A")
MenuTitle("MENU2")
MenuItem(6, "fg"+Chr(9)+"Ctrl+A")
MenuItem(7, "ghjgf"+Chr(9)+"Ctrl+A")
Re: MenuItem aufrufen
Verfasst: 08.10.2009 17:25
von X360 Andy
Schau dir am besten mal das MenuItem Beispiel an.
Und dort das mit die Abfrage der Events.
Code: Alles auswählen
;
; ------------------------------------------------------------
;
; PureBasic - Menu example file
;
; (c) 2003 - Fantaisie Software
;
; ------------------------------------------------------------
;
;
; We just have to open a window and see when an event happen on the menu
;
If OpenWindow(0, 100, 150, 195, 260, "PureBasic - Menu")
;
; Create the menu. The indent is very important here for a good lisibility
;
If CreateMenu(0, WindowID(0))
MenuTitle("File")
MenuItem( 1, "&Load...")
MenuItem( 2, "Save")
MenuItem( 3, "Save As...")
MenuBar()
OpenSubMenu("Recents")
MenuItem( 5, "Pure.png")
MenuItem( 6, "Basic.jpg")
OpenSubMenu("Even more !")
MenuItem( 12, "Yeah")
CloseSubMenu()
MenuItem( 13, "Rocks.tga")
CloseSubMenu()
MenuBar()
MenuItem( 7, "&Quit")
MenuTitle("Edition")
MenuItem( 8, "Cut")
MenuItem( 9, "Copy")
MenuItem(10, "Paste")
MenuTitle("?")
MenuItem(11, "About")
EndIf
DisableMenuItem(0, 3, 1)
DisableMenuItem(0, 13, 1)
;
; This is the 'event loop'. All the user actions are processed here.
; It's very easy to understand: when an action occurs, the EventID
; isn't 0 and we just have to see what have happened...
;
Repeat
Select WaitWindowEvent()
Case #PB_Event_Menu
Select EventMenu() ; To see which menu has been selected
Case 11 ; About
MessageRequester("About", "Cool Menu example", 0)
Default
MessageRequester("Info", "MenuItem: "+Str(EventMenu()), 0)
EndSelect
Case #PB_Event_CloseWindow
Quit = 1
EndSelect
Until Quit = 1
EndIf
End
Re: MenuItem aufrufen
Verfasst: 08.10.2009 17:28
von ts-soft
Ein ausführbarer Code macht es den Helfern einfacher Dein Problem zu verstehen, bzw.
Dir ein Beispiel zu erstellen, aus dem Du die Lösung ersehen kannst. Codefragmente
sind im allg. nutzlos!
Code: Alles auswählen
If OpenWindow(0, 200, 200, 200, 100, "Menu Example")
; für die tastatur-shortcuts im menü
; der einfachheit halber erhalten sie dieselbe Ereignis-ID wie das Menü
; Menü und Shortcuts - Ereignisse arbeiten auf derselben ebene, ebenso wie Toolbarbutton
AddKeyboardShortcut(0, #PB_Shortcut_Control | #PB_Shortcut_O, 1)
AddKeyboardShortcut(0, #PB_Shortcut_Control | #PB_Shortcut_S, 2)
If CreateMenu(0, WindowID(0)) ; hier beginnt das Erstellen des Menüs...
MenuTitle("Project")
MenuItem(1, "Open" + Chr(9) + "Ctrl+O")
MenuItem(2, "Save" + Chr(9) + "Ctrl+S")
MenuItem(3, "Save as" + Chr(9) + "Ctrl+A")
MenuItem(4, "Close" + Chr(9) + "Ctrl+C")
EndIf
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
Case #PB_Event_Gadget
;haben wir keins
Case #PB_Event_Menu
Select EventMenu()
Case 1
Debug "Open"
Case 2
Debug "Save"
; usw
EndSelect
EndSelect
ForEver
EndIf
Hier ein Beispiel mit Ereignisbehandlung, statt der Debug-Anweisungen kannste dort die
Messagerequester oder sonstwas einbauen.
Der Vollständigkeit halber hab ich gleich die Shortcuts mt eingebaut, falls dort das
Problem lag.
Gruß
Thomas
Re: MenuItem aufrufen
Verfasst: 08.10.2009 18:40
von SIS
Ok, dann werde ich in Zukunft den vollständigen Code einfügen.
Vielen Dank für eure Hilfe...sehr gutes Forum

Re: MenuItem aufrufen
Verfasst: 08.10.2009 20:31
von HeX0R
SIS hat geschrieben:Ok, dann werde ich in Zukunft den vollständigen Code einfügen.
Nicht vollständig, sondern lauffähig!
Wenn da vier Seiten an Code stehen, wird es schon wieder weniger Helferlein geben, die sich da durchkämpfen wollen.
Also immer so auf das nötigste dezimieren, dass es trotzdem alleine noch lauffähig bleibt.
Nicht einfach, und mit Arbeit verbunden, aber du erwartest ja auch vom Helfer, dass er Arbeit investiert.