Lazarus - TReplaceDialog - 如何确定是否单击了'Replace'或'Replace All'



我正在尝试为Lazarus项目中的TSynEdit组件添加搜索和替换功能,并且我正在使用TSynEdit.SearchReplace()TFindDialogTReplaceDialog

除了我找不到一种方法来确定是在替换对话框上单击了"替换"还是"全部替换"按钮之外,所有这些似乎都在我需要的时候工作。

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

在TReplaceDialog项目的自动帮助弹出窗口中,我看不到任何属性或其他内容可以让我确定哪些按钮被按下了。

有人能给我指正确的方向吗?

谢谢,

FM

OnReplace事件中,检查frReplaceAll是否在Options:中

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;

这个例子来自DelphiXE4文档,但是对话框应该有相同的基本实现细节。

最新更新