使用拆分器时如何使控件在窗体中可见?

杰里·道奇

在表单上,​​我有两个大型控件,并且TSplitter它们之间有一个。顶部的控件与顶部对齐,底部的控件与客户端对齐。因此,当我调整窗体的大小时,顶部的控件保持相同的高度,而底部的控件却变化。然后,它们之间的拆分器实际上控制了顶部控件的高度。

但是,将窗体调整为小于顶部控件的高度时,底部控件将变为隐藏状态。我尝试使用约束条件来调整其反应,但是没有运气...

  • 调整拆分器的大小时,不允许用户将拆分器向下拖动到底部控件的最小高度以下
  • 当窗体的大小调整为小于底部控件的大小时,它应自动调整顶部控件的高度,以使底部控件适合
  • 当我将底部控件的MinHeight约束设置为例如100时,调整拆分器的大小时,它将使窗体实际增长以适合底部控件,而不是阻止用户进一步调整大小。
  • 当我将分割器的MinSize属性设置为例如100时,调整分割器的大小时,我会得到非常异常的结果(顶部控件消失),并且仍然隐藏了底部控件。

如何确定拆分器或表单的大小在更改表单大小的情况下始终显示底部控件

DFM代码:

object Form1: TForm1
  Left = 310
  Top = 121
  Caption = 'Form1'
  ClientHeight = 374
  ClientWidth = 434
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
  object Splitter1: TSplitter
    Left = 0
    Top = 129
    Width = 434
    Height = 7
    Cursor = crVSplit
    Align = alTop
    Beveled = True
  end
  object Panel1: TPanel
    Left = 0
    Top = 0
    Width = 434
    Height = 129
    Align = alTop
    Caption = 'Panel1'
    TabOrder = 0
    ExplicitLeft = 48
    ExplicitTop = 16
    ExplicitWidth = 313
  end
  object Panel2: TPanel
    Left = 0
    Top = 136
    Width = 434
    Height = 238
    Align = alClient
    Caption = 'Panel2'
    TabOrder = 1
    ExplicitLeft = 16
    ExplicitTop = 168
    ExplicitWidth = 369
    ExplicitHeight = 145
  end
end
瑟塔克·阿奎兹

调整拆分器的大小时,不允许用户将拆分器向下拖动到底部控件的最小高度以下

OnCanResize分离器添加一个处理程序,以防止将其向下拖动到预定义的高度以下:

procedure TForm1.Splitter1CanResize(Sender: TObject; var NewSize: Integer;
  var Accept: Boolean);
begin
  Accept := NewSize <=
      ClientHeight - (100 + Splitter1.Height);
end;

(100是预定义的高度,请用常量/属性替换它们...)


当窗体的大小调整为小于底部控件的大小时,它应自动调整顶部控件的高度,以使底部控件适合

首先,最好对表单进行约束,以使所有控件始终具有正高度。否则,您可能会遇到对齐竞争的问题:panel1和splitter1在顶部对齐:

procedure TForm1.FormCreate(Sender: TObject);
begin
  Constraints.MinHeight := Height - ClientHeight + 100 + Splitter1.Height + 1;
end;

其次,您可以检查表单调整大小是否会导致底部面板的调整大小小于应有的大小,并采取纠正措施:

procedure TForm1.FormResize(Sender: TObject);
begin
  if Panel2.Height < 100 then
    Panel1.Height := ClientHeight - (100 + Splitter1.Height);
end;


当我将底部控件的MinHeight约束设置为例如100时,调整拆分器的大小时,它将使窗体实际增长以适合底部控件,而不是阻止用户进一步调整大小。

不要使用底部面板的约束。


当我将拆分器的MinSize属性设置为例如100时,调整拆分器的大小时,我会得到非常异常的结果(顶部控件消失),并且仍然隐藏了底部控件。

不要使用splitter的MinSize

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使控件在面板中可见?

来自分类Dev

如何带回其Text属性已删除且在Windows窗体中不可见的C#控件

来自分类Dev

在窗体上的控件中创建值

来自分类Dev

使用HTML帮助器没有可见的控件/输出

来自分类Dev

Winforms:在窗体控件中调整用户控件的大小

