-
-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathfrmReplaceU.pas
151 lines (132 loc) · 3.82 KB
/
frmReplaceU.pas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
unit frmReplaceU;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Menus;
type
TfrmReplace = class(TForm)
Label1: TLabel;
Label2: TLabel;
edtKey: TEdit;
edtReplace: TEdit;
btnReplace: TButton;
btnReplaceAll: TButton;
chkSelectArea: TCheckBox;
popRep: TPopupMenu;
Copy1: TMenuItem;
Cut1: TMenuItem;
popPaste: TMenuItem;
popAll: TMenuItem;
N3: TMenuItem;
procedure btnReplaceClick(Sender: TObject);
procedure btnReplaceAllClick(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Copy1Click(Sender: TObject);
procedure Cut1Click(Sender: TObject);
procedure popPasteClick(Sender: TObject);
procedure popAllClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure edtKeyEnter(Sender: TObject);
procedure edtReplaceEnter(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private 宣言 }
public
{ Public 宣言 }
edts: array[0..1]of TEdit;
FIndex: Integer;
end;
var
frmReplace: TfrmReplace;
implementation
uses sakurapadU, StrUnit, gui_benri, HEditor;
{$R *.dfm}
procedure TfrmReplace.btnReplaceClick(Sender: TObject);
var
key, txt: string;
idx,cur: Integer;
begin
key := edtKey.Text ;
txt := frmSakuraPad.ActiveEditor.Lines.Text ;
cur := frmSakuraPad.ActiveEditor.SelStart +1;
idx := JPosEx(key, txt , cur);
if idx<=0 then begin
cur := 0;
idx := JPosEx(key, txt , cur+1);
if idx<=0 then begin
ShowMessage('検索語「'+key+'」は見つかりませんでした。');
Exit;
end;
end;
{if MsgYesNo('"'+key+'"が見つかりました。'#13#10+
'"'+edtReplace.Text+'"に、置換しますか?') then}
begin
Delete(txt, idx, Length(key));
Insert(edtReplace.Text, txt, idx);
with frmSakuraPad.ActiveEditor do begin
Lines.Text := txt;
SetFocus ;
SelStart := idx-1 + Length(Self.edtReplace.Text);
SelLength := 0;//Length(Self.edtReplace.Text);
frmSakuraPad.PlayModify := True;
end;
end;
end;
procedure TfrmReplace.btnReplaceAllClick(Sender: TObject);
begin
//if MsgYesNo('全て置換します。よろしいですか?')=False then Exit;
with frmSakuraPad.ActiveEditor do
begin
if chkSelectArea.Checked then
begin
SelText := JReplace(SelText, Self.edtKey.Text, Self.edtReplace.Text, True);
end else
begin
Lines.Text := JReplace(Lines.Text, Self.edtKey.Text, Self.edtReplace.Text, True);
end;
end;
end;
procedure TfrmReplace.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = VK_ESCAPE then Close;
end;
procedure TfrmReplace.Copy1Click(Sender: TObject);
begin
edts[FIndex].CopyToClipboard ;
end;
procedure TfrmReplace.Cut1Click(Sender: TObject);
begin
edts[FIndex].CutToClipboard ;
end;
procedure TfrmReplace.popPasteClick(Sender: TObject);
begin
edts[FIndex].PasteFromClipboard ;
end;
procedure TfrmReplace.popAllClick(Sender: TObject);
begin
edts[FIndex].SelectAll ;
end;
procedure TfrmReplace.FormCreate(Sender: TObject);
begin
if frmSakuraPad.FlagForceClose then Exit;
frmSakuraPad.ini.LoadForm(Self);
edts[0] := edtKey ;
edts[1] := edtReplace ;
FIndex := 0;
end;
procedure TfrmReplace.edtKeyEnter(Sender: TObject);
begin
FIndex := 0;
end;
procedure TfrmReplace.edtReplaceEnter(Sender: TObject);
begin
FIndex := 1;
end;
procedure TfrmReplace.FormDestroy(Sender: TObject);
begin
if frmSakuraPad.FlagForceClose then Exit;
frmSakuraPad.ini.SaveForm(Self);
end;
end.