74 lines
1.3 KiB
ObjectPascal
74 lines
1.3 KiB
ObjectPascal
unit fLevel;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
|
Dialogs, StdCtrls, Buttons, ExtCtrls, CheckLst,
|
|
SynCommons;
|
|
|
|
type
|
|
TfrmLevel = class(TForm)
|
|
chklstLevel: TCheckListBox;
|
|
pnlBottom: TPanel;
|
|
btnOK: TBitBtn;
|
|
btnCancel: TBitBtn;
|
|
private
|
|
{ Private declarations }
|
|
public
|
|
{ Public declarations }
|
|
procedure FillListBox(const aJSON: Variant);
|
|
function ToJSON: RawUTF8;
|
|
end;
|
|
|
|
var
|
|
frmLevel: TfrmLevel;
|
|
|
|
implementation
|
|
|
|
{$R *.dfm}
|
|
|
|
{ TfrmLevel }
|
|
|
|
procedure TfrmLevel.FillListBox(const aJSON: Variant);
|
|
var
|
|
I, J, lCount: Integer;
|
|
begin
|
|
lCount := TDocVariantData(aJSON).Count;
|
|
chklstLevel.Items.BeginUpdate;
|
|
try
|
|
for I := 0 to lCount-1 do
|
|
begin
|
|
J := chklstLevel.Items.Add(TDocVariantData(aJSON).Values[I]);
|
|
chklstLevel.Checked[J] := True;
|
|
end;
|
|
finally
|
|
chklstLevel.Items.EndUpdate;
|
|
end;
|
|
end;
|
|
|
|
function TfrmLevel.ToJSON: RawUTF8;
|
|
var
|
|
lW: TTextWriter;
|
|
I: Integer;
|
|
begin
|
|
lW := TTextWriter.CreateOwnedStream;
|
|
try
|
|
lW.Add('[');
|
|
for I := 0 to chklstLevel.Items.Count-1 do
|
|
if chklstLevel.Checked[I] then
|
|
begin
|
|
lW.Add('"');
|
|
lW.AddString(chklstLevel.Items[I]);
|
|
lW.Add('"', ',');
|
|
end;
|
|
lW.CancelLastComma;
|
|
lW.Add(']');
|
|
lW.SetText(Result);
|
|
finally
|
|
lW.Free;
|
|
end;
|
|
end;
|
|
|
|
end.
|