前些日子做一个项目需要用到 Tpagecontrol 这个控件,然而平时使用的时候都是直接在上面增加控件就可以了,可是这次却是需要动态添加页面,上网也搜了,对于这方面的知识还真是没见到多少,也许是我搜索的方法有问题吧,千辛万苦也就找到了一下3种方法,如果要认真将的话,也只能算是2种吧,今天分享出来,希望能为要用到这个功能,又不会的人减少些时间吧。
第一种方法:
procedure PageAddForm(aPage:TRZpageControl;aForm:TForm;TaFormClass:TClass);
beginapplication.CreateForm(TComponent(TaFormClass),aForm);aForm.MaualDock(aPage)); //融合至pageControl,aForm.Visible:=true; //这个比用 show效果更好aPage.ActivePageindex:=aPage.PageCount-1;
end;也可以用aForm.MaualDock 可以用setparent;
这个方法比较简单,直接可以使用这个函数,里面的aForm 和 TaFormClass 是新建的窗口,然而这个方法却一直有个问题,就是窗口创建出来后,有一个停靠的过程,虽然时间很短,然而总是影响美观的。
第二种方法:
这个方法比较复杂,然而应该就是创建动态方法的正确方法了。
procedure createTabPage(PageControl:TPageControl;form:TForm)
varnewpage:TTabSheet;
beginnewpage:=TTabSheet.create(PageControl); //在PageControl 上创建TTabSheet控件newpage.caption:=form.caption;newpage.PageControl:=PageControl; //按我的理解是设定newpage 的父控件PageControl.ActivePage:=newpage; //吧newpage设定为活动页//到这里页面已经动态创建成功了,然而这还没有达到我们需要的功能,我们是需要在上面添加控件的form:=TForm.create(newpage);Form.FormStyle := fsNormal;Form.BorderStyle := bsNone;Form.Parent := vSheet;Form.Align := alClient;Form.Show;end
第三中方法就不贴了,基本上是上面的进行改造的