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 ToolButton5Click(Sender: TObject);
68 procedure TabControl1Change(Sender: TObject);
69 procedure FormCreate(Sender: TObject);
70 procedure Memo1Change(Sender: TObject);
71 procedure Memo1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
72 procedure Memo1KeyPress(Sender: TObject; var Key: Char);
73 procedure FormDestroy(Sender: TObject);
74 procedure Undo1Execute(Sender: TObject);
75 procedure Memo1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
76 procedure Past1Execute(Sender: TObject);
77 procedure RedoExecute(Sender: TObject);
78 procedure Execute1Execute(Sender: TObject);
81 function checkplane: Boolean;
82 procedure loop(item: TTreeNode; JSON: TJSONObject);
83 procedure arrloop(item: TTreeNode; arr: TJSONArray);
84 function returnChar(c: TIndxChar): Char;
85 procedure inputsub(Key: Char);
106 procedure TForm1.Undo1Execute(Sender: TObject);
109 ToolButton8.Enabled := Undo.CanUndo;
110 ToolButton11.Enabled := Undo.CanRedo;
113 procedure TForm1.Past1Execute(Sender: TObject);
117 s := Clipboard.AsText;
119 Memo1.SelStart := Memo1.SelStart - Length(s);
120 Memo1.SelLength := Length(s);
121 Undo.Pasted(Memo1.SelText, Memo1.SelStart);
122 ToolButton8.Enabled := Undo.CanUndo;
125 procedure TForm1.RedoExecute(Sender: TObject);
128 ToolButton8.Enabled := Undo.CanUndo;
129 ToolButton11.Enabled := Undo.CanRedo;
132 procedure TForm1.arrloop(item: TTreeNode; arr: TJSONArray);
140 if id = High(id) then
144 for i := 0 to arr.count - 1 do
147 if val is TJSONObject then
148 loop(item, val as TJSONObject)
149 else if val is TJSONArray then
150 arrloop(item, val as TJSONArray)
153 s := c + '_' + arr.Items[i].ToString;
154 TreeView1.Items.AddChild(item, s);
159 function TForm1.checkplane: Boolean;
166 if Memo1.Text <> '' then
167 for i := 0 to Memo1.Lines.count - 1 do
170 for j := 1 to Length(s) do
172 Char(VK_SPACE), Char(VK_TAB), '
\81@':
181 procedure TForm1.Execute1Execute(Sender: TObject);
187 TreeView1.Items.Clear;
188 if checkplane = true then
192 Memo1.SelLength := 0;
194 j := TJSONObject.ParseJSONValue(Memo1.Text) as TJSONObject;
198 for i := 0 to TreeView1.Items.count - 1 do
199 TreeView1.Items[i].Expanded := true;
200 if TreeView1.Items.count = 0 then
201 StatusBar1.Panels[0].Text := 'error'
204 Clipboard.AsText := j.ToString;
205 StatusBar1.Panels[0].Text := '';
210 procedure TForm1.FormCreate(Sender: TObject);
212 TabControl1Change(nil);
213 Undo := TUndoClass.Create(Self);
217 procedure TForm1.FormDestroy(Sender: TObject);
222 procedure TForm1.inputsub(Key: Char);
224 delstr := Memo1.SelText;
225 delpos := Memo1.SelStart;
228 Undo.Deleted(delstr, Memo1.SelStart, false);
229 if Key = Char(VK_RETURN) then
230 Undo.Returned(delpos)
232 Undo.Inputted(Key, delpos);
236 procedure TForm1.loop(item: TTreeNode; JSON: TJSONObject);
245 if id = High(id) then
249 for i := 0 to JSON.count - 1 do
251 pair := JSON.Pairs[i];
254 TreeView1.Items.AddChild(item, 'error');
255 Showmessage('
\93à
\95\94\83G
\83\89\81[
\82É
\82æ
\82è
\92\86\92f
\82µ
\82Ü
\82µ
\82½');
256 TabControl1.TabIndex := 2;
257 TabControl1Change(nil);
262 val := pair.JsonValue;
263 if val is TJSONObject then
265 s := c + pair.JsonString.ToString + ':';
266 JSON := pair.JsonValue as TJSONObject;
267 loop(TreeView1.Items.AddChild(item, s), JSON);
269 else if val is TJSONArray then
271 s := c + pair.JsonString.ToString + ':';
272 arrloop(TreeView1.Items.AddChild(item, s), pair.JsonValue as TJSONArray);
276 s := c + pair.JsonString.ToString + ':' + pair.JsonValue.ToString;
277 TreeView1.Items.AddChild(item, s);
282 procedure TForm1.Memo1Change(Sender: TObject);
284 ToolButton8.Enabled := Undo.CanUndo;
285 if Memo1.Text = '' then
287 TreeView1.Items.Clear;
288 TreeView1.Items.Add(nil, 'JSON items');
292 procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word;
295 if Memo1.Text <> '' then
299 if Memo1.CaretPos.X = Length(Memo1.Lines[Memo1.CaretPos.Y]) then
301 Undo.DelReturn(Memo1.SelStart, true);
307 else if Memo1.SelLength = 0 then
308 delstr := Memo1.Text[Memo1.SelStart + 1]
310 delstr := Memo1.SelText;
312 Undo.Deleted(delstr, Memo1.SelStart, true);
319 procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
323 if Ord(Key) = VK_BACK then
325 if Memo1.SelStart > 0 then
327 if Memo1.CaretPos.X = 0 then
329 Undo.DelReturn(Memo1.SelStart, false);
335 else if Memo1.SelLength = 0 then
337 delstr := Memo1.Text[Memo1.SelStart];
338 i := Memo1.SelStart - 1;
342 delstr := Memo1.SelText;
346 Undo.Deleted(delstr, i, false);
358 procedure TForm1.Memo1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
360 if charmodi = true then
364 function TForm1.returnChar(c: TIndxChar): Char;
385 procedure TForm1.TabControl1Change(Sender: TObject);
387 case TabControl1.TabIndex of
389 Memo2.Text := Memo3.Text;
391 Memo2.Text := Memo4.Text;
393 Memo2.Text := Memo5.Text;
397 procedure TForm1.ToolButton5Click(Sender: TObject);
399 TabControl1.Visible := not TabControl1.Visible;