OSDN Git Service

タブ文字チェック
[winbottle/winbottle.git] / bottleclient / StrReplaceFrame.pas
1 unit StrReplaceFrame;
2
3 interface
4
5 uses
6   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
7   Dialogs, StdCtrls, StrReplace;
8
9 type
10   TfrmStrReplaceFrame = class(TFrame)
11     edtNewPattern: TEdit;
12     edtOldPattern: TEdit;
13     lblOldPattern: TLabel;
14     lblNewPattern: TLabel;
15     cbxUseRegExp: TCheckBox;
16     cbxDontIgnoreCase: TCheckBox;
17     procedure ContentUpdate(Sender: TObject);
18   private
19     FPair: TReplacePair;
20     FOnContentUpdate: TNotifyEvent;
21     FUpdateCount: Integer;
22     procedure SetPairRec(const Value: TReplacePair);
23     procedure UpdateControls;
24     procedure ControlsToData;
25     function GetPairRec: TReplacePair;
26     procedure SetOnContentUpdate(const Value: TNotifyEvent);
27   protected
28     procedure BeginUpdate;
29     procedure EndUpdate;
30     procedure SetEnabled(Value: boolean); override;
31   public
32     constructor Create(AOwner: TComponent); override;
33     destructor Destroy; override;
34     property Pair: TReplacePair read GetPairRec write SetPairRec;
35     property OnContentUpdate: TNotifyEvent read FOnContentUpdate
36       write SetOnContentUpdate;
37   end;
38
39 implementation
40
41 {$R *.dfm}
42
43 { TfrmStrReplaceFrame }
44
45 procedure TfrmStrReplaceFrame.ControlsToData;
46 begin
47   with FPair do
48   begin
49     BeforeStr  := edtOldPattern.Text;
50     AfterStr   := edtNewPattern.Text;
51     UseRegExp  := cbxUseRegExp.Checked;
52     IgnoreCase := not cbxDontIgnoreCase.Checked;
53   end;
54 end;
55
56 constructor TfrmStrReplaceFrame.Create(AOwner: TComponent);
57 begin
58   inherited;
59   FPair := TReplacePair.Create(nil);
60 end;
61
62 destructor TfrmStrReplaceFrame.Destroy;
63 begin
64   FPair.Free;
65   inherited;
66 end;
67
68 function TfrmStrReplaceFrame.GetPairRec: TReplacePair;
69 begin
70   ControlsToData;
71   Result := FPair;
72 end;
73
74 procedure TfrmStrReplaceFrame.SetOnContentUpdate(const Value: TNotifyEvent);
75 begin
76   FOnContentUpdate := Value;
77 end;
78
79 procedure TfrmStrReplaceFrame.SetPairRec(const Value: TReplacePair);
80 begin
81   FPair.Assign(Value);
82   UpdateControls;
83 end;
84
85 procedure TfrmStrReplaceFrame.UpdateControls;
86 begin
87   with FPair do
88   begin
89     BeginUpdate;
90     try
91       edtOldPattern.Text := BeforeStr;
92       edtNewPattern.Text := AfterStr;
93       cbxUseRegExp.Checked := UseRegExp;
94       cbxDontIgnoreCase.Checked := not IgnoreCase;
95     finally
96       EndUpdate;
97     end;
98   end;
99 end;
100
101 procedure TfrmStrReplaceFrame.ContentUpdate(Sender: TObject);
102 begin
103   if Assigned(FOnContentUpdate) and (FUpdateCount = 0) then
104     FOnContentUpdate(Self);
105 end;
106
107 procedure TfrmStrReplaceFrame.BeginUpdate;
108 begin
109   Inc(FUpdateCount);
110 end;
111
112 procedure TfrmStrReplaceFrame.EndUpdate;
113 begin
114   Dec(FUpdateCount);
115   if FUpdateCount = 0 then
116     ContentUpdate(Self);
117 end;
118
119 procedure TfrmStrReplaceFrame.SetEnabled(Value: boolean);
120 begin
121   if Enabled <> Value then
122   begin
123     edtOldPattern.Enabled := Value;
124     edtNewPattern.Enabled := Value;
125     cbxUseRegExp.Enabled := Value;
126     cbxDontIgnoreCase.Enabled := Value;
127     inherited SetEnabled(Value);
128   end;
129 end;
130
131 end.