From 2263b9ccd0e85ea91f5027822d6fee6ac6fa7cc1 Mon Sep 17 00:00:00 2001 From: wp_xxyyzz Date: Sun, 20 Sep 2020 14:15:41 +0000 Subject: [PATCH] LazStats: Avoid non-modal forms being reset with every menu click. git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@7673 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- .../analysis/descriptive/boxplotunit.lfm | 1 - .../analysis/descriptive/boxplotunit.pas | 16 +- .../analysis/descriptive/bubbleplotunit.pas | 17 +- .../analysis/descriptive/descriptiveunit.lfm | 1 - .../analysis/descriptive/descriptiveunit.pas | 15 +- .../analysis/descriptive/multxvsyunit.pas | 17 +- .../forms/analysis/descriptive/plotxyunit.lfm | 1 - .../forms/analysis/descriptive/plotxyunit.pas | 17 +- .../analysis/descriptive/xvsmultyunit.pas | 9 +- .../basicspcunit.lfm | 2 +- .../basicspcunit.pas | 5 - .../lazstats/source/forms/mainunit.lfm | 72 +-- .../lazstats/source/forms/mainunit.pas | 411 +++++++++--------- .../source/forms/simulations/distribunit.lfm | 1 - .../source/forms/simulations/distribunit.pas | 20 +- 15 files changed, 315 insertions(+), 290 deletions(-) diff --git a/applications/lazstats/source/forms/analysis/descriptive/boxplotunit.lfm b/applications/lazstats/source/forms/analysis/descriptive/boxplotunit.lfm index 66f85896c..acceed2fa 100644 --- a/applications/lazstats/source/forms/analysis/descriptive/boxplotunit.lfm +++ b/applications/lazstats/source/forms/analysis/descriptive/boxplotunit.lfm @@ -11,7 +11,6 @@ object BoxPlotFrm: TBoxPlotFrm ClientWidth = 361 OnActivate = FormActivate OnCreate = FormCreate - OnShow = FormShow Position = poMainFormCenter LCLVersion = '2.1.0.0' object CloseBtn: TButton diff --git a/applications/lazstats/source/forms/analysis/descriptive/boxplotunit.pas b/applications/lazstats/source/forms/analysis/descriptive/boxplotunit.pas index b29cc378e..075dd0a1f 100644 --- a/applications/lazstats/source/forms/analysis/descriptive/boxplotunit.pas +++ b/applications/lazstats/source/forms/analysis/descriptive/boxplotunit.pas @@ -35,7 +35,6 @@ type procedure ComputeBtnClick(Sender: TObject); procedure FormActivate(Sender: TObject); procedure FormCreate(Sender: TObject); - procedure FormShow(Sender: TObject); procedure HelpBtnClick(Sender: TObject); procedure ResetBtnClick(Sender: TObject); procedure VarListClick(Sender: TObject); @@ -53,6 +52,7 @@ type public { public declarations } + procedure Reset; end; var @@ -77,7 +77,7 @@ const { TBoxPlotFrm } -procedure TBoxPlotFrm.ResetBtnClick(Sender: TObject); +procedure TBoxPlotFrm.Reset; var i: integer; begin @@ -89,6 +89,11 @@ begin end; +procedure TBoxPlotFrm.ResetBtnClick(Sender: TObject); +begin + Reset; +end; + procedure TBoxPlotFrm.VarListClick(Sender: TObject); var index: integer; @@ -365,12 +370,7 @@ end; procedure TBoxPlotFrm.FormCreate(Sender: TObject); begin Assert(OS3MainFrm <> nil); -end; - - -procedure TBoxPlotFrm.FormShow(Sender: TObject); -begin - ResetBtnClick(self); + Reset; end; diff --git a/applications/lazstats/source/forms/analysis/descriptive/bubbleplotunit.pas b/applications/lazstats/source/forms/analysis/descriptive/bubbleplotunit.pas index b9ae9de15..d45f99521 100644 --- a/applications/lazstats/source/forms/analysis/descriptive/bubbleplotunit.pas +++ b/applications/lazstats/source/forms/analysis/descriptive/bubbleplotunit.pas @@ -52,7 +52,6 @@ type procedure ComputeBtnClick(Sender: TObject); procedure FormActivate(Sender: TObject); procedure FormCreate(Sender: TObject); - procedure FormShow(Sender: TObject); procedure HelpBtnClick(Sender: TObject); procedure IDInBtnClick(Sender: TObject); procedure IDOutBtnClick(Sender: TObject); @@ -74,6 +73,7 @@ type procedure UpdateBtnStates; public { public declarations } + procedure Reset; end; var @@ -392,12 +392,7 @@ procedure TBubbleForm.FormCreate(Sender: TObject); begin Assert(OS3MainFrm <> nil); if DictionaryFrm = nil then Application.CreateForm(TDictionaryFrm, DictionaryFrm); -end; - - -procedure TBubbleForm.FormShow(Sender: TObject); -begin - ResetBtnClick(self); + Reset; end; @@ -619,7 +614,7 @@ end; {$ENDIF} -procedure TBubbleForm.ResetBtnClick(Sender: TObject); +procedure TBubbleForm.Reset; var i: integer; begin @@ -634,6 +629,12 @@ begin end; +procedure TBubbleForm.ResetBtnClick(Sender: TObject); +begin + Reset; +end; + + procedure TBubbleForm.SizeInBtnClick(Sender: TObject); var i: integer; diff --git a/applications/lazstats/source/forms/analysis/descriptive/descriptiveunit.lfm b/applications/lazstats/source/forms/analysis/descriptive/descriptiveunit.lfm index cb5c9b094..3b8d0f310 100644 --- a/applications/lazstats/source/forms/analysis/descriptive/descriptiveunit.lfm +++ b/applications/lazstats/source/forms/analysis/descriptive/descriptiveunit.lfm @@ -10,7 +10,6 @@ object DescriptiveFrm: TDescriptiveFrm ClientWidth = 900 OnActivate = FormActivate OnCreate = FormCreate - OnShow = FormShow Position = poMainFormCenter LCLVersion = '2.1.0.0' object ReportPanel: TPanel diff --git a/applications/lazstats/source/forms/analysis/descriptive/descriptiveunit.pas b/applications/lazstats/source/forms/analysis/descriptive/descriptiveunit.pas index af5579a0c..54414d196 100644 --- a/applications/lazstats/source/forms/analysis/descriptive/descriptiveunit.pas +++ b/applications/lazstats/source/forms/analysis/descriptive/descriptiveunit.pas @@ -41,7 +41,6 @@ type procedure ComputeBtnClick(Sender: TObject); procedure FormActivate(Sender: TObject); procedure FormCreate(Sender: TObject); - procedure FormShow(Sender: TObject); procedure HelpBtnClick(Sender: TObject); procedure InBtnClick(Sender: TObject); procedure OutBtnClick(Sender: TObject); @@ -58,6 +57,7 @@ type public { public declarations } + procedure Reset; end; var @@ -120,12 +120,8 @@ begin FReportFrame.Align := alClient; FReportFrame.ReportToolBar.Align := alRight; FReportFrame.ReportToolbar.EdgeBorders := []; -end; - -procedure TDescriptiveFrm.FormShow(Sender: TObject); -begin - ResetBtnClick(self); + Reset; end; @@ -449,7 +445,7 @@ begin UpdateBtnStates; end; -procedure TDescriptiveFrm.ResetBtnClick(Sender: TObject); +procedure TDescriptiveFrm.Reset; var i: integer; begin @@ -462,6 +458,11 @@ begin FReportFrame.Clear; end; +procedure TDescriptiveFrm.ResetBtnClick(Sender: TObject); +begin + Reset; +end; + procedure TDescriptiveFrm.UpdateBtnStates; var lSelected: Boolean; diff --git a/applications/lazstats/source/forms/analysis/descriptive/multxvsyunit.pas b/applications/lazstats/source/forms/analysis/descriptive/multxvsyunit.pas index 2916d1807..b2d2bdf56 100644 --- a/applications/lazstats/source/forms/analysis/descriptive/multxvsyunit.pas +++ b/applications/lazstats/source/forms/analysis/descriptive/multxvsyunit.pas @@ -48,7 +48,6 @@ type procedure ComputeBtnClick(Sender: TObject); procedure FormActivate(Sender: TObject); procedure FormCreate(Sender: TObject); - procedure FormShow(Sender: TObject); procedure GroupInBtnClick(Sender: TObject); procedure GroupOutBtnClick(Sender: TObject); procedure HelpBtnClick(Sender: TObject); @@ -71,6 +70,7 @@ type public { public declarations } + procedure Reset; end; var @@ -92,7 +92,7 @@ uses { TMultXvsYFrm } -procedure TMultXvsYFrm.ResetBtnClick(Sender: TObject); +procedure TMultXvsYFrm.Reset; var i : integer; begin @@ -108,6 +108,12 @@ begin end; +procedure TMultXvsYFrm.ResetBtnClick(Sender: TObject); +begin + Reset; +end; + + procedure TMultXvsYFrm.VarListSelectionChange(Sender: TObject; User: boolean); begin UpdateBtnStates; @@ -293,12 +299,7 @@ procedure TMultXvsYFrm.FormCreate(Sender: TObject); begin Assert(OS3MainFrm <> nil); if DictionaryFrm = nil then Application.CreateForm(TDictionaryFrm, DictionaryFrm); -end; - - -procedure TMultXvsYFrm.FormShow(Sender: TObject); -begin - ResetBtnClick(self); + Reset; end; diff --git a/applications/lazstats/source/forms/analysis/descriptive/plotxyunit.lfm b/applications/lazstats/source/forms/analysis/descriptive/plotxyunit.lfm index fca0c21ca..de568a2ca 100644 --- a/applications/lazstats/source/forms/analysis/descriptive/plotxyunit.lfm +++ b/applications/lazstats/source/forms/analysis/descriptive/plotxyunit.lfm @@ -11,7 +11,6 @@ object PlotXYFrm: TPlotXYFrm ClientWidth = 490 OnActivate = FormActivate OnCreate = FormCreate - OnShow = FormShow Position = poMainFormCenter LCLVersion = '2.1.0.0' object Label1: TLabel diff --git a/applications/lazstats/source/forms/analysis/descriptive/plotxyunit.pas b/applications/lazstats/source/forms/analysis/descriptive/plotxyunit.pas index 51d1c2bdd..d2522c626 100644 --- a/applications/lazstats/source/forms/analysis/descriptive/plotxyunit.pas +++ b/applications/lazstats/source/forms/analysis/descriptive/plotxyunit.pas @@ -41,7 +41,6 @@ type procedure ComputeBtnClick(Sender: TObject); procedure FormActivate(Sender: TObject); procedure FormCreate(Sender: TObject); - procedure FormShow(Sender: TObject); procedure ResetBtnClick(Sender: TObject); procedure VarListSelectionChange(Sender: TObject; User: boolean); procedure XinBtnClick(Sender: TObject); @@ -64,6 +63,7 @@ type Xcol,Ycol: Integer): Boolean; public { public declarations } + procedure Reset; end; var @@ -85,7 +85,7 @@ uses { TPlotXYFrm } -procedure TPlotXYFrm.ResetBtnClick(Sender: TObject); +procedure TPlotXYfrm.Reset; var i: integer; begin @@ -102,6 +102,13 @@ begin UpdateBtnStates; end; + +procedure TPlotXYFrm.ResetBtnClick(Sender: TObject); +begin + Reset; +end; + + procedure TPlotXYFrm.XinBtnClick(Sender: TObject); var index: integer; @@ -148,11 +155,6 @@ begin end; end; -procedure TPlotXYFrm.FormShow(Sender: TObject); -begin - ResetBtnClick(self); -end; - procedure TPlotXYFrm.ComputeBtnClick(Sender: TObject); var Xmin, Xmax, Ymin, Ymax, SSx, SSY, t, DF: double; @@ -341,6 +343,7 @@ end; procedure TPlotXYFrm.FormCreate(Sender: TObject); begin Assert(OS3MainFrm <> nil); + Reset; end; diff --git a/applications/lazstats/source/forms/analysis/descriptive/xvsmultyunit.pas b/applications/lazstats/source/forms/analysis/descriptive/xvsmultyunit.pas index b8a84fc3a..0858ac068 100644 --- a/applications/lazstats/source/forms/analysis/descriptive/xvsmultyunit.pas +++ b/applications/lazstats/source/forms/analysis/descriptive/xvsmultyunit.pas @@ -61,6 +61,7 @@ type procedure UpdateBtnStates; public { public declarations } + procedure Reset; end; var @@ -81,7 +82,7 @@ uses { TXvsMultYForm } -procedure TXvsMultYForm.ResetBtnClick(Sender: TObject); +procedure TXvsMultYForm.Reset; var i: integer; begin @@ -97,6 +98,11 @@ begin VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]); end; +procedure TXvsMultYForm.ResetBtnClick(Sender: TObject); +begin + Reset; +end; + procedure TXvsMultYForm.VarListSelectionChange(Sender: TObject; User: boolean); begin UpdateBtnStates; @@ -269,6 +275,7 @@ end; procedure TXvsMultYForm.FormCreate(Sender: TObject); begin Assert(OS3MainFrm <> nil); + Reset; end; diff --git a/applications/lazstats/source/forms/analysis/statistical_process_control/basicspcunit.lfm b/applications/lazstats/source/forms/analysis/statistical_process_control/basicspcunit.lfm index 4a4c01a16..263d99bd6 100644 --- a/applications/lazstats/source/forms/analysis/statistical_process_control/basicspcunit.lfm +++ b/applications/lazstats/source/forms/analysis/statistical_process_control/basicspcunit.lfm @@ -8,7 +8,7 @@ object BasicSPCForm: TBasicSPCForm ClientWidth = 927 OnActivate = FormActivate OnCreate = FormCreate - OnShow = FormShow + Position = poMainFormCenter LCLVersion = '2.1.0.0' object SpecsPanel: TPanel Left = 8 diff --git a/applications/lazstats/source/forms/analysis/statistical_process_control/basicspcunit.pas b/applications/lazstats/source/forms/analysis/statistical_process_control/basicspcunit.pas index 3adf0c939..c28003988 100644 --- a/applications/lazstats/source/forms/analysis/statistical_process_control/basicspcunit.pas +++ b/applications/lazstats/source/forms/analysis/statistical_process_control/basicspcunit.pas @@ -40,7 +40,6 @@ type procedure ComputeBtnClick(Sender: TObject); procedure FormActivate(Sender: TObject); procedure FormCreate(Sender: TObject); - procedure FormShow(Sender: TObject); procedure GroupInBtnClick(Sender: TObject); procedure GroupOutBtnClick(Sender: TObject); procedure HelpBtnClick(Sender: TObject); @@ -181,11 +180,7 @@ begin Marks.Source := TListChartSource.Create(self); Marks.Style := smsLabel; end; -end; - -procedure TBasicSPCForm.FormShow(Sender: TObject); -begin Reset; end; diff --git a/applications/lazstats/source/forms/mainunit.lfm b/applications/lazstats/source/forms/mainunit.lfm index 92be494a6..13f3f2199 100644 --- a/applications/lazstats/source/forms/mainunit.lfm +++ b/applications/lazstats/source/forms/mainunit.lfm @@ -444,75 +444,75 @@ object OS3MainFrm: TOS3MainFrm end object mnuAnalysis: TMenuItem Caption = 'Analyses' - object MenuItem32: TMenuItem + object mnuAnalysisDescr: TMenuItem Caption = 'Descriptive' - object Distributions: TMenuItem + object mnuAnalysisDescr_DistribStats: TMenuItem Caption = 'Distribution Statistics' - OnClick = DistributionsClick + OnClick = mnuAnalysisDescr_DistribStatsClick end - object FreqAnal: TMenuItem + object mnuAnalysisDescr_Freq: TMenuItem Caption = 'Frequency Analysis' - OnClick = FreqAnalClick + OnClick = mnuAnalysisDescr_FreqClick end - object GrpFreq: TMenuItem + object mnuAnalysisDescr_GrpFreq: TMenuItem Caption = 'Plot Group Frequencies' - OnClick = GrpFreqClick + OnClick = mnuAnalysisDescr_GrpFreqClick end - object CrossTabs: TMenuItem + object mnuAnalysisDescr_CrossTabs: TMenuItem Caption = 'Cross Tabulation' - OnClick = CrossTabsClick + OnClick = mnuAnalysisDescr_CrossTabsClick end - object Breakdown: TMenuItem - Caption = 'Breakdown' - OnClick = BreakdownClick + object mnuAnalysisDescr_Breakdown: TMenuItem + Caption = 'mnuAnalysisDescr_Breakdown' + OnClick = mnuAnalysisDescr_BreakdownClick end - object BoxPlot: TMenuItem + object mnuAnalysisDescr_BoxPlot: TMenuItem Caption = 'Box Plot' - OnClick = BoxPlotClick + OnClick = mnuAnalysisDescr_BoxPlotClick end - object NormalityTests: TMenuItem + object mnuAnalysisDescr_Normality: TMenuItem Caption = 'Normality Tests' - OnClick = NormalityTestsClick + OnClick = mnuAnalysisDescr_NormalityClick end - object ThreeDRotate: TMenuItem + object mnuAnalysisDescr_ThreeDRotate: TMenuItem Caption = '3-D Variable Rotation' - OnClick = ThreeDRotateClick + OnClick = mnuAnalysisDescr_ThreeDRotateClick end - object PlotXvsY: TMenuItem + object mnuAnalysisDescr_PlotXvsY: TMenuItem Caption = 'Plot X vs Y' - OnClick = PlotXvsYClick + OnClick = mnuAnalysisDescr_PlotXvsYClick end - object BubblePlot: TMenuItem + object mnuAnalysisDescr_BubblePlot: TMenuItem Caption = 'Repeated Measures Bubble Plot' - OnClick = BubblePlotClick + OnClick = mnuAnalysisDescr_BubblePlotClick end - object StemLeaf: TMenuItem + object mnuAnalysisDescr_StemLeaf: TMenuItem Caption = 'Stem and Leaf Plot' - OnClick = StemLeafClick + OnClick = mnuAnalysisDescr_StemLeafClick end - object MultXvsY: TMenuItem + object mnuAnalysisDescr_MultXvsY: TMenuItem Caption = 'Multiple Group X vs Y Plot' - OnClick = MultXvsYClick + OnClick = mnuAnalysisDescr_MultXvsYClick end - object XvsMultY: TMenuItem + object mnuAnalysisDescr_XvsMultY: TMenuItem Caption = 'X versus Multiple Y Plot' - OnClick = XvsMultYClick + OnClick = mnuAnalysisDescr_XvsMultYClick end - object CompareDists: TMenuItem + object mnuAnalysisDescr_CompareDists: TMenuItem Caption = 'Compare Distributions' - OnClick = CompareDistsClick + OnClick = mnuAnalysisDescr_CompareDistsClick end - object ResistanceLine: TMenuItem + object mnuAnalysisDescr_ResistanceLine: TMenuItem Caption = 'Resistant Line for Bivariate Data' - OnClick = ResistanceLineClick + OnClick = mnuAnalysisDescr_ResistanceLineClick end - object DataSmooth: TMenuItem + object mnuAnalysisDescr_DataSmooth: TMenuItem Caption = 'Data Smoothing' - OnClick = DataSmoothClick + OnClick = mnuAnalysisDescr_DataSmoothClick end - object homotest: TMenuItem + object mnuAnalysisDescr_HomogeneityTest: TMenuItem Caption = 'Brown-Forsythe Test for Homogeneity of Variance' - OnClick = homotestClick + OnClick = mnuAnalysisDescr_HomogeneityTestClick end end object OneSampTests: TMenuItem diff --git a/applications/lazstats/source/forms/mainunit.pas b/applications/lazstats/source/forms/mainunit.pas index c39bd5e6c..07f975644 100644 --- a/applications/lazstats/source/forms/mainunit.pas +++ b/applications/lazstats/source/forms/mainunit.pas @@ -164,18 +164,14 @@ type MenuItem31: TMenuItem; MenuItem33: TMenuItem; GenKappa: TMenuItem; - CompareDists: TMenuItem; MatManMnu: TMenuItem; GrdBkMnu: TMenuItem; BinA: TMenuItem; BartlettTest: TMenuItem; - GrpFreq: TMenuItem; Correspondence: TMenuItem; KSTest: TMenuItem; MedianPolish: TMenuItem; - DataSmooth: TMenuItem; ItemBankMenuItem: TMenuItem; - homotest: TMenuItem; lifetable: TMenuItem; LSMRitem: TMenuItem; MenuItem42: TMenuItem; @@ -189,9 +185,7 @@ type SimpChiSqr: TMenuItem; SRHItem: TMenuItem; OneCaseAnova: TMenuItem; - ResistanceLine: TMenuItem; Sens: TMenuItem; - XvsMultY: TMenuItem; RunsTest: TMenuItem; NestedABC: TMenuItem; PicView: TMenuItem; @@ -242,7 +236,6 @@ type Label1: TLabel; MainMenu1: TMainMenu; MenuItem1: TMenuItem; - MenuItem32: TMenuItem; OneSampTests: TMenuItem; MenuItem34: TMenuItem; MenuItem35: TMenuItem; @@ -251,17 +244,26 @@ type MenuItem38: TMenuItem; MenuItem39: TMenuItem; MenuItem40: TMenuItem; - Distributions: TMenuItem; - FreqAnal: TMenuItem; - CrossTabs: TMenuItem; - Breakdown: TMenuItem; - BoxPlot: TMenuItem; - NormalityTests: TMenuItem; - ThreeDRotate: TMenuItem; - PlotXvsY: TMenuItem; - BubblePlot: TMenuItem; - StemLeaf: TMenuItem; - MultXvsY: TMenuItem; + + mnuAnalysisDescr: TMenuItem; + mnuAnalysisDescr_Breakdown: TMenuItem; + mnuAnalysisDescr_BoxPlot: TMenuItem; + mnuAnalysisDescr_BubblePlot: TMenuItem; + mnuAnalysisDescr_CompareDists: TMenuItem; + mnuAnalysisDescr_CrossTabs: TMenuItem; + mnuAnalysisDescr_DataSmooth: TMenuItem; + mnuAnalysisDescr_DistribStats: TMenuItem; + mnuAnalysisDescr_Freq: TMenuItem; + mnuAnalysisDescr_GrpFreq: TMenuItem; + mnuAnalysisDescr_HomogeneityTest: TMenuItem; + mnuAnalysisDescr_MultXvsY: TMenuItem; + mnuAnalysisDescr_Normality: TMenuItem; + mnuAnalysisDescr_PlotXvsY: TMenuItem; + mnuAnalysisDescr_ResistanceLine: TMenuItem; + mnuAnalysisDescr_StemLeaf: TMenuItem; + mnuAnalysisDescr_ThreeDRotate: TMenuItem; + mnuAnalysisDescr_XvsMultY: TMenuItem; + PropDiff: TMenuItem; CorrDiff: TMenuItem; ttests: TMenuItem; @@ -284,6 +286,25 @@ type procedure FormShow(Sender: TObject); procedure MenuItem2Click(Sender: TObject); + // Menu "Analysis" / "Descriptive" + procedure mnuAnalysisDescr_BoxPlotClick(Sender: TObject); + procedure mnuAnalysisDescr_BreakdownClick(Sender: TObject); + procedure mnuAnalysisDescr_BubblePlotClick(Sender: TObject); + procedure mnuAnalysisDescr_CompareDistsClick(Sender: TObject); + procedure mnuAnalysisDescr_CrossTabsClick(Sender: TObject); + procedure mnuAnalysisDescr_DataSmoothClick(Sender: TObject); + procedure mnuAnalysisDescr_DistribStatsClick(Sender: TObject); + procedure mnuAnalysisDescr_FreqClick(Sender: TObject); + procedure mnuAnalysisDescr_GrpFreqClick(Sender: TObject); + procedure mnuAnalysisDescr_HomogeneityTestClick(Sender: TObject); + procedure mnuAnalysisDescr_MultXvsYClick(Sender: TObject); + procedure mnuAnalysisDescr_NormalityClick(Sender: TObject); + procedure mnuAnalysisDescr_PlotXvsYClick(Sender: TObject); + procedure mnuAnalysisDescr_ResistanceLineClick(Sender: TObject); + procedure mnuAnalysisDescr_StemLeafClick(Sender: TObject); + procedure mnuAnalysisDescr_ThreeDRotateClick(Sender: TObject); + procedure mnuAnalysisDescr_XvsMultYClick(Sender: TObject); + // Menu 'Analysis" / "Statistical Process Control" procedure mnuAnalysisSPC_CChartClick(Sender: TObject); procedure mnuAnalysisSPC_CUSUMClick(Sender: TObject); @@ -373,26 +394,16 @@ type procedure AxSAnovaClick(Sender: TObject); procedure BartlettTestClick(Sender: TObject); procedure BinAClick(Sender: TObject); - procedure BoxPlotClick(Sender: TObject); - procedure BreakdownClick(Sender: TObject); - procedure BubblePlotClick(Sender: TObject); - procedure CompareDistsClick(Sender: TObject); procedure CorrDiffClick(Sender: TObject); procedure CorrespondenceClick(Sender: TObject); - procedure CrossTabsClick(Sender: TObject); procedure DataGridClick(Sender: TObject); procedure DataGridKeyDown(Sender: TObject; var Key: Word; {%H-}Shift: TShiftState); procedure DataGridKeyPress(Sender: TObject; var Key: char); procedure DataGridPrepareCanvas(sender: TObject; aCol, {%H-}aRow: Integer; {%H-}aState: TGridDrawState); - procedure DataSmoothClick(Sender: TObject); - procedure DistributionsClick(Sender: TObject); - procedure FreqAnalClick(Sender: TObject); procedure GenKappaClick(Sender: TObject); procedure GLMClick(Sender: TObject); procedure GrdBkMnuClick(Sender: TObject); - procedure GrpFreqClick(Sender: TObject); //procedure HelpContentsClick(Sender: TObject); - procedure homotestClick(Sender: TObject); procedure ItemBankMenuItemClick(Sender: TObject); procedure KSTestClick(Sender: TObject); procedure LatinSquaresClick(Sender: TObject); @@ -452,28 +463,21 @@ type procedure MenuItem97Click(Sender: TObject); procedure MenuItem98Click(Sender: TObject); procedure MenuItem99Click(Sender: TObject); - procedure MultXvsYClick(Sender: TObject); procedure NestedABCClick(Sender: TObject); - procedure NormalityTestsClick(Sender: TObject); procedure OneCaseAnovaClick(Sender: TObject); procedure OneSampTestsClick(Sender: TObject); // procedure PicViewClick(Sender: TObject); - procedure PlotXvsYClick(Sender: TObject); procedure PropDiffClick(Sender: TObject); - procedure ResistanceLineClick(Sender: TObject); procedure RiditAnalysisClick(Sender: TObject); procedure RunsTestClick(Sender: TObject); procedure SensClick(Sender: TObject); procedure SimpChiSqrClick(Sender: TObject); procedure SRHItemClick(Sender: TObject); - procedure StemLeafClick(Sender: TObject); - procedure ThreeDRotateClick(Sender: TObject); procedure TTestsClick(Sender: TObject); procedure TwoSLSRegClick(Sender: TObject); procedure WghtedKappaClick(Sender: TObject); procedure WithinAnovaClick(Sender: TObject); procedure WLSRegClick(Sender: TObject); - procedure XvsMultYClick(Sender: TObject); private { private declarations } {$IFDEF USE_EXTERNAL_HELP_VIEWER} @@ -874,14 +878,6 @@ begin SpBrFrm.ShowModal; end; -//Menu "Analysis" > "Descriptive" > "Multiple Group X vs Y Plot" -procedure TOS3MainFrm.MultXvsYClick(Sender: TObject); -begin - if MultXvsYFrm = nil then - Application.CreateForm(TMultXvsYFrm, MultXvsYFrm); - MultXvsYFrm.Show; -end; - // Menu "Analysis" > "Comparisons" > "ABC ANOVA with B Nested in A" procedure TOS3MainFrm.NestedABCClick(Sender: TObject); begin @@ -890,14 +886,6 @@ begin ABCNestedForm.ShowModal; end; -// Menu "Analysis" > "Descriptive" > "Normality Tests" -procedure TOS3MainFrm.NormalityTestsClick(Sender: TObject); -begin - if NormalityFrm = nil then - Application.CreateForm(TNormalityFrm, NormalityFrm); - NormalityFrm.ShowModal; -end; - // Menu "Analysis" > "Comparisons" > "2 or 3 Way ANOVA with One Case Per Cell" procedure TOS3MainFrm.OneCaseAnovaClick(Sender: TObject); begin @@ -915,15 +903,6 @@ begin end; -// Menu "Analysis" > "Descriptive" > "Plot X vs Y" -procedure TOS3MainFrm.PlotXvsYClick(Sender: TObject); -begin - if PlotXYFrm = nil then - Application.CreateForm(TPlotXYFrm, PlotXYFrm); - PlotXYFrm.ShowModal; -end; - - // Menu "Analysis" > "Comparisons" > "Difference beween Proportions" procedure TOS3MainFrm.PropDiffClick(Sender: TObject); begin @@ -932,13 +911,6 @@ begin TwoPropFrm.ShowModal; end; -procedure TOS3MainFrm.ResistanceLineClick(Sender: TObject); -begin - if ResistanceLineForm = nil then - Application.CreateForm(TResistanceLineForm, ResistanceLineForm); - ResistanceLineForm.ShowModal; -end; - // Menu "Analysis" > "Nonparametric" > "RIDIT Analysis" procedure TOS3MainFrm.RiditAnalysisClick(Sender: TObject); begin @@ -980,24 +952,6 @@ begin SRHTest.ShowModal; end; -// Menu "Analysis" > "Descriptive" > "Stem and Leaf Plot" -procedure TOS3MainFrm.StemLeafClick(Sender: TObject); -begin - if StemLeafFrm = nil then - Application.CreateForm(TStemLeafFrm, StemLeafFrm); - StemLeafFrm.ShowModal; -end; - - -// Menu "Analysis" > "Descriptive" > "3-D Variable Rotation" -procedure TOS3MainFrm.ThreeDRotateClick(Sender: TObject); -begin - if Rot3DFrm = nil then - Application.CreateForm(TRot3DFrm, Rot3DFrm); - Rot3DFrm.ShowModal; -end; - - // Menu "Analysis" > "Comparisons" > "t-tests" procedure TOS3MainFrm.TTestsClick(Sender: TObject); begin @@ -1038,22 +992,6 @@ begin WLSFrm.ShowModal; end; -// Menu "Analysis" > "Descriptive" > "X versus Multiple Y Plot" -procedure TOS3MainFrm.XvsMultYClick(Sender: TObject); -begin - if XvsMultYForm = nil then - Application.CreateForm(TXvsMultYForm, XvsMultYForm); - XvsMultYForm.ShowModal; -end; - -// Menu "Analysis" > "Descriptive" > "Distribution Statistics" -procedure TOS3MainFrm.DistributionsClick(Sender: TObject); -begin - if DescriptiveFrm = nil then - Application.CreateForm(TDescriptiveFrm, DescriptiveFrm); - DescriptiveFrm.Show; -end; - { procedure TOS3MainFrm.FormClick(Sender: TObject); @@ -1119,14 +1057,6 @@ begin DataGrid.Canvas.Textstyle := ts; end; -// Menu "Analysis" > "Descriptive" > "Data Smoothing" -procedure TOS3MainFrm.DataSmoothClick(Sender: TObject); -begin - if DataSmoothingForm = nil then - Application.CreateForm(TDataSmoothingForm, DataSmoothingForm); - DataSmoothingForm.ShowModal; -end; - procedure TOS3MainFrm.DataGridKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); var @@ -1162,38 +1092,6 @@ begin if DataGrid.Cells[PrevCol,PrevRow] <> '' then FormatCell(PrevCol,PrevRow); end; -// Menu "Analysis" > "Descriptive" > "Compare Distributions" -procedure TOS3MainFrm.CompareDistsClick(Sender: TObject); -begin - if CompareDistFrm = nil then - Application.CreateForm(TCompareDistFrm, CompareDistFrm); - CompareDistFrm.ShowModal; -end; - -// Menu "Analysis" > "Descriptive" > "Breakdown" -procedure TOS3MainFrm.BreakdownClick(Sender: TObject); -begin - if BreakDownFrm = nil then - Application.CreateForm(TBreakDownFrm, BreakDownFrm); - BreakDownFrm.ShowModal; -end; - -// Menu "Analysis" > "Descriptive" > "Repeated Measures Bubble Plot" -procedure TOS3MainFrm.BubblePlotClick(Sender: TObject); -begin - if BubbleForm = nil then - Application.CreateForm(TBubbleForm, BubbleForm); - BubbleForm.ShowModal; -end; - -// Menu "Analysis" > "Descriptive" > "Box Plot" -procedure TOS3MainFrm.BoxPlotClick(Sender: TObject); -begin - if BoxPlotFrm = nil then - Application.CreateForm(TBoxPlotFrm, BoxPlotFrm); - BoxPlotFrm.ShowModal; -end; - // Menu "Analysis" > "Comparisons" > "1,2 or 3 Way ANOVAs" procedure TOS3MainFrm.AnovaClick(Sender: TObject); begin @@ -1258,14 +1156,6 @@ begin CorrespondenceForm.ShowModal; end; -// Menu "Analysis" > "Descriptive" > "Cross tabulation" -procedure TOS3MainFrm.CrossTabsClick(Sender: TObject); -begin - if CrossTabFrm = nil then - Application.CreateForm(TCrossTabFrm, CrossTabFrm); - CrossTabFrm.ShowModal; -end; - procedure TOS3MainFrm.DataGridClick(Sender: TObject); begin RowEdit.Text := IntToStr(DataGrid.Row); @@ -1584,7 +1474,7 @@ procedure TOS3MainFrm.mnuSimDistPlotsClick(Sender: TObject); begin if DistribFrm = nil then Application.CreateForm(TDistribFrm, DistribFrm); - DistribFrm.ShowModal; + DistribFrm.Show; end; // Menu "Simulations" > "F probability" @@ -1848,14 +1738,6 @@ end; -// Menu "Analysis" > "Descriptive" > "Frequency Analysis" -procedure TOS3MainFrm.FreqAnalClick(Sender: TObject); -begin - if FreqFrm = nil then - Application.CreateForm(TFreqFrm, FreqFrm); - FreqFrm.ShowModal; -end; - // Menu "Analysis" > "Nonparametric" > "Generalized Kappa" procedure TOS3MainFrm.GenKappaClick(Sender: TObject); begin @@ -1880,14 +1762,6 @@ begin GradebookFrm.ShowModal; end; -// Menu "Analysis" > "Descriptive" > "Plot Group Frequencies" -procedure TOS3MainFrm.GrpFreqClick(Sender: TObject); -begin - if GroupFreqForm = nil then - Application.CreateForm(TGroupFreqForm, GroupFreqForm); - GroupFreqForm.ShowModal; -end; - (* replaced by ShowTOC // Menu "Help" > "General Help" procedure TOS3MainFrm.HelpContentsClick(Sender: TObject); @@ -1897,36 +1771,6 @@ begin HelpFrm.ShowModal; end; *) -// Menu "Analyses" > "Brown-Forsythe test for homogeneity of variance" -procedure TOS3MainFrm.homotestClick(Sender: TObject); -Var - response: string; - GroupCol, VarCol, NoCases: integer; -begin - response := '1'; - repeat - if not InputQuery('Column of group codes', 'Column index', response) then - exit; - if TryStrToInt(response, GroupCol) and (GroupCol > 0) then - break - else - ErrorMsg('Illegal value entered for index of group column.'); - until false; - - response := '2'; - repeat - if not InputQuery('Column of dependent variable', 'Column index', response) then - exit; - if TryStrToInt(response, VarCol) then - break - else - ErrorMsg('Illegal value entered for index of variable column.'); - until false; - - NoCases := StrToInt(NoCasesEdit.text); - HomogeneityTest(GroupCol, VarCol, NoCases); -end; - // Menu "Analysis" > "Measurement Programs" > "Item Banking" procedure TOS3MainFrm.ItemBankMenuItemClick(Sender: TObject); begin @@ -2118,6 +1962,181 @@ begin end; +{ Descriptive statistics commands } + +// Menu "Analysis" > "Descriptive" > "Box Plot" +procedure TOS3MainFrm.mnuAnalysisDescr_BoxPlotClick(Sender: TObject); +begin + if BoxPlotFrm = nil then + begin + Application.CreateForm(TBoxPlotFrm, BoxPlotFrm); + BoxPlotFrm.Position := poMainFormCenter; + end; + BoxPlotFrm.Show; +end; + +// Menu "Analysis" > "Descriptive" > "mnuAnalysisDescr_Breakdown" +procedure TOS3MainFrm.mnuAnalysisDescr_BreakdownClick(Sender: TObject); +begin + if BreakDownFrm = nil then + Application.CreateForm(TBreakDownFrm, BreakDownFrm); + BreakDownFrm.ShowModal; +end; + +// Menu "Analysis" > "Descriptive" > "Repeated Measures Bubble Plot" +procedure TOS3MainFrm.mnuAnalysisDescr_BubblePlotClick(Sender: TObject); +begin + if BubbleForm = nil then + begin + Application.CreateForm(TBubbleForm, BubbleForm); + BubbleForm.Position := poMainFormCenter; + end; + BubbleForm.ShowModal; +end; + +// Menu "Analysis" > "Descriptive" > "Compare mnuAnalysisDescr_DistribStats" +procedure TOS3MainFrm.mnuAnalysisDescr_CompareDistsClick(Sender: TObject); +begin + if CompareDistFrm = nil then + Application.CreateForm(TCompareDistFrm, CompareDistFrm); + CompareDistFrm.ShowModal; +end; + +// Menu "Analysis" > "Descriptive" > "Cross tabulation" +procedure TOS3MainFrm.mnuAnalysisDescr_CrossTabsClick(Sender: TObject); +begin + if CrossTabFrm = nil then + Application.CreateForm(TCrossTabFrm, CrossTabFrm); + CrossTabFrm.ShowModal; +end; + +// Menu "Analysis" > "Descriptive" > "Data Smoothing" +procedure TOS3MainFrm.mnuAnalysisDescr_DataSmoothClick(Sender: TObject); +begin + if DataSmoothingForm = nil then + Application.CreateForm(TDataSmoothingForm, DataSmoothingForm); + DataSmoothingForm.ShowModal; +end; + +// Menu "Analysis" > "Descriptive" > "Distribution Statistics" +procedure TOS3MainFrm.mnuAnalysisDescr_DistribStatsClick(Sender: TObject); +begin + if DescriptiveFrm = nil then + begin + Application.CreateForm(TDescriptiveFrm, DescriptiveFrm); + DescriptiveFrm.Position := poMainFormCenter; + end; + DescriptiveFrm.Show; +end; + +// Menu "Analysis" > "Descriptive" > "Frequency Analysis" +procedure TOS3MainFrm.mnuAnalysisDescr_FreqClick(Sender: TObject); +begin + if FreqFrm = nil then + Application.CreateForm(TFreqFrm, FreqFrm); + FreqFrm.ShowModal; +end; + +// Menu "Analysis" > "Descriptive" > "Plot Group Frequencies" +procedure TOS3MainFrm.mnuAnalysisDescr_GrpFreqClick(Sender: TObject); +begin + if GroupFreqForm = nil then + Application.CreateForm(TGroupFreqForm, GroupFreqForm); + GroupFreqForm.ShowModal; +end; + +// Menu "Analyses" > "Brown-Forsythe test for homogeneity of variance" +procedure TOS3MainFrm.mnuAnalysisDescr_HomogeneityTestClick(Sender: TObject); +Var + response: string; + GroupCol, VarCol, NoCases: integer; +begin + response := '1'; + repeat + if not InputQuery('Column of group codes', 'Column index', response) then + exit; + if TryStrToInt(response, GroupCol) and (GroupCol > 0) then + break + else + ErrorMsg('Illegal value entered for index of group column.'); + until false; + + response := '2'; + repeat + if not InputQuery('Column of dependent variable', 'Column index', response) then + exit; + if TryStrToInt(response, VarCol) then + break + else + ErrorMsg('Illegal value entered for index of variable column.'); + until false; + + NoCases := StrToInt(NoCasesEdit.text); + HomogeneityTest(GroupCol, VarCol, NoCases); +end; + +//Menu "Analysis" > "Descriptive" > "Multiple Group X vs Y Plot" +procedure TOS3MainFrm.mnuAnalysisDescr_MultXvsYClick(Sender: TObject); +begin + if MultXvsYFrm = nil then + Application.CreateForm(TMultXvsYFrm, MultXvsYFrm); + MultXvsYFrm.Show; +end; + +// Menu "Analysis" > "Descriptive" > "Normality Tests" +procedure TOS3MainFrm.mnuAnalysisDescr_NormalityClick(Sender: TObject); +begin + if NormalityFrm = nil then + Application.CreateForm(TNormalityFrm, NormalityFrm); + NormalityFrm.ShowModal; +end; + +// Menu "Analysis" > "Descriptive" > "Plot X vs Y" +procedure TOS3MainFrm.mnuAnalysisDescr_PlotXvsYClick(Sender: TObject); +begin + if PlotXYFrm = nil then + begin + Application.CreateForm(TPlotXYFrm, PlotXYFrm); + PlotXYFrm.Position := poMainFormCenter; + end; + PlotXYFrm.ShowModal; +end; + +procedure TOS3MainFrm.mnuAnalysisDescr_ResistanceLineClick(Sender: TObject); +begin + if ResistanceLineForm = nil then + Application.CreateForm(TResistanceLineForm, ResistanceLineForm); + ResistanceLineForm.ShowModal; +end; + +// Menu "Analysis" > "Descriptive" > "Stem and Leaf Plot" +procedure TOS3MainFrm.mnuAnalysisDescr_StemLeafClick(Sender: TObject); +begin + if StemLeafFrm = nil then + Application.CreateForm(TStemLeafFrm, StemLeafFrm); + StemLeafFrm.ShowModal; +end; + + +// Menu "Analysis" > "Descriptive" > "3-D Variable Rotation" +procedure TOS3MainFrm.mnuAnalysisDescr_ThreeDRotateClick(Sender: TObject); +begin + if Rot3DFrm = nil then + Application.CreateForm(TRot3DFrm, Rot3DFrm); + Rot3DFrm.ShowModal; +end; + +// Menu "Analysis" > "Descriptive" > "X versus Multiple Y Plot" +procedure TOS3MainFrm.mnuAnalysisDescr_XvsMultYClick(Sender: TObject); +begin + if XvsMultYForm = nil then + Application.CreateForm(TXvsMultYForm, XvsMultYForm); + XvsMultYForm.ShowModal; +end; + + +{ SPC commands } + // Menu "Analysis" > "Statistical Process Control" > "Defect (nonconformity) c Chart" procedure TOS3MainFrm.mnuAnalysisSPC_CChartClick(Sender: TObject); begin diff --git a/applications/lazstats/source/forms/simulations/distribunit.lfm b/applications/lazstats/source/forms/simulations/distribunit.lfm index 07117f0a3..d6ca0d064 100644 --- a/applications/lazstats/source/forms/simulations/distribunit.lfm +++ b/applications/lazstats/source/forms/simulations/distribunit.lfm @@ -10,7 +10,6 @@ object DistribFrm: TDistribFrm ClientWidth = 948 OnActivate = FormActivate OnCreate = FormCreate - OnShow = FormShow Position = poMainFormCenter ShowHint = True LCLVersion = '2.1.0.0' diff --git a/applications/lazstats/source/forms/simulations/distribunit.pas b/applications/lazstats/source/forms/simulations/distribunit.pas index 675de38c9..1430953dc 100644 --- a/applications/lazstats/source/forms/simulations/distribunit.pas +++ b/applications/lazstats/source/forms/simulations/distribunit.pas @@ -51,7 +51,6 @@ type procedure ComputeBtnClick(Sender: TObject); procedure FormActivate(Sender: TObject); procedure FormCreate(Sender: TObject); - procedure FormShow(Sender: TObject); procedure CalcChi2(const AX: Double; out AY: Double); procedure CalcChi2_Cumulative(const AX: Double; out AY: Double); procedure CalcF(const AX: Double; out AY: Double); @@ -67,6 +66,7 @@ type procedure tbEraseClick(Sender: TObject); procedure tbPrintClick(Sender: TObject); procedure tbSaveClick(Sender: TObject); + private { private declarations } ChartFrame: TChartFrame; @@ -79,10 +79,11 @@ type procedure Chi2Plot; procedure FPlot; procedure tPlot; - function Validate(out AMsg: String; out AControl: TWinControl): Boolean; + public { public declarations } + procedure Reset; end; var @@ -184,7 +185,7 @@ begin end; -procedure TDistribFrm.ResetBtnClick(Sender: TObject); +procedure TDistribFrm.Reset; begin NDChk.Checked := false; tChk.Checked := false; @@ -198,6 +199,11 @@ begin end; +procedure TDistribFrm.ResetBtnClick(Sender: TObject); +begin + Reset; +end; + procedure TDistribFrm.ShowCriticalValuesChkChange(Sender: TObject); var i: Integer; @@ -212,12 +218,6 @@ begin end; -procedure TDistribFrm.FormShow(Sender: TObject); -begin - ResetBtnClick(self); -end; - - procedure TDistribFrm.CalcF(const AX: Double; out AY: Double); begin AY := FDensity(AX, DF1, DF2); @@ -443,6 +443,8 @@ begin ChartFrame.Chart.Legend.TextFormat := tfHTML; ChartFrame.Chart.BottomAxis.Intervals.MaxLength := 80; ChartFrame.Chart.BottomAxis.Intervals.MinLength := 30; + + Reset; end;