Files
lazarus-ccr/applications/lazstats/source/forms/analysis/measurement_programs/relchangeunit.pas

125 lines
2.6 KiB
ObjectPascal
Raw Normal View History

unit RelChangeUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, ExtCtrls,
ContextHelpUnit;
type
{ TRelChangeFrm }
TRelChangeFrm = class(TForm)
Bevel1: TBevel;
Bevel2: TBevel;
HelpBtn: TButton;
Panel1: TPanel;
ResetBtn: TButton;
ComputeBtn: TButton;
CloseBtn: TButton;
OldRelEdit: TEdit;
OldVarEdit: TEdit;
NewVarEdit: TEdit;
NewRelEdit: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
procedure ComputeBtnClick(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure HelpBtnClick(Sender: TObject);
procedure ResetBtnClick(Sender: TObject);
private
{ private declarations }
FAutoSized: Boolean;
public
{ public declarations }
end;
var
RelChangeFrm: TRelChangeFrm;
implementation
uses
Math, Utils;
{ TRelChangeFrm }
procedure TRelChangeFrm.ResetBtnClick(Sender: TObject);
begin
OldRelEdit.Text := '';
NewRelEdit.Text := '';
OldVarEdit.Text := '';
NewVarEdit.Text := '';
end;
procedure TRelChangeFrm.FormActivate(Sender: TObject);
var
w: Integer;
begin
if FAutoSized then
exit;
w := MaxValue([HelpBtn.Width, ResetBtn.Width, ComputeBtn.Width, CloseBtn.Width]);
HelpBtn.Constraints.MinWidth := w;
ResetBtn.Constraints.MinWidth := w;
ComputeBtn.Constraints.MinWidth := w;
CloseBtn.Constraints.MinWidth := w;
Constraints.MinHeight := Height;
Constraints.MaxHeight := Height;
FAutoSized := true;
end;
procedure TRelChangeFrm.FormShow(Sender: TObject);
begin
ResetBtnClick(self);
end;
procedure TRelChangeFrm.HelpBtnClick(Sender: TObject);
begin
if ContextHelpForm = nil then
Application.CreateForm(TContextHelpForm, ContextHelpForm);
ContextHelpForm.HelpMessage((Sender as TButton).Tag);
end;
procedure TRelChangeFrm.ComputeBtnClick(Sender: TObject);
var
oldRel, newRel, oldVar, newVar: double;
begin
if (OldRelEdit.Text = '') or not TryStrToFloat(OldRelEdit.Text, oldRel) then
begin
OldRelEdit.SetFocus;
ErrorMsg('Valid number required.');
exit;
end;
if (OldVarEdit.Text = '') or not TryStrToFloat(OldVarEdit.Text, oldVar) then
begin
OldVarEdit.SetFocus;
ErrorMsg('Valid number required.');
exit;
end;
if (NewVarEdit.Text = '') or not TryStrToFloat(NewVarEdit.Text, newVar) then
begin
NewVarEdit.SetFocus;
ErrorMsg('Valid number required.');
exit;
end;
newRel := 1.0 - (oldVar / newVar) * (1.0 - oldRel);
NewRelEdit.Text := FormatFloat('0.00000', newRel);
end;
initialization
{$I relchangeunit.lrs}
end.