其他语言

位置:IT落伍者 >> 其他语言 >> 浏览文章

DELPHI基础教程:文本编辑器的设计(二)[3]


发布日期:2023年08月27日
 
DELPHI基础教程:文本编辑器的设计(二)[3]

替换对话框部件

替换对话框部件为应用程序提供替换对话框如图它包括查找对话框的所有功能此外还允许使用者更换被选中的字符串FindText 属性是应用程序需查找的字符串ReplaceText属性是被选中字符的替换字符串Options 属性决定对话框的显示方式其值如表所示

与查找对话框一样替换对话框亦有OnFind 事件用户输入查找字符串并按FindNext按钮时发生OnFind 事件用户选择Replace 或ReplacAll 时 对话框发生OnRelpace事件要替换的字符串存入ReplaceText属性中要编写相应的代码以支持替换功能

替换对话框的Options属性的取值及含义

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

取值 含义

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

frRelpace 如果是真值 应用程序将ReplaceText 属性中的字符串替换FindText属性中的字符串

frReplacAll如果是真值应用程序将ReplaceText属性中的字符串替换查找到的所有FindText属性中的字符串

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

例程中TEditFormReplace方法响应OnReplace事件Replace方法首先判断控制中被选中字符串是否与替换字符串相等如果不等则进行替换而后根据Options中的方式循环进行查找替换直至无匹配字符串为止其代码如下

procedure TEditFormReplace(Sender: TObject)

var

Found: Boolean;

begin

with ReplaceDialog do

begin

if AnsiCompareText(MemoSelText FindText) = then

MemoSelText := ReplaceText;

Found := SearchMemo(Memo FindText Options)

while Found and (frReplaceAll in Options) do

begin

MemoSelText := ReplaceText;

Found := SearchMemo(Memo FindText Options)

end;

if (not Found) and (frReplace in Options) then

ShowMessage(Cannot find + FindText +

end;

end;

打开对话框部件

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

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

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

procedure TEditFormOpen/Click(Sender : TObject)

begin

if OpenDialog/Execult then

begin

Open(Open Dialog/FileName)

end

end;

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

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

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

值  含义

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

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

ofCreatePrompt如果是真值当用户在文件编辑框中输入一不存在的文件名并选择OK按钮则会出现消息框 提示用户此文件不存在并询问是否以此文件名创建一新文件

ofExiengronDifferent 如果是真值从对话框中返回的文件扩展名将不同于缺省扩展名其值存入DefaultExt属性中

ofFileMustExist 如果是真值 当用户在文件编辑框中输入一个不存在的文件名时并选择OK按钮 则会出现一消息框提示用户此文件不存并询问是否输入了正确的路径和文件名

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

ofOverWritePrompt如果是真值当用户试图保存一个已存在的文件时 将出现一消息框提示用户此文件已存在并询问是否覆盖

ofPathMastExit 如果是真值用户在文件名编辑框只能输入有效路径名 否则出现消息框提示用户路径无效

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

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

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

procedure TEditFormSaveClick(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]

end;

begin

if (Filename = ) or IsReadOnly(Filename) then

SaveAsClick(Sender)

else

begin

CreateBackup(Filename)

MemoLinesSaveToFile(Filename)

MemoModified := False;

end;

end;

其中CreateBackup过程用以改变需备份文件的扩展名IsReadOnly 用以判断文件属性

[] [] [] []

               

上一篇:DELPHI基础教程:文本编辑器的设计(二)[4]

下一篇:DELPHI基础教程:Delphi图形图像编程(一)[3]