
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@2312 8e941d3f-bd1b-0410-a28a-d453659cc2b4
131 lines
3.1 KiB
ObjectPascal
131 lines
3.1 KiB
ObjectPascal
unit Search;
|
|
|
|
{$include lazhexeditor.inc}
|
|
|
|
interface
|
|
|
|
uses
|
|
{$IFDEF FPC}
|
|
LCLType, LCLIntf, LResources,
|
|
{$ELSE}
|
|
Windows, Messages,
|
|
{$ENDIF}
|
|
SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
StdCtrls, KEditCommon;
|
|
|
|
type
|
|
TSearchForm = class(TForm)
|
|
CBTextToFind: TComboBox;
|
|
GBOptions: TGroupBox;
|
|
LBFindText: TLabel;
|
|
BUFind: TButton;
|
|
BUCancel: TButton;
|
|
CBMatchCase: TCheckBox;
|
|
CBHexaSearch: TCheckBox;
|
|
GBDirection: TGroupBox;
|
|
RBForward: TRadioButton;
|
|
RBBackward: TRadioButton;
|
|
GBScope: TGroupBox;
|
|
RBGlobal: TRadioButton;
|
|
RBSelectedOnly: TRadioButton;
|
|
GBOrigin: TGroupBox;
|
|
RBFromCursor: TRadioButton;
|
|
RBEntireScope: TRadioButton;
|
|
procedure BUFindClick(Sender: TObject);
|
|
procedure CBTextToFindChange(Sender: TObject);
|
|
procedure FormShow(Sender: TObject);
|
|
private
|
|
{ Private declarations }
|
|
public
|
|
{ Public declarations }
|
|
procedure GetData(var Data: TKEditSearchData); virtual;
|
|
procedure SetData(const Data: TKEditSearchData; SelAvail: Boolean); virtual;
|
|
end;
|
|
|
|
var
|
|
SearchForm: TSearchForm;
|
|
|
|
function TrimToSize(const Text: string; Size: Integer): string;
|
|
|
|
implementation
|
|
|
|
uses Options;
|
|
|
|
function TrimToSize(const Text: string; Size: Integer): string;
|
|
begin
|
|
Result := Text;
|
|
if (Size > 0) and (Length(Result) > Size) then
|
|
begin
|
|
SetLength(Result, Size);
|
|
Result := Format('%s...', [Result]);
|
|
end;
|
|
end;
|
|
|
|
procedure TSearchForm.BUFindClick(Sender: TObject);
|
|
begin
|
|
if CBTextToFind.Items.IndexOf(CBTextToFind.Text) < 0 then
|
|
CBTextToFind.Items.Insert(0, CBTextToFind.Text);
|
|
end;
|
|
|
|
procedure TSearchForm.CBTextToFindChange(Sender: TObject);
|
|
begin
|
|
BUFind.Enabled := CBTextToFind.Text <> '';
|
|
end;
|
|
|
|
procedure TSearchForm.FormShow(Sender: TObject);
|
|
begin
|
|
CBTextToFindChange(Sender);
|
|
end;
|
|
|
|
procedure TSearchForm.GetData(var Data: TKEditSearchData);
|
|
begin
|
|
with Data do
|
|
begin
|
|
Options := [];
|
|
if CBMatchCase.Checked then Include(Options, esoMatchCase);
|
|
if CBHexaSearch.Checked then Include(Options, esoTreatAsDigits);
|
|
if RBBackward.Checked then Include(Options, esoBackwards);
|
|
if RBEntireScope.Checked then Include(Options, esoEntireScope);
|
|
if RBSelectedOnly.Checked then Include(Options, esoSelectedOnly);
|
|
TextToFind := CBTextToFind.Text;
|
|
end;
|
|
end;
|
|
|
|
procedure TSearchForm.SetData(const Data: TKEditSearchData; SelAvail: Boolean);
|
|
begin
|
|
ActiveControl := CBTextToFind;
|
|
with Data do
|
|
begin
|
|
CBMatchCase.Checked := esoMatchCase in Options;
|
|
CBHexaSearch.Checked := esoTreatAsDigits in Options;
|
|
if esoBackwards in Options then
|
|
RBBackward.Checked := True
|
|
else
|
|
RBForward.Checked := True;
|
|
if esoEntireScope in Options then
|
|
RBEntireScope.Checked := True
|
|
else
|
|
RBFromCursor.Checked := True;
|
|
if SelAvail then
|
|
begin
|
|
RBSelectedOnly.Enabled := True;
|
|
if esoSelectedOnly in Options then
|
|
RBSelectedOnly.Checked := True
|
|
else
|
|
RBGlobal.Checked := True
|
|
end else
|
|
begin
|
|
RBGlobal.Checked := True;
|
|
RBSelectedOnly.Enabled := False;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
{$IFDEF FPC}
|
|
initialization
|
|
{$i search.lrs}
|
|
{$ELSE}
|
|
{$R *.dfm}
|
|
{$ENDIF}
|
|
end.
|