如何解决如何在运行时计算 TCategoryButtons 的高度?
在 Windows 10 中的 Delphi 10.4.2 VCL 应用程序中,如何在运行时计算 TCategoryButtons
对象的高度,即其所有按钮高度及其类别项的总和,作为此高度可能会因字体大小而异?
在运行时测量像素高度,我注意到所有按钮的高度都相同,而且按钮的高度与类别项的高度不同。
另外,请注意按钮在对象检查器中没有发布的高度属性。
但是难道不应该用一些低级方法来计算其所有按钮高度及其类别项的总和吗?
解决方法
这是一个完全用 Pascal 实现的控件,在 Vcl.CategoryButtons.pas 中。
因此,您可以确切地看到它是如何实现的。例如,在 TCategoryButtons.Paint
中,您可以看到其完整的绘图代码。同样,您可以调查在 MouseMove
(或 MouseDown
或 MouseUp
)中完成的命中测试。
因此,如果不出意外,您可以使用此代码创建自己的 TCategoryButtons
修改版本。您的版本可以在确定后保存总高度(例如,肯定在绘画之后)。
但是,快速浏览之后,似乎 TButtonCategory.Bounds
可能很有趣。如果幸运的话,这将返回一个类别的屏幕矩形。最后一个类别的 rect 的 Bottom
应该是整个控件的(有效使用的)高度。
它似乎对我有用:
这里我画了一个与控件高度相同的红色条。
procedure TForm5.FormPaint(Sender: TObject);
begin
var y := CategoryButtons1.Categories[
CategoryButtons1.Categories.Count - 1
].Bounds.Bottom;
Canvas.Brush.Color := clRed;
Canvas.FillRect(Rect(0,ClientWidth,y))
end;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。