b用panel来代替不行嘛???看不出有什么理由一定要用FORM

解决方案 »

  1.   

    我使用BCB,Pascal的语法不熟。
    TForm1.Create(TComponent* Owner);
    begin
        HorzScrollBar.Visible := false;
        VertScrollBar.Visible := false;
        Form2 := TForm2.Create(this);
        Form2.Parent := this;
        Form2.Visible := true;
    end;
      

  2.   

    photoshop的窗体结构就是这样!你可以用Panel代替Form!或者:Form1.autoscroll:=false;
         setparent(form2.handle,form1.handle);
      

  3.   

    to:smhpnuaasetparent(form2.handle,form1.handle);怎么用阿??哪个单元的阿,VCL里面好像也有这样一个函数阿,但两个函数的参数不同,编译通不过的阿
      

  4.   

    to:: jishiping(JSP 季世平)我一开始也是这样写的,后来发现一个FORM的子form是不能获得焦点的,标题栏始终是灰的!!!
      

  5.   

    to:all不能用PANEL阿,只能用form的,呵呵,而且最好不要用MDI,因为MDI主窗口的客户区很难控制
      

  6.   

    A.FormStyle:=fsMDIForm
    B.FormStyle:=fsMDIChild
    在B的单元写一个函数(注意,不是B的成员函数):
    function MyMDIChildProc(hwndMe:HWND;uMsg,wParam,lParam:DWORD):Integer;sdtcall;
    begin
      if (uMsg = WM_SIZE) or (uMsg = WM_MOVE) then
        Result := DefWindowProc(hwndMe,uMsg,wParam,lParam)
      else
        Result := DefMDIChildProc(hwndMe,uMsg,wParam,lParam);
    end;覆盖B的CreateParams:
    procedure TB.CreateParams(var Params: TCreateParams);
    begin
      inherited;
      Params.WindowClass.lpWindowProc := @ MyMDIChildProc;
    end;
    这样就可以了。
    由于我是在网吧上网,上面的代码可能有写错的地方,敬请原谅。
      

  7.   

    用MDI,拦堆了窗口的wm_changewindowpost消息
      

  8.   

    delphi下有一个例子的,为什么不看一下?
      

  9.   

    对不起,前面写错了:
    procedure TB.CreateParams(var Params: TCreateParams);
    begin
      inherited;
      Params.WindowClass.lpfnWndProc:= @ MyMDIChildProc;
    end;
      

  10.   

    var
     form2:tform;
    begin
       form2:=tform.create(application);
       form2.parent:=form1;
       form2.visible:=true;
    end;