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;
65 ToolButton11: TToolButton;
66 procedure ToolButton5Click(Sender: TObject);
67 procedure TabControl1Change(Sender: TObject);
68 procedure FormCreate(Sender: TObject);
69 procedure Memo1Change(Sender: TObject);
70 procedure Memo1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
71 procedure Memo1KeyPress(Sender: TObject; var Key: Char);
72 procedure FormDestroy(Sender: TObject);
73 procedure Undo1Execute(Sender: TObject);
74 procedure Memo1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
75 procedure Past1Execute(Sender: TObject);
76 procedure Redo1Execute(Sender: TObject);
77 procedure Execute1Execute(Sender: TObject);
80 function checkplane: Boolean;
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.Undo1Execute(Sender: TObject);
108 ToolButton8.Enabled := Undo.CanUndo;
109 ToolButton11.Enabled := Undo.CanRedo;
112 procedure TForm1.Past1Execute(Sender: TObject);
116 s := Clipboard.AsText;
118 Memo1.SelStart := Memo1.SelStart - Length(s);
119 Memo1.SelLength := Length(s);
120 Undo.Pasted(Memo1.SelText, Memo1.SelStart);
121 ToolButton8.Enabled := Undo.CanUndo;
124 procedure TForm1.Redo1Execute(Sender: TObject);
127 ToolButton8.Enabled := Undo.CanUndo;
128 ToolButton11.Enabled := Undo.CanRedo;
131 procedure TForm1.arrloop(item: TTreeNode; arr: TJSONArray);
139 if id = High(id) then
143 for i := 0 to arr.count - 1 do
146 if val is TJSONObject then
147 loop(item, val as TJSONObject)
148 else if val is TJSONArray then
149 arrloop(item, val as TJSONArray)
152 s := c + '_' + arr.Items[i].ToString;
153 TreeView1.Items.AddChild(item, s);
158 function TForm1.checkplane: Boolean;
165 if Memo1.Text <> '' then
166 for i := 0 to Memo1.Lines.count - 1 do
169 for j := 1 to Length(s) do
171 Char(VK_SPACE), Char(VK_TAB), '
\81@':
180 procedure TForm1.Execute1Execute(Sender: TObject);
186 TreeView1.Items.Clear;
187 if checkplane = true then
191 Memo1.SelLength := 0;
193 j := TJSONObject.ParseJSONValue(Memo1.Text) as TJSONObject;
197 for i := 0 to TreeView1.Items.count - 1 do
198 TreeView1.Items[i].Expanded := true;
199 if TreeView1.Items.count = 0 then
200 StatusBar1.Panels[0].Text := 'error'
203 Clipboard.AsText := j.ToString;
204 StatusBar1.Panels[0].Text := '';
209 procedure TForm1.FormCreate(Sender: TObject);
211 TabControl1Change(nil);
212 Undo := TUndoClass.Create(Self);
216 procedure TForm1.FormDestroy(Sender: TObject);
221 procedure TForm1.inputsub(Key: Char);
223 delstr := Memo1.SelText;
224 delpos := Memo1.SelStart;
227 Undo.Deleted(delstr, Memo1.SelStart, false);
228 if Key = Char(VK_RETURN) then
229 Undo.Returned(delpos)
231 Undo.Inputted(Key, delpos);
235 procedure TForm1.loop(item: TTreeNode; JSON: TJSONObject);
244 if id = High(id) then
248 for i := 0 to JSON.count - 1 do
250 pair := JSON.Pairs[i];
251 val := pair.JsonValue;
252 if val is TJSONObject then
254 s := c + pair.JsonString.ToString + ':';
255 loop(TreeView1.Items.AddChild(item, s), val as TJSONObject);
257 else if val is TJSONArray then
259 s := c + pair.JsonString.ToString + ':';
260 arrloop(TreeView1.Items.AddChild(item, s), pair.JsonValue as TJSONArray);
264 s := c + pair.JsonString.ToString + ':' + pair.JsonValue.ToString;
265 TreeView1.Items.AddChild(item, s);
270 procedure TForm1.Memo1Change(Sender: TObject);
272 ToolButton8.Enabled := Undo.CanUndo;
273 if Memo1.Text = '' then
275 TreeView1.Items.Clear;
276 TreeView1.Items.Add(nil, 'JSON items');
280 procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word;
283 if Memo1.Text <> '' then
287 if Memo1.CaretPos.X = Length(Memo1.Lines[Memo1.CaretPos.Y]) then
289 Undo.DelReturn(Memo1.SelStart, true);
295 else if Memo1.SelLength = 0 then
296 delstr := Memo1.Text[Memo1.SelStart + 1]
298 delstr := Memo1.SelText;
300 Undo.Deleted(delstr, Memo1.SelStart, true);
307 procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
311 if Ord(Key) = VK_BACK then
313 if Memo1.SelStart > 0 then
315 if Memo1.CaretPos.X = 0 then
317 Undo.DelReturn(Memo1.SelStart, false);
323 else if Memo1.SelLength = 0 then
325 delstr := Memo1.Text[Memo1.SelStart];
326 i := Memo1.SelStart - 1;
330 delstr := Memo1.SelText;
334 Undo.Deleted(delstr, i, false);
346 procedure TForm1.Memo1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
348 if charmodi = true then
352 function TForm1.returnChar(c: TIndxChar): Char;
373 procedure TForm1.TabControl1Change(Sender: TObject);
375 case TabControl1.TabIndex of
377 Memo2.Text := Memo3.Text;
379 Memo2.Text := Memo4.Text;
383 procedure TForm1.ToolButton5Click(Sender: TObject);
385 TabControl1.Visible := not TabControl1.Visible;