About-Menü unter Carbon

About-Menü unter Carbon

Beitragvon jwdietrich » 28. Okt 2008, 11:51 About-Menü unter Carbon

Wie kann ich unter dem Carbon-Widgetset den Menüpunkt "Über diese Anwendung" realisieren? Er sollte ja nach den Apple-Spezifikationen direkt unter dem Menü mit dem Applikationsnamen kommen, aber darauf kann man mit dem Menü-Editor der IDE (Lazarus 0.9.26) ja nicht direkt zugreifen.
jwdietrich
 
Beiträge: 137
Registriert: 20. Okt 2008, 19:50
Wohnort: Hattingen, NRW
OS, Lazarus, FPC: Mac OS X 10.4-10.14, Windows 2000-8, SUSE, Ubuntu, Raspbian (L 2.0.6, FPC 3.0.4) | 
CPU-Target: PowerPC, Intel, ARM
Nach oben

Beitragvon theo » 28. Okt 2008, 12:00 Re: About-Menü unter Carbon

theo
 
Beiträge: 8238
Registriert: 11. Sep 2006, 18:01

Beitragvon jwdietrich » 28. Okt 2008, 22:16 Re: About-Menü unter Carbon

theo hat geschrieben:http://wiki.lazarus.freepascal.org/Carbon_interface_internals/de#Carbon_IDE_Bugs


Schade eigentlich, ich dachte, es gäbe bereits jetzt einen Trick. Dennoch vielen Dank!
jwdietrich
 
Beiträge: 137
Registriert: 20. Okt 2008, 19:50
Wohnort: Hattingen, NRW
OS, Lazarus, FPC: Mac OS X 10.4-10.14, Windows 2000-8, SUSE, Ubuntu, Raspbian (L 2.0.6, FPC 3.0.4) | 
CPU-Target: PowerPC, Intel, ARM
Nach oben

Beitragvon mischi » 10. Nov 2009, 19:12 Re: About-Menü unter Carbon

Das geht doch, ist nur etwas fummelig.

man legt ein TMainMenu auf die Form und geht in den Menu Editor. Dort ein TMenuItem erzeugen und dessen Caption auf das Apfelsymbol ändern. Versuch es mit copy und paste rein zu bekommen oder mit dem unicode F8FF oder utf8 EF A3 BF. An dieses TMenuItem 3 weitere TMenuItems anhängen. Das erste für About, die Caption des zweiten mit "-" gibt einen waagrechten Strich und das dritte für die Preferences. Der Rest bleibt. Ich hab das noch nicht wirklich getestet, aber das Design sieht erstmal richtig aus.
MiSchi macht die fink-Pakete
mischi
 
Beiträge: 206
Registriert: 10. Nov 2009, 18:49
OS, Lazarus, FPC: macOS, 10.13, lazarus 1.8.x, fpc 3.0.x | 
CPU-Target: 32Bit/64bit
Nach oben

Beitragvon jwdietrich » 16. Jan 2010, 14:49 Re: About-Menü unter Carbon

mischi hat geschrieben:Das geht doch, ist nur etwas fummelig.

man legt ein TMainMenu auf die Form und geht in den Menu Editor. Dort ein TMenuItem erzeugen und dessen Caption auf das Apfelsymbol ändern. Versuch es mit copy und paste rein zu bekommen oder mit dem unicode F8FF oder utf8 EF A3 BF. An dieses TMenuItem 3 weitere TMenuItems anhängen. Das erste für About, die Caption des zweiten mit "-" gibt einen waagrechten Strich und das dritte für die Preferences. Der Rest bleibt. Ich hab das noch nicht wirklich getestet, aber das Design sieht erstmal richtig aus.


Vielen Dank, das ist ein wunderbarer Tip und eigentlich gar nicht fummelig. Jedenfalls viel weniger fummelig als der Workaround, den ich mir zwischenzeitlich mit umständlichen Betriebssystemfunktionen, die eigentlich für ObjectiveC gemacht sind und schlecht mit Pascal harmonieren, erarbeitet habe. Und es funktioniert wunderbar.

Ich habe bei mir nun die folgende Prozedur eingebaut, damit das Programm für verschiedene Plattformen compiliert werden kann:

Code: Alles auswählen
procedure AdaptMenus;
begin
     {$IFDEF LCLcarbon}
      Hauptschirm.NewMenuItem.ShortCut:=ShortCut(VK_N,[ssMeta]);
      Hauptschirm.CloseMenuItem.ShortCut:=ShortCut(VK_W,[ssMeta]);
      Hauptschirm.PrintMenuItem.ShortCut:=ShortCut(VK_P,[ssMeta]);
      Hauptschirm.QuitMenuItem.ShortCut:=ShortCut(VK_Q,[ssMeta]);
      Hauptschirm.UndoMenuItem.ShortCut:=ShortCut(VK_Z,[ssMeta]);
      Hauptschirm.CutMenuItem.ShortCut:=ShortCut(VK_X,[ssMeta]);
      Hauptschirm.CopyMenuItem.ShortCut:=ShortCut(VK_C,[ssMeta]);
      Hauptschirm.PasteMenuItem.ShortCut:=ShortCut(VK_V,[ssMeta]);
      Hauptschirm.CopyResultMenuItem.ShortCut:=ShortCut(VK_R,[ssMeta]);
      Hauptschirm.HelpMenu.Visible:=false;
      Hauptschirm.AppleMenu.Visible:=true;
      {$ELSE}
      Hauptschirm.NewMenuItem.ShortCut:=ShortCut(VK_N,[ssCtrl]);
      Hauptschirm.CloseMenuItem.ShortCut:=ShortCut(VK_W,[ssCtrl]);
      Hauptschirm.PrintMenuItem.ShortCut:=ShortCut(VK_P,[ssCtrl]);
      Hauptschirm.QuitMenuItem.ShortCut:=ShortCut(VK_Q,[ssCtrl]);
      Hauptschirm.UndoMenuItem.ShortCut:=ShortCut(VK_Z,[ssCtrl]);
      Hauptschirm.CutMenuItem.ShortCut:=ShortCut(VK_X,[ssCtrl]);
      Hauptschirm.CopyMenuItem.ShortCut:=ShortCut(VK_C,[ssCtrl]);
      Hauptschirm.PasteMenuItem.ShortCut:=ShortCut(VK_V,[ssCtrl]);
      Hauptschirm.CopyResultMenuItem.ShortCut:=ShortCut(VK_R,[ssCtrl]);
      Hauptschirm.HelpMenu.Visible:=true;
      Hauptschirm.AppleMenu.Visible:=false;
      {$ENDIF}
end;

Das Apfelmenü habe ich dabei als "AppleMenu" bezeichnet und das Windows-Hilfemenü als "HelpMenu". Je nach Widget-Set wird hier also entweder das Apfelmenü oder das Hilfemenü sichtbar. Die übrigen Zeilen legen die Abkürzungstaste fest, also CTRL unter Windows und Linux und Meta (Apfel) unter Mac OS. "Hauptschirm" ist das Formular, in dem die Menüleiste definiert ist.
jwdietrich
 
Beiträge: 137
Registriert: 20. Okt 2008, 19:50
Wohnort: Hattingen, NRW
OS, Lazarus, FPC: Mac OS X 10.4-10.14, Windows 2000-8, SUSE, Ubuntu, Raspbian (L 2.0.6, FPC 3.0.4) | 
CPU-Target: PowerPC, Intel, ARM
Nach oben

Beitragvon pluto » 16. Jan 2010, 18:42 Re: About-Menü unter Carbon

Theoretisch könntest du dir einige Doppelte Code Zeilen sparen, wenn du folgendes machst:
Code: Alles auswählen
procedure AdaptMenus;
var
  Shift:TShiftState;
begin
     {$IFDEF LCLcarbon}
       Shift:=[ssMeta];
       Hauptschirm.HelpMenu.Visible:=false;
        Hauptschirm.AppleMenu.Visible:=true;
      {$ELSE}
        Shift:=[ssCtrl]];
      Hauptschirm.HelpMenu.Visible:=true;
      Hauptschirm.AppleMenu.Visible:=false;
      {$ENDIF}
 
      Hauptschirm.NewMenuItem.ShortCut:=ShortCut(VK_N,Shift);
      Hauptschirm.CloseMenuItem.ShortCut:=ShortCut(VK_W,Shift);
      Hauptschirm.PrintMenuItem.ShortCut:=ShortCut(VK_P,Shift);
      Hauptschirm.QuitMenuItem.ShortCut:=ShortCut(VK_Q,Shift);
      Hauptschirm.UndoMenuItem.ShortCut:=ShortCut(VK_Z,Shift);
      Hauptschirm.CutMenuItem.ShortCut:=ShortCut(VK_X,Shift);
      Hauptschirm.CopyMenuItem.ShortCut:=ShortCut(VK_C,Shift);
      Hauptschirm.PasteMenuItem.ShortCut:=ShortCut(VK_V,Shift);
      Hauptschirm.CopyResultMenuItem.ShortCut:=ShortCut(VK_R,Shift);
end;

Sollte Eigentlich auch gehen...Wenn ich kein Fehler gemacht habe....
Edit01:
Zweite Version:
Code: Alles auswählen
procedure AdaptMenus;
var
  Shift:TShiftState;
begin
     {$IFDEF LCLcarbon}
       Shift:=[ssMeta];
      {$ELSE}
        Shift:=[ssCtrl]];
      {$ENDIF}
 
      // Hier bin ich mir zur Zeit nicht sicher ob es "shift = ssMeta" war oder noch andrs gint
       Hauptschirm.HelpMenu.Visible:=not (shift = ssMeta);
       Hauptschirm.AppleMenu.Visible:=not  Hauptschirm.HelpMenu.Visible
      Hauptschirm.NewMenuItem.ShortCut:=ShortCut(VK_N,Shift);
      Hauptschirm.CloseMenuItem.ShortCut:=ShortCut(VK_W,Shift);
      Hauptschirm.PrintMenuItem.ShortCut:=ShortCut(VK_P,Shift);
      Hauptschirm.QuitMenuItem.ShortCut:=ShortCut(VK_Q,Shift);
      Hauptschirm.UndoMenuItem.ShortCut:=ShortCut(VK_Z,Shift);
      Hauptschirm.CutMenuItem.ShortCut:=ShortCut(VK_X,Shift);
      Hauptschirm.CopyMenuItem.ShortCut:=ShortCut(VK_C,Shift);
      Hauptschirm.PasteMenuItem.ShortCut:=ShortCut(VK_V,Shift);
      Hauptschirm.CopyResultMenuItem.ShortCut:=ShortCut(VK_R,Shift);
end;
MFG
Michael Springwald
Aktuelles Projekt: ContentManager2(Ehmals NoteManager2).
pluto
Lazarusforum e. V.
 
Beiträge: 7028
Registriert: 19. Nov 2006, 12:06
Wohnort: Oldenburg(Oldenburg)
OS, Lazarus, FPC: Linux Mint 19.2 | 
CPU-Target: AMD
Nach oben

• Themenende •

Zurück zu MacOS



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

porpoises-institution
accuracy-worried