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

怎么用PageControl动态控制子窗体

2012-09-14 
如何用PageControl动态控制子窗体要求窗体的新增与销毁与PageControl动态对应,即每个PageControl的tab页与

如何用PageControl动态控制子窗体
要求窗体的新增与销毁与PageControl动态对应,即每个PageControl的tab页与各个子窗体一一对应,并且每个PageControl的tab页的标题栏为子窗体的标题。

[解决办法]

探讨
同时修改CHILDWIN单元的关闭事件
Delphi(Pascal) codeunit CHILDWIN;

interface

uses Windows, Classes, Graphics, Forms, Controls, StdCtrls;typeTMDIChild=class(TForm)
Memo1: TMemo;procedureFormClose(Sender: TObject;varAction: TCloseAction);
private{Private declarations}public{Public declarations}end;

implementation

uses MAIN;{$R *.dfm}procedureTMDIChild.FormClose(Sender: TObject;varAction: …

[解决办法]
implementation
uses Unit5,Unit2,Unit4;
{$R *.dfm}
procedure TForm1.N4Click(Sender: TObject);
var
ts: TRzTabSheet;
Form2:TForm2;
i,j:integer;
begin
i:=0;
j:=0;
if TForm2(FindComponent('form2')) = nil then
begin
ts:= TRzTabSheet.Create(Self);
ts.PageControl := RzPageControl1;
Form2 := TForm2.Create(Self);
ts.Caption:='form2';
Form2.Parent := ts;
Form2.Align := alClient;
Form2.BorderStyle := bsNone;
Form2.Show;
Rzpagecontrol1.ActivePage:=ts;
end
else
begin
for i:=0 to rzpagecontrol1.PageCount -1 do
begin
if rzpagecontrol1.Pages.Caption ='form2' then
begin
j:=i;
break;
end;
end;
RzPageControl1.ActivePage :=RzPageControl1.Pages[j];
end;
end;
procedure TForm1.N3Click(Sender: TObject);
var
ts: TRzTabSheet;
Form4:TForm4;
i,j:integer;
begin
i:=0;
j:=0;
if TForm4(FindComponent('form4')) = nil then
begin
ts:= TRzTabSheet.Create(Self);
ts.PageControl := RzPageControl1;
Form4 := TForm4.Create(Self);
ts.Caption:='form4';
Form4.Parent := ts;
Form4.Align := alClient;
Form4.BorderStyle := bsNone;
Form4.Show;
Rzpagecontrol1.ActivePage:=ts;
end
else
begin
for i:=0 to rzpagecontrol1.PageCount -1 do
begin
if rzpagecontrol1.Pages.Caption ='form4' then
begin
j:=i;
break;
end;
end;
RzPageControl1.ActivePage :=RzPageControl1.Pages[j];
end;
end;
procedure TForm1.RzPageControl1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
index:integer;
begin
if (Button = mbLeft) and (ssDouble in Shift) then
begin
Index := RzPageControl1.TabAtPos (X, Y);
if rzpagecontrol1.PageCount >1 then
begin
if index<rzpagecontrol1.PageCount-1 then
begin
RzPageControl1.Pages[Index].Free;
RzPageControl1.ActivePage :=RzPageControl1.Pages[index];
end
else
begin
RzPageControl1.Pages[Index].Free;
RzPageControl1.ActivePage :=RzPageControl1.Pages[index-1];
end;

end
else
RzPageControl1.Pages[Index].Free;
end;
end; 
////////////////注意下载三方控件RzPageControl1 要原程序 就留E-Mial
[解决办法]
楼主300分怎么发的?
为什么我最多只能发100分的帖子?
不解中...

你可以把某一个窗体的parent设置成PageControl的TabSheet,
再将对齐方式改为alClient,
TabSheet的标题改为原来的窗体标题。
[解决办法]
探讨
楼主300分怎么发的?
为什么我最多只能发100分的帖子?
不解中...

热点排行