一位拥有成功的 Delphi 7 应用程序的客户最近联系了一些更新。在从事这个项目的过程中,我再次注意到一些长期以来困扰我的事情。
通常,只需打开并查看 VCL 表单,就会在签入时显示 git 更改,如下所示:
- ItemHeight = 25
+ ItemHeight = 0
在其他时候,情况可能恰恰相反:
- ItemHeight = 0
+ ItemHeight = 19
通常字段不会发生变化ItemHeight
。
这似乎只影响TComboBox
控件。Height
控件的属性由其“字体”和其他属性TComboBox
决定。Height
据我所知,签入更改或恢复并不重要 - 在运行时显示完全相同的行为。恢复更改是我通常所做的,但如果有数十个更改,这会很乏味。
至于是否会发生变化、在何处发生变化,以及如果发生变化将会朝什么方向发展,没有明显的模式。通常,切换发生在从未查看过的TComboBox
区域或页面上的控件上。TTabSheet
注意:除了奇怪的TPageControl.ActivePage
属性或添加TLabel
.
我的问题是相关的:
- 有没有办法阻止历史上这些“噪音”的改变?
- 这是 Delphi 7 中的错误,但在更高版本的 Delphi 和 VCL 中已解决吗?
据我所知,情况并非如此。
不会。这是由于
ItemHeight
在未分配句柄时通过消息检索返回 0 造成的。这在源代码中有记录:如果该控件在设计期间不可见(fi 因为它位于非活动选项卡上),则句柄很可能为 0。