首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

Delphi中TRzPageControl兑现多窗口的融合窗口详细方法

2013-07-08 
Delphi中TRzPageControl实现多窗口的融合窗口详细方法请求前辈帮忙详细讲解如何把现有的系统(只能单窗口操

Delphi中TRzPageControl实现多窗口的融合窗口详细方法
    请求前辈帮忙详细讲解如何把现有的系统(只能单窗口操作,调用方式为showmodal)改为show后会只能看到最前面的窗口.把子窗口的FormStyle属性改为mdichildform后无法运行(只能是fsNormal).
在网上看到说TRzPageControl可以实现多窗口的融合窗口,不知详细的方法是如何操作的?

    由于本人只能发100分的贴子,要是谁能帮我实现了我结贴时再加80分(哈哈,再多就没有了,因为我只有180分)!
[解决办法]
这种事怎么还扎堆啊,昨天刚有个帖子
http://topic.csdn.net/u/20111031/22/68306454-2046-4620-9234-b846779e56c4.html?80071
那个Lz貌似研究的比较多的说
[解决办法]
在那上面放窗体就别用mdi,用普通窗体,设置其parent,就用普通的show即可
[解决办法]
提供一个过程,供参考:


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;


注意:在调用之前,先检查一下aPage上是否已融合的当前要融合的表单,
如果已融合,则切换到对应的Tabsheet,否则调用。


融合之后,生成的Tabsheet.caption为表单的caption
因此通过
   for i:=0 to aPage.PageCount-1 进行遍历查找即可。
   ......

当然,这个检查过程也可以加在PageAddForm中去,加个参数就行了。

仅供参考。

[解决办法]
不知道这是不是楼主想要的啊:
http://blog.csdn.net/sdudubing/article/details/6790374

[解决办法]
因为你是作为主表单的 局部过程,所以实现部分要加上主表单的类名

procedure Tfm_MainForm.PageAddForm(aPage:TRZpageControl;aForm:TForm;TaFormClass:TClass);
begin
    ......
end;
[解决办法]
再浪费一下CSDN的资源,刚做了简单的测试给你。

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,


  Dialogs, StdCtrls, RzTabs;

type
  TForm1 = class(TForm)
    page1: TRzPageControl;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
    procedure PageAddForm(mform:TForm;TmFormClass:TClass);
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

{ TForm1 }

procedure TForm1.PageAddForm(mform: TForm; TmFormClass: TClass);
begin
    application.CreateForm(TcomponentClass(TmFormClass),mForm);
    // mForm.show;
    mForm.ManualDock(page1);
    mForm.Visible :=true; //这种方法的效果比用 show的效果要好一些
    page1.ActivePageIndex :=page1.PageCount-1;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   pageAddForm(Form2,TForm2);
end;

end.


============================

unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm2 = class(TForm)
    Label1: TLabel;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

end.


热点排行