是直接新建的窗口啊。用的最简单的:新建一个Application.在form1上放一个Button1。代码是
form2.show.然后新建一个窗口,运行一下。点出form2之后,把form1最小化,form2也跟着最小了。怎么办??
另外怎么能得到一个没有标题栏但是有不可拉动改变的边框的窗体?就是borderstyle:=bsDialog的效果但是没有标题栏??
form2.show.然后新建一个窗口,运行一下。点出form2之后,把form1最小化,form2也跟着最小了。怎么办??
另外怎么能得到一个没有标题栏但是有不可拉动改变的边框的窗体?就是borderstyle:=bsDialog的效果但是没有标题栏??
这些问题都问了N次了!!!
最小化的问题: //以前的回答
新建一个工程,主窗体为FORM1,另外有一个窗体为FORM2,两个窗体都显示到桌面上,如何做到:
当FORM1最小化时,FORM2仍然保持在屏幕上?(是不是要更改FORM2的Parent,但我将FORM2的Parent设为桌面仍然不行)很简单啊,只需要重载Form2的CreateParams方法,如下所示:
procedure TForm2.CreateParams(var Params: TCreateParams);
begin
inherited;
Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;//可以在TaskBar上显示Form2的标题,如果不需要可以去掉。
Params.WndParent := GetDesktopWindow;//哈哈,原来奥秘在这儿!!
end;
赶快试试看?
至于网络蚂蚁那样的拖放框,和有边框无标题栏的窗口,有几个方法可以做到,我讲一个最简单的: //以前也回答过
procedure TForm1.FormCreate(Sender: TObject);
begin
borderstyle:=bsSizeable;
setwindowlong(handle,gwl_style,getwindowlong(handle,gwl_style) and not ws_caption);
clientheight:=height;
end;
如果要限制窗体的大小,设置窗体的Constraint变量即可。
网络蚂蚁拖放窗口:
TForm1=class(TForm)
...
public
procedure CreateParams(var Params: TCreateParams); override;
// 加入这一行
end;
// Copy 如下代码即可
procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
with Params do
begin
Style := (Style or WS_POPUP) xor (ws_dlgframe);
file://如果要凹下去的效果,则加入下面这行,否则去掉
ExStyle := ws_ex_clientedge;
end;
end;