5

我有一个对话框,其布局如下:

---------------------------------------------
|                                           |
| CONFIG AREA                               |
| Align: alTop                              |
--------------------------------------------- <-static boundary
|                                           |
| DISPLAY AREA 1                            |
| Align: alTop                              |
============================================= <-TSplitter Align: alTop
|                                           |
| DISPLAY AREA 2                            |
| align: alClient                           |
--------------------------------------------- <-bottom of dialog

但是,在运行时,拆分器不会出现在显示区 1 和显示区 2 之间,而是出现在配置区和显示区 1 之间,从而导致一些烦人的界面问题。表单的设置相关事件处理程序中没有任何内容可以更改任何这些组件的 Visible 或 Align 属性。有谁知道为什么拆分器没有加载到表单设计器中的位置?

4

3 回答 3

11

(无法重现。)拆分器是棘手的事情。我总是编写代码来定位它们。在这种情况下,我会做

procedure Form1Show(Sender: TObject);
begin
  Splitter1.Top := DisplayArea2.Top;
end;
于 2011-03-11T18:41:01.147 回答
7

我过去也遇到过类似的问题。它们是由以下原因引起的:

  1. 控制不可见的地方。
  2. 控制创建顺序。

我认为拆分器是在配置区域之后和显示区域1之前创建的。如果您在显示区域 1 之后创建它应该没问题。

于 2011-03-11T18:41:55.927 回答
6

我过去也有同样的问题。TSplitter 应该放在两个 TPanel 之间,如下所示:

+---------------------------------------------+
|+-------------------------------------------+|
||                                           ||
|| CONFIG AREA                               ||
|| Align: alTop                              ||
|+-------------------------------------------+|
||                                           ||
|| DISPLAY AREA 1                            ||
|| Align: alClient                           ||
|+-------------------------------------------+|
+---------------------------------------------+
=============================================== <-TSplitter Align: alTop
|                                             |
| DISPLAY AREA 2                              |
| align: alClient                             |
----------------------------------------------- <-bottom of dialog

配置区域和显示区域 1 现在应该包含在 Align := alTop 的 TPanel 中,并且配置区域或显示区域 1 应该与 alClient 对齐。

希望这可以帮助

于 2011-03-11T18:53:23.753 回答