如何从 Windows 10 上的可调整大小的表单中删除顶部栏?

How to remove the top bar from a resizable form on Windows 10?

我正在尝试删除表单的 title-bar,同时保持边框具有可调整大小的表单。我将 BorderStyle 设置为 bsNone 并覆盖 CreateParams 过程:

procedure TMainForm.CreateParams(var Params: TCreateParams);
begin
  inherited;
  Params.Style := Params.Style or  WS_BORDER or WS_THICKFRAME;
end;

我面临的唯一问题是表格顶部边缘的白色条(在 win 10 中):

我怎样才能去掉这个白色条?

走向胜利 API 的道路将消耗大量时间,而且事实证明如此困难。如果你愿意走那条路,我强烈推荐它。但就目前而言,这里可以快速解决您的问题。

通过像这样更改标题栏的样式来使用 VCL Styles

转到 Tools-> Bitmap Style Manager 并重新打开 Windows 10 样式(因为您希望在 windows 10 中使用此样式)

转到 Objects-> form->title 并将高度更改为 5。

在您的 IDE 的 object 检查器中取消选中边框图标并将标题设置为 ' '

结果将是一个标题栏很细的表单,它是一个边框。

您可以进一步修改标题栏的外观,使其看起来与边框完全一样。

并查看此 Vcl.Forms.TFormStyleHook.PaintNC 以确切了解如何使用样式 Hooks 完成此操作。

Delphi 未在 Windows 10 处理! 您必须使用调整工具来控制 windows 内的边框大小。 我使用 winaero (www.winaero.com) 并将 window 边框减少到 1 并填充为零。

对于 firemonkey (fmx) 用户:您可以通过样式来做到这一点。

在 Delphi 11 和可能更早的版本中,您可以使用表单的 CustomTitleBar 属性:

Enabled=true
Height=0
ShowCaption=false
ShowIcon=false
SystemButtons=false
SystemColors=false
SystemHeight=false

Form.BorderStyle=bsSizeable