/components/plotfunction/demo/expression/frmmain.pp

http://github.com/graemeg/lazarus · Puppet · 78 lines · 62 code · 16 blank · 0 comment · 0 complexity · 48b1f0a5f63d5215cd312fee477653a7 MD5 · raw file

  1. unit frmmain;
  2. {$mode objfpc}{$H+}
  3. interface
  4. uses
  5. Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
  6. ExtCtrls, StdCtrls, fpexprpars,exprplotpanel;
  7. type
  8. { TMainForm }
  9. TMainForm = class(TForm)
  10. Button1: TButton;
  11. EA: TEdit;
  12. EB: TEdit;
  13. EC: TEdit;
  14. LEA: TLabel;
  15. LEC: TLabel;
  16. LEB: TLabel;
  17. Panel1: TPanel;
  18. PParams: TPanel;
  19. procedure Button1Click(Sender: TObject);
  20. procedure FormCreate(Sender: TObject);
  21. private
  22. { private declarations }
  23. FPanel : TPlotExpressionPanel;
  24. public
  25. { public declarations }
  26. end;
  27. var
  28. MainForm: TMainForm;
  29. implementation
  30. {$R *.lfm}
  31. { TMainForm }
  32. procedure TMainForm.FormCreate(Sender: TObject);
  33. begin
  34. FPanel:=TPlotExpressionPanel.Create(Self);
  35. FPanel.Parent:=Panel1;
  36. FPanel.Align:=alClient;
  37. FPanel.Identifiers.AddFloatVariable('a',1.0);
  38. FPanel.Identifiers.AddFloatVariable('b',0);
  39. FPanel.Identifiers.AddFloatVariable('c',0);
  40. FPanel.XAxis.Origin:=-30;
  41. FPanel.XAxis.DrawZero:=True;
  42. FPanel.YAxis.Caption.Alignment:=taCenter;
  43. FPanel.YAxis.Origin:=-10;
  44. FPanel.YAxis.DrawZero:=True;
  45. FPanel.Expression:='a * (x * x) + b * x + c';
  46. FPanel.Active:=True;
  47. FPanel.Caption.Title:='Square function demo';
  48. FPanel.Caption.Alignment:=taRightJustify;
  49. end;
  50. procedure TMainForm.Button1Click(Sender: TObject);
  51. Var
  52. A,b,c : TExprFloat;
  53. begin
  54. A:=StrToFLoat(EA.Text);
  55. b:=StrToFLoat(EB.Text);
  56. C:=StrToFLoat(EC.Text);
  57. FPanel.Identifiers.IdentifierByName('a').AsFloat:=A;
  58. FPanel.Identifiers.IdentifierByName('b').AsFloat:=B;
  59. FPanel.Identifiers.IdentifierByName('c').AsFloat:=C;
  60. FPanel.Invalidate;
  61. end;
  62. end.