|
@@ -1,57 +1,24 @@
|
|
|
{
|
|
|
- Search & Replace dialog
|
|
|
- for lazarus converted from SynEdit by
|
|
|
- Radek Cervinka, [email protected]
|
|
|
+ Double Commander
|
|
|
+ -------------------------------------------------------------------------
|
|
|
+ Search & Replace dialog
|
|
|
|
|
|
- This program is free software; you can redistribute it and/or modify it
|
|
|
- under the terms of the GNU General Public License as published by the Free
|
|
|
- Software Foundation; either version 2 of the License, or (at your option)
|
|
|
- any later version.
|
|
|
+ Copyright (C) 2003-2004 Radek Cervinka ([email protected])
|
|
|
+ Copyright (C) 2006-2022 Alexander Koblov ([email protected])
|
|
|
|
|
|
- This program is distributed in the hope that it will be useful, but WITHOUT
|
|
|
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
|
- FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License
|
|
|
- for more details.
|
|
|
+ This program is free software; you can redistribute it and/or modify
|
|
|
+ it under the terms of the GNU General Public License as published by
|
|
|
+ the Free Software Foundation; either version 2 of the License, or
|
|
|
+ (at your option) any later version.
|
|
|
|
|
|
- You should have received a copy of the GNU General Public License along with
|
|
|
- this program; if not, write to the Free Software Foundation, Inc., 59 Temple
|
|
|
- Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
|
+ This program is distributed in the hope that it will be useful,
|
|
|
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
+ GNU General Public License for more details.
|
|
|
|
|
|
-
|
|
|
-
|
|
|
-based on SynEdit demo, original license:
|
|
|
-
|
|
|
--------------------------------------------------------------------------------
|
|
|
-
|
|
|
-Software distributed under the License is distributed on an "AS IS" basis,
|
|
|
-WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
|
|
|
-the specific language governing rights and limitations under the License.
|
|
|
-
|
|
|
-The Original Code is: dlgSearchText.pas, released 2000-06-23.
|
|
|
-
|
|
|
-The Original Code is part of the SearchReplaceDemo project, written by
|
|
|
-Michael Hieke for the SynEdit component suite.
|
|
|
-All Rights Reserved.
|
|
|
-
|
|
|
-Contributors to the SynEdit project are listed in the Contributors.txt file.
|
|
|
-
|
|
|
-Alternatively, the contents of this file may be used under the terms of the
|
|
|
-GNU General Public License Version 2 or later (the "GPL"), in which case
|
|
|
-the provisions of the GPL are applicable instead of those above.
|
|
|
-If you wish to allow use of your version of this file only under the terms
|
|
|
-of the GPL and not to allow others to use your version of this file
|
|
|
-under the MPL, indicate your decision by deleting the provisions above and
|
|
|
-replace them with the notice and other provisions required by the GPL.
|
|
|
-If you do not delete the provisions above, a recipient may use your version
|
|
|
-of this file under either the MPL or the GPL.
|
|
|
-
|
|
|
-$Id: dlgSearchText.pas,v 1.3 2002/08/01 05:44:05 etrusco Exp $
|
|
|
-
|
|
|
-You may retrieve the latest version of this file at the SynEdit home page,
|
|
|
-located at http://SynEdit.SourceForge.net
|
|
|
-
|
|
|
-Known Issues:
|
|
|
--------------------------------------------------------------------------------}
|
|
|
+ You should have received a copy of the GNU General Public License
|
|
|
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
+}
|
|
|
|
|
|
unit fEditSearch;
|
|
|
|
|
@@ -61,9 +28,17 @@ interface
|
|
|
|
|
|
uses
|
|
|
Classes, SysUtils, Forms, Controls, StdCtrls, ExtCtrls, Buttons, ButtonPanel,
|
|
|
- uOSForms, DCClassesUtf8;
|
|
|
+ SynEdit, SynEditTypes, uOSForms, DCClassesUtf8;
|
|
|
|
|
|
type
|
|
|
+ { TEditSearchOptions }
|
|
|
+
|
|
|
+ TEditSearchOptions = record
|
|
|
+ SearchText: String;
|
|
|
+ ReplaceText: String;
|
|
|
+ Flags: TSynSearchOptions;
|
|
|
+ end;
|
|
|
+
|
|
|
{ TEditSearchDialogOption }
|
|
|
//Not only it helps to show what we want to offer to user, it will help to determine the default
|
|
|
//When used as parameters of function, place on required.
|
|
@@ -76,6 +51,7 @@ type
|
|
|
eswoDirectionDisabled, eswoDirectionEnabledForward, eswoDirectionEnabledBackward);
|
|
|
|
|
|
{ TfrmEditSearchReplace }
|
|
|
+
|
|
|
TfrmEditSearchReplace = class(TModalForm)
|
|
|
ButtonPanel: TButtonPanel;
|
|
|
cbSearchText: TComboBox;
|
|
@@ -85,67 +61,37 @@ type
|
|
|
cbSearchFromCursor: TCheckBox;
|
|
|
cbSearchRegExp: TCheckBox;
|
|
|
cbReplaceText: TComboBox;
|
|
|
+ cbMultiLine: TCheckBox;
|
|
|
gbSearchOptions: TGroupBox;
|
|
|
- lblReplaceWith: TLabel;
|
|
|
+ lblReplaceWith: TCheckBox;
|
|
|
lblSearchFor: TLabel;
|
|
|
rgSearchDirection: TRadioGroup;
|
|
|
procedure btnOKClick(Sender: TObject);
|
|
|
procedure FormCloseQuery(Sender: TObject; var CanClose: boolean);
|
|
|
procedure FormCreate(Sender: TObject);
|
|
|
procedure FormShow(Sender: TObject);
|
|
|
+ procedure lblReplaceWithChange(Sender: TObject);
|
|
|
procedure RequestAlign(Data: PtrInt);
|
|
|
private
|
|
|
- function GetSearchBackwards: boolean;
|
|
|
- function GetSearchCaseSensitive: boolean;
|
|
|
- function GetSearchFromCursor: boolean;
|
|
|
- function GetSearchInSelection: boolean;
|
|
|
- function GetSearchText: string;
|
|
|
- function GetSearchTextHistory: string;
|
|
|
- function GetSearchWholeWords: boolean;
|
|
|
- function GetSearchRegExp: boolean;
|
|
|
- function GetReplaceText: string;
|
|
|
- function GetReplaceTextHistory: string;
|
|
|
- procedure SetSearchBackwards(Value: boolean);
|
|
|
- procedure SetSearchCaseSensitive(Value: boolean);
|
|
|
- procedure SetSearchFromCursor(Value: boolean);
|
|
|
- procedure SetSearchInSelection(Value: boolean);
|
|
|
- procedure SetSearchText(Value: string);
|
|
|
- procedure SetSearchTextHistory(Value: string);
|
|
|
- procedure SetSearchWholeWords(Value: boolean);
|
|
|
- procedure SetSearchRegExp(Value: boolean);
|
|
|
- procedure SetReplaceText(Value: string);
|
|
|
- procedure SetReplaceTextHistory(Value: string);
|
|
|
+ function GetSearchOptions: TEditSearchOptions;
|
|
|
+ procedure SetSearchOptions(AValue: TEditSearchOptions);
|
|
|
function GetTextSearchOptions: UIntPtr;
|
|
|
public
|
|
|
- constructor Create(AOwner: TComponent; AReplace: Boolean); reintroduce;
|
|
|
- property SearchBackwards: boolean read GetSearchBackwards
|
|
|
- write SetSearchBackwards;
|
|
|
- property SearchCaseSensitive: boolean read GetSearchCaseSensitive
|
|
|
- write SetSearchCaseSensitive;
|
|
|
- property SearchFromCursor: boolean read GetSearchFromCursor
|
|
|
- write SetSearchFromCursor;
|
|
|
- property SearchInSelectionOnly: boolean read GetSearchInSelection
|
|
|
- write SetSearchInSelection;
|
|
|
- property SearchText: string read GetSearchText write SetSearchText;
|
|
|
- property SearchTextHistory: string read GetSearchTextHistory
|
|
|
- write SetSearchTextHistory;
|
|
|
- property SearchWholeWords: boolean read GetSearchWholeWords
|
|
|
- write SetSearchWholeWords;
|
|
|
- property SearchRegExp: boolean read GetSearchRegExp
|
|
|
- write SetSearchRegExp;
|
|
|
- property ReplaceText: string read GetReplaceText write SetReplaceText;
|
|
|
- property ReplaceTextHistory: string read GetReplaceTextHistory
|
|
|
- write SetReplaceTextHistory;
|
|
|
+ constructor Create(AOwner: TComponent; AReplace: TCheckBoxState); reintroduce;
|
|
|
+ property SearchOptions: TEditSearchOptions read GetSearchOptions write SetSearchOptions;
|
|
|
end;
|
|
|
|
|
|
- function GetSimpleSearchAndReplaceString(AOwner:TComponent; OptionAllowed:TEditSearchDialogOption; var sSearchText:string; var sReplaceText:string; var OptionsToReturn:TEditSearchDialogOption; PastSearchList:TStringListEx; PastReplaceList:TStringListEx):boolean;
|
|
|
+ function GetSimpleSearchAndReplaceString(AOwner: TComponent; OptionAllowed: TEditSearchDialogOption; var sSearchText: string; var sReplaceText: string; var OptionsToReturn:TEditSearchDialogOption; PastSearchList:TStringListEx; PastReplaceList:TStringListEx):boolean;
|
|
|
+
|
|
|
+ procedure DoSearchReplaceText(AEditor: TCustomSynEdit; AReplace, ABackwards: Boolean; AOptions: TEditSearchOptions);
|
|
|
+ procedure ShowSearchReplaceDialog(AOwner: TComponent; AEditor: TCustomSynEdit; AReplace: TCheckBoxState; var AOptions: TEditSearchOptions);
|
|
|
|
|
|
implementation
|
|
|
|
|
|
{$R *.lfm}
|
|
|
|
|
|
uses
|
|
|
- Math, Graphics, uGlobs, uLng, uDCUtils, uFindFiles;
|
|
|
+ Math, Graphics, uGlobs, uLng, uDCUtils, uFindFiles, uShowMsg;
|
|
|
|
|
|
function GetSimpleSearchAndReplaceString(AOwner:TComponent; OptionAllowed:TEditSearchDialogOption; var sSearchText:string; var sReplaceText:string; var OptionsToReturn:TEditSearchDialogOption; PastSearchList:TStringListEx; PastReplaceList:TStringListEx):boolean;
|
|
|
var
|
|
@@ -154,7 +100,7 @@ begin
|
|
|
result:=FALSE;
|
|
|
OptionsToReturn:=[];
|
|
|
|
|
|
- dlg := TfrmEditSearchReplace.Create(AOwner, TRUE);
|
|
|
+ dlg := TfrmEditSearchReplace.Create(AOwner, cbChecked);
|
|
|
try
|
|
|
with dlg do
|
|
|
begin
|
|
@@ -176,12 +122,12 @@ begin
|
|
|
|
|
|
//3. Setup the SEARCH info
|
|
|
if sSearchText='' then sSearchText:=rsEditSearchCaption;
|
|
|
- SearchTextHistory:=PastSearchList.Text;
|
|
|
- cbSearchText.Text:=sSearchText;
|
|
|
+ cbSearchText.Items.Assign(PastSearchList);
|
|
|
+ cbSearchText.Text:= sSearchText;
|
|
|
|
|
|
//4. Setup the REPLACE info
|
|
|
if sReplaceText='' then sReplaceText:=rsEditSearchReplace;
|
|
|
- ReplaceTextHistory:=PastReplaceList.Text;
|
|
|
+ cbReplaceText.Items.Assign(PastReplaceList);
|
|
|
cbReplaceText.Text:=sReplaceText;
|
|
|
|
|
|
//5. Get feedback from user
|
|
@@ -202,8 +148,8 @@ begin
|
|
|
if rgSearchDirection.ItemIndex=1 then OptionsToReturn:=OptionsToReturn+[eswoDirectionEnabledBackward] else OptionsToReturn:=OptionsToReturn+[eswoDirectionEnabledForward];
|
|
|
|
|
|
//7. Let's set our history
|
|
|
- PastSearchList.Text:=SearchTextHistory;
|
|
|
- PastReplaceList.Text:=ReplaceTextHistory;
|
|
|
+ PastSearchList.Assign(cbSearchText.Items);
|
|
|
+ PastReplaceList.Assign(cbReplaceText.Items);
|
|
|
|
|
|
//8. And FINALLY, our valuable text to search we wanted to replace!
|
|
|
sSearchText:=cbSearchText.Text;
|
|
@@ -217,6 +163,81 @@ begin
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
+procedure DoSearchReplaceText(AEditor: TCustomSynEdit; AReplace,
|
|
|
+ ABackwards: Boolean; AOptions: TEditSearchOptions);
|
|
|
+var
|
|
|
+ Flags: TSynSearchOptions;
|
|
|
+begin
|
|
|
+ Flags := AOptions.Flags;
|
|
|
+
|
|
|
+ if ABackwards then
|
|
|
+ Include(Flags, ssoBackwards)
|
|
|
+ else begin
|
|
|
+ Exclude(Flags, ssoBackwards);
|
|
|
+ end;
|
|
|
+
|
|
|
+ if AReplace then begin
|
|
|
+ Flags += [ssoPrompt, ssoReplace, ssoReplaceAll];
|
|
|
+ end;
|
|
|
+
|
|
|
+ try
|
|
|
+ if AEditor.SearchReplace(AOptions.SearchText, AOptions.ReplaceText, Flags) = 0 then
|
|
|
+ begin
|
|
|
+ if ssoBackwards in Flags then
|
|
|
+ AEditor.BlockEnd := AEditor.BlockBegin
|
|
|
+ else begin
|
|
|
+ AEditor.BlockBegin := AEditor.BlockEnd;
|
|
|
+ end;
|
|
|
+ AEditor.CaretXY := AEditor.BlockBegin;
|
|
|
+ msgOK(Format(rsViewNotFound, ['"' + AOptions.SearchText + '"']));
|
|
|
+ end;
|
|
|
+ except
|
|
|
+ on E: Exception do msgError(E.Message);
|
|
|
+ end;
|
|
|
+end;
|
|
|
+
|
|
|
+procedure ShowSearchReplaceDialog(AOwner: TComponent; AEditor: TCustomSynEdit;
|
|
|
+ AReplace: TCheckBoxState; var AOptions: TEditSearchOptions);
|
|
|
+var
|
|
|
+ Options: TEditSearchOptions;
|
|
|
+begin
|
|
|
+ with TfrmEditSearchReplace.Create(AOwner, AReplace) do
|
|
|
+ try
|
|
|
+ Options := AOptions;
|
|
|
+
|
|
|
+ if AEditor.SelAvail and (AEditor.BlockBegin.Y <> AEditor.BlockEnd.Y) then
|
|
|
+ Options.Flags += [ssoSelectedOnly];
|
|
|
+
|
|
|
+ // If something is selected then search for that text
|
|
|
+ if AEditor.SelAvail and (AEditor.BlockBegin.Y = AEditor.BlockEnd.Y) then
|
|
|
+ Options.SearchText := AEditor.SelText
|
|
|
+ else begin
|
|
|
+ Options.SearchText := AEditor.GetWordAtRowCol(AEditor.CaretXY);
|
|
|
+ end;
|
|
|
+
|
|
|
+ cbSearchText.Items.Text := glsSearchHistory.Text;
|
|
|
+ cbReplaceText.Items.Text := glsReplaceHistory.Text;
|
|
|
+
|
|
|
+ // Assign search options
|
|
|
+ SearchOptions := Options;
|
|
|
+
|
|
|
+ if ShowModal = mrOK then
|
|
|
+ begin
|
|
|
+ AOptions := SearchOptions;
|
|
|
+ glsSearchHistory.Assign(cbSearchText.Items);
|
|
|
+ glsReplaceHistory.Assign(cbReplaceText.Items);
|
|
|
+ if AOptions.SearchText <> '' then
|
|
|
+ begin
|
|
|
+ DoSearchReplaceText(AEditor, AReplace = cbChecked, ssoBackwards in AOptions.Flags, AOptions);
|
|
|
+ AOptions.Flags -= [ssoEntireScope];
|
|
|
+ gFirstTextSearch := False;
|
|
|
+ end;
|
|
|
+ end;
|
|
|
+ finally
|
|
|
+ Free;
|
|
|
+ end;
|
|
|
+end;
|
|
|
+
|
|
|
{ TfrmEditSearchReplace }
|
|
|
|
|
|
procedure TfrmEditSearchReplace.btnOKClick(Sender: TObject);
|
|
@@ -250,118 +271,58 @@ begin
|
|
|
Application.QueueAsyncCall(@RequestAlign, 0);
|
|
|
end;
|
|
|
|
|
|
-procedure TfrmEditSearchReplace.RequestAlign(Data: PtrInt);
|
|
|
-begin
|
|
|
- Width := Width + 1;
|
|
|
- Width := Width - 1;
|
|
|
-end;
|
|
|
-
|
|
|
-function TfrmEditSearchReplace.GetSearchBackwards: boolean;
|
|
|
-begin
|
|
|
- Result := rgSearchDirection.ItemIndex = 1;
|
|
|
-end;
|
|
|
-
|
|
|
-function TfrmEditSearchReplace.GetSearchCaseSensitive: boolean;
|
|
|
-begin
|
|
|
- Result := cbSearchCaseSensitive.Checked;
|
|
|
-end;
|
|
|
-
|
|
|
-function TfrmEditSearchReplace.GetSearchFromCursor: boolean;
|
|
|
+procedure TfrmEditSearchReplace.lblReplaceWithChange(Sender: TObject);
|
|
|
begin
|
|
|
- Result := cbSearchFromCursor.Checked;
|
|
|
-end;
|
|
|
-
|
|
|
-function TfrmEditSearchReplace.GetSearchInSelection: boolean;
|
|
|
-begin
|
|
|
- Result := cbSearchSelectedOnly.Checked;
|
|
|
-end;
|
|
|
-
|
|
|
-function TfrmEditSearchReplace.GetSearchText: string;
|
|
|
-begin
|
|
|
- Result := cbSearchText.Text;
|
|
|
-end;
|
|
|
-
|
|
|
-function TfrmEditSearchReplace.GetSearchTextHistory: string;
|
|
|
-var
|
|
|
- i: integer;
|
|
|
-begin
|
|
|
- for i:= cbSearchText.Items.Count - 1 downto 25 do
|
|
|
- cbSearchText.Items.Delete(i);
|
|
|
- Result:=cbSearchText.Items.Text;
|
|
|
-end;
|
|
|
-
|
|
|
-function TfrmEditSearchReplace.GetSearchWholeWords: boolean;
|
|
|
-begin
|
|
|
- Result := cbSearchWholeWords.Checked;
|
|
|
-end;
|
|
|
-
|
|
|
-function TfrmEditSearchReplace.GetSearchRegExp: boolean;
|
|
|
-begin
|
|
|
- Result:= cbSearchRegExp.Checked;
|
|
|
-end;
|
|
|
-
|
|
|
-function TfrmEditSearchReplace.GetReplaceText: string;
|
|
|
-begin
|
|
|
- Result := cbReplaceText.Text;
|
|
|
-end;
|
|
|
-
|
|
|
-function TfrmEditSearchReplace.GetReplaceTextHistory: string;
|
|
|
-var
|
|
|
- i: integer;
|
|
|
-begin
|
|
|
- for i:= cbSearchText.Items.Count - 1 downto 25 do
|
|
|
- cbReplaceText.Items.Delete(i);
|
|
|
- Result:=cbReplaceText.Items.Text;
|
|
|
-end;
|
|
|
-
|
|
|
-procedure TfrmEditSearchReplace.SetSearchBackwards(Value: boolean);
|
|
|
-begin
|
|
|
- rgSearchDirection.ItemIndex := Ord(Value);
|
|
|
-end;
|
|
|
-
|
|
|
-procedure TfrmEditSearchReplace.SetSearchCaseSensitive(Value: boolean);
|
|
|
-begin
|
|
|
- cbSearchCaseSensitive.Checked := Value;
|
|
|
-end;
|
|
|
-
|
|
|
-procedure TfrmEditSearchReplace.SetSearchFromCursor(Value: boolean);
|
|
|
-begin
|
|
|
- cbSearchFromCursor.Checked := Value;
|
|
|
-end;
|
|
|
-
|
|
|
-procedure TfrmEditSearchReplace.SetSearchInSelection(Value: boolean);
|
|
|
-begin
|
|
|
- cbSearchSelectedOnly.Checked := Value;
|
|
|
-end;
|
|
|
-
|
|
|
-procedure TfrmEditSearchReplace.SetSearchText(Value: string);
|
|
|
-begin
|
|
|
- cbSearchText.Text := Value;
|
|
|
-end;
|
|
|
-
|
|
|
-procedure TfrmEditSearchReplace.SetSearchTextHistory(Value: string);
|
|
|
-begin
|
|
|
- cbSearchText.Items.Text := Value;
|
|
|
+ if lblReplaceWith.Checked then
|
|
|
+ Caption:= rsEditSearchReplace
|
|
|
+ else begin
|
|
|
+ Caption:= rsEditSearchCaption;
|
|
|
+ end;
|
|
|
+ cbReplaceText.Enabled := lblReplaceWith.Checked;
|
|
|
end;
|
|
|
|
|
|
-procedure TfrmEditSearchReplace.SetSearchWholeWords(Value: boolean);
|
|
|
+procedure TfrmEditSearchReplace.RequestAlign(Data: PtrInt);
|
|
|
begin
|
|
|
- cbSearchWholeWords.Checked := Value;
|
|
|
+ Width := Width + 1;
|
|
|
+ Width := Width - 1;
|
|
|
end;
|
|
|
|
|
|
-procedure TfrmEditSearchReplace.SetSearchRegExp(Value: boolean);
|
|
|
+function TfrmEditSearchReplace.GetSearchOptions: TEditSearchOptions;
|
|
|
begin
|
|
|
- cbSearchRegExp.Checked:= Value;
|
|
|
-end;
|
|
|
+ Result.SearchText:= cbSearchText.Text;
|
|
|
+ Result.ReplaceText := cbReplaceText.Text;
|
|
|
|
|
|
-procedure TfrmEditSearchReplace.SetReplaceText(Value: string);
|
|
|
-begin
|
|
|
- cbReplaceText.Items.Text := Value;
|
|
|
+ Result.Flags := [];
|
|
|
+ if cbSearchCaseSensitive.Checked then
|
|
|
+ Result.Flags += [ssoMatchCase];
|
|
|
+ if cbSearchWholeWords.Checked then
|
|
|
+ Result.Flags += [ssoWholeWord];
|
|
|
+ if cbSearchSelectedOnly.Checked then
|
|
|
+ Result.Flags += [ssoSelectedOnly];
|
|
|
+ if not cbSearchFromCursor.Checked then
|
|
|
+ Result.Flags += [ssoEntireScope];
|
|
|
+ if cbSearchRegExp.Checked then
|
|
|
+ Result.Flags += [ssoRegExpr];
|
|
|
+ if cbMultiLine.Checked then
|
|
|
+ Result.Flags += [ssoRegExprMultiLine];
|
|
|
+ if rgSearchDirection.ItemIndex = 1 then
|
|
|
+ Result.Flags += [ssoBackwards];
|
|
|
end;
|
|
|
|
|
|
-procedure TfrmEditSearchReplace.SetReplaceTextHistory(Value: string);
|
|
|
+procedure TfrmEditSearchReplace.SetSearchOptions(AValue: TEditSearchOptions);
|
|
|
begin
|
|
|
- cbReplaceText.Items.Text := Value;
|
|
|
+ cbSearchText.Text := AValue.SearchText;
|
|
|
+ cbReplaceText.Text := AValue.ReplaceText;
|
|
|
+ with AValue do
|
|
|
+ begin
|
|
|
+ cbSearchCaseSensitive.Checked := ssoMatchCase in Flags;
|
|
|
+ cbSearchWholeWords.Checked := ssoWholeWord in Flags;
|
|
|
+ cbSearchSelectedOnly.Checked := ssoSelectedOnly in Flags;
|
|
|
+ cbSearchFromCursor.Checked := not (ssoEntireScope in Flags);
|
|
|
+ cbSearchRegExp.Checked := ssoRegExpr in Flags;
|
|
|
+ cbMultiLine.Checked := ssoRegExprMultiLine in Flags;
|
|
|
+ rgSearchDirection.ItemIndex := Ord(ssoBackwards in Flags);
|
|
|
+ end;
|
|
|
end;
|
|
|
|
|
|
function TfrmEditSearchReplace.GetTextSearchOptions: UIntPtr;
|
|
@@ -375,23 +336,22 @@ begin
|
|
|
Include(Options, tsoRegExpr);
|
|
|
end;
|
|
|
|
|
|
-constructor TfrmEditSearchReplace.Create(AOwner: TComponent; AReplace: Boolean);
|
|
|
+constructor TfrmEditSearchReplace.Create(AOwner: TComponent; AReplace: TCheckBoxState);
|
|
|
begin
|
|
|
inherited Create(AOwner);
|
|
|
- Color:= clForm;
|
|
|
- if AReplace then
|
|
|
- begin
|
|
|
- Caption:= rsEditSearchReplace;
|
|
|
- lblReplaceWith.Visible:= True;
|
|
|
- cbReplaceText.Visible:= True;
|
|
|
- end
|
|
|
- else
|
|
|
- begin
|
|
|
- Caption:= rsEditSearchCaption;
|
|
|
- lblReplaceWith.Visible:= False;
|
|
|
- cbReplaceText.Visible:= False;
|
|
|
- Height:= Height - cbReplaceText.Height;
|
|
|
- end;
|
|
|
+
|
|
|
+ lblReplaceWith.Visible:= (AReplace <> cbGrayed);
|
|
|
+ cbReplaceText.Visible:= (AReplace <> cbGrayed);
|
|
|
+
|
|
|
+ cbReplaceText.Enabled := (AReplace = cbChecked);
|
|
|
+ lblReplaceWith.Checked := (AReplace = cbChecked);
|
|
|
+
|
|
|
+ if (AReplace = cbChecked) then
|
|
|
+ Caption:= rsEditSearchReplace
|
|
|
+ else begin
|
|
|
+ Caption:= rsEditSearchCaption;
|
|
|
+ end;
|
|
|
+
|
|
|
rgSearchDirection.Items.Strings[0]:= rsEditSearchFrw;
|
|
|
rgSearchDirection.Items.Strings[1]:= rsEditSearchBack;
|
|
|
end;
|