精华内容
下载资源
问答
  • 应用查找替换对话框

    2009-02-20 10:14:00
    //替换对话框查找功能 procedure TFFind.ReplaceDialog1Find(Sender: TObject); var FoundAt: LongInt; //特定字符串的位置 StartPos, ToEnd: Integer; //查找的起始位置和查找长度 begin if Richedit1....
    unit UFind;
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ComCtrls, DBCtrls;
    
    type
      TFFind = class(TForm)
        ReplaceDialog1: TReplaceDialog;
        FindDialog1: TFindDialog;
        BFind: TButton;
        RichEdit1: TRichEdit;
        BReplace: TButton;
        procedure BFindClick(Sender: TObject);
        procedure FindDialog1Find(Sender: TObject);
        procedure BReplaceClick(Sender: TObject);
        procedure ReplaceDialog1Replace(Sender: TObject);
        procedure ReplaceDialog1Find(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    var
      FFind: TFFind;
    
    implementation
    
    {$R *.dfm}
    
    procedure TFFind.FormCreate(Sender: TObject);
    begin
      BFind.Caption :='查找...';
      BReplace.Caption :='替换...';
      RichEdit1.Text :='Welcome,This is a RichEdit Component!';
    end;
    
    
    procedure TFFind.BFindClick(Sender: TObject);
    begin
      //确定查找对话框的显示位置
      FindDialog1.Position := Point(RichEdit1.Left + Richedit1.Width,
              Richedit1.Top+RichEdit1.Height);
      //显示查找对话框
      FindDialog1.Execute;
    end;
    
    //查找对话框的查找功能
    procedure TFFind.FindDialog1Find(Sender: TObject);
    var
      FoundAt: LongInt;                 //特定字符串的位置
      StartPos, ToEnd: Integer;         //查找的起始位置和查找长度
    begin
        if Richedit1.SelLength = 0 then
          StartPos := 0    //如果尚未开始查找,则从头开始查找
        else               //否则,从上次查找的结果之后开始查找
          StartPos := Richedit1.SelStart + Richedit1.SelLength  ;
    
        ToEnd := Length(Richedit1.Text) - StartPos;
    
        FoundAt := Richedit1.FindText(FindDialog1.FindText, StartPos, ToEnd, [stMatchCase]);
        //如果已找到特定字符串,则进行如下处理
        if FoundAt <> -1 then
        begin
          Richedit1.SetFocus;   //设置焦点
          Richedit1.SelStart := FoundAt;
          Richedit1.SelLength := Length(FindDialog1.FindText);
        end
        else
          //如果未找到特定字符串,则进行如下处理
          if (MessageDlg('已搜索到文档尽头,未发现要搜索的字符串,是否从头搜索?',   mtConfirmation, [mbYes, mbNo], 0) = mrYes) then
             Richedit1.SelLength :=0;
    end;
    
    procedure TFFind.BReplaceClick(Sender: TObject);
    begin
      //确定替换对话框的显示位置
      ReplaceDialog1.Position := Point(RichEdit1.Left + RichEdit1.Width,
           RichEdit1.Top+RichEdit1.Height);
      //显示替换对话框
      ReplaceDialog1.Execute;
    end;
    
    //替换对话框的查找功能
    procedure TFFind.ReplaceDialog1Find(Sender: TObject);
    var
      FoundAt: LongInt;                 //特定字符串的位置
      StartPos, ToEnd: Integer;         //查找的起始位置和查找长度
    begin
       if Richedit1.SelLength = 0 then
          StartPos := 0    //如果尚未开始查找,则从头开始查找
        else               //否则,从上次查找的结果之后开始查找
          StartPos := Richedit1.SelStart + Richedit1.SelLength  ;
        ToEnd := Length(Richedit1.Text) - StartPos;
    
        FoundAt := Richedit1.FindText(ReplaceDialog1.FindText, StartPos, ToEnd, [stMatchCase]);
        //如果已找到特定字符串,则进行如下处理
        if FoundAt <> -1 then
        begin
          Richedit1.SetFocus;   //设置焦点
          Richedit1.SelStart := FoundAt;
          Richedit1.SelLength := Length(ReplaceDialog1.FindText);
        end
        else
          //如果未找到特定字符串,则进行如下处理
          if (MessageDlg('已搜索到文档尽头,未发现要搜索的字符串,是否从头搜索?',
               mtConfirmation, [mbYes, mbNo], 0) = mrYes) then
             Richedit1.SelLength :=0;
    end;
    
    //替换对话框的替换功能
    procedure TFFind.ReplaceDialog1Replace(Sender: TObject);
    var
      FoundAt: LongInt;                 //特定字符串的位置
      StartPos, ToEnd: Integer;         //查找的起始位置和查找长度
    begin
        if RichEdit1.SelLength=0 then
           ReplaceDialog1Find(nil)      //如果尚未找到特定字符串,则查找
        else
          begin
            StartPos :=RichEdit1.SelStart+length(ReplaceDialog1.ReplaceText)-RichEdit1.SelLength+1;
            RichEdit1.SelText :=  ReplaceDialog1.ReplaceText;
            ToEnd := Length(RichEdit1.Text) - StartPos;
    
            FoundAt := RichEdit1.FindText(ReplaceDialog1.FindText, StartPos, ToEnd, [stMatchCase]);
            //如果已找到特定字符串,则进行如下处理
            if FoundAt <> -1 then
                begin
                  RichEdit1.SetFocus;
                  RichEdit1.SelStart := FoundAt;
                  RichEdit1.SelLength := Length(ReplaceDialog1.FindText);
                end
            else
              //如果未找到特定字符串,则进行如下处理
              if (MessageDlg('已搜索到文档尽头,未发现要替换的字符串,是否从头搜索?',
                 mtConfirmation, [mbYes, mbNo], 0) = mrYes) then
                RichEdit1.SelLength :=0;
          end  ;
    end;
    
    end.
    
    
    
    
    展开全文
  • VC++中查找/替换对话框的使用

    千次阅读 2006-12-29 19:36:00
    在Windows通用对话框中,查找/替换对话框是比较特殊的一个,它是一个非模态对话框,所以它的使用与其它通用对话框有所不同。 一、注册 注册的目的有两个,一是说明在程序中要使用查找/替换对话框,二是让窗口能...
    在Windows通用对话框中,查找/替换对话框是比较特殊的一个,它是一个非模态对话框,所以它的使用与其它通用对话框有所不同。

      一、注册

      注册的目的有两个,一是说明在程序中要使用查找/替换对话框,二是让窗口能响应查找/替换消息,提供相应的消息函数。

      注册位置应该在查找/替换对话框的父窗口,比如主框架窗口CMainFrame、视图CxxView或某对话框。也就是响应查找/替换操作的那个窗口。


      比如,欲在视图中响应查找/替换操作,则在视图中加入下面的注册代码(红字为添加的代码):
    class CEditTestView : public CFormView
    {
       …………
     protected:
        //{{AFX_MSG(CEditTestView)
        …………
       afx_msg LONG OnFindReplace(WPARAM wParam,LPARAM lParam);
       DECLARE_MESSAGE_MAP()
    };

    IMPLEMENT_DYNCREATE(CEditTestView, CFormView)
    static UINT WM_FINDREPLACE = ::RegisterWindowMessage( FINDMSGSTRING );
    BEGIN_MESSAGE_MAP(CEditTestView, CFormView)
      //{{AFX_MSG_MAP(CEditTestView)
      …………
      //}}AFX_MSG_MAP
      ON_REGISTERED_MESSAGE(WM_FINDREPLACE,OnFindReplace)
    END_MESSAGE_MAP()

      注册完成后,OnFindReplace()函数可用来接收查找/替换对话框的用户消息,另外用ClassWizard打开CEditTestView,可以发现ID_EDIT_FIND和ID_EDIT_REPLACE两个ID号,可以用来添加查找/替换菜单,这在注册前是没有的。

      二、对话框的创建与显示

      作为非模态对话框,必须用new操作符分配存储空间,再用Create()函数进行初始化,最后用ShowWindow()函数显示对话框。

      下面的例子是创建一个查找对话框:先在菜单中用ID号ID_EDIT_FIND添加一个“查找”菜单项,再用ClassWizard添加它的响应函数OnEditFind(),加入代码。

    //查找菜单响应函数
    void CEditTestView::OnEditFind()
    {
      CFindReplaceDialog* pDlg = new CFindReplaceDialog();
      pDlg->Create( true, NULL, NULL, FR_DOWN, this ); //创建查找对话框
      pDlg->ShowWindow( SW_SHOW );   //显示对话框
    }

      Create()函数的原型如下:

    BOOL Create(BOOL bFindDialogOnly,LPCTSTR lpszFindWhat,LPCTSTR lpszReplaceWhat=NULL,DWORD dwFlag=FR_DOWN,CWnd* pParentWnd=NULL);

      参数:

      bFindDialogOnly为对话框类型,为TRUE时,显示查找对话框,为FALSE时,显示查找/替换对话框;

      lpszFindWhat为在查找框中显示的字符串;

      lpszReplaceWhat为在替换框中显示的字符串;

      dwFlag为标志位,用来定制对话框,它可以是一个或多个标志的组合,主要取值如下:

       FR_DOWN 如果设置,对话框中的“向下查找”单选按钮被选中,如果没有设置,“向上查找”单选按钮被选中;

       FR_HIDEUPDOWN 不显示查找方向单选按钮;

       FR_HIDEMATCHCASE 不显示区分大小写复选按钮;

       FR_HIDEWHOLEWORD 不显示全字匹配复选按钮;
      
       FR_MATCHCASE 使区分大小写复选按钮处于选中状态;

       FR_WHOLEWORD 使全字匹配复选按钮处于选中状态;

       FR_NOMATCHCASE 使区分大小写复选按钮处于禁止(变灰)状态;

       FR_NOUPDOWN 使查找方向单选按钮处于禁止(变灰)状态;

       FR_NOWHOLEWORD 使全字匹配复选按钮处于禁止(变灰)状态;

       FR_SHOWHELP 在对话框中显示一个帮助按钮。

       pParentWnd指向对话框的父窗口,如果为NULL,则为主框架窗口,使用时需让它指向接收查找/替换消息的窗口。

      上例中定制的是一个查找窗口,它显示为:

    如果定制一个查找/替换窗口,可以添加OnEditReplace()函数:

    //替换菜单响应函数
    void CEditTestView::OnEditReplace()
    {
      CFindReplaceDialog* pDlg = new CFindReplaceDialog();
      pDlg->Create( false, m_FindString, m_ReplaceString, FR_DOWN, this );//创建替换对话框
      pDlg->ShowWindow( SW_SHOW );   //显示对话框
    }

      m_FindString和m_ReplaceString是预定义的字符串变量,用于初始化查找框和替换框。这时它显示为:

    在Create()创建对话框前,也可以用成员变量m_fr对对话框进行更详细的定制。

      三、响应查找/替换消息

      查找/替换对话框显示后,其后单击其上任何一个按钮,消息都被送到窗口回调函数OnFindReplace()函数中,所以我们不需要为每个按钮添加消息函数,所有对按钮消息的处理都在OnFindReplace()函数中进行即可。

      这里要注意一点,查找/替换对话框本身没有查找/替换功能,它只是为我们提供了一个接收用户要求的接口,使我们知道用户提出了何种查找/替换要求,真正的查找/替换工作需另行编程实现。这一点与文件对话框相似,用打开文件对话框不能真的打开文件,它只是让我们知道用户想要打开哪个文件而已。

      在OnFindReplace()函数中,我们可以用CFindReplaceDialog类的成员函数获知用户请求,其中主要的有:

    static CFindReplaceDialog* PASCAL GetNotifier(LPARAM lParam);

      获取当前查找/替换对话框的指针。参数lParam为传递给回调函数OnFindReplace()的lParam值。

      BOOL FindNext()const;
      检取用户是否单击“查找下一个”按钮。

      BOOL ReplaceCurrent()const;
      检取用户是否单击“替换”按钮。

      BOOL ReplaceAll()const;
      检取用户是否单击“全部替换”按钮。

      利用以上几个函数可以获知用户单击了哪个按钮。但在查找/替换时,还需要知道用户的查找/替换设置,这可以用下面的函数检取这些设置:

      CString GetFindString()const;
      检取查找的字符串。它可能与设置的初始值不同。

      CString GetReplaceString()const;
      检取替换的字符串。

      BOOL SearchDown()const;
      检取查找方向,为TRUE时表示“向下查找”。

      BOOL MatchCase()const;
      检取“区分大小写”状态,为TRUE时表示要求区分大小写。

      BOOL MatchWholeWord()const;
      检取“全字匹配”状态,为TRUE时表示要求全字匹配。

      以下就是注册的OnFindReplace()函数,其中“……”为需要用户编写的查找/替换操作。

    LONG CEditTestView::OnFindReplace(WPARAM wParam,LPARAM lParam)
    {
       CFindReplaceDialog* pDlg = CFindReplaceDialog::GetNotifier(lParam);
      m_FindString = pDlg->GetFindString();     //查找串
      m_ReplaceString = pDlg->GetReplaceString(); //替换串
       if( pDlg->FindNext() )       //查找下一个
       {
          …………;
       }
       if( pDlg->ReplaceCurrent() )   //替换
       {
          …………;
       }
       if( pDlg->ReplaceAll() )     //全部替换
       {
          …………;
       }
        return 0;
    }

      示例程序是一个简易文本编辑器,模仿记事本的查找/替换形式设计了相应的查找/替换形式。

      示例程序界面图:


     
    展开全文
  •  查找/替换对话框是非模态窗体,靠发送消息(CFindReplaceDialog::GetFindReplaceMsg())与窗体通信。 首先在需要响应“查找/替换”菜单或者按钮功能的地方添加如下代码,用来显示查找/替换对话框。我是在某个按钮下...

    在WTL中使用CFindReplaceDialog,个人感觉要比MFC简单一些。

     

    查找/替换对话框是非模态窗体,靠发送消息(CFindReplaceDialog::GetFindReplaceMsg())与窗体通信。

     

    首先在需要响应“查找/替换”菜单或者按钮功能的地方添加如下代码,用来显示查找/替换对话框。

    我是在某个按钮下响应“查找/替换”功能的。

     

    然后在其父窗口类里添加一个消息映射:MESSAGE_HANDLER(CFindReplaceDialog::GetFindReplaceMsg(), OnFindReplaceMsg),使程序可以接收查找/替换对话框中发给父窗口的消息。

    再定义一个LRESULT OnFindReplaceMsg(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled);函数

     

    OnFindReplaceMsg函数就是用来响应查找/替换对话框消息的。

     

    在该函数里跟据CFindReplaceDialog的方法:GetFindString(),GetReplaceString(),SearchDown(),FindNext(),MatchCase(),MatchWholeWord(),ReplaceCurrent(),ReplaceAll(),IsTerminating()提供的信息来完成自己所需的工作。

    展开全文
  • 打开一个文本编辑器,按下Ctrl + F 出现左边图样的对话框--查找对话框,按下Ctrl + H 出现右边图样的对话框--替换替换对话框,在Windows中定义了两个结构体和两个函数,让我们在编程的时候能够很方便的创建这两个...

     

    打开一个文本编辑器,按下Ctrl + F 出现左边图样的对话框--查找对话框,按下Ctrl + H 出现右边图样的对话框--替换替换对话框,在Windows中定义了两个结构体和两个函数,让我们在编程的时候能够很方便的创建这两个对话框。

     

    这两个对话框不像系统中其他的对话框那样,这是非模态的对话框,允许用户在主窗口和这两个窗口之间来回切换。

     

    在创建对话框之前,必须先调用 RegisterWindowMessage注册一个FINDMSGSTRING类型的消息,获得消息的ID号。

     

    FINDREPLACE结构体:

    lStructSize 结构体的大小,用sizeof(FINDREPLACE)初始化。

    hwndOwner 创建查找替换对话框的窗口的句柄,也是接收之前注册的消息的对话框的句柄。

    lpstrFindWhat 查找的字符串,使用动态分配的全局或者静态字符数组。

    lpstrReplaceWith 替换成的字符串。

    wFindWhatLen 查找字符串的长度

    wReplaceWithLen 替换成的字符串的长度

    /*

    hInstance、lCustData、lpfnHook、lpTemplateName 如果不使用复杂的钩子,则可以忽略这四个参数。

    */

     

    如果Flages设置了FR_DOWN位,则DOWN单选按钮被选中;

    如果用户点击了对话框中的查找下一个按钮,在发送消息通知创建窗口之前,会设置Flages位,在消息处理函数中可以通过这个为来判断是否点击了“查找下一个按钮”。

     

    配置了结构体以后,调用 FindText 或者ReplaceText函数创建对话框。


    展开全文
  • word查找替换图片

    千次阅读 2010-05-26 16:36:00
    约定:要查找的图,简称:查找图; 要替换的图,简称:替换图:分几步说明:一...(因为word自动从光标处向后查找,且找到它遇到的第一副图)2、ctrl + f (打开【查找替换对话框)---将光标至于【查找内容(N
  • 有些人在Word中编辑文档,有这么一个习惯,要么不加句号,要么就一直都是逗号。这在正式场合,是绝对不允许的。我们反过来再去一个一个的添加,...按下键盘上的Ctrl+H,打开替换对话框。 2、单击更多按钮之
  • 对话框

    2020-04-13 17:52:46
    对话框 文章目录对话框一、模态和非模态对话框二、标准对话框和... 非模态对话框是指既可以和它交互,也可以与同一程序中的其他窗口交互,如word查找替换对话框。 2.创建菜单栏 QMenuBar* mBar = menuBar(); ...
  • (1)点击【开始】-【编辑】-【替换】按钮或按【Ctrl+H】组合键,打开“查找替换对话框,将鼠标光标定位于“查找内容”文本框中,然后点击“更多”按钮。 (2)展开“替换”栏,点击“特殊格式”按钮,在弹出...
  • 我们都知道查找的快捷键“Ctrl+F”,而替换的快捷键“Ctrl+H”,但是具体可以发挥多大的作用呢?好像也就真的只能查找和...这里使用查找替换简直可以说分分钟解决,先说空格的处理,打开查找/替换对话框,“查找内容...
  • 要显示“查找”和“替换”文本对话框分别使用函数FindText和ReplaceText: HWND WINAPI FindText( __in LPFINDREPLACE lpfr ); HWND WINAPI ReplaceText( __inout LPFINDREPLACE lpfr ); 这两个函数都使用...
  • 模式对话框和非模式对话框的区别

    千次阅读 2013-08-21 22:53:27
    模式对话框和非模式对话框的区别:(出自第二版p370) 1、显示模式对话框需要调用CDialog::DoModal,而显示无模式对话框则要调用CDialog::Create。DoModal要等到对话框被清除才返回。而和DoModal不同,一旦建立...
  • Word 2013的查找替换功能是很强大的,其...1、打开文档,在“开始”选项卡中单击“编辑”组中的“替换”按钮打开“查找替换对话框,切换到“查找”选项卡,在“查找内容”文本框中输入搜索代码“^g”,该代码...
  • word教程之查找替换功能使用非常频繁,因此掌握word查找和替换快捷键也是必须的。但是由于由于版本不一样,使用就略有所不同。 第一,word 2007版本查找替换快捷键  首先,我们看看word 2007版本,在“开始——...
  • 有了这个,可以替换word的菜单了:)也就是说,你可以完全不把word框架显示出来就可以完全实现WORD的功能了。 在View菜单中,选ClassWizard,选Automation选项卡,选Add Class,选择From a TypeLibrary, 在...
  • Word查找替换功能非常强大,在文档的编辑中,熟练使用这一功能可以解决好多问题。下面,我们通过四个实例来介绍这一功能的应用。  任务一、批量设置字体格式  任务要求:一篇很长的Word文档,其中多个地方...
  • WORD文档替换功能如果使用好的话,会给我们日常工作带来很大帮助,所以今天这篇文章主要讲解Word文档替换功能怎么使用,替换作用就是将查找...操作方法:打开替换对话框,在查找内容下填写“读书屋”,在替换为输入...
  • 在VC中调用WORD(显示,修改,存盘,运行宏)之三。调用word的各种对话框翻页等。 (转)[@more@]有了这个,可以替换word的菜单了:)也就是说,你可以完全不把word框架显示出来就可以完全实现WORD的功能了。 ...
  • 原实例描述的是:要求针对WORD中某一个指定段落中关键字进行查找替换(把正文第一段中的所有“Microsoft”替换为“微软”)。第4种方法也比较简单,介绍如下:STEP 1:选择这一段(及此段中所有文字);STEP 2:Ctrl...
  • word通配符,查找替换

    千次阅读 2019-01-17 23:16:57
    word查找栏代码&amp;通配符一览表 word替换栏代码&amp;通配符一览表 word通配符用法详解 word换行符 参考原文:https://github.com/gaheadus/daily_use/blob/master/tools_and_skills/word文档处理.md#...
  • 如果要我选出Word中最强大的一个功能,那一定是“查找替换”。相比Word的“查找替换”功能,Excel和PPT的这项功能,简直是弱爆了。比如在设计PPT的时候,如果这一页从Excel中复制粘贴的表格,无论怎样设置文本的...
  • Word查找替换来快速整理文档(转) 笔者经常将一些喜欢的书刊杂志扫描制作成电子书,可最近突然发现扫描出来的Word文档经常会多出许多莫名其妙的换行符,就像下图这样。  起初因为文章字数不多,所以就用手工...
  • 文字转表格 首先确保需要转换的文字之间的符号是一样的,然后...查找替换的应用 查找制表符或者回车符需要在查找对话框最下面一行,最左侧,“更多选项”最下面一行,左数第二个“特殊格式”中查找,再进行替换...
  • 1、批量对齐图片选中全文,按Ctrl+H打开查找替换对话框,之后在查找中输入代码:^g(表示图形),在替换中选择格式——段落——对齐方式——居中对齐即可。2、批量对齐名字选中文本,按Ctrl+H打开查找替换对话框,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 17,322
精华内容 6,928
关键字:

word查找替换对话框是模式对话框