如何将vcl组件放入表单边框顶部?

时间:2013-07-29 08:50:23

标签: delphi vcl

我想在屏幕顶部放置组件,就像在此屏幕截图中一样。

enter image description here

我的项目中有一个TPageControl,我希望将它移到边框的顶部。我怎么能这样做?

enter image description here

1 个答案:

答案 0 :(得分:1)

应该注意Microsoft highly suggests against doing such a thing。也就是说,请记住,窗口的设计字面上反对表示在非客户区域中放置任何类型的“控制”。也就是说,你可以通过在事件方面查看the code posted here来很容易地看到。你必须通过自己绘画然后通过所有非客户区域消息拦截“特殊”控件来解释你的新“控制”。

TTitleBtnForm = class(TForm)
   procedure FormResize(Sender: TObject);
private
   TitleButton : TRect;
   procedure DrawTitleButton;
   {Paint-related messages}
   procedure WMSetText(var Msg : TWMSetText); message WM_SETTEXT;
   procedure WMNCPaint(var Msg : TWMNCPaint); message WM_NCPAINT;
   procedure WMNCActivate(var Msg : TWMNCActivate); message WM_NCACTIVATE;
   {Mouse down-related messages}
   procedure WMNCHitTest(var Msg : TWMNCHitTest); message WM_NCHITTEST;
   procedure WMNCLButtonDown(var Msg : TWMNCLButtonDown); message WM_NCLBUTTONDOWN;
   function GetVerInfo : DWORD;
 end;

我不会通过发布整个内容来对拥有网站内容的人造成伤害,但是你很快就会明白,弄乱非客户区是不明智的。

另一方面,请记住,您发布的所有示例都是蒙皮窗口,这意味着标准窗口重新构建了新的控件,指示您想要的内容。在这种情况下,只要提供所有预期的功能,就可以做任何你想做的事情。首先将BorderStyle设置为bsNone,然后将控件填充到表单的尺寸,这样就不会看到尴尬的间隙。这是我做的一个非常快速的例子。当然,您可以更改颜色并添加关闭/最小化/最大化按钮以及您喜欢的任何内容。

enter image description here

希望一切都有所帮助。