在SynEdit 中实现查找和替换功能

在C++ Builder中使用 SynEdit 插件时,功能的确强大,但是常用的  查找和替换功能却不好作了,尤其没有接触过的人,太麻烦了。其实 SynEdit 自带了搜索功能,很简单,很强大!
1. 准备工作:
    (1)在你设置好的界面中加入 SynEdit 控件,我的命名是 rve,当然,这是个误会,我是怕改多了程序麻烦.
    (2) 加入SynEditSearch控件, 我的命名是SynEditSearch1,默认。
    (3)  将 rve(synEdit) 的 SearchEngine 的改为 SynEditSearch1。
    (4)  加入FindDialog控件, 命名为 FindDialog1;
    (5) 加入ReplaceDialog控件,命名为ReplaceDialog1;
    (6) 加入 声明 TSynSearchOptions m_sschOption;
基本上一半完成了。不过接下来的才是比较麻烦!

2. 实现:
   (1) 在 FindDialog1 的OnFind事件中加入以下程序:
//-------------------------------------------------------------------------------------------------------------------------------
       m_sschOption.Clear();

    if ( FindDialog1->Options.Contains(frMatchCase) ) // 大小写敏感
    {
        m_sschOption << ssoMatchCase;
    }

    if ( FindDialog1->Options.Contains(frWholeWord)) // 全字符匹配
    {
        m_sschOption << ssoWholeWord;
    }

    if ( !FindDialog1->Options.Contains(frDown)) //向上搜索
    {
        m_sschOption << ssoBackwards;
    }
    //else m_sschOption << ssoFrontwards;

    if ( rve->SearchReplace( FindDialog1->FindTextA, "", m_sschOption) == 0)
    {
        AnsiString sMessage;
        sMessage.printf("Could not found /" %s /" ", FindDialog1->FindTextA );
        // if could not found, show hint
         Application->MessageBox(sMessage.c_str(), "Hint", MB_ICONINFORMATION);
    }

//-------------------------------------------------------------------------------------------------------------------------------

(2)  在ReplaceDialog1的 OnReplace 事件中添加如下代码

//-------------------------------------------------------------------------------------------------------------------------------
    m_sschOption.Clear();

    if ( ReplaceDialog1->Options.Contains(frMatchCase) ) // 大小写敏感
    {
        m_sschOption << ssoMatchCase;
    }

    if ( ReplaceDialog1->Options.Contains(frWholeWord)) // 全字符匹配
    {
        m_sschOption << ssoWholeWord;
    }

    if ( !ReplaceDialog1->Options.Contains(frDown)) //向上搜索
    {
        m_sschOption << ssoBackwards;
    }

    if ( ReplaceDialog1->Options.Contains(frReplaceAll)  )
    {
        m_sschOption << ssoReplaceAll;
    }
    else
    {
        m_sschOption << ssoReplace;
    }
   
    if ( rve->SearchReplace( ReplaceDialog1->FindTextA,
                            ReplaceDialog1->ReplaceTextA , m_sschOption) == 0)
    {
        AnsiString sMessage;
        sMessage.printf("Could not found /" %s /" ", FindDialog1->FindTextA );
        // if could not found, show hint
        Application->MessageBox(sMessage.c_str(), "Hint", MB_ICONINFORMATION);
    }
//-------------------------------------------------------------------------------------------------------------------------------

