2013-07-26 68 views
0

我试图在Lazarus项目中添加搜索和替换功能到TSynEdit组件,并且我正在使用TSynEdit.SearchReplace(),TFindDialogTReplaceDialogLazarus - TReplaceDialog - 如何确定'替换'或'全部替换'被点击

所有似乎正在工作,因为我需要它,除了我无法找到一种方法来确定替换对话框上单击“替换”或“全部替换”按钮。

我已经编写了OnFind事件和OnReplace事件的代码,但似乎没有发生OnReplaceAll事件。

查看TReplaceDialog项目的自动帮助弹出窗口我看不到任何属性或其他允许我确定按下哪个按钮的属性。

任何人都可以指向正确的方向吗?

感谢,

FM

回答

1

OnReplace情况下,检查,看看是否frReplaceAllOptions

procedure TForm1.ReplaceDialog1Replace(Sender: TObject); 
begin 
    with Sender as TReplaceDialog do 
    begin 
    if frReplace in Options then 
    DoReplace(ReplaceDialog1.FindText, ReplaceDialog1.ReplaceText) 
    else if frReplaceAll in Options then 
    DoReplaceAll(ReplaceDialog1.FindText, ReplaceDialog1.ReplaceText); 
    end; 
end; 

这个例子是从Delphi XE 4 documentation,但对话应该有相同的基本实施细节。

+0

让我走上正轨!谢谢@Ken。我实际上已经简化了它,并且正在使用Sender作为TReplaceDialog做 如果frReplace在Options中,然后 Include(optionsForReplace,ssoReplace) else if frReplaceAll in Options then Include(optionsForReplace,ssoReplaceAll);'这是完美的工作。 –