PageControll加入子窗体
一、子窗体
1、FormStyle:=fsNormal;
2、WindowState := wsMaximized;
3、BordStyle := bsNone;
4、Option-Forms设置子窗体:Available forms
5、FormClose事件
procedure TShowPathFrm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=caFree;
end;
6、FormDestroy事件
procedure TShowPathFrm.FormDestroy(Sender: TObject);
begin
ShowPathFrm:=Nil;
end;
二、主窗体
1、加入PageControl
2、增加一个Page
3、调用打开(窗体)事件
procedure TMDIMainFrm.Button1Click(Sender: TObject);
begin
if not Assigned(ShowPathFrm) then
ShowPathFrm:=TShowPathFrm.Create(nil);
try
ShowPathFrm.ManualDock(PageControl1.Pages[0]); // 嵌入PageControl1.Pages[0]
ShowPathFrm.Show;
except
ShowPathFrm.Close;
Exception.Create('Error');
end;
end;
三、Page的删除
1、MainFrm中,PageControl1关联一个PopupMenu,菜单项目名“删除”,代码如下
procedure TMDIMainFrm.N3Click(Sender: TObject);
var Tab:TTabSheet;
i: Integer;
begin
Try
Tab :=(PageControl1.ActivePage as TTabSheet);
Tab.Free;
if PageControl1.ComponentCount>0 then
PageControl1.ActivePage:=PageControl1.Pages[PageControl1.ComponentCount-1];
except
end;
end;
2、在Mdi子页中,关联一个空的(无项目)PopupMenu。
这样,在PageControl的Page页面上,鼠标右键点击打开的,就是指定PageControl1关联的PopupMenu,即“删除”,成功删除(关闭)子页面(Mdi)。
四、显示平稳过渡
建立的新窗口,显示有时出现屏闪现象。经努力,通过下述代码实现。功能就是隐蔽方式建立子窗口,让子窗口参数界面设置好后,再显示出来。效果不错。
1、初始化子窗口属性
MDIFrm.WindowsSate:=wsNormal
MDIFrm.Visible:=False;
2、子窗口Onshow事件的未端加入代码
Self.WindowState:=wsMaximized;
Self.Visible:=True;