Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Catalog · How the catalog works
Anything · Lazarus or Delphi
Random projectRandom project

LazarusMenu

View on GitHub

Member rating

No ratings yet.

Sign in to rate this project.

README

LazarusMenu修改版的原始来源:

https://github.com/naturalmechanics/LazarusMenu

LazarusMenu

What is going on : A new Lazarus Menu Widget to overcome limitations of the default Menu.
原代码有很多Bug及使用了bgracontrols控件,这个版本删除bgracontrols控件及修改大量的Bug后已可正常使用。

  • 2024-11-15增加菜单阴影
  • 2024-11-12增加左边栏菜单功能

Status

WIP - Do NOT use in production.

Howto

Include the files datatypes.pas and TAdvancedMenu.pas in your project.

Then, in your mainForm.FormCreate:

pascal
procedure TForm1.FormCreate(Sender: TObject);
var
  MainMenuItems : Array of String;
  MainMenuNames : Array of String;

  mForm         : TForm;
  mPanel        : TPanel;
  ta            : TAdvancedMenu.TProc;
  ids           : Integer;

  FileMenuItems : Array of String;
  FileMenuItemNames:Array of String;

  NewMenuItems  : Array of String;
  NewMenuItemNames:Array of String;

  OpenMenuItems : Array of String;

begin
  MainMenuItems := ['File', 'Edit', 'View', '[Select Mode]', 'Tools', 'Help'];
  MainMenuNames := ['fileMenu', 'editMenu', 'viewMenu', 'selectMenu', 'toolMenu', 'helpMenu'];
  MainMenu      := TAdvancedMenu.TAdvancedMainMenu.Create();
  MainMenu.create_mainMenu(MainMenuItems, MainMenuNames);

  mForm         := Form1;
  MainMenu.render(Form1);

  mPanel        := Panel1;
  MainMenu.render_onPanel(Panel1);

  FileMenuItems := ['New', 'Open', 'Save', 'Import', 'Export', 'Print', 'Send', 'Close', 'Quit'];
  FileMenuItemNames:=['newMenu', 'openMenu', 'saveMenu', 'importMenu', 'exportMenu', 'printMenu', 'sendMenu', 'closeMenu', 'quitMenu' ];

  NewMenuItems  := ['Blank Document', 'From Templates'];
  NewMenuItemNames:=['blankDocumentMenu', 'fromTemplateMenu'];

  OpenMenuItems := ['Open Recents', 'Open Existing Document'];

  
  ta            := @FileClick;
  ids           := 1;
  MainMenu.add_mainMenuClickAction(ids, ta);                      // <----- Worls
  

  // MainMenu.add_mainMenuClickAction_byName('File', ta);         // <----- TODO do it by name
  MainMenu.add_mainMenuSubMenu_byName('fileMenu', FileMenuItems, FileMenuItemNames);
  // MainMenu.add_subMenuSubMenu_byName('newMenu', NewMenuItems); // <---- TODO

end;

Next Step :

  • [*] Add Submenu of Arbitrary Depth
  • [x] Add Actions
  • [] Add Radio / Check / Images etc

Legends:

  • * -> Working on it now
  • x -> Finished
  • -> planned

在aarch64 for 银河麒麟运行截图:

image

在windows 11运行截图:

image

新增加的左边栏菜单功能在windows 11运行截图:

image

新增加的左边栏菜单功能在aarch64 for 银河麒麟运行截图:

image image