TFindDialog 提供尋找介面。Execute 顯示對話框,FindText 取得搜尋字串,Options 控制選項(frDown 向下、frMatchCase 大小寫、frWholeWord 全字比對、frDisableUpDown 停用方向鈕)。OnFind 事件觸發搜尋:
procedure TEditForm.Find(Sender: TObject);
begin
with Sender as TFindDialog do
if not SearchMemo(Memo1, FindText, Options) then
ShowMessage('Cannot find "' + FindText + '".');
end;
獨立單元 Search.pas 實作高效搜尋演算法,支援 TCustomEdit 衍生類(TEdit、TMemo)。關鍵點:
SelStart/SelLength 決定起始位置HideSelection := False 確保失焦時仍保持選取狀態CharMap 陣列加速大小寫不敏感比較FindNextWordStart 處理全字比對邏輯PChar 指向匹配位置,或 nil 表示失敗完整代碼包含 SearchMemo(高層介面)與 SearchBuf(緩衝區掃描核心),展示指標運算與位元操作技巧。
TReplaceDialog 繼承尋找功能,新增 ReplaceText、frReplace(單次取代)、frReplaceAll(全部取代)。事件分離:OnFind 處理尋找,OnReplace 處理取代邏輯(見下一章完整實作)。