apfel-q ?
apfel-q ?
HI,
ich lese, dass die Tasten-Kombi Apfel-q (Program Quit) per eventmenu() erfragt werden kann. Dazu gips die Konstante #pb_menu_quit
Per AddKeyboardShortcut(window#, #pb_menu_quit, 10) geht das fehlerlos, aber die Abfrage
Select EventMenu()
Case 10
wird nicht angesprungen. Bei anderen zugewiesenen Tasten funktioniert das.
Wie bekomme ich die Äpfel-q-Kombi abgefragt?
ich lese, dass die Tasten-Kombi Apfel-q (Program Quit) per eventmenu() erfragt werden kann. Dazu gips die Konstante #pb_menu_quit
Per AddKeyboardShortcut(window#, #pb_menu_quit, 10) geht das fehlerlos, aber die Abfrage
Select EventMenu()
Case 10
wird nicht angesprungen. Bei anderen zugewiesenen Tasten funktioniert das.
Wie bekomme ich die Äpfel-q-Kombi abgefragt?
Re: apfel-q ?
Code: Alles auswählen
OpenWindow(0, 270, 100, 200, 70, "Quit erkennen")
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
Case #PB_Event_Menu
If EventMenu() = #PB_Menu_Quit
MessageRequester("Info", "Quit im Menü oder <Cmd>+<q> wurde entdeckt!")
Break
EndIf
EndSelect
ForEver
Re: apfel-q ?
HI,
nein, geht nicht.
Ich habe auch das probiert:
... auch ohne "event=#PB_Event_Menu And"
addkeybordshortcut habe ich nicht für command q definiert in dem Fenster.
Ich sehe aber in der Mac-menuleiste (nicht die von meiner app), dass dort eine grafische Reaktion stattfindet. meine App wird dort ja als purebasic.0 dargestellt und bildet das einzige Menü in der Mac-Menu-Leiste. Anscheinend wird also schon auf apfel-q reagiert, nur nicht meine app. Meine app öffnet nur Fenster ohne jegliche Menüs, lediglich die Tasten frag ich ab, die ich vorher mit addkeybordshortcut dem Fenster zugewiesen hab.
nein, geht nicht.
Ich habe auch das probiert:
Code: Alles auswählen
event=WaitWindowEvent()
If event=#PB_Event_Menu And EventMenu()=#PB_Menu_Quit
MessageRequester("", "apfel-q")
EndIf
addkeybordshortcut habe ich nicht für command q definiert in dem Fenster.
Ich sehe aber in der Mac-menuleiste (nicht die von meiner app), dass dort eine grafische Reaktion stattfindet. meine App wird dort ja als purebasic.0 dargestellt und bildet das einzige Menü in der Mac-Menu-Leiste. Anscheinend wird also schon auf apfel-q reagiert, nur nicht meine app. Meine app öffnet nur Fenster ohne jegliche Menüs, lediglich die Tasten frag ich ab, die ich vorher mit addkeybordshortcut dem Fenster zugewiesen hab.
Re: apfel-q ?
Shortcut brauchst du nicht...
Oder
Code: Alles auswählen
Enumeration
#Main
EndEnumeration
;- Main Program
Procedure Main()
If OpenWindow(#Main, #PB_Ignore, #PB_Ignore, 400, 200, "Mac Menu", #PB_Window_SystemMenu)
; Enable Fullscreen
CompilerIf #PB_Compiler_OS = #PB_OS_MacOS
Protected NewCollectionBehaviour
NewCollectionBehaviour = CocoaMessage(0, WindowID(#Main), "collectionBehavior") | $80
CocoaMessage(0, WindowID(#Main), "setCollectionBehavior:", NewCollectionBehaviour)
CompilerEndIf
CompilerIf #PB_Compiler_OS = #PB_OS_MacOS
If Not IsMenu(#Main)
CreateMenu(0, WindowID(#Main))
EndIf
MenuItem(#PB_Menu_About, "")
SetMenuItemText(0, #PB_Menu_About, "&Über")
MenuItem(#PB_Menu_Preferences, "")
SetMenuItemText(0, #PB_Menu_Preferences, "Eins&tellungen")
;MenuItem(#PB_Menu_Quit, "") ; Not used
SetMenuItemText(0, #PB_Menu_Quit, "Be&enden")
CompilerEndIf
;-- Bind Events
;-- Main Event Loop
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
Case #PB_Event_Menu
Select EventMenu()
CompilerIf #PB_Compiler_OS = #PB_OS_MacOS
Case #PB_Menu_Quit
Break
Case #PB_Menu_About
MessageRequester("Über!", "I like Purebasic!", #PB_MessageRequester_Info)
Case #PB_Menu_Preferences
;
CompilerEndIf
EndSelect
EndSelect
ForEver
EndIf
EndProcedure : Main()
End
Code: Alles auswählen
Enumeration Window
#Main
EndEnumeration
Enumeration Menu
#MainMenu
EndEnumeration
Enumeration MenuItem
CompilerIf #PB_Compiler_OS <> #PB_OS_MacOS
#PB_Menu_About
#PB_Menu_Preferences
#PB_Menu_Quit
CompilerEndIf
;#MainMenu_...
EndEnumeration
;- Main Program
Procedure Main()
If OpenWindow(#Main, #PB_Ignore, #PB_Ignore, 400, 200, "Mac Menu", #PB_Window_SystemMenu)
; Enable Fullscreen
CompilerIf #PB_Compiler_OS = #PB_OS_MacOS
Protected NewCollectionBehaviour
NewCollectionBehaviour = CocoaMessage(0, WindowID(#Main), "collectionBehavior") | $80
CocoaMessage(0, WindowID(#Main), "setCollectionBehavior:", NewCollectionBehaviour)
CompilerEndIf
CompilerIf #PB_Compiler_OS = #PB_OS_MacOS
If Not IsMenu(#Main)
CreateMenu(0, WindowID(#Main))
EndIf
MenuItem(#PB_Menu_About, "")
SetMenuItemText(0, #PB_Menu_About, "&Über")
MenuItem(#PB_Menu_Preferences, "")
SetMenuItemText(0, #PB_Menu_Preferences, "Eins&tellungen")
MenuItem(#PB_Menu_Quit, "") ; Not used
SetMenuItemText(0, #PB_Menu_Quit, "Be&enden")
CompilerElse
Protected ProMenu.s
CreateMenu(#MainMenu, WindowID(#Main))
MenuTitle("&Ablage")
MenuItem(#PB_Menu_About, "&Über")
MenuBar()
MenuItem(#PB_Menu_Preferences, "Eins&tellungen")
MenuBar()
;MenuItems(#MainMenu_...
MenuBar()
MenuItem(#PB_Menu_Quit, "Be&enden")
CompilerEndIf
;-- Bind Events
;-- Main Event Loop
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
Case #PB_Event_Menu
Select EventMenu()
Case #PB_Menu_Quit
Break
Case #PB_Menu_About
MessageRequester("Über!", "I like Purebasic!", #PB_MessageRequester_Info)
Case #PB_Menu_Preferences
InputRequester("Einstellungen", "Daten:", Daten.s)
EndSelect
EndSelect
ForEver
EndIf
EndProcedure : Main()
End
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Re: apfel-q ?
Was genau geht nicht? Ich habe das Beispiel unter MacOS 10.6.8 (Snow Leopard) mit PB 5.60 x86 in der PureBasic-IDE ausprobiert und sowohl der Klick auf "PureBasic.0" in der Menüleiste und die anschließende Auswahl von "Quit PureBasic.0" wird erkannt als auch das gleichzeitige Drücken von <Cmd> und <q>, wenn das Beispielprogramm den Fokus hat.kartmanne hat geschrieben:nein, geht nicht.
Welche Version von Yosemite und welche Version von PureBasic verwendest Du und kompilierst Du mit der x86 oder x64-Version von PureBasic? Testest Du in der IDE oder testest Du die fertig kompilierte App?
Re: apfel-q ?
HI,
- Macbook Pro Mid 2010 (intel i7)
- MacOSX (10.10.5)
- PB5.6 x86
- sowohl über die IDE,
- als auch das compilat (jeweils im Ordner des pb-Projektes, als auch im MacOSX-Programme-Ordner.
"geht nicht" meint, dass ich im Programm den #pb_menu_quit nicht delektiert bekomme. Mein oben zitierter code sollte bei cmd+q die messagebox zeigen. ... die kommt nicht. Das compilat hatte bei jedem Test den Fokus. Der Bereich, in dem sich der code-schnipsel befindet, wird sicher durchlaufen.
- Macbook Pro Mid 2010 (intel i7)
- MacOSX (10.10.5)
- PB5.6 x86
- sowohl über die IDE,
- als auch das compilat (jeweils im Ordner des pb-Projektes, als auch im MacOSX-Programme-Ordner.
"geht nicht" meint, dass ich im Programm den #pb_menu_quit nicht delektiert bekomme. Mein oben zitierter code sollte bei cmd+q die messagebox zeigen. ... die kommt nicht. Das compilat hatte bei jedem Test den Fokus. Der Bereich, in dem sich der code-schnipsel befindet, wird sicher durchlaufen.
Re: apfel-q ?
HI,
puh - hab's gefunden. Ich habe deinen code in einem neuen Projekt ohne alles drumherum probiert, und ging. In meinem code hab ich den Wurm gefunden. Ich frage zwischendurch das eventwindow() ab - und das ist nicht das, was den apfel-q meldet. Damit bekomme ich nicht an der gedachten Stelle apfel-q delektiert. Naja... wer suchet, der findet...
Das eventwindow(), das Apfel-q meldet ist -1. Ist das auf macosx immer so?
puh - hab's gefunden. Ich habe deinen code in einem neuen Projekt ohne alles drumherum probiert, und ging. In meinem code hab ich den Wurm gefunden. Ich frage zwischendurch das eventwindow() ab - und das ist nicht das, was den apfel-q meldet. Damit bekomme ich nicht an der gedachten Stelle apfel-q delektiert. Naja... wer suchet, der findet...
Das eventwindow(), das Apfel-q meldet ist -1. Ist das auf macosx immer so?
Re: apfel-q ?
So, ich habe jetzt mein obiges Beispielprogramm auch einmal mit MacOS 10.10.5 (Yosemite) und PB 5.60 x86 in der IDE getestet und mein Programm erkennt sowohl die Auswahl in der Menüleiste von
PureBasic.0 > Quit PureBasic.0
als auch die Tastenkombination <Cmd> plus <q> und zeigt dann jeweils den MessageRequester an. Du hättest als erstes einmal mein Beispielprogramm testen sollen, dann wäre Dir sofort aufgefallen, dass der Einbau in Deinem größeren Projekt das Problem verursacht...
Schön, dass es jetzt auch in Deinem größeren Projekt funktioniert!
PureBasic.0 > Quit PureBasic.0
als auch die Tastenkombination <Cmd> plus <q> und zeigt dann jeweils den MessageRequester an. Du hättest als erstes einmal mein Beispielprogramm testen sollen, dann wäre Dir sofort aufgefallen, dass der Einbau in Deinem größeren Projekt das Problem verursacht...
Schön, dass es jetzt auch in Deinem größeren Projekt funktioniert!
Re: apfel-q ?
HI,
naja, ich bin halt kein "programmier-profi". Bei mir wächst Programminhalt/-struktur und Programmiersprachenverständnis und Funktionsinhalt des Projektes (ZES - siehe Signatur) gleichzeitig ... V-Modell-angelehnt könnte man meinen
Dieser Fall hat mich dazu gebracht, meine Ereignis-Abfrage-Struktur wieder zu ändern und dabei zu verschlanken, damit nicht mittendrin eine strukturelle und (für mich) kontextbezogene Ausnahme im code steht. Nebeneffekt ist bei solchen Dinge oft, dass die app schneller wird und/oder weniger CPU-Last verursacht - und in diesem Falle auch möglichst minimal betriebssystem-spezifisch Win/Mac-tauglicher wird.
Mühsam ernährt sich das Hobby-Eichhörnchen
Danke für eure Geduld mit dem Greenhorn ...
naja, ich bin halt kein "programmier-profi". Bei mir wächst Programminhalt/-struktur und Programmiersprachenverständnis und Funktionsinhalt des Projektes (ZES - siehe Signatur) gleichzeitig ... V-Modell-angelehnt könnte man meinen
Dieser Fall hat mich dazu gebracht, meine Ereignis-Abfrage-Struktur wieder zu ändern und dabei zu verschlanken, damit nicht mittendrin eine strukturelle und (für mich) kontextbezogene Ausnahme im code steht. Nebeneffekt ist bei solchen Dinge oft, dass die app schneller wird und/oder weniger CPU-Last verursacht - und in diesem Falle auch möglichst minimal betriebssystem-spezifisch Win/Mac-tauglicher wird.
Mühsam ernährt sich das Hobby-Eichhörnchen
Danke für eure Geduld mit dem Greenhorn ...