2

我似乎找不到解决此问题的方法,希望这里有人可以指导我或帮助我。我将尝试从我所做的虚拟测试程序中进行解释,该程序以与我的应用程序相同的方式失败。

我的框架检查了所有锚点(左、上、右、下)。对齐客户端的框架上有一个 TPageControl。我在包含单个面板的页面控件中定义了一个选项卡。我把面板做得足够大,可以覆盖大部分标签页,除了边缘有一个很好的边距。为了方便查看问题,我将面板的颜色更改为黄色。我将面板居中并检查了面板的所有锚点。

接下来我创建了一个表单并将颜色设置为绿色。我将框架放在表单上,​​并且由于颜色差异,很容易看到表单的绿色背景、标签页(在我的情况下基本上是白色的)和标签页上的黄色面板。一切看起来都符合预期。

现在我运行测试应用程序,在运行时一切看起来都很好,除了选项卡上的黄色面板对于选项卡来说太宽并且面板的标题没有按预期居中(我确定它是居中的,但面板也是如此宽的标签页)。现在,如果您调整表单的大小,它会按预期移动(面板保持其在选项卡表上的位置和表单上的选项卡表)但您无法看到面板的全部内容,因为右侧被切断(不在示例中,因为我们没有在上面放任何东西,但肯定在我们的应用程序中)。

我们最近将我们的应用程序从 Delphi 7 转换为 Delphi XE2,我们只有少量框架。除了包含选项卡的那些之外,所有工作都可以(与 D7 相同)。

XE2 中是否存在错误或我们做错了什么?

我们想要发生的事情是,当我们将框架放在表单上并调整其大小时,我们希望框架在宽度和高度上扩展。对于框架中包含的标签页的内容也是如此。但它不再起作用了。

这是一个已知问题还是有解决方法?

设计时视图和运行时视图

不确定这是否有帮助,但如果它更有意义,这是框架的 DFM:

  object Frame3: TFrame3
  Left = 0
  Top = 0
  Width = 200
  Height = 100
  Anchors = [akLeft, akTop, akRight, akBottom]
  TabOrder = 0
  object pgc1: TPageControl
    Left = 0
    Top = 0
    Width = 200
    Height = 100
    ActivePage = ts1
    Align = alClient
    TabOrder = 0
    object ts1: TTabSheet
      Caption = 'TPageControl'
      DesignSize = (
        192
        72)
      object pnl1: TPanel
        Left = 3
        Top = 10
        Width = 180
        Height = 51
        Anchors = [akLeft, akTop, akRight, akBottom]
        Caption = 'pnl1'
        Color = clYellow
        ParentBackground = False
        TabOrder = 0
      end
    end
  end
4

1 回答 1

2

我能够通过更改用于对齐面板的技术来解决我的问题。我没有将面板在选项卡表中居中并在所有边都有很好的边距并设置面板的左侧、顶部、右侧和底部锚点,而是将面板设置为对齐 alClient,将 AlignWithMargins 属性设置为 true 并设置适当的边距为左、上、右和下,以达到预期的效果。非常感谢@Sertac 为我指明了正确的方向。

于 2013-10-16T18:37:46.510 回答