1 unit ReplacePresetEditor;
6 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
7 Dialogs, ComCtrls, StrReplaceFrame, StdCtrls, StrReplace, ExtCtrls,
11 \83t
\83H
\81[
\83\80\82ÌAutoSize = true
\82É
\90Ý
\92è
\82³
\82ê
\82Ä
\82¢
\82é
\82½
\82ß
\81A
12 \83t
\83H
\81[
\83\80\82Í
\92\86\96¡
\82É
\89\9e\82¶
\82Ä
\8e©
\93®
\93I
\82É
\8fk
\82Þ
\81B
14 \82³
\82ç
\82É
\81A
\83t
\83H
\81[
\83\80\82Í
\81A
\82·
\82×
\82Ä Align = alTop
\82É
\90Ý
\92è
\82³
\82ê
\82½3
\82Â
\82Ì
15 \83p
\83l
\83\8b\82É
\82æ
\82Á
\82Ä
\8bæ
\90Ø
\82ç
\82ê
\82Ä
\82¢
\82é
\81B
17 \88ê
\94Ô
\8fã
\82Ì
\83p
\83l
\83\8b pnlPairsEditor
\82Æ
\81A
18 \88ê
\94Ô
\89º
\82Ì
\83p
\83l
\83\8b pnlOkCancelButtons
\82Í
\81A
\8fí
\82É
\95\
\8e¦
\82³
\82ê
\82Ä
\82¢
\82é
\82ª
\81A
19 \90^
\82ñ
\92\86\82Ì
\83p
\83l
\83\8b pnlPresetProperties
\82Í
\81AAskForTitle
\83v
\83\8d\83p
\83e
\83B
\82É
20 \89\9e\82¶
\82Ä
\81A
\95\
\8e¦
\82³
\82ê
\82½
\82è
\89B
\82ê
\82½
\82è
\82·
\82é
\81B
21 \82±
\82ê
\82ç
\82Ì
\8c\8b\89Ê
\81A
\83t
\83H
\81[
\83\80\8e©
\90g
\82ª
\8e©
\93®
\93I
\82É
\90L
\82Ñ
\8fk
\82Ý
\82·
\82é
\82æ
\82¤
\82É
\82È
\82Á
\82Ä
\82¢
\82é
\81B
23 \83t
\83H
\81[
\83\80\82Ì
\91å
\82«
\82³
\82ð
\95Ï
\8dX
\82µ
\82½
\82¢
\81A
\82Æ
\82¢
\82Á
\82½
\8fê
\8d\87\82É
\82Í
\81A
24 \88ê
\92U AutoSize = false
\82É
\82µ
\82Ä
\83T
\83C
\83Y
\95Ï
\8dX
\82µ
\82½
\8cã
\82Å
\81A
25 \95K
\82¸ AutoSize = true
\82É
\96ß
\82µ
\82Ä
\82¨
\82
\82±
\82Æ
\81B
29 TfrmReplacePresetEditor = class(TForm)
30 pnlPairsEditor: TPanel;
36 StrReplaceFrame: TfrmStrReplaceFrame;
37 pnlPresetProperties: TPanel;
38 pnlOkCancelButtons: TPanel;
41 gbxPresetProperties: TGroupBox;
42 cbxShortCut: TComboBox;
46 cbxConfirmAfterReplace: TCheckBox;
47 procedure btnAddClick(Sender: TObject);
48 procedure btnDeleteClick(Sender: TObject);
49 procedure btnMoveUpClick(Sender: TObject);
50 procedure btnMoveDownClick(Sender: TObject);
51 procedure lvwPairsChange(Sender: TObject; Item: TListItem;
53 procedure btnOkClick(Sender: TObject);
54 procedure btnCancelClick(Sender: TObject);
55 procedure FormCreate(Sender: TObject);
57 FPairs: TReplacePairCollection;
58 procedure SetPairs(const Value: TReplacePairCollection);
59 function GetAskForTitle: Boolean;
60 function GetShortCut: TShortCut;
61 function GetTitle: string;
62 function GetConfirmAfterReplace: Boolean;
63 procedure SetAskForTitle(const Value: Boolean);
64 procedure SetShortCut(const Value: TShortCut);
65 procedure SetTitle(const Value: string);
66 procedure SetConfirmAfterReplace(const Value: Boolean);
68 procedure MoveItem(const Delta: Integer);
69 procedure UpdateControls;
70 procedure UpdateListViewItem(Target: TListItem);
72 procedure FrameUpdate(Sender: TObject);
74 constructor Create(AOwner: TCOmponent); override;
75 destructor Destroy; override;
76 property Pairs: TReplacePairCollection read FPairs write SetPairs;
77 property Title: string read GetTitle write SetTitle;
78 property ShortCut: TShortCut read GetShortCut write SetShortCut;
79 property AskForTitle: Boolean read GetAskForTitle write SetAskForTitle;
80 property ConfirmAfterReplace: Boolean read GetConfirmAfterReplace write SetConfirmAfterReplace;
81 function Execute: Boolean;
88 { TfrmReplacePresetEditor }
90 constructor TfrmReplacePresetEditor.Create(AOwner: TCOmponent);
93 FPairs := TReplacePairCollection.Create(TReplacePair);
96 destructor TfrmReplacePresetEditor.Destroy;
102 procedure TfrmReplacePresetEditor.SetPairs(const Value: TReplacePairCollection);
104 FPairs.Assign(Value);
108 procedure TfrmReplacePresetEditor.UpdateControls;
110 i, SelectedIndex: Integer;
112 if lvwPairs.Selected <> nil then
113 SelectedIndex := lvwPairs.Selected.Index
116 with lvwPairs.Items do
121 for i := 0 to FPairs.Count-1 do
123 UpdateListViewItem(Add);
125 if (SelectedIndex > -1) and (lvwPairs.Selected <> nil) then
126 if (lvwPairs.Selected.Index <> SelectedIndex) and
127 (lvwPairs.Items.Count-1 > SelectedIndex) then
128 lvwPairs.Items[SelectedIndex].Selected := true;
135 procedure TfrmReplacePresetEditor.btnAddClick(Sender: TObject);
139 //
\90V
\82µ
\82
\89Á
\82¦
\82Ä
\82»
\82ê
\82ð
\91I
\91ð
140 StrReplaceFrame.OnContentUpdate := nil;
142 StrReplaceFrame.Pair := FPairs.Add;
143 New := lvwPairs.Items.Add;
144 lvwPairs.Selected := New;
145 UpdateListViewItem(New);
146 //
\83t
\83H
\81[
\83J
\83X
\88Ú
\93®
\81A
\95Ò
\8fW
\8aJ
\8en
147 StrReplaceFrame.edtOldPattern.SetFocus;
149 StrReplaceFrame.OnContentUpdate := FrameUpdate;
153 procedure TfrmReplacePresetEditor.UpdateListViewItem(Target: TListItem);
159 lvwPairs.Items.BeginUpdate;
161 Pair := FPairs[Target.Index];
162 Caption := Pair.BeforeStr;
164 SubItems.Add(Pair.AfterStr);
165 if Pair.UseRegExp then
169 if not Pair.IgnoreCase then
174 lvwPairs.Items.EndUpdate;
179 procedure TfrmReplacePresetEditor.btnDeleteClick(Sender: TObject);
181 TargetIndex: Integer;
183 if lvwPairs.Selected = nil then
185 TargetIndex := lvwPairs.Selected.Index;
186 FPairs.Delete(TargetIndex);
187 lvwPairs.Items.Delete(TargetIndex);
190 procedure TfrmReplacePresetEditor.btnMoveUpClick(Sender: TObject);
195 procedure TfrmReplacePresetEditor.btnMoveDownClick(Sender: TObject);
200 procedure TfrmReplacePresetEditor.lvwPairsChange(Sender: TObject;
201 Item: TListItem; Change: TItemChange);
203 if Change <> ctState then
205 with StrReplaceFrame do
207 if lvwPairs.Selected = nil then
213 Pair := FPairs[lvwPairs.Selected.Index];
218 function TfrmReplacePresetEditor.Execute: Boolean;
221 StrReplaceFrame.OnContentUpdate := FrameUpdate;
222 if lvwPairs.Items.Count > 0 then
224 lvwPairs.Items[0].Selected := true;
226 Result := ShowModal = mrOk;
229 procedure TfrmReplacePresetEditor.btnOkClick(Sender: TObject);
233 if Pairs.Count = 0 then
235 ShowMessage('
\8dÅ
\92á1
\82Â
\82Ì
\92u
\8a·
\83\8b\81[
\83\8b\82ð
\90Ý
\92è
\82µ
\82Ä
\82
\82¾
\82³
\82¢');
238 for i := 0 to Pairs.Count-1 do
239 if not Pairs[i].IsValidPair then
241 ShowMessage(Format('%d
\94Ô
\96Ú
\82Ì
\95¶
\8e\9a\97ñ
\83y
\83A
\82É
\83G
\83\89\81[
\82ª
\82 \82è
\82Ü
\82·', [i+1]));
244 if AskForTitle and (Title = '') then
246 ShowMessage('
\83v
\83\8a\83Z
\83b
\83g
\82Ì
\83^
\83C
\83g
\83\8b\82ð
\8ew
\92è
\82µ
\82Ä
\82
\82¾
\82³
\82¢');
252 procedure TfrmReplacePresetEditor.btnCancelClick(Sender: TObject);
254 ModalResult := mrCancel;
257 procedure TfrmReplacePresetEditor.FollowEdit;
259 CurrentPair: TReplacePair;
261 if lvwPairs.Selected <> nil then
263 CurrentPair := FPairs[lvwPairs.Selected.Index];
264 CurrentPair.Assign(StrReplaceFrame.Pair);
265 UpdateListViewItem(lvwPairs.Selected);
269 procedure TfrmReplacePresetEditor.FrameUpdate(Sender: TObject);
274 procedure TfrmReplacePresetEditor.MoveItem(const Delta: Integer);
276 TargetIndex: Integer;
279 if lvwPairs.Selected = nil then
281 StrReplaceFrame.OnContentUpdate := nil;
283 TargetIndex := lvwPairs.Selected.Index;
284 //
\94Í
\88Í
\83`
\83F
\83b
\83N
285 if (Delta < 0) and (TargetIndex < -Delta) then
287 if (Delta > 0) and (TargetIndex >= Pairs.Count-Delta) then
291 //
\88ê
\92U
\83R
\83\8c\83N
\83V
\83\87\83\93\82©
\82ç
\8aO
\82µ
\82Ä
292 Item := FPairs.Items[TargetIndex];
293 Item.Collection := nil;
294 //
\90V
\82µ
\82INSERT
\82µ
\82½
\90V
\8bK
\8d\80\96Ú
\82É
\91ã
\93ü
295 FPairs.Insert(TargetIndex + Delta).Assign(Item);
297 //
\83\8a\83X
\83g
\83r
\83\85\81[
\82Ì
\91I
\91ð
\83A
\83C
\83e
\83\80\82ð
\93®
\82©
\82·
298 lvwPairs.Items[TargetIndex + Delta].Selected := true;
300 StrReplaceFrame.OnContentUpdate := FrameUpdate;
304 function TfrmReplacePresetEditor.GetAskForTitle: Boolean;
306 Result := pnlPresetProperties.Visible;
309 function TfrmReplacePresetEditor.GetShortCut: TShortCut;
311 Result := TextToShortCut(cbxShortCut.Text);
314 function TfrmReplacePresetEditor.GetTitle: string;
316 Result := edtTitle.Text;
319 procedure TfrmReplacePresetEditor.SetAskForTitle(const Value: Boolean);
321 pnlPresetProperties.Visible := Value;
324 procedure TfrmReplacePresetEditor.SetShortCut(const Value: TShortCut);
326 cbxShortCut.Text := ShortCutToText(Value);
329 procedure TfrmReplacePresetEditor.SetTitle(const Value: string);
331 edtTitle.Text := Value;
334 procedure TfrmReplacePresetEditor.SetConfirmAfterReplace(const Value: Boolean);
336 cbxConfirmAfterReplace.Checked := Value;
339 function TfrmReplacePresetEditor.GetConfirmAfterReplace: Boolean;
341 result := cbxConfirmAfterReplace.Checked;
344 procedure TfrmReplacePresetEditor.FormCreate(Sender: TObject);
346 BuildShortCutList(cbxShortCut.Items);