2

我想将组件放在边框中的表单顶部,就像这个屏幕截图一样。

在此处输入图像描述

我进入了我的项目 a TPageControl,我想将它移到边界的顶部。我怎样才能做到这一点?

在此处输入图像描述

4

1 回答 1

1

需要注意的是,微软强烈建议不要这样做。也就是说,请记住,窗口的设计从字面上反表明将任何类型的“控制”放在非客户区。也就是说,通过查看此处发布的事件代码,您可以很容易地看到。您实际上必须通过自己绘制新的“控件”,然后通过所有非客户区消息拦截“特殊”控件来解释您的新“控件”。

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,然后将控件填充到表单的尺寸,这样您就不会看到尴尬的间隙。这是我做的一个非常简单的例子。当然,您可以更改颜色并添加关闭/最小化/最大化按钮以及您喜欢的任何内容。

在此处输入图像描述

希望对大家有所帮助。

于 2013-07-29T09:42:48.693 回答