知识大全 文本编辑器的设计(二)[3]

Posted 真值

篇首语:要须心地收汗马,孔孟行世目杲杲。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 文本编辑器的设计(二)[3]相关的知识,希望对你有一定的参考价值。

DELPHI基础教程:文本编辑器的设计(二)[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

       替换对话框部件

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

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

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

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

    取值                          含义

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

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

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

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

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

  procedure TEditForm Replace(Sender: TObject)

  var

  Found: Boolean;

  begin

  with ReplaceDialog do

  begin

  if AnsiCompareText(Memo SelText FindText) = then

  Memo SelText := ReplaceText;

  Found := SearchMemo(Memo FindText Options)

  while Found and (frReplaceAll in Options) do

  begin

  Memo SelText := 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 TEditForm Open/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 TEditForm Save Click(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

  SaveAs Click(Sender)

  else

  begin

  CreateBackup(Filename)

  Memo Lines SaveToFile(Filename)

  Memo Modified := False;

  end;

  end;

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

cha138/Article/program/Delphi/201311/25250

相关参考

知识大全 文本编辑器的设计(二)[4]

DELPHI基础教程:文本编辑器的设计(二)[4]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 文本编辑器的设计(二)[1]

DELPHI基础教程:文本编辑器的设计(二)[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 文本编辑器的设计(一)[2]

DELPHI基础教程:文本编辑器的设计(一)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 文本编辑器的设计(一)[1]

DELPHI基础教程:文本编辑器的设计(一)[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 eclipse中文本编辑器的换行

  Eclipse使用系统内置的TextEditor做为文本编辑器这个文本编辑器有一个长期存在的问题那就是文本无法换行虽然这个问题长期存在而且解决起来并不困难但是这却给人们带来不少麻烦 &n

知识大全 使input type=file 不可编辑

  今天在做项目的时候遇到上传文本框的问题  <inputtype=filesize=name=photoupload/>  在firefox中该控件产生的文本框是默认不可编辑的但是在IE

知识大全 ckeditor+代码高亮

      最近由于自己想做一个网站形式的代码库自已写一个在线文本编辑器对于现在的我来确实是很不切实际呵呵!再说了现在有一个非常好的在线文本

在使用Word2010进行文字编辑时,下列叙述错误的是

在使用Word2010进行文字编辑时,下列叙述错误的是_____。A、允许同时打开多个文档B、可将正在编辑的文档另存为一个纯文本文件C、使用“打开”命令可以打开一个已存在的文档D、打印预览文档时,打印

知识大全 利用Delphi编辑控制摄像头(二)

利用Delphi编辑控制摄像头(二)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &n

知识大全 Java多线程程序设计二十三个要点[3]

Java多线程程序设计二十三个要点[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!