delphi Tpagecontrol 动态增加页面


    前些日子做一个项目需要用到 Tpagecontrol 这个控件,然而平时使用的时候都是直接在上面增加控件就可以了,可是这次却是需要动态添加页面,上网也搜了,对于这方面的知识还真是没见到多少,也许是我搜索的方法有问题吧,千辛万苦也就找到了一下3种方法,如果要认真将的话,也只能算是2种吧,今天分享出来,希望能为要用到这个功能,又不会的人减少些时间吧。


    第一种方法:


procedure PageAddForm(aPage:TRZpageControl;aForm:TForm;TaFormClass:TClass);
begin
    application.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)
var
	newpage:TTabSheet;
begin
	newpage:=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

第三中方法就不贴了,基本上是上面的进行改造的


你可能感兴趣的:(delphi)