我想在屏幕顶部放置组件,就像在此屏幕截图中一样。
我的项目中有一个TPageControl
,我希望将它移到边框的顶部。我怎么能这样做?
答案 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,然后将控件填充到表单的尺寸,这样就不会看到尴尬的间隙。这是我做的一个非常快速的例子。当然,您可以更改颜色并添加关闭/最小化/最大化按钮以及您喜欢的任何内容。
希望一切都有所帮助。