多页面界面分为静态MPI和动态MPI两种形式。静态MPI的标签数量固定,用户在事先设计好的多个页面上进行切换。象选择对话框(Option Dialog)就属于静MPI。动态MPI的标签数量不固定,由程序根据需要动态的产生或消除,象代码编辑窗体就是动态MPI,程序可根据用户的需要产生多个文本页面,也可以动态地关闭页面。利用Delphi的TNotebook和Ttabset 可十分方便地设计静态MPI。设计动态MPI则需要编写专门的代码。
4.2.1 静态多页面界面
TNotebook,TTabSet可用来开发静态多页面界面。TNotebook部件能显示多页, 每页都有相应的控制。通常TNotebook与TTabset配合进行控制。TTabset 有一组水平的标签,每个标签可通过创建字符串列表进行某种控制。
MPIEDit例程中的主窗体中有一个TNotebook 部件和 TTabSet 部件。 把两个部件的Aglin属性设置成bsTop和bsBotton,使它们分别处在窗体的上下两部分。为了使TTabSet与TNotebook配合工作,使用下代码:
TabSet1.Tabs := Notebook1.Page; 另外,在TabSet的OnClick事件中定义下如下代码,可使用户在选择标签时开打相应的页。
TObject);… begin
procedure
:
TEditForm.TabSetClick(Sender
Notebook1.PageIndex := TabSet1.TabIndex; … end;
设计静态MPI时,可在部件窗体(Component Palette)的WIN3。1页面中选中TNotebook 部件,然后在Object inspector窗体中双击TNotebook的Pages属性,Dephi 将弹出对话框,用户可以在此确定Notebook的页数和字符串列表,如图4.6。关闭对话框后, 可对每一页进行设计,使用鼠标右按钮弹出快速菜单进行页面切换。
4.2.2 动态多页面界面
使用Delphi进行静态MPI设计非常简单,进行动态MPI设计则需编写专门的代码。 对
于一个多页面文本编辑器,应能实现以下功能:
● 动态生成页面,每个页面均能进行文本编辑
● 动态关闭页面,直到窗体中只有一个页面为止
● 页面切换不影响各种文本编辑操作 为了实现以上功能,程序中使用了动态页面类(TDynaPage),其定义如下: type TDynaPage = Class(TObject);
该类可根据需要动态的产生页面, 每个页面上创建了可进行文本编辑的TMeno部件。
procedure... puclic CurPage : integer; FileList : TSringList; end;
CurPage表示当前用户选择的页面数,用户切换、增加、删除页面均影响CurPage 的值,CurPage初如化为零页。FileList存放打开或创建文件的名字以及与这些文件相关的编辑部件TMemo,页面动态创建、删除将影响FilstList的值。