Кусок из моей программы:
| Код | TGPSearch=record FindText:String; ReplaceText:String; Options:TSynSearchOptions; end;
CurrentSearch:TGPSearch;
...
procedure TForm1.aFindExecute(Sender: TObject); begin Find.FindText.Text:=CurrentSearch.FindText; if Find.showmodal=mrOk then begin DidSearchBackword:=False; CurrentSearch.FindText:=Find.FindText.Text;
if Find.CaseSensitive.Checked then CurrentSearch.Options:=CurrentSearch.Options+[ssoMatchCase] else CurrentSearch.Options:=CurrentSearch.Options-[ssoMatchCase];
if Find.Wholewords.Checked then CurrentSearch.Options:=CurrentSearch.Options+[ssoWholeWord] else CurrentSearch.Options:=CurrentSearch.Options-[ssoWholeWord];
if Find.Direction.ItemIndex=1 then CurrentSearch.Options:=CurrentSearch.Options+[ssoBackwards] else CurrentSearch.Options:=CurrentSearch.Options-[ssoBackwards];
if Find.Scope.ItemIndex=1 then CurrentSearch.Options:=CurrentSearch.Options+[ssoSelectedOnly] else CurrentSearch.Options:=CurrentSearch.Options-[ssoSelectedOnly];
if Find.Origin.ItemIndex=1 then CurrentSearch.Options:=CurrentSearch.Options+[ssoEntireScope] else CurrentSearch.Options:=CurrentSearch.Options-[ssoEntireScope];
CurrentSearch.Options:=CurrentSearch.Options-[ssoReplace]; CurrentSearch.Options:=CurrentSearch.Options-[ssoReplaceAll]; CurrentSearch.Options:=CurrentSearch.Options-[ssoPrompt];
if PPageInfo(PageControl.ActivePage.Tag).Edit.SearchReplace(CurrentSearch.FindText, CurrentSearch.ReplaceText, CurrentSearch.Options)=0 then Showmessage('No matches found!'); end; end;
procedure TForm1.aFindNextExecute(Sender: TObject); begin if DidSearchBackword then CurrentSearch.Options:=CurrentSearch.Options-[ssoBackwards];; if CurrentSearch.FindText='' then aFindExecute(nil) else begin CurrentSearch.Options:=CurrentSearch.Options-[ssoEntireScope]; if PPageInfo(PageControl.ActivePage.Tag).Edit.SearchReplace(CurrentSearch.FindText, CurrentSearch.ReplaceText, CurrentSearch.Options)=0 then Showmessage('No matches found!'); end; end;
procedure TForm1.aFindPreviousExecute(Sender: TObject); begin DidSearchBackword:=True; CurrentSearch.Options:=CurrentSearch.Options+[ssoBackwards]; if CurrentSearch.FindText='' then aFindExecute(nil) else begin CurrentSearch.Options:=CurrentSearch.Options-[ssoEntireScope]+[ssoBackwards]; if PPageInfo(PageControl.ActivePage.Tag).Edit.SearchReplace(CurrentSearch.FindText, CurrentSearch.ReplaceText, CurrentSearch.Options)=0 then Showmessage('No matches found!'); end; end;
procedure TForm1.aReplaceExecute(Sender: TObject); var Modal:Integer; begin Replace.FindText.Text:=CurrentSearch.FindText; Replace.ReplaceText.Text:=CurrentSearch.ReplaceText; Modal:=Replace.showmodal; if Modal in [mrOk, mrYesToAll] then begin DidSearchBackword:=False; CurrentSearch.FindText:=Replace.FindText.Text; CurrentSearch.ReplaceText:=Replace.ReplaceText.Text;
if Replace.CaseSensitive.Checked then CurrentSearch.Options:=CurrentSearch.Options+[ssoMatchCase] else CurrentSearch.Options:=CurrentSearch.Options-[ssoMatchCase];
if Replace.Wholewords.Checked then CurrentSearch.Options:=CurrentSearch.Options+[ssoWholeWord] else CurrentSearch.Options:=CurrentSearch.Options-[ssoWholeWord];
if Replace.Direction.ItemIndex=1 then CurrentSearch.Options:=CurrentSearch.Options+[ssoBackwards] else CurrentSearch.Options:=CurrentSearch.Options-[ssoBackwards];
if Replace.Scope.ItemIndex=1 then CurrentSearch.Options:=CurrentSearch.Options+[ssoSelectedOnly] else CurrentSearch.Options:=CurrentSearch.Options-[ssoSelectedOnly];
if Replace.Origin.ItemIndex=1 then CurrentSearch.Options:=CurrentSearch.Options+[ssoEntireScope] else CurrentSearch.Options:=CurrentSearch.Options-[ssoEntireScope];
CurrentSearch.Options:=CurrentSearch.Options+[ssoReplace]; if Modal = mrYesToAll then CurrentSearch.Options:=CurrentSearch.Options+[ssoReplaceAll] else CurrentSearch.Options:=CurrentSearch.Options-[ssoReplaceAll];
if Replace.Prompt.checked then CurrentSearch.Options:=CurrentSearch.Options+[ssoPrompt] else CurrentSearch.Options:=CurrentSearch.Options-[ssoPrompt];
if PPageInfo(PageControl.ActivePage.Tag).Edit.SearchReplace(CurrentSearch.FindText, CurrentSearch.ReplaceText, CurrentSearch.Options)=0 then Showmessage('No matches found!'); end; end;
procedure TForm1.SynEditReplaceText(Sender: TObject; const ASearch, AReplace: String; Line, Column: Integer; var Action: TSynReplaceAction); begin case MessageDlg(format('Replace string ''%s'' with ''%s''?',[ASearch, AReplace]),mtWarning,[mbYes, mbNo, mbAll, mbCancel],0) of mrYes: Action := raReplace; mrNo: Action := raSkip; mrAll: Action := raReplaceAll; mrCancel: Action := raCancel; end; end;
|
|