unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, TeEngine, Series, ExtCtrls, TeeProcs, Chart,
  DDSpinEdit, ComCtrls;

type
  TForm1 = class(TForm)
    Chart1: TChart;
    Series1: TLineSeries;
    Button1: TButton;
    DDSpinEdit1: TDDSpinEdit;
    Label1: TLabel;
    DDSpinEdit6: TDDSpinEdit;
    Label6: TLabel;
    Series2: TLineSeries;
    Chart2: TChart;
    LineSeries1: TLineSeries;
    LineSeries2: TLineSeries;
    Series3: TLineSeries;
    Button2: TButton;
    DDSpinEdit19: TDDSpinEdit;
    Label19: TLabel;
    Series4: TLineSeries;
    Button3: TButton;
    Series5: TLineSeries;
    Chart3: TChart;
    LineSeries3: TLineSeries;
    Series6: TLineSeries;
    Series7: TLineSeries;
    Chart4: TChart;
    LineSeries4: TLineSeries;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    DDSpinEdit4: TDDSpinEdit;
    Label4: TLabel;
    Button7: TButton;
    GroupBox1: TGroupBox;
    DDSpinEdit2: TDDSpinEdit;
    Label2: TLabel;
    DDSpinEdit11: TDDSpinEdit;
    Label11: TLabel;
    DDSpinEdit10: TDDSpinEdit;
    Label10: TLabel;
    Label3: TLabel;
    DDSpinEdit3: TDDSpinEdit;
    GroupBox2: TGroupBox;
    Label13: TLabel;
    Label14: TLabel;
    Label18: TLabel;
    Label29: TLabel;
    DDSpinEdit29: TDDSpinEdit;
    DDSpinEdit18: TDDSpinEdit;
    DDSpinEdit13: TDDSpinEdit;
    DDSpinEdit14: TDDSpinEdit;
    GroupBox4: TGroupBox;
    DDSpinEdit17: TDDSpinEdit;
    Label16: TLabel;
    DDSpinEdit28: TDDSpinEdit;
    Label28: TLabel;
    Label17: TLabel;
    Label27: TLabel;
    DDSpinEdit16: TDDSpinEdit;
    DDSpinEdit27: TDDSpinEdit;
    GroupBox5: TGroupBox;
    Label21: TLabel;
    Label22: TLabel;
    DDSpinEdit21: TDDSpinEdit;
    DDSpinEdit22: TDDSpinEdit;
    GroupBox6: TGroupBox;
    Label5: TLabel;
    Label12: TLabel;
    DDSpinEdit12: TDDSpinEdit;
    DDSpinEdit5: TDDSpinEdit;
    Label15: TLabel;
    DDSpinEdit15: TDDSpinEdit;
    Label20: TLabel;
    DDSpinEdit20: TDDSpinEdit;
    Label8: TLabel;
    Label9: TLabel;
    DDSpinEdit8: TDDSpinEdit;
    DDSpinEdit9: TDDSpinEdit;
    DDSpinEdit25: TDDSpinEdit;
    Label25: TLabel;
    Chart5: TChart;
    Button8: TButton;
    LineSeries5: TLineSeries;
    Button9: TButton;
    Button10: TButton;
    Button11: TButton;
    Button12: TButton;
    Button13: TButton;
    Button14: TButton;
    Button15: TButton;
    DDSpinEdit7: TDDSpinEdit;
    Label7: TLabel;
    GroupBox8: TGroupBox;
    DDSpinEdit30: TDDSpinEdit;
    Label30: TLabel;
    DDSpinEdit31: TDDSpinEdit;
    Label31: TLabel;
    GroupBox7: TGroupBox;
    Label26: TLabel;
    DDSpinEdit26: TDDSpinEdit;
    GroupBox3: TGroupBox;
    Label23: TLabel;
    Label24: TLabel;
    DDSpinEdit23: TDDSpinEdit;
    DDSpinEdit24: TDDSpinEdit;
    GroupBox9: TGroupBox;
    CheckBox1: TCheckBox;
    CheckBox2: TCheckBox;
    CheckBox3: TCheckBox;
    Button16: TButton;
    Button17: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure DDSpinEdit6DblClick(Sender: TObject);
    procedure DDSpinEdit15DblClick(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure DDSpinEdit25DblClick(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure DDSpinEdit26DblClick(Sender: TObject);
    procedure DDSpinEdit14DblClick(Sender: TObject);
    procedure DDSpinEdit16DblClick(Sender: TObject);
    procedure DDSpinEdit17DblClick(Sender: TObject);
    procedure Button9Click(Sender: TObject);
    procedure Button10Click(Sender: TObject);
    procedure Button11Click(Sender: TObject);
    procedure Button12Click(Sender: TObject);
    procedure Button13Click(Sender: TObject);
    procedure Button14Click(Sender: TObject);
    procedure Button15Click(Sender: TObject);
    procedure DDSpinEdit22DblClick(Sender: TObject);
    procedure CheckBox2Click(Sender: TObject);
    procedure CheckBox3Click(Sender: TObject);
    procedure Button16Click(Sender: TObject);
    procedure Button17Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
uses Equations2,Stimulation, Unit2;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  Form1.Button1.Enabled:=false;
  Integrate;
  Form1.Button1.Enabled:=true;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Form1.DDSpinEdit6.Value:=nt*dt;
end;

procedure TForm1.DDSpinEdit6DblClick(Sender: TObject);
begin
  Form1.DDSpinEdit6.Value:=100000; { t_end in ms }
end;

procedure TForm1.DDSpinEdit15DblClick(Sender: TObject);
begin
  Form1.DDSpinEdit15.Value:=0;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  Cleaning;
end;

procedure TForm1.DDSpinEdit25DblClick(Sender: TObject);
begin
  Form1.DDSpinEdit25.Value:=0;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
  Form1.Chart2.BottomAxis.Automatic:=Form1.Chart1.BottomAxis.Automatic;
  Form1.Chart3.BottomAxis.Automatic:=Form1.Chart1.BottomAxis.Automatic;
  Form1.Chart2.BottomAxis.Minimum:=Form1.Chart1.BottomAxis.Minimum;
  Form1.Chart2.BottomAxis.Maximum:=Form1.Chart1.BottomAxis.Maximum;
  Form1.Chart3.BottomAxis.Minimum:=Form1.Chart1.BottomAxis.Minimum;
  Form1.Chart3.BottomAxis.Maximum:=Form1.Chart1.BottomAxis.Maximum;
  Form1.Chart5.BottomAxis.Automatic:=Form1.Chart1.BottomAxis.Automatic;
  Form1.Chart5.BottomAxis.Minimum:=Form1.Chart1.BottomAxis.Minimum;
  Form1.Chart5.BottomAxis.Maximum:=Form1.Chart1.BottomAxis.Maximum;
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
  Form1.Chart1.BottomAxis.Automatic:=Form1.Chart2.BottomAxis.Automatic;
  Form1.Chart3.BottomAxis.Automatic:=Form1.Chart2.BottomAxis.Automatic;
  Form1.Chart1.BottomAxis.Minimum:=Form1.Chart2.BottomAxis.Minimum;
  Form1.Chart1.BottomAxis.Maximum:=Form1.Chart2.BottomAxis.Maximum;
  Form1.Chart3.BottomAxis.Minimum:=Form1.Chart2.BottomAxis.Minimum;
  Form1.Chart3.BottomAxis.Maximum:=Form1.Chart2.BottomAxis.Maximum;
  Form1.Chart5.BottomAxis.Automatic:=Form1.Chart2.BottomAxis.Automatic;
  Form1.Chart5.BottomAxis.Minimum:=Form1.Chart2.BottomAxis.Minimum;
  Form1.Chart5.BottomAxis.Maximum:=Form1.Chart2.BottomAxis.Maximum;
end;

procedure TForm1.Button6Click(Sender: TObject);
begin
  Form1.Chart1.BottomAxis.Automatic:=Form1.Chart3.BottomAxis.Automatic;
  Form1.Chart2.BottomAxis.Automatic:=Form1.Chart3.BottomAxis.Automatic;
  Form1.Chart2.BottomAxis.Minimum:=Form1.Chart3.BottomAxis.Minimum;
  Form1.Chart2.BottomAxis.Maximum:=Form1.Chart3.BottomAxis.Maximum;
  Form1.Chart1.BottomAxis.Minimum:=Form1.Chart3.BottomAxis.Minimum;
  Form1.Chart1.BottomAxis.Maximum:=Form1.Chart3.BottomAxis.Maximum;
  Form1.Chart5.BottomAxis.Automatic:=Form1.Chart3.BottomAxis.Automatic;
  Form1.Chart5.BottomAxis.Minimum:=Form1.Chart3.BottomAxis.Minimum;
  Form1.Chart5.BottomAxis.Maximum:=Form1.Chart3.BottomAxis.Maximum;
  Form2.Chart6.BottomAxis.Automatic:=Form1.Chart3.BottomAxis.Automatic;
  Form2.Chart6.BottomAxis.Minimum:=Form1.Chart3.BottomAxis.Minimum;
  Form2.Chart6.BottomAxis.Maximum:=Form1.Chart3.BottomAxis.Maximum;
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
  Form1.Chart1.BottomAxis.Automatic:=true;
  Form1.Chart2.BottomAxis.Automatic:=true;
  Form1.Chart3.BottomAxis.Automatic:=true;
  Form1.Chart5.BottomAxis.Automatic:=true;
  Form2.Chart6.BottomAxis.Automatic:=true;
end;

procedure TForm1.DDSpinEdit26DblClick(Sender: TObject);
begin
  Form1.DDSpinEdit26.Value:=0;
end;

procedure TForm1.DDSpinEdit14DblClick(Sender: TObject);
begin
  Form1.DDSpinEdit14.Value:=0;
end;

procedure TForm1.DDSpinEdit16DblClick(Sender: TObject);
begin
  Form1.DDSpinEdit16.Value:=0;
end;

procedure TForm1.DDSpinEdit17DblClick(Sender: TObject);
begin
  Form1.DDSpinEdit17.Value:=0;
end;

procedure TForm1.Button9Click(Sender: TObject);
begin
  if Stim<>nil then Stim.StartStimulation(t+dt);
end;

procedure TForm1.Button10Click(Sender: TObject);
begin
  PlotSigmoid;
end;

procedure TForm1.Button11Click(Sender: TObject);
begin
 Form1.Chart2.CopyToClipboardBitmap;
end;

procedure TForm1.Button12Click(Sender: TObject);
begin
 Form1.Chart1.CopyToClipboardBitmap;
end;

procedure TForm1.Button13Click(Sender: TObject);
begin
 Form1.Chart3.CopyToClipboardBitmap;
end;

procedure TForm1.Button14Click(Sender: TObject);
begin
 if Form1.Chart5.Visible then
 Form1.Chart5.CopyToClipboardBitmap;
 if Form2.Chart6.Visible then
 Form2.Chart6.CopyToClipboardBitmap;
end;

procedure TForm1.Button15Click(Sender: TObject);
begin
 Form1.Chart4.CopyToClipboardBitmap;
end;

procedure TForm1.DDSpinEdit22DblClick(Sender: TObject);
begin
  Form1.DDSpinEdit22.Value:=0;
end;

procedure TForm1.CheckBox2Click(Sender: TObject);
begin
  if Form1.CheckBox2.Checked then begin
     Form1.DDSpinEdit26.Value:=0;
     Form1.DDSpinEdit14.Value:=0;
     Form1.DDSpinEdit17.Value:=0;
     Form1.DDSpinEdit24.Value:=24;
     Form1.DDSpinEdit25.Value:=5;
     Form1.DDSpinEdit18.Value:=3;
  end;
end;

procedure TForm1.CheckBox3Click(Sender: TObject);
begin
  if Form1.CheckBox3.Checked then begin
     Form1.DDSpinEdit24.Value:=24;
     Form1.DDSpinEdit25.Value:=35;
  end;
end;

procedure TForm1.Button16Click(Sender: TObject);
begin
  Form1.DDSpinEdit2.Value:=200; //Cm
  Form1.DDSpinEdit3.Value:=0.4; //g_U
  Form1.DDSpinEdit7.Value:=0;   //I_a
  Form1.DDSpinEdit8.Value:=25;  //UT
  Form1.DDSpinEdit9.Value:=-50; //U_reset
  Form1.DDSpinEdit10.Value:=0;  //dw_reset
end;

procedure TForm1.Button17Click(Sender: TObject);
begin
  Form1.DDSpinEdit2.Value:=1000; //Cm
  Form1.DDSpinEdit3.Value:=1.5; //g_U
  Form1.DDSpinEdit7.Value:=116;   //I_a
  Form1.DDSpinEdit8.Value:=25;  //UT
  Form1.DDSpinEdit9.Value:=-40; //U_reset
  Form1.DDSpinEdit10.Value:=100;  //dw_reset
end;

end.