TPanel超过TBevel的开销是多少?

时间:2011-09-22 19:34:51

标签: windows delphi

我正在开发一个项目,他们主要使用TPanel来显示斜角(也许设计时间方便面板超过斜面)。

好的,我知道TPanel比TBevel重。 Amongs其他东西,每个TPanel创建一个用户对象,这是一个有限的资源。

我想知道的是,除了用户对象之外,TPanel的开销是多少?是不存在的(特别是在现代机器上)。

如果您正在使用这样的系统,您会建议:

  • 返回并将所有TPanel更改为TBevel。
  • 说“好吧它很糟糕。让我们不要再做了” 或
  • 关注度太小,设计时间方便 值得。

2 个答案:

答案 0 :(得分:5)

我不知道这个设计是否有意,但是当控件在窗口中组合在一起时,会有轻微的导航行为差异。如果通过箭头键改变焦点,则在具有最后一个标签顺序的焦点之后,第一个控件将被聚焦(向下/向右),反之亦然(向上/向左)。 IOW焦点将包含在父级中。当然,如果任何控件不需要箭头键,那就是这样。

关于这个问题,正如评论中已经说明的那样,除了在对象池中使用计数之外,还有与窗口关联的其他资源。它还会浪费一些CPU周期。在剪辑链或消息传递中还有一个级别或者保留一个更多的z顺序列表等.MSDN puts it as(我猜导航方面是被引用而不是可视分区):

  

为了获得最佳性能,需要在逻辑上划分主窗口的应用程序应该在主窗口的窗口过程中执行,而不是使用子窗口。

然而,正如评论中已经说明的那样,很可能没有人能够分辨出几个小组所造成的表现或资源差异。

答案 1 :(得分:0)

正确的答案是选择#3,所以如果这是项目的设计方法,不要改变它。