DELPHI基础教程文本编辑器的设计篇_Delphi_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

DELPHI基础教程文本编辑器的设计篇

作者:黑客防线网安网站维护基地 来源:黑客防线网安网站维护基地 浏览次数:0

黑客防线网安网讯:本章介绍多文本界面(MDI)、多页面界面(MPI)技术;VCL库中TMemo,TEdit 控件以及有关文本编辑的常用对话框的使用。我们开发的MPIEdit.dpr是一个文本编辑的实用程序,可实现如下功能:

begin

Inc(I);

if I >= Length(SearchString) then

begin

if (not (frWholeWord in Options)) or

(SearchCount = 0) or

(Result[I] in WordDelimiters) then

Exit;

Break;

end;

end;

Inc(Result, Direction);

Dec(SearchCount);

end;

Result := nil;

end; 

end.

 4.4.3 替换对话框部件 

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

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

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

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

取值              含义

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

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

             FindText属性中的字符串。

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

             查找到的所有FindText属性中的字符串。

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

  例程中TEditForm.Replace方法响应OnReplace事件,Replace方法首先判断控制中被

选中字符串是否与替换字符串相等,如果不等则进行替换。而后根据Options中的方式循

环进行查找替换。直至无匹配字符串为止。其代码如下: 

  procedure TEditForm.Replace(Sender: TObject);

var

Found: Boolean;

begin

with ReplaceDialog1 do

begin

if AnsiCompareText(Memo1.SelText, FindText) = 0 then

Memo1.SelText := ReplaceText;

Found := SearchMemo(Memo1, FindText, Options);

while Found and (frReplaceAll in Options) do

begin

Memo1.SelText := ReplaceText;

Found := SearchMemo(Memo1, FindText, Options);

end;

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

ShowMessage('Cannot find "' + FindText + '".');

end;

end; 

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

CreateBackup(Filename);

Memo1.Lines.SaveToFile(Filename);

Memo1.Modified := False;

    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-7700-1.html
网站维护教程更新时间:2012-03-02 12:45:58  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer