当前位置:首页文章首页 IT学院 Delphi

一个简单的MDI示范程序(Delphi)

作者:  来源:  发布时间:2012-1-8 17:57:33  点击:
这段代码首先打开一个“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、键入以下代码:

procedure TMainForm.SaveAs1Click(Sender: TObject); begin   if SavePictureDialog.Execute then   begin     with ActiveMDIChild as TChild do     { 检查MDI子窗体是否被激活,只保存激活窗体的图像文件}       Image.Picture.SaveToFile(SavePictureDialog.FileName);   end; end;

这段代码比较简洁,头两行是用来检查MDI子窗口是否被激活,如果是激活的窗体,就会显示“Save a Picture”对话框,若用户点击OK,那就将用TPicture类的SaveToFile方法把图像存到盘上去。

Note

前面的这段代码中用到了as操作符,ActiveMDIChild属性返回一个指向TForm对象的指针,在这种情况下,实际上只需要一个指向TChild对象的指针(MDI子类是从TForm类派生来的),as操作符把ActiveMDIChild变量强制转化为一个TChild指针,如果as不能完成这种强制转化,as后面的语句将被忽略。

在继续讲解前,我们先把这个工程保存起来,将Unit1保存为PctViewU.pas,将工程文件dpr保存为PictView。

 

三、为【Windows】菜单编写代码

1、F12切换到MainForm窗体上,从窗体上MainMenu菜单上选择【Windows | Tile】;

2、只需要为此事件处理程序中输入一行代码即可,最终的事件处理代码如下:

procedure TMainForm.ile1Click(Sender: TObject); begin   Tile; end;

3、切换到MainForm窗体,并为菜单【Windows | Cascade】创建代码,如下:

procedure TMainForm.Cascade1Click(Sender: TObject); begin   Cascade; end;

4、切换到MainForm窗体,再次为菜单【Windows | Arrange All】创建代码如下:

procedure TMainForm.ArrangeAll1Click(Sender: TObject); begin   ArrangeIcons; end;

好,主窗体工作完成了,下面将进行创建MDI子窗体。

 

四、创建MDI子窗体

MDI子窗体非常简单,实际上不必写任何代码,只要操作下列各步即可:

1、用工具栏上的New Form按钮或者通过主菜单上的【File | New Form】来创建一个新窗体;

2、把它的Name属性设置为Child,Caption属性将被忽略,因为在运行阶段将要动态设置此属性;

image

3、把FormStyle属性设置为fsMDIChild,为了把这个窗体当做MDI子窗体来处理,这是必须的。

image

为窗体本身要做的就这些,下面就在此窗体上放置一个Image组件,Image组件将显示用户选择的图形文件。

1、点击组件选项板上的Additional标签,点击Image按钮,并把它放置到Child窗体上;

image

2、把它的Name属性设置为Image

image

3、把它的Stretch属性设置为True

image

4、把它的Align属性设置为alClient,Image组件将缩放到窗体的客户区大小;

image

5、选择Delphi主菜单的【File | Save】,以MDIChild保存此窗体单元。

6、切换到Code Editor,点击PctViewU标签,然后从Delphi主菜单选择【File | Use Unit】,选择MDIChild单元,点击OK,这样该工程就可以编译了。

此时,整个MDI子窗体看上去如下:

0093

我们的程序还没有完成,因为还差一个About框,此时我们更渴望看到程序的运行,先点击Run按钮,就可以运行程序了,选择【File | Open…】就可以打开任何图形文件了。

注意MDI子窗口会自动缩放它所包含的图形,打开几个文件,然后试一试Window菜单的Cascade和Tile选项。

 

五、建立About对话框

Tags:

MDI示范程序
首页 上一页 [1] [2] [3]  下一页 尾页
上一篇:Delphi使用ABC 下一篇:

相关软件

相关文章

文章评论

软件按字母排列: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z