2013-07-26 36 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);'這是完美的工作。 –