在SynEdit 中实现查找和替换功能
来源:互联网 发布:浪子心声 歌词意境知乎 编辑:程序博客网 时间:2024/05/16 13:02
在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();
这个是我当初用到的时候作的,希望对需要的朋友有所帮助!
只为抛砖引玉,如有不妥,敬请指教!
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();
这个是我当初用到的时候作的,希望对需要的朋友有所帮助!
只为抛砖引玉,如有不妥,敬请指教!
- 在SynEdit 中实现查找和替换功能
- VB应用程序中实现查找和替换功能
- VB应用程序中实现“查找和替换”功能
- 通过正则实现Java记事本中查找和替换功能
- 在LoadRunner中查找和替换字符串
- 在LoadRunner中查找和替换字符串
- 文本文件中实现查找和替换
- Java实现查找替换功能
- emacs查找和替换功能
- Word中查找和替换功能详细介绍
- 在 Excel 中查找和替换特殊字符 * 和 ?
- 在UltraEdit的查找和替换中使用正则表达式
- 在UltraEdit的查找和替换中使用正则表达式
- Ubuntu中的在文件中查找和替换命令
- 在VS2008中使用正则表达式进行查找和替换
- Ubuntu中的在文件中查找和替换命令
- 在UltraEdit的查找和替换中使用正则表达式
- Linux在所有文件中查找和替换
- 关于.net在生成压缩图片时的2种方法的效果比较
- 学好VC++的十大良好习惯
- CSS样式控制图片裁切显示
- ajax.net Profession 点滴
- 小心啊,这样的程序已经好了,但调试的时候数据是没有更新的啊~为什么,看看我的悲惨经历了
- 在SynEdit 中实现查找和替换功能
- 几款优秀的个人防火墙
- C/C++编程新手错误语录
- 实战VC时间控制函数
- delphi相关文章及一些tip
- 我的周末---3.5
- [3月5日]下端网点打环 isdn拨号无法启动
- C 编程最佳实践
- 如何编写网络监视器