无边框窗口 ( BorderStype = bsNone) 可能看起来太平且不熟悉。因此,在网上搜索后,我能够理解如何手动添加阴影:
TForm1 = class(TForm)
...
procedure CreateParams(var Params:TCreateParams); override;
end;
procedure TForm1.CreateParams(var Params:TCreateParams);
begin
inherited;
Params.Style:=Params.Style or WS_SIZEBOX; //WS_THICKFRAME
end;
结果证明是您所需要的,但有些意外。除了阴影之外,还出现了一条白色细条纹代替窗口标题(Windows 10)。
我的技能已经不足以自己移除它了。这结束了我的权力:C
- 这个白色条纹怎么去掉?
- 还是有另一种方法可以将普通阴影(如有边框的窗口)添加到无边框窗口?
- 也有一个选项
Params.WindowClass.Style := Params.WindowClass.Style or CS_DROPSHADOW;,但它不适合。阴影完全不同,不适合可调整大小的窗口。

这解决了我所有的问题: