@@ -121,7 +121,8 @@ function TSQLiteConfig.LoadConfig: TJSONObject;
121121 Open;
122122 while not Eof do
123123 begin
124- Result.AddPair(Fields.Fields[0 ].AsString, Fields.Fields[1 ].AsString);
124+ Result.AddPair(Fields.Fields[0 ].AsString,
125+ TJSONObject.ParseJSONValue(Fields.Fields[1 ].AsString));
125126 Next;
126127 end ;
127128 Close;
@@ -134,12 +135,12 @@ procedure TSQLiteConfig.LoadForm(aForm: TForm);
134135 J: integer;
135136 { $ENDIF}
136137 I: integer;
137- JSONTela: TJSONObject;
138+ JSONTela, JSONItem : TJSONObject;
138139begin
139140 JSONTela := LoadConfig;
140141 try
141142 for I := 0 to pred(aForm.ComponentCount) do
142- if JSONTela.getValue(TEdit( aForm.Components[I]) .Name ) <> nil then
143+ if JSONTela.getValue(aForm.Components[I].Name ) <> nil then
143144 if (aForm.Components[I] is TEdit) then
144145 TEdit(aForm.Components[I]).Text :=
145146 JSONTela.getValue(TEdit(aForm.Components[I]).Name ).Value
@@ -163,13 +164,22 @@ procedure TSQLiteConfig.LoadForm(aForm: TForm);
163164 else if aForm.Components[I] is TLabeledEdit then
164165 TLabeledEdit(aForm.Components[I]).Text :=
165166 JSONTela.getValue(TLabeledEdit(aForm.Components[I]).Name ).Value
166- else if aForm.Components[I] is TValueListEditor then
167- for J := 1 to pred(TValueListEditor(aForm.Components[I]).RowCount) do
168- TValueListEditor(aForm.Components[I]).Cells[1 , J] :=
169- JSONTela.getValue(TValueListEditor(aForm.Components[I])
170- .Keys[J]).Value
171- { $ENDIF}
172- ;
167+ else if (aForm.Components[I] is TValueListEditor) then
168+ begin
169+ JSONItem :=
170+ TJSONObject(TJSONObject.ParseJSONValue
171+ (JSONTela.getValue(TValueListEditor(aForm.Components[I])
172+ .Name ).ToJSON));
173+ if JSONItem <> nil then
174+ for J := 1 to pred(TValueListEditor(aForm.Components[I])
175+ .RowCount) do
176+ TValueListEditor(aForm.Components[I]).Cells[1 , J] :=
177+ JSONItem.getValue(TValueListEditor(aForm.Components[I])
178+ .Keys[J]).Value ;
179+ JSONItem.Free;
180+ end
181+ { $ENDIF}
182+ ;
173183 finally
174184 JSONTela.Free;
175185 end ;
@@ -181,7 +191,7 @@ procedure TSQLiteConfig.SaveForm(aForm: TForm);
181191 J: integer;
182192 { $ENDIF}
183193 I: integer;
184- JSONTela: TJSONObject;
194+ JSONTela, JSONItem : TJSONObject;
185195begin
186196 JSONTela := TJSONObject.Create;
187197 try
@@ -211,11 +221,17 @@ procedure TSQLiteConfig.SaveForm(aForm: TForm);
211221 JSONTela.AddPair(TLabeledEdit(aForm.Components[I]).Name ,
212222 TLabeledEdit(aForm.Components[I]).Text)
213223 else if aForm.Components[I] is TValueListEditor then
224+ begin
225+ JSONItem := TJSONObject.Create;
214226 for J := 1 to pred(TValueListEditor(aForm.Components[I]).RowCount) do
215- JSONTela .AddPair(TValueListEditor(aForm.Components[I]).Keys[J],
227+ JSONItem .AddPair(TValueListEditor(aForm.Components[I]).Keys[J],
216228 TValueListEditor(aForm.Components[I]).Cells[1 , J]);
217- { $ENDIF}
218- ;
229+ JSONTela.AddPair(TValueListEditor(aForm.Components[I]).Name ,
230+ TJSONObject.ParseJSONValue(JSONItem.ToJSON));
231+ JSONItem.Free;
232+ end
233+ { $ENDIF}
234+ ;
219235
220236 UpdateConfig(JSONTela);
221237 finally
@@ -229,8 +245,8 @@ procedure TSQLiteConfig.UpdateConfig(aJSON: TJSONObject);
229245begin
230246 // exemplo entrada
231247 // {"key1":"value1", "key2":"value2", "key3":"value3", "key4":"value4", "key5":"value5"}
232- // aJSON.Pairs[i].JSONString.tostring = "key1",
233- // aJSON.Pairs[i].JSONValue.tostring = "value1";
248+ // aJSON.Pairs[i].JSONString.Value = "key1",
249+ // aJSON.Pairs[i].JSONValue.Value = "value1";
234250 for I := 0 to aJSON.Count - 1 do
235251 with FDataSet do
236252 begin
@@ -239,14 +255,11 @@ procedure TSQLiteConfig.UpdateConfig(aJSON: TJSONObject);
239255 SQL.Add(' SELECT CFG_Key, CFG_Value' );
240256 SQL.Add(' FROM Config' );
241257 SQL.Add(' WHERE CFG_Key = :CFG_Key' );
242- ParamByName(' CFG_Key' ).AsString := aJSON.Pairs[I].JsonString.ToString.Replace
243- (' "' , ' ' , [rfReplaceAll]);
258+ ParamByName(' CFG_Key' ).AsString := aJSON.Pairs[I].JsonString.Value ;
244259 Open;
245260 Edit;
246- Fields.Fields[0 ].AsString := aJSON.Pairs[I].JsonString.ToString.Replace(' "' ,
247- ' ' , [rfReplaceAll]);
248- Fields.Fields[1 ].AsString := aJSON.Pairs[I].JsonValue.ToString.Replace(' "' ,
249- ' ' , [rfReplaceAll]);
261+ Fields.Fields[0 ].AsString := aJSON.Pairs[I].JsonString.Value ;
262+ Fields.Fields[1 ].AsString := aJSON.Pairs[I].JsonValue.ToString;
250263 Post;
251264 if FDataSet.CachedUpdates then
252265 ApplyUpdates;
0 commit comments