LazStats: Finetuning of the SPC forms. Update their chm pages.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@8030 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2021-05-12 21:28:56 +00:00
parent d5d13bb856
commit d7d399bf5d
19 changed files with 109 additions and 78 deletions

Binary file not shown.

View File

@ -1150,7 +1150,7 @@
<Unit130>
<Filename Value="forms\analysis\descriptive\comparedistunit.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="CompareDistFrm"/>
<ComponentName Value="CompareDistForm"/>
<HasResources Value="True"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="CompareDistUnit"/>

View File

@ -1,4 +1,4 @@
inherited CompareDistFrm: TCompareDistFrm
inherited CompareDistForm: TCompareDistForm
Left = 459
Height = 535
Top = 178

View File

@ -16,9 +16,9 @@ type
TCompareTo = (ctTheoreticalDistrib, ctVariable);
TCompareDist = (cd_Normal, cd_t, cd_ChiSq, cd_F, cd_Poisson);
{ TCompareDistFrm }
{ TCompareDistForm }
TCompareDistFrm = class(TBasicStatsReportAndChartForm)
TCompareDistForm = class(TBasicStatsReportAndChartForm)
DF1Edit: TEdit;
DF2Edit: TEdit;
DistGroup: TGroupBox;
@ -103,7 +103,7 @@ type
var
CompareDistFrm: TCompareDistFrm;
CompareDistForm: TCompareDistForm;
implementation
@ -116,9 +116,9 @@ uses
Utils, GridProcs, MathUnit;
{ TCompareDistFrm }
{ TCompareDistForm }
constructor TCompareDistFrm.Create(AOwner: TComponent);
constructor TCompareDistForm.Create(AOwner: TComponent);
begin
inherited;
@ -136,7 +136,7 @@ begin
end;
procedure TCompareDistFrm.AdjustConstraints;
procedure TCompareDistForm.AdjustConstraints;
begin
Notebook.AutoSize := true;
ParamsPanel.Constraints.MinWidth := Max(
@ -152,7 +152,7 @@ end;
{ Get frequency and cumulative frequency of cases in each interval }
procedure TCompareDistFrm.CalcFreq(XValues, FreqValues, CumFreqValues: DblDyneVec;
procedure TCompareDistForm.CalcFreq(XValues, FreqValues, CumFreqValues: DblDyneVec;
AMin, AIncrement: Double; ANumIntervals, AColIndex: Integer);
var
j, k: Integer;
@ -181,7 +181,7 @@ begin
end;
{ Calculate frequencies and cumulative frequencies for a theoretical distribution }
procedure TCompareDistFrm.CalcFreq(XValues, FreqValues, CumFreqValues: DblDyneVec;
procedure TCompareDistForm.CalcFreq(XValues, FreqValues, CumFreqValues: DblDyneVec;
AMin, AMax: Double; ANumIntervals, ANumCases: Integer; ACompareDist: TCompareDist;
DF1: Integer = -1; DF2: Integer = -1);
var
@ -218,7 +218,7 @@ begin
end;
procedure TCompareDistFrm.CalcIntervals(var AMin, AMax, AIntervalSize: Double;
procedure TCompareDistForm.CalcIntervals(var AMin, AMax, AIntervalSize: Double;
out ANumIntervals: Integer);
var
intervalSize: Double;
@ -238,7 +238,7 @@ end;
{ Calculates minimum and maximum of the values in the given column.
Also, counts the valid numbers in this column and returns it as function result }
function TCompareDistFrm.CalcMinMax(out AMin, AMax: Double; AColIndex: Integer): Integer;
function TCompareDistForm.CalcMinMax(out AMin, AMax: Double; AColIndex: Integer): Integer;
var
j: Integer;
value: Double;
@ -259,7 +259,7 @@ begin
end;
procedure TCompareDistFrm.CalcTheoreticalDist(XValues, FreqValues, CumFreqValues: DblDyneVec;
procedure TCompareDistForm.CalcTheoreticalDist(XValues, FreqValues, CumFreqValues: DblDyneVec;
ANumIntervals, ANumCases: Integer; ACompareDist: TCompareDist; out AName: String);
var
min, max: Double;
@ -305,14 +305,14 @@ begin
end;
procedure TCompareDistFrm.CompareGroupClick(Sender: TObject);
procedure TCompareDistForm.CompareGroupClick(Sender: TObject);
begin
CompareTo := TCompareTo(CompareGroup.ItemIndex);
Notebook.PageIndex := CompareGroup.ItemIndex;
end;
procedure TCompareDistFrm.Compute;
procedure TCompareDistForm.Compute;
var
var1Freq: DblDyneVec = nil; // could be IntDyneVec, but simpler charting this way
var2Freq: DblDyneVec = nil;
@ -414,7 +414,7 @@ begin
end;
procedure TCompareDistFrm.DisplayReport(XValue1, XValue2, FreqValues1, FreqValues2,
procedure TCompareDistForm.DisplayReport(XValue1, XValue2, FreqValues1, FreqValues2,
CumFreqValues1, CumFreqValues2: DblDyneVec; AName1, AName2: String;
ANumIntervals: Integer);
var
@ -453,7 +453,7 @@ begin
end;
procedure TCompareDistFrm.DistChange(Sender: TObject);
procedure TCompareDistForm.DistChange(Sender: TObject);
begin
DF1Edit.Visible := CompareDist <> cd_Normal;
DF1Label.Visible := DF1Edit.Visible;
@ -486,7 +486,7 @@ begin
end;
procedure TCompareDistFrm.Plot(AChartFrame: TChartFrame; Y1Values, Y2Values: DblDyneVec;
procedure TCompareDistForm.Plot(AChartFrame: TChartFrame; Y1Values, Y2Values: DblDyneVec;
ASeriesTitle1, ASeriesTitle2, AYTitle, ATitle: String);
var
ser1, ser2: TChartSeries;
@ -522,7 +522,7 @@ begin
end;
procedure TCompareDistFrm.Reset;
procedure TCompareDistForm.Reset;
var
i: integer;
begin
@ -550,7 +550,7 @@ begin
end;
procedure TCompareDistFrm.UpdateBtnStates;
procedure TCompareDistForm.UpdateBtnStates;
begin
inherited;
@ -565,7 +565,7 @@ begin
end;
procedure TCompareDistFrm.UpdateDF1;
procedure TCompareDistForm.UpdateDF1;
procedure DFCandidates(AVarName: String; out AMean: Double; out ANumCases: Integer);
var
@ -611,7 +611,7 @@ begin
end;
function TCompareDistFrm.Validate(ANumCases: Integer;
function TCompareDistForm.Validate(ANumCases: Integer;
out AMsg: String; out AControl: TWinControl): Boolean;
var
n: Integer = 0;
@ -666,7 +666,7 @@ begin
end;
procedure TCompareDistFrm.Var1InBtnClick(Sender: TObject);
procedure TCompareDistForm.Var1InBtnClick(Sender: TObject);
var
i: integer;
begin
@ -686,7 +686,7 @@ begin
end;
procedure TCompareDistFrm.Var1OutBtnClick(Sender: TObject);
procedure TCompareDistForm.Var1OutBtnClick(Sender: TObject);
begin
if VarOneEdit.Text <> '' then
begin
@ -697,7 +697,7 @@ begin
end;
procedure TCompareDistFrm.Var2InBtnClick(Sender: TObject);
procedure TCompareDistForm.Var2InBtnClick(Sender: TObject);
var
i: integer;
begin
@ -716,7 +716,7 @@ begin
end;
procedure TCompareDistFrm.Var2OutBtnClick(Sender: TObject);
procedure TCompareDistForm.Var2OutBtnClick(Sender: TObject);
begin
if VarTwoEdit.Text <> '' then
begin
@ -727,7 +727,7 @@ begin
end;
procedure TCompareDistFrm.VarListDblClick(Sender: TObject);
procedure TCompareDistForm.VarListDblClick(Sender: TObject);
var
index: Integer;
begin
@ -749,7 +749,7 @@ begin
end;
procedure TCompareDistFrm.VarListSelectionChange(Sender: TObject; User: boolean);
procedure TCompareDistForm.VarListSelectionChange(Sender: TObject; User: boolean);
begin
UpdateBtnStates;
end;

View File

@ -252,18 +252,13 @@ end;
procedure TBasicSPCForm.Reset;
var
i : integer;
begin
inherited;
CollectVariablenames(OS3MainFrm.DataGrid, VarList.Items);
GroupEdit.Text := '';
MeasEdit.Text := '';
VarList.Clear;
for i := 1 to NoVariables do
VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]);
if Assigned(FChartFrame) and (FChartFrame.Chart.AxisList.Count > 2) then
(FChartFrame.Chart.AxisList[2].Marks.Source as TListChartSource).Clear;

View File

@ -27,6 +27,8 @@ inherited CChartForm: TCChartForm
inherited HelpBtn: TButton
Left = 191
Top = 379
HelpType = htKeyword
HelpKeyword = 'html/DefectnonconformitycChart.htm'
TabOrder = 4
end
inherited ButtonBevel: TBevel

View File

@ -21,7 +21,7 @@ type
function Validate(out AMsg: String; out AControl: TWinControl): Boolean; override;
public
procedure Reset; override;
end;
var
@ -133,13 +133,6 @@ begin
end;
procedure TCChartForm.Reset;
begin
inherited;
XSigmaEdit.Clear;
end;
function TCChartForm.Validate(out AMsg: String; out AControl: TWinControl): Boolean;
var
x: Double;

View File

@ -6,6 +6,7 @@ inherited CUSUMChartForm: TCUSUMChartForm
Caption = 'Cumulative Sum Control Chart'
ClientHeight = 503
ClientWidth = 1000
OnCreate = FormCreate
ShowHint = True
inherited ParamsPanel: TPanel
Height = 487
@ -28,6 +29,8 @@ inherited CUSUMChartForm: TCUSUMChartForm
inherited HelpBtn: TButton
Left = 181
Top = 462
HelpType = htKeyword
HelpKeyword = 'html/CUMSUMChart.htm'
TabOrder = 7
end
inherited ButtonBevel: TBevel
@ -204,7 +207,7 @@ inherited CUSUMChartForm: TCUSUMChartForm
Height = 153
Top = 293
Width = 234
PageIndex = 1
PageIndex = 0
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Bottom = 8
TabOrder = 4
@ -217,12 +220,12 @@ inherited CUSUMChartForm: TCUSUMChartForm
Left = 0
Height = 80
Top = 0
Width = 193
Width = 234
Anchors = [akTop, akLeft, akRight]
AutoSize = True
Caption = 'Tabulated CUSUM Parameters'
ClientHeight = 60
ClientWidth = 189
ClientWidth = 230
TabOrder = 0
object Label7: TLabel
AnchorSideTop.Control = kEdit
@ -244,7 +247,7 @@ inherited CUSUMChartForm: TCUSUMChartForm
Height = 23
Hint = 'Detection level for a shift in the process mean, '#13#10'expressed in data units (default), or'#13#10'as a multiple of the standard deviation of the '#13#10'data points (when "Normalized CUSUM" is checked).'
Top = 2
Width = 64
Width = 105
Alignment = taRightJustify
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Top = 2
@ -264,7 +267,7 @@ inherited CUSUMChartForm: TCUSUMChartForm
Height = 23
Hint = 'Probability of concluding that a shift in the process has occurred, when in fact it did not. '
Top = 29
Width = 64
Width = 105
Alignment = taRightJustify
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Left = 8

View File

@ -38,6 +38,7 @@ type
Label6: TLabel;
TargetChk: TCheckBox;
TargetEdit: TEdit;
procedure FormCreate(Sender: TObject);
procedure rbTabularChange(Sender: TObject);
procedure VMaskScrollbarChange(Sender: TObject);
@ -370,6 +371,19 @@ begin
end;
procedure TCUSUMChartForm.FormCreate(Sender: TObject);
begin
kEdit.Text := FormatFloat('0.0', 0.5);
hEdit.Text := '4';
AlphaEdit.Text := FormatFloat('0.00', DEFAULT_ALPHA_LEVEL);
BetaEdit.Text := FormatFloat('0.00', DEFAULT_BETA_LEVEL);
kEdit.Text := FormatFloat('0.0', 0.5);
hEdit.Text := '4';
AlphaEdit.Text := FormatFloat('0.00', DEFAULT_ALPHA_LEVEL);
BetaEdit.Text := FormatFloat('0.00', DEFAULT_BETA_LEVEL);
end;
procedure TCUSUMChartForm.rbTabularChange(Sender: TObject);
begin
if (Sender = rbTabular) and rbTabular.Checked then
@ -395,7 +409,6 @@ begin
Groups, CUSumsUpper, UCL, LCL, GrandMean, TargetSpec, LowerSpec, UpperSpec);
ser := TLineSeries(FChartFrame.PlotXY(ptLinesAndSymbols, nil, CUSUMsLower, Groups, nil, 'Lower CUSums', clBlack));
// ser.Pointer.Style := psDiamond;
ser.Pointer.Brush.Color := clWhite;
end;
@ -443,10 +456,6 @@ begin
TargetEdit.Clear;
StdDevEdit.Clear;
DeltaEdit.Clear;
kEdit.Text := FormatFloat('0.0', 0.5);
hEdit.Text := '4';
AlphaEdit.Text := FormatFloat('0.00', DEFAULT_ALPHA_LEVEL);
BetaEdit.Text := FormatFloat('0.00', DEFAULT_BETA_LEVEL);
VMaskScrollbar.Min := 2;
VMaskScrollbar.Max := DEFAULT_VMASK_SCROLLBAR_MAX;
VMaskScrollbar.Position := VMaskScrollbar.Max;

View File

@ -6,6 +6,7 @@ inherited PChartForm: TPChartForm
HelpKeyword = 'html/PControlChart.htm'
Caption = 'P Control Chart'
ClientHeight = 428
OnCreate = FormCreate
inherited ParamsPanel: TPanel
Height = 412
Width = 352
@ -29,6 +30,8 @@ inherited PChartForm: TPChartForm
inherited HelpBtn: TButton
Left = 92
Top = 387
HelpType = htKeyword
HelpKeyword = 'html/PControlChart.htm'
TabOrder = 6
end
inherited ButtonBevel: TBevel

View File

@ -19,6 +19,7 @@ type
PEdit: TEdit;
SigmaOptns: TRadioGroup;
XSigmaEdit: TEdit;
procedure FormCreate(Sender: TObject);
protected
procedure AdjustConstraints; override;
@ -148,10 +149,15 @@ begin
end;
procedure TPChartForm.FormCreate(Sender: TObject);
begin
XSigmaEdit.Text := '';
end;
procedure TPChartForm.Reset;
begin
inherited;
XSigmaEdit.Clear;
NEdit.Clear;
PEdit.Clear;
end;

View File

@ -11,5 +11,9 @@ inherited RChartForm: TRChartForm
inherited ResetBtn: TButton
TabOrder = 4
end
inherited HelpBtn: TButton
HelpType = htKeyword
HelpKeyword = 'html/RangeChart.htm'
end
end
end

View File

@ -9,5 +9,9 @@ inherited SChartForm: TSChartForm
inherited ResetBtn: TButton
TabOrder = 4
end
inherited HelpBtn: TButton
HelpType = htKeyword
HelpKeyword = 'html/SControlChart.htm'
end
end
end

View File

@ -2,6 +2,7 @@ inherited UChartForm: TUChartForm
HelpType = htKeyword
HelpKeyword = 'html/DefectsperUnituChart.htm'
Caption = 'Defects per unit U Control Chart'
OnCreate = FormCreate
inherited ParamsPanel: TPanel
Width = 320
ClientWidth = 320
@ -18,6 +19,8 @@ inherited UChartForm: TUChartForm
end
inherited HelpBtn: TButton
Left = 60
HelpType = htKeyword
HelpKeyword = 'html/DefectsperUnituChart.htm'
TabOrder = 5
end
inherited ButtonBevel: TBevel

View File

@ -17,6 +17,7 @@ type
NoInspEdit: TEdit;
SigmaOptns: TRadioGroup;
XSigmaEdit: TEdit;
procedure FormCreate(Sender: TObject);
protected
procedure AdjustConstraints; override;
procedure Compute; override;
@ -60,6 +61,7 @@ begin
SigmaOptns.AnchorSideRight.Control := ParamsPanel;
end;
procedure TUChartForm.Compute;
var
ColNoSelected: IntDyneVec = nil;
@ -135,11 +137,15 @@ begin
end;
procedure TUChartForm.FormCreate(Sender: TObject);
begin
XSigmaEdit.Clear;
end;
procedure TUChartForm.Reset;
begin
inherited;
NoInspEdit.Clear;
XSigmaEdit.Clear;
end;

View File

@ -6,6 +6,7 @@ inherited XBarChartForm: TXBarChartForm
HelpKeyword = 'html/XBarChart.htm'
Caption = 'X-Bar Control Chart'
ClientHeight = 476
OnCreate = FormCreate
inherited ParamsPanel: TPanel
Height = 460
Width = 424
@ -28,6 +29,8 @@ inherited XBarChartForm: TXBarChartForm
inherited HelpBtn: TButton
Left = 164
Top = 435
HelpType = htKeyword
HelpKeyword = 'html/XBarChart.htm'
TabOrder = 5
end
inherited ButtonBevel: TBevel

View File

@ -41,6 +41,7 @@ type
UpperSpecChk: TCheckBox;
UpperSpecEdit: TEdit;
XSigmaEdit: TEdit;
procedure FormCreate(Sender: TObject);
private
FAveStdDev: Double;
@ -54,7 +55,7 @@ type
function Validate(out AMsg: String; out AControl: TWinControl): Boolean; override;
public
procedure Reset; override;
end;
var
@ -326,6 +327,15 @@ begin
end;
procedure TXBarChartForm.FormCreate(Sender: TObject);
begin
XSigmaEdit.Text := '';
UpperSpecEdit.Text := '';
LowerSpecEdit.Text := '';
TargetSpecEdit.Text := '';
end;
procedure TXBarChartForm.PlotMeans(
ATitle, AXTitle, AYTitle, ADataTitle, AGrandMeanTitle: String;
const Groups: StrDyneVec; const Means: DblDyneVec;
@ -355,22 +365,6 @@ begin
end;
procedure TXBarChartForm.Reset;
begin
inherited;
UpperSpecEdit.Text := '';
LowerSpecEdit.Text := '';
TargetSpecEdit.Text := '';
XSigmaEdit.Text := '';
UpperSpecChk.Checked := false;
LowerSpecChk.Checked := false;
TargetChk.Checked := false;
ZonesChk.Checked := false;
end;
function TXBarChartForm.Validate(out AMsg: String; out AControl: TWinControl): Boolean;
var
x: Double;
@ -410,7 +404,13 @@ begin
end;
if not TryStrToFloat(XSigmaEdit.Text, x) then
begin
AMsg := 'No valid number given for sser-defined sigma units.';
AMsg := 'No valid number given for user-defined sigma units.';
AControl := XSigmaEdit;
exit;
end;
if (x <= 0) then
begin
AMsg := 'User-defined sigma must be a positive number.';
AControl := XSigmaEdit;
exit;
end;

View File

@ -1422,9 +1422,9 @@ end;
procedure TOS3MainFrm.mnuAnalysisNonPar_KSTestClick(Sender: TObject);
begin
if CompareDistFrm = nil then
Application.CreateForm(TCompareDistFrm, CompareDistFrm);
CompareDistFrm.ShowModal;
if CompareDistForm = nil then
Application.CreateForm(TCompareDistForm, CompareDistForm);
CompareDistForm.ShowModal;
end;
procedure TOS3MainFrm.MatManMnuClick(Sender: TObject);
@ -1920,9 +1920,9 @@ end;
// Menu "Analysis" > "Descriptive" > "Compare Distributions"
procedure TOS3MainFrm.mnuAnalysisDescr_CompareDistsClick(Sender: TObject);
begin
if CompareDistFrm = nil then
Application.CreateForm(TCompareDistFrm, CompareDistFrm);
CompareDistFrm.Show;
if CompareDistForm = nil then
Application.CreateForm(TCompareDistForm, CompareDistForm);
CompareDistForm.Show;
end;
// Menu "Analysis" > "Descriptive" > "Cross tabulation"