我想将组件放在边框中的表单顶部,就像这个屏幕截图一样。
我进入了我的项目 a TPageControl
,我想将它移到边界的顶部。我怎样才能做到这一点?
需要注意的是,微软强烈建议不要这样做。也就是说,请记住,窗口的设计从字面上反表明将任何类型的“控制”放在非客户区。也就是说,通过查看此处发布的事件代码,您可以很容易地看到。您实际上必须通过自己绘制新的“控件”,然后通过所有非客户区消息拦截“特殊”控件来解释您的新“控件”。
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,然后将控件填充到表单的尺寸,这样您就不会看到尴尬的间隙。这是我做的一个非常简单的例子。当然,您可以更改颜色并添加关闭/最小化/最大化按钮以及您喜欢的任何内容。
希望对大家有所帮助。