【问题标题】:VCLStyle does not correctly drawing on large popup menuVCLStyle 无法在大型弹出菜单上正确绘制
【发布时间】:2015-05-21 10:29:41
【问题描述】:

大型弹出菜单的绘图问题。 菜单的箭头末端未显示和一些绘画问题

如何解决这个问题?

使用示例代码生成的菜单项:

 procedure TForm1.Button1Click(Sender: TObject);
 var
   mi:TMenuItem;
   I: Integer;
 begin
   for I := 0 to 100 do
   begin
     mi:=TMenuItem.Create(PopupMenu1);
     mi.Caption:='Item '+IntToStr(I);
     PopupMenu1.Items.Add(mi);
   end;
end;

示例图片:

没有样式的弹出菜单结束(原生)

带有样式的弹出菜单结束

当点击菜单上的箭头位置时:

全屏图片:

编辑

-德尔福XE3

-添加全屏菜单图像。

【问题讨论】:

  • OT:如何解决这个问题? 有一个较小的菜单。没有人想滚动浏览那么多项目;-) 顺便说一句。你用的是哪个版本的德尔福?你能在你的问题中添加一个 Delphi 版本标签吗?
  • 不是更小的菜单。裁剪的图像。添加了 100 个菜单项。德尔福版XE3
  • 普通菜单有时会出现同样的问题(未使用样式)。我记得在 Windows 开始菜单上看到类似的错误(垂直线),其中包含许多元素并启用了滚动。但问题并不总是发生。当在较小的水泥中滚动时,这个问题从未出现过。它仅在长时间滚动时才会显示。
  • 菜单上的 100 个菜单项是完全错误的,期望它们正常运行是不现实的。子菜单(以及将它们嵌套在另一个子菜单中的能力)是专门发明的,以防止必须在菜单中放置这么多项目,并且期望用户滚动浏览这么多项目是可笑的。 医生,我用手指敲桌子不痛,但是当我把桌子放在上面时真的很痛。为什么? 当你为某物的设计用途做了一些令人难以置信的错误时,当它没有完全按照你的预期工作时,你不应该感到惊讶。
  • 实际上我有 60 个菜单项。示例应用程序的 100 个菜单项,Windows 管理 100 多个项目没有任何问题。这是一个 VCL 样式错误。

标签: delphi delphi-xe3 vcl-styles


【解决方案1】:

@RRUZ 解决的问题

您可以通过以下方式更新:https://github.com/RRUZ/vcl-styles-utils

【讨论】:

    猜你喜欢
    • 2013-01-03
    • 2021-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 2012-07-05
    • 2012-10-05
    • 1970-01-01
    相关资源
    最近更新 更多