为什么我的TSplitter在错误的地方?

时间:2011-03-11 18:37:59

标签: delphi user-interface splitter

我有一个对话框,其中列出了这样的内容:

---------------------------------------------
|                                           |
| 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属性。有谁知道为什么拆分器没有加载到它在表单设计器中的位置?

3 个答案:

答案 0 :(得分:11)

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

procedure Form1Show(Sender: TObject);
begin
  Splitter1.Top := DisplayArea2.Top;
end;

答案 1 :(得分:7)

过去我遇到过类似的问题。他们的原因是:

  1. 控制隐藏的地方。
  2. 控制创建顺序。
  3. 我认为拆分器是在配置区域之后和显示区域1之前创建的。如果你在显示区域1之后创建它应该没问题。

答案 2 :(得分: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对齐。

希望这有帮助