【发布时间】:2021-07-29 16:49:45
【问题描述】:
我正在设置主菜单字体(通过 Screen.MenuFont)以匹配程序中其他地方使用的字体的名称/大小。但是主菜单不会随着表单的其余部分刷新——我必须将鼠标移到每个菜单项上才能让它以新字体重新绘制项目。如何强制主菜单在更改时重新绘制?
【问题讨论】:
我正在设置主菜单字体(通过 Screen.MenuFont)以匹配程序中其他地方使用的字体的名称/大小。但是主菜单不会随着表单的其余部分刷新——我必须将鼠标移到每个菜单项上才能让它以新字体重新绘制项目。如何强制主菜单在更改时重新绘制?
【问题讨论】:
这真的很简单:
只需调用DrawMenuBar 函数并将句柄传递给包含菜单的表单:
procedure TForm1.FormClick(Sender: TObject);
begin
Screen.MenuFont.Name := 'Arial Black';
DrawMenuBar(Handle);
end;
【讨论】:
DrawMenuBar 到 procedure CMSysFontChanged(var Message: TMessage); message CM_SYSFONTCHANGED; 的 TForm1。