我需要我的视觉障碍用户才能选择字体大小,大多数情况下我处理好了,但弹出菜单效果不佳,因为行高不会因字体大小而改变。
使用此...
puMenuMain.OwnerDraw:=True;
Screen.MenuFont.Size:=18; // Actually selected from list by User or Helper
适用于字体大小,但行高不会更改。在其他组件(如TDBGrid)中,Font.Size更改也会更改行高。
如何让Popup菜单调整所选Font.Size的行高?
答案 0 :(得分:4)
OwnerDraw
州的TPopupMenu
属性的documentation:
当OwnerDraw为true时,菜单项会收到一个OnMeasureItem和一个 OnDrawItem事件,当它们需要在屏幕上呈现时。
因此,在设计时或运行时为弹出菜单的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
。
答案 1 :(得分:1)
您还可以在表单中添加空白ImageList
。将其Height
属性设置为您需要的值。并将Images
的{{1}}属性与此PopupMenu
相关联。利润:)