Aktuelle Zeit: 19.07.2018 23:00

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: apfel-q ?
BeitragVerfasst: 21.05.2017 07:03 
Offline
Benutzeravatar

Registriert: 19.03.2015 18:16
Wohnort: Altenstadt
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?

_________________
Gruß
Manne
http://zes.kart-mal-anders.de
PB5.6 WIN XP,W7,W8 & Mac Yosemite


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: apfel-q ?
BeitragVerfasst: 21.05.2017 10:32 
Offline
Benutzeravatar

Registriert: 25.01.2005 12:19
Code:
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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: apfel-q ?
BeitragVerfasst: 21.05.2017 17:59 
Offline
Benutzeravatar

Registriert: 19.03.2015 18:16
Wohnort: Altenstadt
HI,

nein, geht nicht.
Ich habe auch das probiert:
Code:
 

event=WaitWindowEvent()

If event=#PB_Event_Menu And EventMenu()=#PB_Menu_Quit
    MessageRequester("", "apfel-q") 
  EndIf


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

_________________
Gruß
Manne
http://zes.kart-mal-anders.de
PB5.6 WIN XP,W7,W8 & Mac Yosemite


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: apfel-q ?
BeitragVerfasst: 21.05.2017 19:50 
Offline
Benutzeravatar

Registriert: 24.11.2004 13:12
Wohnort: Germany
Shortcut brauchst du nicht...
Code:

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

Oder
Code:

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 EventDesigner v1.x / OOP-BaseClass-Modul / OPC-Helper DLL
PB v3.30 / v5.4x - OS Mac Mini OSX 10.xx / Window 10 Pro. (X64) /Window 7 Pro. (X64) / Window XP Pro. (X86) / Ubuntu 14.04
Downloads auf Webspace


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: apfel-q ?
BeitragVerfasst: 21.05.2017 21:09 
Offline
Benutzeravatar

Registriert: 25.01.2005 12:19
kartmanne hat geschrieben:
nein, geht nicht.

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.

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?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: apfel-q ?
BeitragVerfasst: 21.05.2017 22:30 
Offline
Benutzeravatar

Registriert: 19.03.2015 18:16
Wohnort: Altenstadt
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.

_________________
Gruß
Manne
http://zes.kart-mal-anders.de
PB5.6 WIN XP,W7,W8 & Mac Yosemite


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: apfel-q ?
BeitragVerfasst: 22.05.2017 21:24 
Offline
Benutzeravatar

Registriert: 19.03.2015 18:16
Wohnort: Altenstadt
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?

_________________
Gruß
Manne
http://zes.kart-mal-anders.de
PB5.6 WIN XP,W7,W8 & Mac Yosemite


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: apfel-q ?
BeitragVerfasst: 22.05.2017 21:31 
Offline
Benutzeravatar

Registriert: 25.01.2005 12:19
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... :wink:

Schön, dass es jetzt auch in Deinem größeren Projekt funktioniert!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: apfel-q ?
BeitragVerfasst: 23.05.2017 10:26 
Offline
Benutzeravatar

Registriert: 19.03.2015 18:16
Wohnort: Altenstadt
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 :coderselixir:

Danke für eure Geduld mit dem Greenhorn ...
:lurk:

_________________
Gruß
Manne
http://zes.kart-mal-anders.de
PB5.6 WIN XP,W7,W8 & Mac Yosemite


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye