About-Menü unter Carbon
-
- Beiträge: 167
- Registriert: Mo 20. Okt 2008, 20:50
- OS, Lazarus, FPC: macOS 10.4-13.4, Windows 2000-11, Raspbian (L 2.2.6, FPC 3.2.2)
- CPU-Target: PowerPC, Intel, ARM
- Wohnort: Hattingen, NRW
- Kontaktdaten:
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.
-
- Beiträge: 167
- Registriert: Mo 20. Okt 2008, 20:50
- OS, Lazarus, FPC: macOS 10.4-13.4, Windows 2000-11, Raspbian (L 2.2.6, FPC 3.2.2)
- CPU-Target: PowerPC, Intel, ARM
- Wohnort: Hattingen, NRW
- Kontaktdaten:
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!
-
- Beiträge: 206
- Registriert: Di 10. Nov 2009, 18:49
- OS, Lazarus, FPC: macOS, 10.13, lazarus 1.8.x, fpc 3.0.x
- CPU-Target: 32Bit/64bit
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.
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
-
- Beiträge: 167
- Registriert: Mo 20. Okt 2008, 20:50
- OS, Lazarus, FPC: macOS 10.4-13.4, Windows 2000-11, Raspbian (L 2.2.6, FPC 3.2.2)
- CPU-Target: PowerPC, Intel, ARM
- Wohnort: Hattingen, NRW
- Kontaktdaten:
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.
-
- Lazarusforum e. V.
- Beiträge: 7178
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: About-Menü unter Carbon
Theoretisch könntest du dir einige Doppelte Code Zeilen sparen, wenn du folgendes machst:
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];
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
Michael Springwald