Delphi VCL 强制菜单重绘

Ste*_*veS 2 delphi vcl menu

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

And*_*and 5

这真的很简单:

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

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

  • 也许您可以将对“DrawMenuBar”的调用移至“procedure CMSysFontChanged(var Message: TMessage);” `TForm1` 的消息 CM_SYSFONTCHANGED;`。 (2认同)