6 Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
7 System.Classes, Vcl.Graphics,
8 Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ComCtrls, Vcl.StdCtrls, Vcl.ToolWin,
9 Vcl.ImgList, JSON, Vcl.Menus, Vcl.StdActns, System.Actions, Vcl.ActnList;
12 TIndxChar = (chMul, chPlus, chYen, chDollar, chSharp, chAnd, chPercent);
17 ToolButton1: TToolButton;
18 ToolButton2: TToolButton;
19 ImageList1: TImageList;
21 ToolButton3: TToolButton;
22 StatusBar1: TStatusBar;
23 ToolButton4: TToolButton;
24 ToolButton5: TToolButton;
26 ActionList1: TActionList;
27 PopupMenu1: TPopupMenu;
28 EditSelectAll1: TEditSelectAll;
39 TabControl1: TTabControl;
42 ToolButton6: TToolButton;
43 ToolButton7: TToolButton;
57 ToolButton8: TToolButton;
58 ToolButton9: TToolButton;
59 ToolButton10: TToolButton;
66 ToolButton11: TToolButton;
67 procedure ToolButton2Click(Sender: TObject);
68 procedure ToolButton5Click(Sender: TObject);
69 procedure TabControl1Change(Sender: TObject);
70 procedure FormCreate(Sender: TObject);
71 procedure Memo1Change(Sender: TObject);
72 procedure Memo1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
73 procedure Memo1KeyPress(Sender: TObject; var Key: Char);
74 procedure FormDestroy(Sender: TObject);
75 procedure Action3Execute(Sender: TObject);
76 procedure Memo1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
77 procedure Action4Execute(Sender: TObject);
78 procedure Action5Execute(Sender: TObject);
81 procedure loop(item: TTreeNode; JSON: TJSONObject);
82 procedure arrloop(item: TTreeNode; arr: TJSONArray);
83 function returnChar(c: TIndxChar): Char;
84 procedure inputsub(Key: Char);
105 procedure TForm1.Action3Execute(Sender: TObject);
108 ToolButton11.Enabled := Undo.CanRedo;
111 procedure TForm1.Action4Execute(Sender: TObject);
115 s := Clipboard.AsText;
117 Memo1.SelStart := Memo1.SelStart - Length(s);
118 Memo1.SelLength := Length(s);
119 Undo.Pasted(Memo1.SelText, Memo1.SelStart);
120 ToolButton8.Enabled := Undo.CanUndo;
123 procedure TForm1.Action5Execute(Sender: TObject);
126 ToolButton11.Enabled := Undo.CanRedo;
129 procedure TForm1.arrloop(item: TTreeNode; arr: TJSONArray);
137 if id = High(id) then
141 for i := 0 to arr.count - 1 do
144 if val is TJSONObject then
145 loop(item, val as TJSONObject)
146 else if val is TJSONArray then
147 arrloop(item, val as TJSONArray)
150 s := c + '_' + arr.Items[i].ToString;
151 TreeView1.Items.AddChild(item, s);
156 procedure TForm1.FormCreate(Sender: TObject);
158 TabControl1Change(nil);
159 Undo := TUndoClass.Create(Self);
163 procedure TForm1.FormDestroy(Sender: TObject);
168 procedure TForm1.inputsub(Key: Char);
170 delstr := Memo1.SelText;
171 delpos := Memo1.SelStart;
174 Undo.Deleted(delstr, Memo1.SelStart, false);
175 if Key = Char(VK_RETURN) then
176 Undo.Returned(delpos)
178 Undo.Inputted(Key, delpos);
182 procedure TForm1.loop(item: TTreeNode; JSON: TJSONObject);
191 if id = High(id) then
195 for i := 0 to JSON.count - 1 do
197 pair := JSON.Pairs[i];
200 TreeView1.Items.AddChild(item, 'error');
201 Showmessage('
\93à
\95\94\83G
\83\89\81[
\82É
\82æ
\82è
\92\86\92f
\82µ
\82Ü
\82µ
\82½');
202 TabControl1.TabIndex := 2;
203 TabControl1Change(nil);
208 val := pair.JsonValue;
209 if val is TJSONObject then
211 s := c + pair.JsonString.ToString + ':';
212 JSON := pair.JsonValue as TJSONObject;
213 loop(TreeView1.Items.AddChild(item, s), JSON);
215 else if val is TJSONArray then
217 s := c + pair.JsonString.ToString + ':';
218 arrloop(TreeView1.Items.AddChild(item, s), pair.JsonValue as TJSONArray);
222 s := c + pair.JsonString.ToString + ':' + pair.JsonValue.ToString;
223 TreeView1.Items.AddChild(item, s);
228 procedure TForm1.Memo1Change(Sender: TObject);
230 ToolButton8.Enabled := Undo.CanUndo;
231 if Memo1.Text = '' then
233 TreeView1.Items.Clear;
234 TreeView1.Items.Add(nil, 'JSON items');
238 procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word;
241 if Memo1.Text <> '' then
245 if Memo1.CaretPos.X = Length(Memo1.Lines[Memo1.CaretPos.Y]) then
247 Undo.DelReturn(Memo1.SelStart,true);
253 else if Memo1.SelLength = 0 then
254 delstr := Memo1.Text[Memo1.SelStart + 1]
256 delstr := Memo1.SelText;
258 Undo.Deleted(delstr, Memo1.SelStart, true);
265 procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
269 if Memo1.SelStart > 0 then
271 if Memo1.CaretPos.X = 0 then
273 Undo.DelReturn(Memo1.SelStart,false);
279 else if Memo1.SelLength = 0 then
280 delstr := Memo1.Text[Memo1.SelStart]
282 delstr := Memo1.SelText;
284 Undo.Deleted(delstr, Memo1.SelStart-1, false);
296 procedure TForm1.Memo1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
298 if charmodi = true then
300 StatusBar1.Panels[1].Text := charmodi.ToString;
303 function TForm1.returnChar(c: TIndxChar): Char;
324 procedure TForm1.TabControl1Change(Sender: TObject);
326 case TabControl1.TabIndex of
328 Memo2.Text := Memo3.Text;
330 Memo2.Text := Memo4.Text;
332 Memo2.Text := Memo5.Text;
336 procedure TForm1.ToolButton2Click(Sender: TObject);
342 TreeView1.Items.Clear;
343 if Memo1.Text = '' then
344 Memo1.Text := Clipboard.AsText;
345 j := TJSONObject.ParseJSONValue(Memo1.Text) as TJSONObject;
348 for i := 0 to TreeView1.Items.count - 1 do
349 TreeView1.Items[i].Expanded := true;
350 if TreeView1.Items.count = 0 then
351 StatusBar1.Panels[0].Text := 'error'
354 Clipboard.AsText := j.ToString;
355 StatusBar1.Panels[0].Text := '';
359 procedure TForm1.ToolButton5Click(Sender: TObject);
361 TabControl1.Visible := not TabControl1.Visible;