ec_inputnumber.pas 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. unit ec_inputnumber;
  2. {$mode objfpc}{$H+}
  3. interface
  4. uses
  5. Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ButtonPanel, StdCtrls,
  6. EditBtn, Spin, ec_base;
  7. type
  8. { TECInputNumberFrame }
  9. TECInputNumberFrame = class(TECBaseFrame)
  10. NumDigitsLabel: TLabel;
  11. NumDigitsSpinEdit: TSpinEdit;
  12. VariableEditButton: TEditButton;
  13. VariableLabel: TLabel;
  14. procedure VariableEditButtonButtonClick(Sender: TObject);
  15. procedure VariableEditButtonKeyPress(Sender: TObject; var Key: char);
  16. private
  17. VariableId: Integer;
  18. procedure UpdateVariableName;
  19. public
  20. procedure InitNew; override;
  21. procedure InitExisting; override;
  22. procedure MakeResultingCommand; override;
  23. end;
  24. var
  25. ECInputNumberFrame: TECInputNumberFrame;
  26. implementation
  27. uses
  28. namedindexselection, fpjson, constants;
  29. {$R *.lfm}
  30. { TECInputNumberFrame }
  31. procedure TECInputNumberFrame.VariableEditButtonButtonClick(Sender: TObject);
  32. begin
  33. VariableId := NamedIndexSelectionForm.SelectVariable(VariableId, Db);
  34. UpdateVariableName
  35. end;
  36. procedure TECInputNumberFrame.VariableEditButtonKeyPress(Sender: TObject;
  37. var Key: char);
  38. begin
  39. Key := #0;
  40. VariableEditButtonButtonClick(Sender);
  41. end;
  42. procedure TECInputNumberFrame.UpdateVariableName;
  43. begin
  44. VariableEditButton.Text := Db.GetVariableName(VariableId);
  45. end;
  46. procedure TECInputNumberFrame.InitNew;
  47. begin
  48. VariableId := 1;
  49. UpdateVariableName
  50. end;
  51. procedure TECInputNumberFrame.InitExisting;
  52. var
  53. Params: TJSONArray = nil;
  54. NumDigits: Integer;
  55. begin
  56. Params := GetFirstParams;
  57. VariableId := 1;
  58. if (Params <> nil) and (Params.Count >= 1) and (Params[0].JSONType = jtNumber) then
  59. VariableId := Params.Integers[0];
  60. UpdateVariableName;
  61. NumDigits := 1;
  62. if (Params <> nil) and (Params.Count >= 2) and (Params[1].JSONType = jtNumber) then
  63. NumDigits := Params.Integers[1];
  64. NumDigitsSpinEdit.Value := NumDigits;
  65. end;
  66. procedure TECInputNumberFrame.MakeResultingCommand;
  67. begin
  68. ResultingCommand := TJSONArray.Create([
  69. TJSONObject.Create([
  70. 'code', INPUT_NUMBER_EC_CODE,
  71. 'indent', Indent,
  72. 'parameters', TJSONArray.Create([VariableId, NumDigitsSpinEdit.Value])
  73. ])
  74. ]);
  75. end;
  76. end.