gpt4 book ai didi

delphi - 在字体大小后更改弹出行高度

转载 作者:行者123 更新时间:2023-12-03 15:46:33 24 4
gpt4 key购买 nike

我需要我的视障用户能够选择字体大小,大多数情况下我都处理得很好,但弹出菜单无法正常工作,因为行高不会随字体大小而改变。

使用这个...

puMenuMain.OwnerDraw:=True;
Screen.MenuFont.Size:=18; // Actually selected from list by User or Helper

对于字体大小效果很好,但行高没有改变。在其他组件(例如 TDBGrid)中,Font.Size 更改也会更改行高。

如何让弹出菜单调整所选 Font.Size 的行高?

最佳答案

documentation对于 TPopupMenuOwnerDraw 属性,状态:

When OwnerDraw is true, menu items receive an OnMeasureItem and an OnDrawItem event when they need to be rendered on screen.

因此,可以在设计时或运行时为弹出菜单项的 OnMeasureItem 分配一个处理程序:

puMenuMain.OwnerDraw:=True;
Screen.MenuFont.Size:=18;
for i := 0 to puMain.Items.Count - 1 do
puMain.Items[i].OnMeasureItem := PopupMeasureItem;

其中 PopupMeasureItem 可以简单为

procedure TMyForm.PopupMeasureItem(Sender: TObject; ACanvas: TCanvas;
var Width, Height: Integer);
begin
Height := ACanvas.TextHeight('.') + 2;
end;

或者您可以确定必要的高度,因为用户从列表中进行选择,以便在每次绘制项目时调用 TextHeight

关于delphi - 在字体大小后更改弹出行高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24638009/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com