是直接新建的窗口啊。用的最简单的:新建一个Application.在form1上放一个Button1。代码是
form2.show.然后新建一个窗口,运行一下。点出form2之后,把form1最小化,form2也跟着最小了。怎么办??
另外怎么能得到一个没有标题栏但是有不可拉动改变的边框的窗体?就是borderstyle:=bsDialog的效果但是没有标题栏??

解决方案 »

  1.   

    给分吧。
    这些问题都问了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;