大功告成!现在运行试试看。对了,在你的按钮或者菜单的 OnClick事件中加入  FindDialog1->Execute();或者 ReplaceDialog1->Execute();
这个是我当初用到的时候作的,希望对需要的朋友有所帮助!
只为抛砖引玉,如有不妥,敬请指教!
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SynEdit Studio Readme谢谢使用SynEdit Studio;此控件包基于基于SynEdit加强,增加了一些第三方的SynEdit控件和自己写的控件;原SynEdit控件包开发者:Pieter Zijlstra;增强修改包作者:姚乔锋 yaoqiaofeng@sohu.com最近的版本请关注www.delphibox.com和www.delphifans.com;SynEdit Studio History修改版本 2005.06.8 01.SynEditActions,修正若是Action放在工具条上时会不断的闪烁的Bug; 02.TSynEdit,修正了控件出现'has no parent window'异常的可能,未经测试;修改版本 2005.06.1 01.TSynEdit,修改滚动条不现示的BUG; 02.TSynEdit,修改控件可能会出现错误的异常; 03.SynEditActions,基本完成,更新注册,并重做了个Demo;修改版本 2005.05.29 01.TSynEdit,稍稍修改使用缓冲技术后可能出现的异常; 02.SynEditActions,一个包含各种synedit动作的单元,目前只提供测试,没有注册单元;修改版本 2005.05.23 01.SynSpellReg,修正了这个单元注册时会找不到dcr文件的错误; 02.TSynEdit,修正了按END键到下一行开头等其它键类似的定位错误; 03.TSynEdit,修正了快速录入大量文本闪烁问题,使用缓冲技术和API锁定;修改版本 2005.05.20 01.TSynAutoCorrect,改正控件原先不支持文输入的特点; 02.TSynEdit,增加一个属性ActiveLine,类属性,具体参考TSynActiveLine; 03.TSynEdit,增加一个属性LineDivider,类属性,具体参考TSynLineDivider; 04.TSynEdit,增加一个属性WordWrap,类属性,具体参考TSynWordWrap; 05.TSynEdit,增加一个属性RightEdge,类属性,具体参考TSynRightEdge; 06.TSynEdit,修改高亮当前行的方式,在自动换行的情况也只高亮一行; 07.TSynEdit,当行间距大于零时,原本文本会显示于靠上,现修改于垂直间对齐; 08.TSynEdit,增加一个属性LineSpacing,可指定行间距; 09.TSynEdit,增加一个属性LineSpacingRule,可指定行间距类型; 10.TSynEdit,修正当控件是在一个子窗口上时,若是焦点转回到主窗口某个控件后再转回来时会不能显示光标的BUG; 11.TSynEdit,修正当第一列显示的字符是双字节字符的第二个字节时,在高亮当前行情况下会把第一个字节显示在行号区上的BUG; 12.TSynEdit,修正了DoCaseChange,加快转换字母大小写的处理速度和精简代码,也避免出现一些双字节字符的丢失; 13.TSynEdit,修正画右边线的代码,避免有时右边线颜色显示出错; 14.TSynEdit,修正了改变属性TEXT后不能UNDO的特性; 15.TSynEditSource,新添加的自己写的控件,用于存储Synedit的属性,详细请查看单元SynEditSource; 16.TSynEditSearcher,新添加的自己写的类,用于简化Synedit搜索,详细请查看单元SynEditSearcher; 17.TSynUniSyn,新添加的修改过的第三方控件,一个通用的Highlighter,详细请查看单元SynUniHighlighter; 18.TSynSpellCheck,新添加的第三方控件,一个拼写检查控件,详细请查看单元SynSpellCheck; 19.TSynEditor,新增加的TSynEdit的继承控件,增加对编辑文档管理的支持和一些增强型功能 20.SynMsgDialog,一个消息框单元,参照DialogsMessageDlg的代码进行改进并重写; 21.SynEditStrRes,一个字符串常量声明单元,存储增加的自定义的控件用到的字符串;编译环境 系统 Windows2000 (Build 2195: Service Pack 3) 工具 Borland Delphi 6 (Build 6.240) Update Pack 2 无错编译通过,并测试正常.
### 回答1: SynEdit 是一个用于Delphi和C++ Builder的代码编辑器组件,用于在应用程序实现高级文本编辑功能。要安装 SynEdit,按照以下步骤进行操作: 1. 下载 SynEdit 组件库。在您选择的源代码库或开发者网站上下载适用于您所使用的 Delphi 或 C++ Builder 版本的 SynEdit 组件库。 2. 解压缩下载的 SynEdit 组件库。将下载的压缩文件解压缩到您喜欢的位置,以便将其添加到您的项目。 3. 启动 Delphi 或 C++ Builder 开发环境。打开您的 Delphi 或 C++ Builder 开发环境,以便开始安装 SynEdit 组件。 4. 打开 SynEdit 组件包文件。在 Delphi 或 C++ Builder 开发环境,选择 "文件" 菜单,然后选择 "打开" 或使用快捷键 "Ctrl+O" 来打开 SynEdit 组件包文件。 5. 编译并安装 SynEdit 组件包。在 SynEdit 组件包文件,选择 "建构" 菜单,然后选择 "编译"。如果没有错误消息,则表示成功编译。接下来,选择 "资料" 菜单,然后选择 "安装" 来安装 SynEdit 组件。 6. 在您的项目使用 SynEdit 组件。在您的 Delphi 或 C++ Builder 项目,单击 "组件" 菜单,然后选择 "SynEdit" 组件。在您的项目窗口,您可以使用 SynEdit 组件来实现各种高级文本编辑功能。 通过按照以上步骤安装 SynEdit 组件,您就可以在您的 Delphi 或 C++ Builder 应用程序使用 SynEdit 提供的功能了。请记得在使用该组件时,遵循其使用和授权协议,以确保合法使用。 ### 回答2: SynEdit 是一个功能强大的开源文本编辑器控件,适用于 Delphi 和 Lazarus 等编程环境。下面是 SynEdit 的安装方法: 1. 首先,下载最新版本的 SynEdit 控件包。你可以在 SynEdit 的官方网站上找到下载链接。下载完成后,解压缩该文件。 2. 打开你所使用的编程环境(如 Delphi 或 Lazarus)。 3. 在工具栏选择 "Component"(组件)或 "Package"(包)选项。 4. 在弹出的菜单选择 "Install Packages"(安装包)选项。 5. 在弹出的对话框,点击 "Add"(添加)按钮。 6. 浏览并选择你之前解压缩的 SynEdit 控件包所在的文件夹。 7. 在文件列表选择 SynEdit 的包文件(通常是以 ".dpk" 或 ".lpk" 结尾)。 8. 点击 "Open"(打开)按钮。 9. 返回到安装包对话框,你会看到 SynEdit 控件已经添加到列表。 10. 确保 SynEdit 控件的复选框被选,然后点击 "OK"(确定)按钮。 11. 等待安装过程完成。一旦安装完成,你将会收到一条确认消息。 12. 现在,你可以在你所使用的编程环境的组件面板或工具箱找到 SynEdit 控件。 13. 将 SynEdit 控件拖放到你的窗体上,然后根据你的需求进行配置和使用。 以上是使用 Delphi 或 Lazarus 等编程环境安装 SynEdit 控件的简要步骤。希望对你有所帮助! ### 回答3: SynEdit是一个在Delphi和C++ Builder使用的开源代码编辑器组件。以下是SynEdit的安装方法: 1. 首先,下载SynEdit组件的最新版本。可以在SynEdit的官方网站上找到最新的版本并下载下来。也可以从一些开源代码仓库(如GitHub)上获取最新版本的SynEdit。 2. 解压下载的文件,然后进入解压后的目录。 3. 打开Delphi或C++ Builder的开发环境。 4. 在开发环境,点击菜单上的 "Component"(组件)选项,然后选择 "Install Packages"(安装包)。 5. 然后,在打开的 "Package"(包)对话框,点击 "Add"(添加)按钮。 6. 在 "Add"(添加)对话框,需要找到并选择SynEdit组件的包文件,通常是一个带有`.bpl`扩展名的文件。 7. 选择SynEdit组件的包文件后,点击 "Open"(打开)按钮,然后点击 "OK"(确定)按钮。 8. 返回到 "Package"(包)对话框,可以看到SynEdit组件已经添加到了 "Installed"(已安装)选项。确保选SynEdit的复选框,然后点击 "OK"(确定)按钮。 9. SynEdit组件就会被安装到开发环境了。在开发环境的组件栏,可以找到并使用SynEdit进行代码编辑。 以上就是使用300字文回答的SynEdit组件的安装方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值