手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>delphi>列表

Delphi 文本编辑器的设计(四)

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

4.4.4 打开对话框部件 

  打开对话框部件为应用程序显示打开对话框。使用Execute方法可显示打开对话框用户通过选择文件类型下拉框中的文件类型,可以确定显示在文件列表中的文件。 例如,如果用户选择*.txt文件类型,那么只有在当前目录下的文本文件才会显示在文件列表中。文件扩展名通常也称为过滤器。

  打开对话框包含一个Filters(过滤器)的属性,它可确定文件类型和在文件类型下拉框中的顺序。应用程序可以为打开对话框定义多个过滤器,对话框的FilterIndex 属性可以决定哪个过滤器是文件类型下拉框中的缺省过滤器。如FilterIndex等于2,表示程序运行时出现在文件类型下拉框的过滤器是第2个过滤器。

  例程中关于文件打开的代码如下: 

  procedure TEditForm.Open/Click(Sender : TObject);

begin

if OpenDialog/.Execult then

begin

 …

    Open(Open Dialog/.FileName)

end

end;

  打开,保存对话框中的Options属性值见表4.4 

4.4 打开、保存对话框的Options属性取值及含义

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

值               含义

──────────────────────────────────────

 

ofAllowMultiSelect 如果是真值,则允许在文件名列表中选择多个文件。

ofCreatePrompt 如果是真值,当用户在文件编辑框中输入一不存在的文件名,

            并选择OK按钮,则会出现消息框, 提示用户此文件不存在并

            询问是否以此文件名创建一新文件。

ofExiengronDifferent 如果是真值,从对话框中返回的文件扩展名将不同于缺省扩展名。

其值存入DefaultExt属性中。

ofFileMustExist   如果是真值, 当用户在文件编辑框中输入一个不存在的文件名时,

并选择OK按钮, 则会出现一消息框提示用户此文件不存,并询

问是否输入了正确的路径和文件名。

ofNoChangeDir 如果是真值,当前目录将设置成对话框第一次出现的目录,并忽

略任何目录改变。

ofOverWritePrompt 如果是真值,当用户试图保存一个已存在的文件时, 将出现一消息

框,提示用户此文件已存在,并询问是否覆盖。

ofPathMastExit 如果是真值,用户在文件名编辑框只能输入有效路径名, 否则出

现消息框,提示用户路径无效。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

4.4 打开、保存对话框中的Options属性取值及含义

文件保存对话框与打开对话框类似,如图4.11。它的Option属性见上表。例程在保存文件前先对文件进行读写判断,如果文件是只读文件或未指定文件名的新文件, 则程序对文件不保存,否则备份文件。代码如下:

  procedure TEditForm.Save1Click(Sender: TObject);

procedure CreateBackup(const Filename: string);

var

BackupFilename: string;

begin

BackupFilename := ChangeFileExt(Filename, BackupExt);

DeleteFile(BackupFilename);

RenameFile(Filename, BackupFilename);

end; 

function IsReadOnly(const Filename: string): Boolean;

begin

Result := Boolean(FileGetAttr(Filename) and faReadOnly);

if Result then MessageDlg(Format('%s is read only.',

[ExtractFilename(Filename)]), mtWarning, [mbOK], 0);

end; 

begin

if (Filename = '') or IsReadOnly(Filename) then

SaveAs1Click(Sender)

else

begin

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!