0

我有一个困扰我好几个月的(Delphi 错误?):在我的一个应用程序中,我在 TPanel 上有一些控件(tedit、tbutton 等)。每次我关闭项目并重新打开它时,我都会发现控件向上移动了几个像素。关闭 20-30 次后,控件几乎不在面板中,所以我必须将它们拖回来。有人遇到过这样的问题吗?如何解决?

我有德尔福 XE。


更新:
实际上我在我的两个项目中遇到过这个问题。两者都涉及 TPanel 上的控件。
如果我编译项目的控件,在 exe 中,控件也位于错误的位置。
我有一个与(TPanel 的)顶部对齐的 TEdit,它的底部固定在底部。底部也将“忘记”其正确位置并移动到顶部。


更新:
错误确认。它在用户更改面板的斜角属性时出现!

4

3 回答 3

2

此问题于 2012 年 6 月在 Delphi XE2的Quality Central #106320
中报告。 其状态仍为“需要反馈”,没有示例项目,但看起来似乎与后代表单有关。

我建议,一旦您确定了组件所在的确切位置,您就可以在 FormCreate 中调整它们的位置。
然后,在设计模式中,您可以快速“大致”纠正位置,知道它们会在运行时立即出现。

Rob 的建议听起来也值得一试。

顺便说一句,如果您设法制作一个示例项目,也许其他人可以确定它是否在以后的版本中得到修复。

于 2013-06-21T18:02:29.037 回答
1

anchors 和 position 之间显然存在一些冲突,可能涉及表单继承。我希望它与应用各种定位约束的顺序以及父控件的边框大小或边距何时更新有关。此外,对齐顶部并锚定底部听起来像是解决问题的方法。相反,请考虑清除对齐设置并锚定顶部和侧面;它应该产生相同的效果。或者,放置一个TShape与面板底部对齐的间距控件(例如,a),然后将编辑控件与客户区对齐,这应该会产生与锚定到底部相同的效果。

尽管如此,这应该很容易解决。在表单的OnCreate事件处理程序中,通过调用组件将它们移动到正确的位置SetBounds。要在开发周期中停止进一步移动,您可能应该清除锚点,然后在运行时重新设置它们。

于 2013-06-21T16:16:46.610 回答
1

在 D7 也发生在我身上。我发现,每当我打开设计时表单并更改桌面分辨率或最小化 IDE 时,底部对齐的控件就会被向下推,有时会超出表单。

为了防止这种情况,我现在使用相同的 HTML 页面设计方式。

我的每个表单都有一个布局,该布局用 tPanel(如 html 中使用的标签或标签)划分,tPanel 根据其设计对齐。

可能不是同一个问题,但我认为我找到的解决方案也可能对您有用。

于 2013-06-24T07:11:53.750 回答