3 delphi fonts popupmenu delphi-5
我需要我的视障用户能够选择字体大小,并且大多数情况下我已经处理好了,但是弹出菜单无法正常工作,因为行高没有随字体大小而改变。
使用这个...
puMenuMain.OwnerDraw:=True;
Screen.MenuFont.Size:=18; // Actually selected from list by User or Helper
Run Code Online (Sandbox Code Playgroud)
适用于字体大小,但行高未更改。在其他组件(如 TDBGrid)中,Font.Size 更改也会更改行高。
如何让弹出菜单调整所选 Font.Size 的行高?
该文档的OwnerDraw属性TPopupMenu状态:
当 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;
Run Code Online (Sandbox Code Playgroud)
哪里PopupMeasureItem可以简单到
procedure TMyForm.PopupMeasureItem(Sender: TObject; ACanvas: TCanvas;
var Width, Height: Integer);
begin
Height := ACanvas.TextHeight('.') + 2;
end;
Run Code Online (Sandbox Code Playgroud)
或者您可以在用户从列表中选择时确定必要的高度,以在TextHeight每次绘制项目时保存调用。
| 归档时间: |
|
| 查看次数: |
3702 次 |
| 最近记录: |