来自分类Dev

确保在窗体关闭时捕获数据感知控件中的更改

来自分类Dev

使主窗体可见时,InvalidOperationException

来自分类Dev

如何使 JavaScript 函数在不可见的用户控件中可用

来自分类Dev

控件突然消失在窗体设计器上

来自分类Dev

QSplitter-隐藏拆分器节中包含的元素时,请调整该节的大小以仅适合可见内容

来自分类Dev

如何在窗体控件(dockPanels)上重新加载焦点

来自分类Dev

rypto工具包控件未显示在窗体中

来自分类Dev

当全屏显示视频播放器控件(可见)时,状态栏将返回(可见)

来自分类Dev

当全屏显示视频播放器的控件(可见)时,状态栏将返回(可见)

来自分类Dev

如何从窗体设计器中删除类似splitcontainer的控件?

来自分类Dev

当React.js中的计时器计数=== 0时,如何设置按钮不可见?

来自分类Dev

SwiftUI-如何更改嵌套在窗体中的选取器的复选标记颜色

来自分类Dev

如何在设计器中显示不可见的视图?

来自分类Dev

如何使文件在FTP服务器中可见

来自分类Dev

使用Scrapy时如何仅返回可见文本

来自分类Dev

使用深色主题时如何使Android CardView可见

来自分类Dev

如何在窗体的选择列表中使用“ any”在mysql中工作?

来自分类Dev

在窗体区域外绘图时如何重绘

来自分类Dev

日期选择器无法在窗体中工作

来自分类Dev

通过子窗体调用时,如何使用“启动”窗体中的方法启用其控件?

来自分类Dev

通过子窗体调用时,如何使用“启动”窗体中的方法启用其控件?

来自分类Dev

弹出窗体不可见

来自分类Dev

呈现视图控制器时如何在iOS13中获取可见的视图大小

来自分类Dev

如何确定字段列表当前在DevExpress PivotGrid控件中是否可见

Related 相关文章

  1. 1

    如何使控件在面板中可见?

  2. 2

    如何带回其Text属性已删除且在Windows窗体中不可见的C#控件

  3. 3

    在窗体上的控件中创建值

  4. 4

    使用HTML帮助器没有可见的控件/输出

  5. 5

    Winforms:在窗体控件中调整用户控件的大小

  6. 6

    确保在窗体关闭时捕获数据感知控件中的更改

  7. 7

    使主窗体可见时,InvalidOperationException

  8. 8

    如何使 JavaScript 函数在不可见的用户控件中可用

  9. 9

    控件突然消失在窗体设计器上

  10. 10

    QSplitter-隐藏拆分器节中包含的元素时,请调整该节的大小以仅适合可见内容

  11. 11

    如何在窗体控件(dockPanels)上重新加载焦点

  12. 12

    rypto工具包控件未显示在窗体中

  13. 13

    当全屏显示视频播放器控件(可见)时,状态栏将返回(可见)

  14. 14

    当全屏显示视频播放器的控件(可见)时,状态栏将返回(可见)

  15. 15

    如何从窗体设计器中删除类似splitcontainer的控件?

  16. 16

    当React.js中的计时器计数=== 0时,如何设置按钮不可见?

  17. 17

    SwiftUI-如何更改嵌套在窗体中的选取器的复选标记颜色

  18. 18

    如何在设计器中显示不可见的视图?

  19. 19

    如何使文件在FTP服务器中可见

  20. 20

    使用Scrapy时如何仅返回可见文本

  21. 21

    使用深色主题时如何使Android CardView可见

  22. 22

    如何在窗体的选择列表中使用“ any”在mysql中工作?

  23. 23

    在窗体区域外绘图时如何重绘

  24. 24

    日期选择器无法在窗体中工作

  25. 25

    通过子窗体调用时,如何使用“启动”窗体中的方法启用其控件?

  26. 26

    通过子窗体调用时,如何使用“启动”窗体中的方法启用其控件?

  27. 27

    弹出窗体不可见

  28. 28

    呈现视图控制器时如何在iOS13中获取可见的视图大小

  29. 29

    如何确定字段列表当前在DevExpress PivotGrid控件中是否可见

热门标签

归档