我想在当前MDI主窗体里,显示其它窗体的内容,也就是当点击左边的导航按钮时,右边一框显示将要显示的窗体.

解决方案 »

  1.   

    如果你做的标准的mdi程序,左边有align left的菜单项,你点了它,create新的child窗体并show,不就在你右边的客户区里了么?你倒底想问啥?
      

  2.   

    主窗体上放个PANEL之类ALGIN属性设置成ALLEFT
    显示CHILD窗体的时候就是你要的这个效果
      

  3.   

    在主窗体中初始化第二个窗体。这样运行两个窗体都能显示出来了然后在主窗体中导航OnClick事件中写那个窗体如何变化
      

  4.   

    本人没有试过,只是觉得IBM很轻松实现这样的框架,想看一下Delphi能不能轻松实现
      

  5.   

    想轻松实现这样的功能,Delphi可能是做不到的.
      

  6.   

    一.用第三方控件,RC3控件包,里面有个控件,是啥名字来忘了,可以做成像WINDOWS一样的导航条,完全可以实现你的要求不过要停靠的窗体的FormStyle不能用MDIChild ,同时还需要设置了停靠的窗体的Position属性,
    二.手动画导航面板,再用窗体嵌套的方法,将你要的窗体嵌套到面板上也是可以的
      

  7.   

    我就是不喜欢使用MDIChild窗口,你说的开始沾边了,RC3??还需要第三方控件呀
      

  8.   

    2楼和3楼说的都比较简单.跟没说差不多,因为大家都知道这种方法:
    主窗体可以是MDI窗体.
      但整个应该程序除了这个MDI窗体之外没有一个子窗体.
    我的意思是一个组件或框架可以让一个窗体在其中显示,就好比Frame
      

  9.   

    说了半天就MPI,那你就不要说成MDI。
      

  10.   

    Form2.Align alClient
    Form2 设置为自动创建procedure TForm2.FormCreate(Sender: TObject);
    begin
      Self.ParentWindow := Form1.Panel1.Handle;
    end;
      

  11.   

    更正:这样是可以在Panel里显示窗体,但窗体上面的文本框等控件都无法获得焦点录入数据
      

  12.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      fm2 : TForm2;
    begin
      fm2 := TForm2.Create(Self);
      fm2.FormStyle := fsNormal;
      fm2.Parent := Self;
      fm2.Align := alClient;
      fm2.Show;
    end;