怎么把子窗口的标题栏去掉???挑战性的问题,我问过很多次,无人敢答!!再问(50分)

  • 主题发起人 主题发起人 fmdsaco
  • 开始时间 开始时间
F

fmdsaco

Unregistered / Unconfirmed
GUEST, unregistred user!
当打开一个程序时,就有一个主窗体,再打开一个窗体时,它的标题栏在主窗体内,非常的不好看,想去掉,也就是打开的子窗体和主窗体共用一个标题栏了,我在很多个论坛问过,没有人回答,可能是太简单了,不过我不懂,各位大侠帮帮我
 
消除标题栏好办,有两种方法——
一、在子窗口的OnCreate事件里:
SetWindowLong(Handle, GWL_STYLE, GetWindowLong(Handle, GWL_STYLE) and not WS_CAPTION);
Height := Height + 1;//调整一下大小使它重绘
二、重载子窗口的CreateParams方法:
在子窗口类的定义中加上:
protected
procedure CreateParams(var Params: TCreateParams); override;
在子窗口(如TMDIChild)的实现部分:
procedure TMDIChild.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
with Params do Style := Style and not WS_CAPTION;
end;
 
楼上的应该可以
 
什么超难问题?
是你的问题太容易了,
或者,你不是这个意思? 共用一个标题栏了什么意思?,共用消息还是什么?

 
不知你要干什么,
如果你是要系统每次只能打开一个子窗口操作,并且不显示子窗口的标题栏,
那么你只要把字窗口的
BorderStyle 设为 bsNone,
WindowsState 设为 wsMaximized

 
同意楼上的意见
 
mdi子FORM当你最大化后自动 融合到主FORM,没有标题蓝。不最大话就有。想这个时候也没有的话。那么覆盖CREATEPARAMS()方法,去掉标题蓝标志位。要移动它(没有了TITLEBAR)。可以处理 WM_LBUTTONDOWN消息 里 :
ReleaseCapture;
Self.Perorm(WM_SYSCOMMAND,$f012,0);
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
I
回复
0
查看
562
import
I
后退
顶部