delphi制作多文档界面

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

最为一个巩固之前有关窗体和对象的有关知识,下面就建立一个简单的MDI示范程序,这个程序的功能是打开和保存图形文件(包括位图、图标等),为了完成这个任务,我们有一个大概的计划,计划内容如下:

(1)建立主窗体(一个MDI父窗体),包括菜单。

(2)为【File | Open…】和【File | Save…】菜单选项编写代码。

(3)为Windows菜单上的Cascade、Tile和Arrange All选项编写代码。

(4)建立MDI子窗体。

(5)建立一个About对话框。

(6)然后再回忆和欣赏一下这段工作。

时间就是金钱,即刻就做吧。

一、创建主窗口窗体

首先创建一个主窗口窗体,一个MDI应用程序的主窗口的FormStyle属性必须设置为fsMDIForm。不但要为应用程序增加File Open和File Save 对话框,还要增加一个菜单。

1、启动Delphi,并从主菜单选择【File | New | Application】;

2、把主窗体的Name属性设置为MainForm;

3、把Caption属性设置为Picture Viewer;

4、把FormStyle属性设置为fsMDIForm;

好了,下面为此窗体增加一个菜单,利用Delphi特性,引进一个预定义菜单,具体如下:1、点击组件选项板的Standard标签,并点击MainMenu按钮;

2、把MainMenu组件点击放置到窗体上,具体放到哪个地方无所谓了,因为在运行阶段,代表菜单的图标只是占地方而不显示,这是非可视化组件。

3、把MainMenu组件Name属性改为MainMenu;

4、双击MainMenu组件,就会出现Menu Designer对话框;

5、在MainMenu上点击鼠标右键,选择“Insert From Template…”,将出现Insert Template对话框;

6、选择“MDI Frame Menu”并点击OK,此菜单将显示在Menu Designer上,关闭Menu Designer窗口。

现在又回到了主窗体,注意现在窗体上多了一条菜单,此时先不要点击任何子菜单项,我们先准备File Open对话框和File Save对话框:

1、点击组件选项板的Dialogs标签,选择Open Picture Dialog组件,并把它放到窗体上,这也是一个非可视组件。

2、把Open对话框的Name属性改为OpenPictureDialog;

3、把Open对话框的Title属性改为“Open a Picture for Viewing”;

4、在窗体再增加一个Save Picture Dialog组件;

5、把此组件的Name属性改为“SavePictureDialog”,把Title属性改为“Save a

Picture”;

此时窗体看起来应该像下图:

二、编写【File | Open…】和【File | Save As…】菜单选项代码

下面就准备开始编写代码,Delphi提供了一种很好地编写菜单处理程序的方法,从而使遇到的麻烦最小。还不要建立MDI子窗体,但要充分了解它,并用它来为菜单处理程序编写代码,记住在建立MDI子窗体之前一直不要编译应用程序(因为还没有建立MDI子窗体,编译会出现错误的)

1、在主窗体上选择【File | Open…】菜单项,这样就会在Code Editor中为此菜单项建立一个事件处理程序。

2、为此事件处理程序键入下列代码:

?

1 2 3 4 5 procedureTMainForm.Open1Click(Sender: TObject); var

Child: TChild;

begin

ifOpenPictureDialog.Execute then

6 7 8 9

10

11

12

13

14

15

16

17 begin

Child := TChild.Create(Self);

withChild.Image.Picture do

begin

LoadFromFile(OpenPictureDialog.FileName);

Child.ClientWidth := Width;

Child.ClientHeight := Height;

end;

Child.Caption := ExtractFileName(OpenPictureDialog.FileName); Child.Show;

end;

end;

这段代码首先打开一个“Open a Picture for Viewing”对话框,并得到一个文件名,如果点击这个对话框的OK按钮,就会产生一个TChild对象(TChild是MDI子类的名字,后面将要建立它。)图像文件被显示到窗体上的Image组件,并且MDI子窗口将会与图像大小相匹配,最后子窗体的标题会显示被选中的图像文件名。

Note

在上面的方法中,ExtractFileName函数是用来从路径中提取文件名的函数,文件名包含在OpenPictureDialog的FileName属性中,相关的函数包括ExtractFilePath、ExtractFileDir、ExtractFileDrive和ExtractFileExt。

Note

前面我们说过所有动态创建的对象到最后都要用Free删除掉,但是上面的代码中好像违反了这个规律,实际上并没有,因为VCL将负责释放分配给MDI子窗口的内存。注意TChild 构造程序中的单个参数是Self;这是通知VCL,MDI子窗体的拥有者就是此MDI窗体窗口。当MDI窗体消失时,它将删除所有MDI子对象。

3、按下F12键,切换到主窗体MainForm,现在从菜单中选择【File | Save As…】,将会显示该菜单项处理事件。

4、键入以下代码:

相关文档
最新文档