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 procedure btnAddClick(Sender: TObject);
47 procedure btnDeleteClick(Sender: TObject);
48 procedure btnMoveUpClick(Sender: TObject);
49 procedure btnMoveDownClick(Sender: TObject);
50 procedure lvwPairsChange(Sender: TObject; Item: TListItem;
52 procedure btnOkClick(Sender: TObject);
53 procedure btnCancelClick(Sender: TObject);
54 procedure FormCreate(Sender: TObject);
56 FPairs: TReplacePairCollection;
57 procedure SetPairs(const Value: TReplacePairCollection);
58 function GetAskForTitle: Boolean;
59 function GetShortCut: TShortCut;
60 function GetTitle: string;
61 procedure SetAskForTitle(const Value: Boolean);
62 procedure SetShortCut(const Value: TShortCut);
63 procedure SetTitle(const Value: string);
65 procedure MoveItem(const Delta: Integer);
66 procedure UpdateControls;
67 procedure UpdateListViewItem(Target: TListItem);
69 procedure FrameUpdate(Sender: TObject);
71 constructor Create(AOwner: TCOmponent); override;
72 destructor Destroy; override;
73 property Pairs: TReplacePairCollection read FPairs write SetPairs;
74 property Title: string read GetTitle write SetTitle;
75 property ShortCut: TShortCut read GetShortCut write SetShortCut;
76 property AskForTitle: Boolean read GetAskForTitle write SetAskForTitle;
77 function Execute: Boolean;
84 { TfrmReplacePresetEditor }
86 constructor TfrmReplacePresetEditor.Create(AOwner: TCOmponent);
89 FPairs := TReplacePairCollection.Create(TReplacePair);
92 destructor TfrmReplacePresetEditor.Destroy;
98 procedure TfrmReplacePresetEditor.SetPairs(const Value: TReplacePairCollection);
100 FPairs.Assign(Value);
104 procedure TfrmReplacePresetEditor.UpdateControls;
106 i, SelectedIndex: Integer;
108 if lvwPairs.Selected <> nil then
109 SelectedIndex := lvwPairs.Selected.Index
112 with lvwPairs.Items do
117 for i := 0 to FPairs.Count-1 do
119 UpdateListViewItem(Add);
121 if (SelectedIndex > -1) and (lvwPairs.Selected <> nil) then
122 if (lvwPairs.Selected.Index <> SelectedIndex) and
123 (lvwPairs.Items.Count-1 > SelectedIndex) then
124 lvwPairs.Items[SelectedIndex].Selected := true;
131 procedure TfrmReplacePresetEditor.btnAddClick(Sender: TObject);
135 //
\90V
\82µ
\82
\89Á
\82¦
\82Ä
\82»
\82ê
\82ð
\91I
\91ð
136 StrReplaceFrame.OnContentUpdate := nil;
138 StrReplaceFrame.Pair := FPairs.Add;
139 New := lvwPairs.Items.Add;
140 lvwPairs.Selected := New;
141 UpdateListViewItem(New);
142 //
\83t
\83H
\81[
\83J
\83X
\88Ú
\93®
\81A
\95Ò
\8fW
\8aJ
\8en
143 StrReplaceFrame.edtOldPattern.SetFocus;
145 StrReplaceFrame.OnContentUpdate := FrameUpdate;
149 procedure TfrmReplacePresetEditor.UpdateListViewItem(Target: TListItem);
155 lvwPairs.Items.BeginUpdate;
157 Pair := FPairs[Target.Index];
158 Caption := Pair.BeforeStr;
160 SubItems.Add(Pair.AfterStr);
161 if Pair.UseRegExp then
165 if not Pair.IgnoreCase then
170 lvwPairs.Items.EndUpdate;
175 procedure TfrmReplacePresetEditor.btnDeleteClick(Sender: TObject);
177 TargetIndex: Integer;
179 if lvwPairs.Selected = nil then
181 TargetIndex := lvwPairs.Selected.Index;
182 FPairs.Delete(TargetIndex);
183 lvwPairs.Items.Delete(TargetIndex);
186 procedure TfrmReplacePresetEditor.btnMoveUpClick(Sender: TObject);
191 procedure TfrmReplacePresetEditor.btnMoveDownClick(Sender: TObject);
196 procedure TfrmReplacePresetEditor.lvwPairsChange(Sender: TObject;
197 Item: TListItem; Change: TItemChange);
199 if Change <> ctState then
201 with StrReplaceFrame do
203 if lvwPairs.Selected = nil then
209 Pair := FPairs[lvwPairs.Selected.Index];
214 function TfrmReplacePresetEditor.Execute: Boolean;
217 StrReplaceFrame.OnContentUpdate := FrameUpdate;
218 if lvwPairs.Items.Count > 0 then
220 lvwPairs.Items[0].Selected := true;
222 Result := ShowModal = mrOk;
225 procedure TfrmReplacePresetEditor.btnOkClick(Sender: TObject);
227 if Pairs.Count = 0 then
228 ShowMessage('
\8dÅ
\92á1
\82Â
\82Ì
\92u
\8a·
\83\8b\81[
\83\8b\82ð
\90Ý
\92è
\82µ
\82Ä
\82
\82¾
\82³
\82¢')
233 procedure TfrmReplacePresetEditor.btnCancelClick(Sender: TObject);
235 ModalResult := mrCancel;
238 procedure TfrmReplacePresetEditor.FollowEdit;
240 CurrentPair: TReplacePair;
242 if lvwPairs.Selected <> nil then
244 CurrentPair := FPairs[lvwPairs.Selected.Index];
245 CurrentPair.Assign(StrReplaceFrame.Pair);
246 UpdateListViewItem(lvwPairs.Selected);
250 procedure TfrmReplacePresetEditor.FrameUpdate(Sender: TObject);
255 procedure TfrmReplacePresetEditor.MoveItem(const Delta: Integer);
257 TargetIndex: Integer;
260 if lvwPairs.Selected = nil then
262 StrReplaceFrame.OnContentUpdate := nil;
264 TargetIndex := lvwPairs.Selected.Index;
265 //
\94Í
\88Í
\83`
\83F
\83b
\83N
266 if (Delta < 0) and (TargetIndex < -Delta) then
268 if (Delta > 0) and (TargetIndex >= Pairs.Count-Delta) then
272 //
\88ê
\92U
\83R
\83\8c\83N
\83V
\83\87\83\93\82©
\82ç
\8aO
\82µ
\82Ä
273 Item := FPairs.Items[TargetIndex];
274 Item.Collection := nil;
275 //
\90V
\82µ
\82INSERT
\82µ
\82½
\90V
\8bK
\8d\80\96Ú
\82É
\91ã
\93ü
276 FPairs.Insert(TargetIndex + Delta).Assign(Item);
278 //
\83\8a\83X
\83g
\83r
\83\85\81[
\82Ì
\91I
\91ð
\83A
\83C
\83e
\83\80\82ð
\93®
\82©
\82·
279 lvwPairs.Items[TargetIndex + Delta].Selected := true;
281 StrReplaceFrame.OnContentUpdate := FrameUpdate;
285 function TfrmReplacePresetEditor.GetAskForTitle: Boolean;
287 Result := pnlPresetProperties.Visible;
290 function TfrmReplacePresetEditor.GetShortCut: TShortCut;
292 Result := TextToShortCut(cbxShortCut.Text);
295 function TfrmReplacePresetEditor.GetTitle: string;
297 Result := edtTitle.Text;
300 procedure TfrmReplacePresetEditor.SetAskForTitle(const Value: Boolean);
302 pnlPresetProperties.Visible := Value;
305 procedure TfrmReplacePresetEditor.SetShortCut(const Value: TShortCut);
307 cbxShortCut.Text := ShortCutToText(Value);
310 procedure TfrmReplacePresetEditor.SetTitle(const Value: string);
312 edtTitle.Text := Value;
315 procedure TfrmReplacePresetEditor.FormCreate(Sender: TObject);
317 BuildShortCutList(cbxShortCut.Items);