📄 unitlinearregress.pas
字号:
unit UnitLinearRegress;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, ValEdit, ExtCtrls, StdCtrls, Menus, math, Clipbrd, jpeg,
Animate, GIFCtrl;
type
TfrmLR = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
X1: TMenuItem;
caozuo1: TMenuItem;
N5: TMenuItem;
MuStart: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
S1: TMenuItem;
N9: TMenuItem;
Panel4: TPanel;
Panel2: TPanel;
Label3: TLabel;
VLE_Data: TValueListEditor;
Panel5: TPanel;
N10: TMenuItem;
N11: TMenuItem;
Label5: TLabel;
Panel7: TPanel;
Panel8: TPanel;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
Label7: TLabel;
Label8: TLabel;
Edit1: TEdit;
Button1: TButton;
Label9: TLabel;
Edit2: TEdit;
Button2: TButton;
Label10: TLabel;
Button3: TButton;
Label11: TLabel;
Button4: TButton;
Button5: TButton;
Label12: TLabel;
Label13: TLabel;
Button6: TButton;
Label14: TLabel;
Button7: TButton;
Label15: TLabel;
Button8: TButton;
Label16: TLabel;
Button9: TButton;
Label17: TLabel;
Button10: TButton;
xy1: TMenuItem;
N12: TMenuItem;
PopupMenu1: TPopupMenu;
PopupMenu2: TPopupMenu;
PopupMenu3: TPopupMenu;
E1: TMenuItem;
Edit3: TComboBox;
Edit4: TComboBox;
Label18: TLabel;
Edit5: TComboBox;
Button12: TButton;
I1: TMenuItem;
N13: TMenuItem;
S2: TMenuItem;
N14: TMenuItem;
xy2: TMenuItem;
E2: TMenuItem;
P1: TMenuItem;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
SaveDialog2: TSaveDialog;
N15: TMenuItem;
N16: TMenuItem;
N17: TMenuItem;
N18: TMenuItem;
C1: TMenuItem;
V1: TMenuItem;
D1: TMenuItem;
D2: TMenuItem;
Panel6: TPanel;
Panel1: TPanel;
ImgLine: TImage;
Label2: TLabel;
Image2: TImage;
Image3: TImage;
Label6: TLabel;
Panel3: TPanel;
Label4: TLabel;
VLE_Value: TValueListEditor;
Panel9: TPanel;
Button11: TButton;
E3: TMenuItem;
E4: TMenuItem;
C2: TMenuItem;
C3: TMenuItem;
SavePictureDialog: TSaveDialog;
Rx_To_GIF: TRxGIFAnimator;
N20: TMenuItem;
Splitter2: TSplitter;
Label1: TLabel;
procedure VLE_DataKeyPress(Sender: TObject; var Key: Char);
procedure N11Click(Sender: TObject);
procedure VLE_DataStringsChange(Sender: TObject);
procedure VLE_ValueKeyPress(Sender: TObject; var Key: Char);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button10Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure MuStartClick(Sender: TObject);
procedure xy1Click(Sender: TObject);
procedure X1Click(Sender: TObject);
procedure Button12Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure S1Click(Sender: TObject);
procedure E1Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure C1Click(Sender: TObject);
procedure V1Click(Sender: TObject);
procedure D1Click(Sender: TObject);
procedure N7Click(Sender: TObject);
procedure E3Click(Sender: TObject);
procedure C3Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmLR: TfrmLR;
implementation
uses UnitLinearRegressFunction, UnitfrmAboutM, UnitHelp;//, UnitAuto;
{$R *.dfm}
procedure TfrmLR.VLE_DataKeyPress(Sender: TObject; var Key: Char);
begin
Key:=upcase(Key);
//showmessage(inttostr(byte(key)));
case Key of
'0','1','2','3','4','5','6','7','8','9': Key:=Key;
'E','.','-','+': Key:=Key;
#8,#9,#13: Key:=Key;
else Key:=#0;
end;
end;
procedure TfrmLR.N11Click(Sender: TObject);
begin
if N11.Checked then
self.FormStyle:=fsNormal
else
self.FormStyle:=fsStayOnTop;
self.N11.Checked:= not(self.N11.Checked);
end;
procedure TfrmLR.VLE_DataStringsChange(Sender: TObject);
begin
self.RadioButton1.Checked :=false;
self.RadioButton2.Checked :=false;
//SetVLEData(VLE_Value);
VLE_Value.Strings.Text:='';
self.ImgLine.Visible:=false;
end;
procedure TfrmLR.VLE_ValueKeyPress(Sender: TObject;
var Key: Char);
begin
Key:=#0;
end;
procedure TfrmLR.Button1Click(Sender: TObject);
var x,y :double;
i :integer;
n :integer;
DataOld :string;
begin
n:=1;
DataOld:=VLE_Data.Strings.Text;
try
if self.RadioButton1.Checked then
begin
for i:=1 to self.VLE_Data.RowCount-1 do
begin
n:=i;
x:=strtofloat(self.VLE_Data.Cells[0,i]);
y:= strtofloat(self.Edit1.Text);
x:=x+y;
self.VLE_Data.Cells[0,i]:=floattostr(x);
end;
end
else if self.RadioButton2.Checked then
begin
for i:=1 to self.VLE_Data.RowCount-1 do
begin
x:=strtofloat(self.VLE_Data.Cells[1,i]);
y:= strtofloat(self.Edit1.Text);
x:=x+y;
self.VLE_Data.Cells[1,i]:=floattostr(x);
end;
end
else
begin
application.MessageBox('请先选定是针对x轴还是y轴进行计算。','提醒:',MB_ICONINFORMATION);
end;
except
application.MessageBox(Pchar('加法计算在计算第'+inttostr(n)+'行数据时出现错误。'),'出错:',MB_ICONERROR);
VLE_Data.Strings.Text:=DataOld;
end;
end;
procedure TfrmLR.Button2Click(Sender: TObject);
var x,y :double;
i :integer;
n :integer;
DataOld :string;
begin
n:=1;
DataOld:=VLE_Data.Strings.Text;
try
if self.RadioButton1.Checked then
begin
for i:=1 to self.VLE_Data.RowCount-1 do
begin
n:=i;
x:=strtofloat(self.VLE_Data.Cells[0,i]);
y:=strtofloat(self.Edit2.Text);
x:=x*y;
self.VLE_Data.Cells[0,i]:=floattostr(x);
end;
end
else if self.RadioButton2.Checked then
begin
for i:=1 to self.VLE_Data.RowCount-1 do
begin
x:=strtofloat(self.VLE_Data.Cells[1,i]);
y:=strtofloat(self.Edit2.Text);
x:=x*y;
self.VLE_Data.Cells[1,i]:=floattostr(x);
end;
end
else
begin
application.MessageBox('请先选定是针对x轴还是y轴进行计算。','提醒:',MB_ICONINFORMATION);
end;
except
application.MessageBox(Pchar('乘法计算在计算第'+inttostr(n)+'行数据时出现错误。'),'出错:',MB_ICONERROR);
VLE_Data.Strings.Text:=DataOld;
end;
end;
procedure TfrmLR.Button3Click(Sender: TObject);
var x,y :double;
i :integer;
n :integer;
DataOld :string;
begin
n:=1;
DataOld:=VLE_Data.Strings.Text;
try
if self.RadioButton1.Checked then
begin
for i:=1 to self.VLE_Data.RowCount-1 do
begin
n:=i;
x:=strtofloat(self.VLE_Data.Cells[0,i]);
y:=strtofloat(self.Edit3.Text);
if y-trunc(y)=0 then
begin
x:=IntPower(x,trunc(y));
end
else
x:=exp(ln(x)*y);
self.VLE_Data.Cells[0,i]:=floattostr(x);
end;
end
else if self.RadioButton2.Checked then
begin
for i:=1 to self.VLE_Data.RowCount-1 do
begin
n:=i;
x:=strtofloat(self.VLE_Data.Cells[1,i]);
y:=strtofloat(self.Edit3.Text);
if y-trunc(y)=0 then
begin
x:=IntPower(x,trunc(y));
end
else
x:=exp(ln(x)*y);
self.VLE_Data.Cells[1,i]:=floattostr(x);
end;
end
else
begin
application.MessageBox('请先选定是针对x轴还是y轴进行计算。','提醒:',MB_ICONINFORMATION);
end;
except
application.MessageBox(Pchar('次方计算在计算第'+inttostr(n)+'行数据时出现错误。'),'出错:',MB_ICONERROR);
VLE_Data.Strings.Text:=DataOld;
end;
end;
procedure TfrmLR.Button10Click(Sender: TObject);
var x,y :double;
i :integer;
n :integer;
DataOld :string;
begin
n:=1;
DataOld:=VLE_Data.Strings.Text;
try
if self.RadioButton1.Checked then
begin
for i:=1 to self.VLE_Data.RowCount-1 do
begin
n:=i;
x:=strtofloat(self.VLE_Data.Cells[0,i]);
y:=strtofloat(self.Edit4.Text);
x:=ln(x)/ln(y);
self.VLE_Data.Cells[0,i]:=floattostr(x);
end;
end
else if self.RadioButton2.Checked then
begin
for i:=1 to self.VLE_Data.RowCount-1 do
begin
n:=i;
x:=strtofloat(self.VLE_Data.Cells[1,i]);
y:=strtofloat(self.Edit4.Text);
x:=ln(x)/ln(y);
self.VLE_Data.Cells[1,i]:=floattostr(x);
end;
end
else
begin
application.MessageBox('请先选定是针对x轴还是y轴进行计算。','提醒:',MB_ICONINFORMATION);
end;
except
application.MessageBox(Pchar('求对数计算在计算第'+inttostr(n)+'行数据时出现错误。'),'出错:',MB_ICONERROR);
VLE_Data.Strings.Text:=DataOld;
end;
end;
procedure TfrmLR.Button4Click(Sender: TObject);
var x :double;
i :integer;
n :integer;
DataOld :string;
begin
n:=1;
DataOld:=VLE_Data.Strings.Text;
try
if self.RadioButton1.Checked then
begin
for i:=1 to self.VLE_Data.RowCount-1 do
begin
n:=i;
x:=strtofloat(self.VLE_Data.Cells[0,i]);
x:=sin(x);
self.VLE_Data.Cells[0,i]:=floattostr(x);
end;
end
else if self.RadioButton2.Checked then
begin
for i:=1 to self.VLE_Data.RowCount-1 do
begin
x:=strtofloat(self.VLE_Data.Cells[1,i]);
x:=sin(x);
self.VLE_Data.Cells[1,i]:=floattostr(x);
end;
end
else
begin
application.MessageBox('请先选定是针对x轴还是y轴进行计算。','提醒:',MB_ICONINFORMATION);
end;
except
application.MessageBox(Pchar('Sin计算在计算第'+inttostr(n)+'行数据时出现错误。'),'出错:',MB_ICONERROR);
VLE_Data.Strings.Text:=DataOld;
end;
end;
procedure TfrmLR.Button6Click(Sender: TObject);
var x :double;
i :integer;
n :integer;
DataOld :string;
begin
n:=1;
DataOld:=VLE_Data.Strings.Text;
try
if self.RadioButton1.Checked then
begin
for i:=1 to self.VLE_Data.RowCount-1 do
begin
n:=i;
x:=strtofloat(self.VLE_Data.Cells[0,i]);
x:=cos(x);
self.VLE_Data.Cells[0,i]:=floattostr(x);
end;
end
else if self.RadioButton2.Checked then
begin
for i:=1 to self.VLE_Data.RowCount-1 do
begin
x:=strtofloat(self.VLE_Data.Cells[1,i]);
x:=cos(x);
self.VLE_Data.Cells[1,i]:=floattostr(x);
end;
end
else
begin
application.MessageBox('请先选定是针对x轴还是y轴进行计算。','提醒:',MB_ICONINFORMATION);
end;
except
application.MessageBox(Pchar('Cos计算在计算第'+inttostr(n)+'行数据时出现错误。'),'出错:',MB_ICONERROR);
VLE_Data.Strings.Text:=DataOld;
end;
end;
procedure TfrmLR.Button8Click(Sender: TObject);
var x :double;
i :integer;
n :integer;
DataOld :string;
begin
n:=1;
DataOld:=VLE_Data.Strings.Text;
try
if self.RadioButton1.Checked then
begin
for i:=1 to self.VLE_Data.RowCount-1 do
begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -