【问题标题】:Delphi VCL force menu repaintDelphi VCL 强制菜单重绘
【发布时间】:2021-07-29 16:49:45
【问题描述】:

我正在设置主菜单字体(通过 Screen.MenuFont)以匹配程序中其他地方使用的字体的名称/大小。但是主菜单不会随着表单的其余部分刷新——我必须将鼠标移到每个菜单项上才能让它以新字体重新绘制项目。如何强制主菜单在更改时重新绘制?

【问题讨论】:

    标签: delphi menu vcl


    【解决方案1】:

    这真的很简单:

    只需调用DrawMenuBar 函数并将句柄传递给包含菜单的表单:

    procedure TForm1.FormClick(Sender: TObject);
    begin
      Screen.MenuFont.Name := 'Arial Black';
      DrawMenuBar(Handle);
    end;
    

    【讨论】:

    • 也许您可以将呼叫转移到 DrawMenuBarprocedure CMSysFontChanged(var Message: TMessage); message CM_SYSFONTCHANGED;TForm1
    • 太棒了!谢谢!彼得的 msg 方法确实有效。
    猜你喜欢
    • 2013-05-18
    • 1970-01-01
    • 2013-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多