Lazarus - TReplaceDialog - 如何确定是否单击了“替换”或“全部替换”

时间:2013-07-26 14:47:15

标签: replace dialog lazarus

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

除了我无法确定是否在替换对话框中点击了“替换”或“全部替换”按钮时,所有似乎都按照我的需要工作了。

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

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

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

谢谢,

FM

1 个答案:

答案 0 :(得分:1)

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;

此示例来自Delphi XE 4 documentation,但对话框应具有相同的基本实现细节。