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

MenuExt

View on GitHub

Member rating

No ratings yet.

Sign in to rate this project.

README

[秋风原创控件] QQ:315795176

  • 将PopupMenu和MainMenu自绘单元合并,统一使用PopupMenu的样式和用法。
    图片
    图片
  • 2026-03-04 增加零配置使用方式
    只需要uses添加MenuExt单元,程序运行后,MainMenu1 和 PopupMenu1 会自动应用 DefaultMenuStyle 样式,并显示为自定义绘制的菜单栏和弹出菜单,无需任何额外的初始化代码。
    当然也可以使用之前的方法自定义样式。
    新的demo:
pascal
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, Forms, Controls, Graphics, Menus,
  MenuExt; // 【只需引用这里】

type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    PopupMenu1: TPopupMenu;
    // 无需任何 FormCreate 代码
  private
  public
  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

end.

使用demo:

pascal
unit menu_unit;

{$mode objfpc}{$H+}
interface

uses
  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, clipbrd,
  Menus, Messages, Buttons, ExtCtrls, ComCtrls, MATH, Spin, CheckLst, LazUTF8,
  LazUtils, cp936, LConvEncoding, LazUnicode, LazUTF16, LazSysUtils,
  LazUtilities, Types, Grids, MenuExt;// StyledMenuUnit, PopupMenuExt;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    MainMenu1: TMainMenu;
    Memo1: TMemo;
    MenuItem1: TMenuItem;
    MenuItem10: TMenuItem;
    MenuItem11: TMenuItem;
    MenuItem12: TMenuItem;
    MenuItem13: TMenuItem;
    MenuItem14: TMenuItem;
    Separator2: TMenuItem;
    Separator1: TMenuItem;
    MenuItem2: TMenuItem;
    MenuItem3: TMenuItem;
    MenuItem4: TMenuItem;
    MenuItem5: TMenuItem;
    MenuItem6: TMenuItem;
    MenuItem7: TMenuItem;
    MenuItem8: TMenuItem;
    MenuItem9: TMenuItem;
    Panel1: TPanel;
    PopupMenu1: TPopupMenu;
    procedure FormCreate(Sender: TObject);
  private
     MyMenuStyle: TPopupMenuStyle;
  public

  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);
begin
  // 1. 配置样式
  MyMenuStyle := DefaultMenuStyle; // 获取默认值

  MyMenuStyle.FontName := 'Microsoft YaHei'; // 微软雅黑,Linux下如无此字体会自动降级
  MyMenuStyle.FontSize := 10;                // 字体变大
  MyMenuStyle.FontColor := clBlack;
  MyMenuStyle.BgColor :=  $00F0F0F0;          // 浅灰背景
  MyMenuStyle.SelectedBgColor := $00FFCC00;  // 选中时背景
  MyMenuStyle.SelectedFontColor := clBlack;  // 选中时黑色字体
  MyMenuStyle.ItemPadding := 6;              // 增加垂直间距

  // 2. 应用样式到 MainMenu1和PopupMenu1
  PopupMenu1.ApplyStyle(@MyMenuStyle);
  MainMenu1.ApplyStyle(@MyMenuStyle);

end;

end.