You've already forked lazarus-ccr
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@7885 8e941d3f-bd1b-0410-a28a-d453659cc2b4
130 lines
2.8 KiB
ObjectPascal
130 lines
2.8 KiB
ObjectPascal
unit MoveAvgUnit;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
|
|
StdCtrls, contexthelpunit;
|
|
|
|
type
|
|
|
|
{ TMoveAvgFrm }
|
|
|
|
TMoveAvgFrm = class(TForm)
|
|
HelpBtn: TButton;
|
|
ResetBtn: TButton;
|
|
CancelBtn: TButton;
|
|
ApplyBtn: TButton;
|
|
OKBtn: TButton;
|
|
ThetaList: TListBox;
|
|
ThetaEdit: TEdit;
|
|
Label2: TLabel;
|
|
OrderEdit: TEdit;
|
|
Label1: TLabel;
|
|
procedure ApplyBtnClick(Sender: TObject);
|
|
procedure FormShow(Sender: TObject);
|
|
procedure HelpBtnClick(Sender: TObject);
|
|
procedure OrderEditKeyPress(Sender: TObject; var Key: char);
|
|
procedure ResetBtnClick(Sender: TObject);
|
|
procedure ThetaEditKeyPress(Sender: TObject; var Key: char);
|
|
procedure ThetaListClick(Sender: TObject);
|
|
private
|
|
{ private declarations }
|
|
public
|
|
{ public declarations }
|
|
W : array[0..20] of double;
|
|
order : integer;
|
|
currentindex : integer;
|
|
|
|
end;
|
|
|
|
var
|
|
MoveAvgFrm: TMoveAvgFrm;
|
|
|
|
implementation
|
|
|
|
{ TMoveAvgFrm }
|
|
|
|
procedure TMoveAvgFrm.ResetBtnClick(Sender: TObject);
|
|
VAR i : integer;
|
|
begin
|
|
OrderEdit.Text := '';
|
|
ThetaEdit.Text := '';
|
|
ThetaList.Clear;
|
|
currentindex := 0;
|
|
for i := 0 to 20 do W[i] := 1.0;
|
|
end;
|
|
|
|
procedure TMoveAvgFrm.ThetaEditKeyPress(Sender: TObject; var Key: char);
|
|
var cellstring : string;
|
|
|
|
begin
|
|
if currentindex < 1 then exit;
|
|
if ord(Key) <> 13 then exit;
|
|
cellstring := 'Theta(' + IntToStr(currentindex + 1) + ') = ';
|
|
cellstring := cellstring + ThetaEdit.Text;
|
|
W[currentindex + 1] := StrToFloat(ThetaEdit.Text);
|
|
end;
|
|
|
|
procedure TMoveAvgFrm.ThetaListClick(Sender: TObject);
|
|
VAR index : integer;
|
|
begin
|
|
index := ThetaList.ItemIndex;
|
|
if index < 0 then exit;
|
|
currentindex := index;
|
|
ThetaEdit.Text := '1.0';
|
|
ThetaEdit.SetFocus;
|
|
end;
|
|
|
|
procedure TMoveAvgFrm.FormShow(Sender: TObject);
|
|
begin
|
|
ResetBtnClick(self);
|
|
end;
|
|
|
|
procedure TMoveAvgFrm.HelpBtnClick(Sender: TObject);
|
|
begin
|
|
ContextHelpForm.HelpMessage((Sender as TButton).tag);
|
|
end;
|
|
|
|
procedure TMoveAvgFrm.ApplyBtnClick(Sender: TObject);
|
|
var
|
|
sum : double;
|
|
i : integer;
|
|
cellstring : string;
|
|
|
|
begin
|
|
ThetaList.Clear;
|
|
sum := W[0];
|
|
for i := 1 to order do sum := sum + (2.0 * W[i]);
|
|
for i := 0 to order do
|
|
begin
|
|
W[i] := W[i] / sum;
|
|
cellstring := 'Theta(' + IntToStr(i+1) + ') = ';
|
|
cellstring := cellstring + FloatToStr(W[i]);
|
|
ThetaList.Items.Add(cellstring);
|
|
end;
|
|
end;
|
|
|
|
procedure TMoveAvgFrm.OrderEditKeyPress(Sender: TObject; var Key: char);
|
|
VAR cellstring : string;
|
|
i : integer;
|
|
|
|
begin
|
|
if ord(Key) <> 13 then exit;
|
|
ThetaList.Clear;
|
|
order := StrToInt(OrderEdit.Text);
|
|
for i := 1 to order do
|
|
begin
|
|
cellstring := 'Theta(' + IntToStr(i) + ')';
|
|
ThetaList.Items.Add(cellstring);
|
|
end;
|
|
end;
|
|
|
|
initialization
|
|
{$I moveavgunit.lrs}
|
|
|
|
end.
|
|
|