关闭

delphi Tpagecontrol 动态增加页面

标签: delphitpagecontrol
1540人阅读 评论(0) 收藏 举报
分类:


    前些日子做一个项目需要用到 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

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


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:15958次
    • 积分:283
    • 等级:
    • 排名:千里之外
    • 原创:13篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类