【问题标题】:Centered, Full Screen Application居中,全屏应用
【发布时间】:2015-02-17 02:40:02
【问题描述】:

我目前正在开发一个全屏应用程序,我想在屏幕上居中。我在表单上设置了以下设置:

WindowState:= wsMaximized
FormStyle:= fsStayOnTop

但是,由于表单的高度和宽度远低于屏幕的实际分辨率,因此表单与左上角对齐。我也尝试使用表单上的位置设置,但是这些设置似乎都没有达到预期的结果。它们要么没有效果,要么将整个最大化移向右下角,从而能够看到后面的表单(我希望我已经描述得足够好)。

谢谢

【问题讨论】:

  • 怎么会有一个全屏居中的窗口?它可以是居中的,也可以是全屏的。我在这里错过了什么吗?
  • 应用程序是全屏的,但是我最大化的表单没有在屏幕上居中,因为表单在向右和向下方向最大化。
  • 你的意思是这样的表单被最大化了,但是表单上的组件在表单的左上角?如果是,请将组件放在面板上,并在表单 OnShow 事件中将该面板居中。
  • @Tom,控制居中有个技巧。您可以在其父控件中居中并清除控件的Anchors 集(请参阅this Q&A)。
  • 想到一个“居中”的表格时,这意味着表格的边界和显示器边缘之间的距离相等。这就是认为的意思吗?也许这个问题会从一张照片中受益。可以发一个吗?

标签: delphi fullscreen


【解决方案1】:

我理解您的问题的方式是,表单本身可以正确最大化,但是根据表单设计器中设置的 Left 和 Top 属性,组件位于最大化表单的左上角。

例如,设计器中设计的表单:

最大化时的形式(这就是问题所在):

如果我对问题的理解是正确的,解决方案是将所有组件放在一个 TPanel 上,然后将该 TPanel 放在窗体的中心。

有两种方法可以使 TPanel 居中
1) 清除(设置为 false)面板的所有锚点,如 TLama 在他的评论中提供的 link
2) 在表单 OnResize 事件中将面板居中

procedure TForm4.FormResize(Sender: TObject);
begin
  Panel1.Left := (ClientWidth - Panel1.Width) div 2;
  Panel1.Top := (ClientHeight - Panel1.Height) div 2;
end;

无论哪种方式,结果都是这样的:

【讨论】:

  • 谢谢,我很高兴有人能够理解我的错误解释。这已经奏效了!
猜你喜欢
  • 2011-05-13
  • 1970-01-01
  • 2020-08-12
  • 1970-01-01
  • 2021-07-26
  • 2015-09-17
  • 1970-01-01
  • 2017-05-08
  • 1970-01-01
相关资源
最近更新 更多