本人在delphi程序的设计过程中遇到一个问题,如何在同一个窗体上实现象网页中那样的框架功能,比如说,我在delphi的窗体上放了一个按钮,点击后就会弹出一个新的窗体,而我现在不想让这个窗体作为一个单独的窗体出现,而是作为原窗体的一部份,就象嵌入在原窗体中一样.这个问题有一个网友给我发来的程序是这样写的:
procedure TForm1.Button1Click(Sender: TObject);
var
  form2:tform2;
begin
  form2:=tform2.Create(Panel1);
  form2.Parent:=Panel1;
  form2.Caption :='网页测试';
  form2.Align :=alclient;
  form2.Show ;
end;
这个程序基本上实现了框架的功能,可是我发现了一个不足之处,就是如果显示在TPanel中的窗体form2大于Tpanel的面积时,只能显示form2一部分,而不会出现滚动条。这样我就没有办法看到没有显示的那一部分,请问有没有高手能帮帮我!

解决方案 »

  1.   

    这就是MDI或是SDI程序的写法了,你把你的主窗体的formstyle设为mdiform
    你要设为子窗口的窗体的formstyle设置为mdichild
    然后在你的按钮中写:
    form2:=Tform2.create(application);
    你的那个窗体就可以做为子窗体显示了!如果需要例子的话,你直接打开DELPHI,菜单->new->other->projects->mdi application这就是一个例子了.
      

  2.   

    为什么要放一个panel呢?不放panel的话就可以了。
    把form2.Parent:=Panel1;这句屏蔽掉。
    还有:form2:tform2;应该改为form2:form2;
          form2:=tform2.Create(Panel1);改为form2:=tform.Create(Panel1);
      

  3.   

    不好意思,上边写错了一句。
    form2:tform2;应该改为form2:tform;
          
      

  4.   

    你可以使用Frame控件,它的使用方式和你的相似。
      

  5.   

    如果不用Framer的话,可以试试最笨的办法
    用PANEL,设计时设成ENABLE:=FALSE
    运行时再设成true 就可以了!
      

  6.   

    您好,你的方法我已经试过了,问题还是一样的,当frame显示出来后,许多部分还是不能显示出来,虽然有时也会出现滚动条,但仍不能完全显示frame上的控件,其实这种方法许多软件都用到了,比如说Delphi的sql Exprolor就是这样,点击左面的树形菜单,窗体右方就会显示不同的内容,虽然用Panel的隐藏功能可能可以实现,但对于大型系统毕竟不现实,有没有高手能告诉我彻底解决的方法呢?
      

  7.   

    更正:上面的framer应为frame
    enable应为visible