// File for testing: "GeneChips.laz" // Y --> Dependent // Chip --> Factor 1 // Probe --> Factor 2 (Factor 3 empty) { ToDo: - Help system: - LHelp reports "no response" a while after LHelp was opened. LazStats is not reacting during this time. - LHelp window does not close when lazStats is closed. - Diagram windows are incomplete in Linux --> Replace by TAChart? } unit MainUnit; {$mode objfpc}{$H+} {$include ../LazStats.inc} interface uses LCLType, Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Menus, ExtCtrls, StdCtrls, Grids, {$IFDEF USE_EXTERNAL_HELP_VIEWER} {$IFDEF MSWINDOWS} HtmlHelp, {$ENDIF} {$ELSE} LazHelpIntf, LazHelpCHM, {$ENDIF} Globals, DataProcs, DictionaryUnit, MainDM; type { TOS3MainFrm } TOS3MainFrm = class(TForm) // GUI ColEdit: TEdit; ColLabel: TLabel; CurrentFileLabel: TLabel; DataGrid: TStringGrid; FileNameEdit: TEdit; FilterEdit: TEdit; FilterLabel: TLabel; MenuItem2: TMenuItem; NoCasesEdit: TEdit; NoCasesLabel: TLabel; NoVarsEdit: TEdit; NoVarsLabel: TLabel; PanelTop: TPanel; PanelBottom: TPanel; RowEdit: TEdit; RowLabel: TLabel; OpenDialog: TOpenDialog; SaveDialog: TSaveDialog; MainMenu: TMainMenu; // Menu "Analysis" mnuAnalysis: TMenuItem; // Menu "Analysis" > "Cross classification" mnuAnalysisCC: TMenuItem; mnuAnalysisCC_ABLogLin: TMenuItem; mnuAnalysisCC_ABCLogLin: TMenuItem; mnuAnalysisCC_LogLinScreen: TMenuItem; // Menu "Analysis" > "Comparisons" mnuAnalysisComp: TMenuItem; mnuAnalysisComp_ABSAnova: TMenuItem; mnuAnalysisComp_Anova: TMenuItem; mnuAnalysisComp_Ancova: TMenuItem; mnuAnalysisComp_AxSAnova: TMenuItem; mnuAnalysisComp_BinA: TMenuItem; mnuAnalysisComp_CorrDiff: TMenuItem; mnuAnalysisComp_GLM: TMenuItem; mnuAnalysisComp_LatinSquares: TMenuItem; mnuAnalysisComp_NestedABC: TMenuItem; mnuAnalysisComp_OneCaseAnova: TMenuItem; mnuAnalysisComp_PropDiff: TMenuItem; mnuAnalysisComp_tTests: TMenuItem; mnuAnalysisComp_WithinAnova: TMenuItem; // Menu "Analysis" > "Correlation" mnuAnalysisCorr: TMenuItem; mnuAnalysisCorr_ProductMoment: TMenuItem; mnuAnalysisCorr_Partial: TMenuItem; mnuAnalysisCorr_AutoCorr: TMenuItem; mnuAnalysisCorr_Canonical: TMenuItem; // Menu "Analysis" > "Descriptive" 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; mnuAnalysisDescr_Separator1: TMenuItem; mnuAnalysisDescr_Separator2: TMenuItem; mnuAnalysisDescr_Separator4: TMenuItem; mnuAnalysisDescr_Separator5: TMenuItem; mnuAnalysisDescr_Separator6: TMenuItem; mnuAnalysisDescr_Separator7: TMenuItem; // Menu "Analysis" > "Financial" mnuAnalysisFinancial: TMenuItem; mnuAnalysisFinancial_DblDecling: TMenuItem; mnuAnalysisFinancial_FutureValue: TMenuItem; mnuAnalysisFinancial_InterestPayment: TMenuItem; mnuAnalysisFinancial_InterestRate: TMenuItem; mnuAnalysisFinancial_LoanAmort: TMenuItem; mnuAnalysisFinancial_NetPresentValue: TMenuItem; mnuAnalysisFinancial_NumPeriods: TMenuItem; mnuAnalysisFinancial_Payment: TMenuItem; mnuAnalysisFinancial_PeriodPayment: TMenuItem; mnuAnalysisFinancial_PresentValue: TMenuItem; mnuAnalysisFinancial_Return: TMenuItem; mnuAnalysisFinancial_SLDeprec: TMenuItem; mnuAnalysisFinancial_SumOfYearsDigts: TMenuItem; // Menu "Analysis" > "Measurement Programs" mnuAnalysisMeas: TMenuItem; mnuAnalysisMeas_Classical: TMenuItem; mnuAnalysisMeas_Composite: TMenuItem; mnuAnalysisMeas_Differential: TMenuItem; mnuAnalysisMeas_GradeBook: TMenuItem; mnuAnalysisMeas_Guttman: TMenuItem; mnuAnalysisMeas_Interval: TMenuItem; mnuAnalysisMeas_ItemBanking: TMenuItem; mnuAnalysisMeas_KR21: TMenuItem; mnuAnalysisMeas_Polytomous: TMenuItem; mnuAnalysisMeas_Rash: TMenuItem; mnuAnalysisMeas_SampleData: TMenuItem; mnuAnalysisMeas_Spearman: TMenuItem; mnuAnalysisMeas_VarChange: TMenuItem; mnuAnalysisMeas_Separator1: TMenuItem; mnuAnalysisMeas_Separator2: TMenuItem; // Menu "Analysis" > "Multiple Regression" mnuAnalysisMultReg: TMenuItem; mnuAnalysisMultReg_Backward: TMenuItem; mnuAnalysisMultReg_BestComb: TMenuItem; mnuAnalysisMultReg_BinLogistic: TMenuItem; mnuAnalysisMultReg_BlockEntry: TMenuItem; mnuAnalysisMultReg_CoxSurvival: TMenuItem; mnuAnalysisMultReg_Forward: TMenuItem; mnuAnalysisMultReg_LinProg: TMenuItem; mnuAnalysisMultReg_LSMR: TMenuItem; mnuAnalysisMultReg_Simult: TMenuItem; mnuAnalysisMultReg_TwoStage: TMenuItem; mnuAnalysisMultReg_Weighted: TMenuItem; mnuAnalysisMultReg_Separator1: TMenuItem; // Menu "Analysis" > "Multivariate" mnuAnalysisMulti: TMenuItem; mnuAnalysisMulti_AvgLink: TMenuItem; mnuAnalysisMulti_Bartlett: TMenuItem; mnuAnalysisMulti_Canonical: TMenuItem; mnuAnalysisMulti_Correspondence: TMenuItem; mnuAnalysisMulti_Factor: TMenuItem; mnuAnalysisMulti_GLM: TMenuItem; mnuAnalysisMulti_Hierarchical: TMenuItem; mnuAnalysisMulti_KMeans: TMenuItem; mnuAnalysisMulti_MANOVA: TMenuItem; mnuAnalysisMulti_MedianPolish: TMenuItem; mnuAnalysisMulti_Path: TMenuItem; mnuAnalysisMulti_SingleLink: TMenuItem; // Menu "Analysis" > "Nonparametric" mnuAnalysisNonPar: TMenuItem; mnuAnalysisNonPar_Binomial: TMenuItem; mnuAnalysisNonPar_Cochran: TMenuItem; mnuAnalysisNonPar_ContingChiSq: TMenuItem; mnuAnalysisNonPar_Fisher: TMenuItem; mnuAnalysisNonPar_Friedman: TMenuItem; mnuAnalysisNonPar_GenKappa: TMenuItem; mnuAnalysisNonPar_Kendall: TMenuItem; mnuAnalysisNonPar_KruskalWallis: TMenuItem; mnuAnalysisNonPar_KSTest: TMenuItem; mnuAnalysisNonPar_LifeTable: TMenuItem; mnuAnalysisNonPar_MannWhitney: TMenuItem; mnuAnalysisNonPar_RIDIT: TMenuItem; mnuAnalysisNonPar_RunsTest: TMenuItem; mnuAnalysisNonPar_Sens: TMenuItem; mnuAnalysisNonPar_SignTest: TMenuItem; mnuAnalysisNonPar_SimpleChiSq: TMenuItem; mnuAnalysisNonPar_Spearman: TMenuItem; mnuAnalysisNonPar_SRH: TMenuItem; mnuAnalysisNonPar_Survival: TMenuItem; mnuAnalysisNonPar_Tau: TMenuItem; mnuAnalysisNonPar_WeightedKappa: TMenuItem; mnuAnalysisNonPar_Wilcoxon: TMenuItem; // Menu "Analysis" > "One sample tests" mnuAnalysisOneSampleTests: TMenuItem; // Menu "Analysis" > "Statistical process control" mnuAnalysisSPC: TMenuItem; mnuAnalysisSPC_CChart: TMenuItem; mnuAnalysisSPC_CUSUM: TMenuItem; mnuAnalysisSPC_PChart: TMenuItem; mnuAnalysisSPC_Range: TMenuItem; mnuAnalysisSPC_SChart: TMenuItem; mnuAnalysisSPC_UChart: TMenuItem; mnuAnalysisSPC_XBar: TMenuItem; mnuAnalysisSPC_Separator1: TMenuItem; // Men "Edit" mnuEdit: TMenuItem; mnuEditCopyCells: TMenuItem; mnuEditCopyCol: TMenuItem; mnuEditCopyRow: TMenuItem; mnuEditCutCells: TMenuItem; mnuEditCutCol: TMenuItem; mnuEditCutRow: TMenuItem; mnuEditDIVIDER1: TMenuItem; mnuEditDIVIDER2: TMenuItem; mnuEditNewCol: TMenuItem; mnuEditNewRow: TMenuItem; mnuEditPasteCells: TMenuItem; mnuEditPasteCol: TMenuItem; mnuEditPasteRow: TMenuItem; // Menu "File" mnuFileClose: TMenuItem; mnuFileExport: TMenuItem; mnuFileExportCSV: TMenuItem; mnuFileExportSSV: TMenuItem; mnuFileExportTab: TMenuItem; mnuFileExit: TMenuItem; mnuFileImport: TMenuItem; mnuFileImportCSV: TMenuItem; mnuFileImportSSV: TMenuItem; mnuFileImportTAB: TMenuItem; mnuFileNew: TMenuItem; mnuFileOpen: TMenuItem; mnuFileSave: TMenuItem; // Menu "Help" mnuHelpAbout: TMenuItem; mnuHelpLicense: TMenuItem; mnuHelpShowTOC: TMenuItem; mnuHelpUsingGrid: TMenuItem; mnuHelpSeparator: TMenuItem; // Menu "Options" mnuOptions: TMenuItem; mnuOptions_ShowOptions: TMenuItem; mnuOptions_PicView: TMenuItem; // Menu "Simulations" mnuSimulations: TMenuItem; mnuSimBivarScatterPlot: TMenuItem; mnuSimChiSqProb: TMenuItem; mnuSimDistPlots: TMenuItem; mnuSimFProb: TMenuItem; mnuSimGenerateRandomValues: TMenuItem; mnuSimGenerateSeqValues: TMenuItem; mnuSimHyperGeomProb: TMenuItem; mnuSimInverseZ: TMenuItem; mnuSimMultiVarDists: TMenuItem; mnuSimPowerCurves: TMenuItem; mnuSimProbabilities: TMenuItem; mnuSimProbBetween: TMenuItem; mnuSimProb_Separator2: TMenuItem; mnuSimProbGreaterZ: TMenuItem; mnuSimProbLessZ: TMenuItem; mnuSimStudentTProb: TMenuItem; mnuSimTypeErrorCurves: TMenuItem; mnuSimSeparator1: TMenuItem; mnuSimSeparator2: TMenuItem; MnuSimProb_Separator1: TMenuItem; // Menu "Tools" mnuTools: TMenuItem; mnuToolsCalculator: TMenuItem; mnuToolsFormatGrid: TMenuItem; mnuToolsJPEGViewer: TMenuItem; mnuToolsLoadSubFile: TMenuItem; mnuToolsOutputForm: TMenuItem; mnuToolsPrintGrid: TMenuItem; mnuToolsSelectCases: TMenuItem; mnuToolsSmooth: TMenuItem; mnuToolsSortCases: TMenuItem; mnuToolsStrToInt: TMenuItem; mnuToolsSwapDecType: TMenuItem; mnuToolsSwapRowsCols: TMenuItem; // Menu "Variables" mnuVariables: TMenuItem; mnuVariablesDefine: TMenuItem; mnuVariablesEquationEditor: TMenuItem; mnuVariablesPrintDefs: TMenuItem; mnuVariablesRecode: TMenuItem; mnuVariablesTransform: TMenuItem; MatManMnu: TMenuItem; MenuItem1: TMenuItem; MenuItem7: TMenuItem; MenuItem8: TMenuItem; MenuItem12: TMenuItem; MenuItem15: TMenuItem; MenuItem20: TMenuItem; MenuItem30: TMenuItem; MenuItem42: TMenuItem; MenuItem43: TMenuItem; // Form event handlers procedure DataGridCellProcess(Sender: TObject; {%H-}aCol, {%H-}aRow: Integer; processType: TCellProcessType; var {%H-}aValue: string); procedure DataGridEditingDone(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure FormShow(Sender: TObject); // Menu "Analysis" > "Cross-classification" procedure mnuAnalysisCC_ABLogLinClick(Sender: TObject); procedure mnuAnalysisCC_ABCLogLinClick(Sender: TObject); procedure mnuAnalysisCC_LogLinScreenClick(Sender: TObject); // Menu "Analysis" > "Comparisons" procedure mnuAnalysisComp_ABSAnovaClick(Sender: TObject); procedure mnuAnalysisComp_AncovaClick(Sender: TObject); procedure mnuAnalysisComp_AnovaClick(Sender: TObject); procedure mnuAnalysisComp_AxSAnovaClick(Sender: TObject); procedure mnuAnalysisComp_BinAClick(Sender: TObject); procedure mnuAnalysisComp_CorrDiffClick(Sender: TObject); procedure mnuAnalysisComp_GLMClick(Sender: TObject); procedure mnuAnalysisComp_LatinSquaresClick(Sender: TObject); procedure mnuAnalysisComp_NestedABCClick(Sender: TObject); procedure mnuAnalysisComp_OneCaseAnovaClick(Sender: TObject); procedure mnuAnalysisComp_PropDiffClick(Sender: TObject); procedure mnuAnalysisComp_tTestsClick(Sender: TObject); procedure mnuAnalysisComp_WithinAnovaClick(Sender: TObject); // Menu "Analysis" > "Correlation" procedure mnuAnalysisCorr_AutoCorrClick(Sender: TObject); procedure mnuAnalysisCorr_CanonicalClick(Sender: TObject); procedure mnuAnalysisCorr_PartialClick(Sender: TObject); procedure mnuAnalysisCorr_ProductMomentClick(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" > "Financial" procedure mnuAnalysisFinancial_LoanAmortClick(Sender: TObject); procedure mnuAnalysisFinancial_DblDeclingClick(Sender: TObject); procedure mnuAnalysisFinancial_SLDeprecClick(Sender: TObject); procedure mnuAnalysisFinancial_SumOfYearsDigtsClick(Sender: TObject); // Menu "Analysis" > "Measurement programs" procedure mnuAnalysisMeas_ClassicalClick(Sender: TObject); procedure mnuAnalysisMeas_CompositeClick(Sender: TObject); procedure mnuAnalysisMeas_DifferentialClick(Sender: TObject); procedure mnuAnalysisMeas_GradeBookClick(Sender: TObject); procedure mnuAnalysisMeas_GuttmanClick(Sender: TObject); procedure mnuAnalysisMeas_IntervalClick(Sender: TObject); procedure mnuAnalysisMeas_ItemBankingClick(Sender: TObject); procedure mnuAnalysisMeas_KR21Click(Sender: TObject); procedure mnuAnalysisMeas_PolytomousClick(Sender: TObject); procedure mnuAnalysisMeas_RashClick(Sender: TObject); procedure mnuAnalysisMeas_SampleDataClick(Sender: TObject); procedure mnuAnalysisMeas_SpearmanClick(Sender: TObject); procedure mnuAnalysisMeas_VarChangeClick(Sender: TObject); // Menu "Analysis" > "Multiple Regression" procedure mnuAnalysisMultReg_BackwardClick(Sender: TObject); procedure mnuAnalysisMultReg_BestCombClick(Sender: TObject); procedure mnuAnalysisMultReg_BinLogisticClick(Sender: TObject); procedure mnuAnalysisMultReg_BlockEntryClick(Sender: TObject); procedure mnuAnalysisMultReg_CoxSurvivalClick(Sender: TObject); procedure mnuAnalysisMultReg_ForwardClick(Sender: TObject); procedure mnuAnalysisMultReg_LinProgClick(Sender: TObject); procedure mnuAnalysisMultReg_LSMRClick(Sender: TObject); procedure mnuAnalysisMultReg_SimultClick(Sender: TObject); procedure mnuAnalysisMultReg_TwoStageClick(Sender: TObject); procedure mnuAnalysisMultReg_WeightedClick(Sender: TObject); // Menu "Analysis" > "Multivariate" procedure mnuAnalysisMulti_AvgLinkClick(Sender: TObject); procedure mnuAnalysisMulti_BartlettClick(Sender: TObject); procedure mnuAnalysisMulti_CanonicalClick(Sender: TObject); procedure mnuAnalysisMulti_CorrespondenceClick(Sender: TObject); procedure mnuAnalysisMulti_FactorClick(Sender: TObject); procedure mnuAnalysisMulti_GLMClick(Sender: TObject); procedure mnuAnalysisMulti_HierarchicalClick(Sender: TObject); procedure mnuAnalysisMulti_KMeansClick(Sender: TObject); procedure mnuAnalysisMulti_MANOVAClick(Sender: TObject); procedure mnuAnalysisMulti_MedianPolishClick(Sender: TObject); procedure mnuAnalysisMulti_PathClick(Sender: TObject); procedure mnuAnalysisMulti_SingleLinkClick(Sender: TObject); // Menu "Analysis" > "Nonparametric" procedure mnuAnalysisNonPar_BinomialClick(Sender: TObject); procedure mnuAnalysisNonPar_CochranClick(Sender: TObject); procedure mnuAnalysisNonPar_ContingChiSqClick(Sender: TObject); procedure mnuAnalysisNonPar_FisherClick(Sender: TObject); procedure mnuAnalysisNonPar_FriedmanClick(Sender: TObject); procedure mnuAnalysisNonPar_GenKappaClick(Sender: TObject); procedure mnuAnalysisNonPar_KendallClick(Sender: TObject); procedure mnuAnalysisNonPar_KruskalWallisClick(Sender: TObject); procedure mnuAnalysisNonPar_KSTestClick(Sender: TObject); procedure mnuAnalysisNonPar_LifeTableClick(Sender: TObject); procedure mnuAnalysisNonPar_MannWhitneyClick(Sender: TObject); procedure mnuAnalysisNonPar_RIDITClick(Sender: TObject); procedure mnuAnalysisNonPar_RunsTestClick(Sender: TObject); procedure mnuAnalysisNonPar_SensClick(Sender: TObject); procedure mnuAnalysisNonPar_SignTestClick(Sender: TObject); procedure mnuAnalysisNonPar_SimpleChiSqClick(Sender: TObject); procedure mnuAnalysisNonPar_SpearmanClick(Sender: TObject); procedure mnuAnalysisNonPar_SRHClick(Sender: TObject); procedure mnuAnalysisNonPar_SurvivalClick(Sender: TObject); procedure mnuAnalysisNonPar_TauClick(Sender: TObject); procedure mnuAnalysisNonPar_WeightedKappaClick(Sender: TObject); procedure mnuAnalysisNonPar_WilcoxonClick(Sender: TObject); // Menu "Analysis" > "One sample tests" procedure mnuAnalysisOneSampleTestsClick(Sender: TObject); // Menu "Analysis" > "Statistical Process Control" procedure mnuAnalysisSPC_CChartClick(Sender: TObject); procedure mnuAnalysisSPC_CUSUMClick(Sender: TObject); procedure mnuAnalysisSPC_PChartClick(Sender: TObject); procedure mnuAnalysisSPC_RangeClick(Sender: TObject); procedure mnuAnalysisSPC_SChartClick(Sender: TObject); procedure mnuAnalysisSPC_UChartClick(Sender: TObject); procedure mnuAnalysisSPC_XBarClick(Sender: TObject); // Menu "Edit" procedure mnuEditCopyCellsClick(Sender: TObject); procedure mnuEditCopyColClick(Sender: TObject); procedure mnuEditCopyRowClick(Sender: TObject); procedure mnuEditCutColClick(Sender: TObject); procedure mnuEditCutRowClick(Sender: TObject); procedure mnuEditNewColClick(Sender: TObject); procedure mnuEditNewRowClick(Sender: TObject); procedure mnuEditPasteCellsClick(Sender: TObject); procedure mnuEditPasteColClick(Sender: TObject); procedure mnuEditPasteRowClick(Sender: TObject); // Menu "File" procedure mnuFileCloseClick(Sender: TObject); procedure mnuFileExitClick(Sender: TObject); procedure mnuFileExportCSVClick(Sender: TObject); procedure mnuFileExportSSVClick(Sender: TObject); procedure mnuFileExportTabClick(Sender: TObject); procedure mnuFileImportCSVClick(Sender: TObject); procedure mnuFileImportSSVClick(Sender: TObject); procedure mnuFileImportTABClick(Sender: TObject); procedure mnuFileNewClick(Sender: TObject); procedure mnuFileOpenClick(Sender: TObject); procedure mnuFileSaveClick(Sender: TObject); // Menu "Help" procedure mnuHelpAboutClick(Sender: TObject); procedure mnuHelpLicenseClick(Sender: TObject); procedure mnuHelpShowTOCClick(Sender: TObject); procedure mnuHelpUsingGridClick(Sender: TObject); // Menu "Options" procedure mnuOptions_ShowOptionsClick(Sender: TObject); // Menu "Simulations" procedure mnuSimBivarScatterPlotClick(Sender: TObject); procedure mnuSimChiSqProbClick(Sender: TObject); procedure mnuSimDistPlotsClick(Sender: TObject); procedure mnuSimFProbClick(Sender: TObject); procedure mnuSimGenerateRandomValuesClick(Sender: TObject); procedure mnuSimGenerateSeqValuesClick(Sender: TObject); procedure mnuSimHyperGeomProbClick(Sender: TObject); procedure mnuSimInverseZClick(Sender: TObject); procedure mnuSimMultiVarDistsClick(Sender: TObject); procedure mnuSimPowerCurvesClick(Sender: TObject); procedure mnuSimProbBetweenClick(Sender: TObject); procedure mnuSimProbGreaterZClick(Sender: TObject); procedure mnuSimProbLessZClick(Sender: TObject); procedure mnuSimStudentTProbClick(Sender: TObject); procedure mnuSimTypeErrorCurvesClick(Sender: TObject); // Menu "Tools" procedure mnuToolsCalculatorClick(Sender: TObject); procedure mnuToolsFormatGridClick(Sender: TObject); procedure mnuToolsJPEGViewerClick(Sender: TObject); procedure mnuToolsOutputFormClick(Sender: TObject); procedure mnuToolsPrintGridClick(Sender: TObject); procedure mnuToolsSelectCasesClick(Sender: TObject); procedure mnuToolsSmoothClick(Sender: TObject); procedure mnuToolsSortCasesClick(Sender: TObject); procedure mnuToolsStrToIntClick(Sender: TObject); procedure mnuToolsSwapDecTypeClick(Sender: TObject); procedure mnuToolsSwapRowsColsClick(Sender: TObject); // Menu "Variables" procedure mnuVariablesDefineClick(Sender: TObject); procedure mnuVariablesEquationEditorClick(Sender: TObject); procedure mnuVariablesPrintDefsClick(Sender: TObject); procedure mnuVariablesRecodeClick(Sender: TObject); procedure mnuVariablesTransformClick(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 HelpContentsClick(Sender: TObject); procedure MatManMnuClick(Sender: TObject); // procedure PicViewClick(Sender: TObject); private { private declarations } {$IFDEF USE_EXTERNAL_HELP_VIEWER} function HelpHandler(Command: Word; Data: PtrInt; var CallHelp: Boolean): Boolean; {$ELSE} CHMHelpDatabase: TCHMHelpDatabase; LHelpConnector: TLHelpConnector; {$ENDIF} procedure Init; procedure ResetForms; public { public declarations } end; var OS3MainFrm: TOS3MainFrm; PrevRow : integer; PrevCol : integer; implementation {$R *.lfm} uses // General Utils, BasicStatsFormUnit, GridHelpUnit, OutputUnit, LicenseUnit, // Comparisons ABCNestedUnit, ABRAnovaUnit, ANCOVAUNIT, AnovaTestsUnit, AxSAnovaUnit, BlkAnovaUnit, BNestAUnit, GLMUnit, LatinSqrsUnit, OneCaseAnovaUnit, TtestUnit, TwoCorrsUnit, TwoPropUnit, WithinANOVAUnit, // Cross-classification ABCLogLinUnit, LogLinScreenUnit, TwoWayLogLinUnit, // Descriptive BoxPlotUnit, BreakDownUnit, BubblePlotUnit, CompareDistUnit, CrossTabUnit, DescriptiveUnit, FreqUnit, GroupFreqUnit, MultXvsYUnit, NormalityUnit, PlotXYUnit, ResistanceLineUnit, Rot3DUnit, SmoothDataUnit, StemLeafUnit, XvsMultYUnit, // Financial DblDeclineUnit, LoanItUnit, SLDUnit, SumYrsDepUnit, // Correlations RMatUnit, PartialsUnit, AutoCorUnit, CanonUnit, // Help AboutUnit, // Matrix manuipulation matmanunit, // Measurement CompRelUnit, DIFUnit, gradebookunit, GuttmanUnit, KR21Unit, PolyDIFUnit, RaschUnit, RelChangeUnit, SpBrUnit, SuccIntUnit, TestGenUnit, TestScoreUnit, // Multiple Regression BackRegUnit, BestRegUnit, BlkMRegUnit, CoxRegUnit, LinProUnit, LSMRunit, SimultRegUnit, StepFwdMRUnit, TwoSLSUnit, WLSUnit, // Multivariate AvgLinkUnit, BartlettTestUnit, CorrespondenceUnit, DiscrimUnit, FactorUnit, HierarchUnit, kmeansunit, MedianPolishUnit, PathUnit, SingleLinkUnit, // Nonparametric BinomialUnit, ChiSqrUnit, CochranQUnit, ConcordanceUnit, ExactUnit, FriedmanUnit, GenKappaUnit, KaplanMeierUnit, KappaUnit, KendallTauUnit, KWAnovaUnit, LifeTableUnit, MannWhitUUnit, RIDITUnit, RunsTestUnit, SensUnit, SignTestUnit, SimpleChiSqrUnit, SpearmanUnit, SRHTestUnit, WilcoxonUnit, // One-sample tests OneSampleUnit, // Options OptionsUnit, // Simulations CorSimUnit, DistribUnit, ErrorCurvesUnit, FProbUnit, GenRndValsUnit, GenSeqUnit, HyperGeoUnit, MultGenUnit, PCurvesUnit, ProbChiSqrUnit, ProbSmallerzUnit, ProbzUnit, TprobUnit, TwozProbUnit, // Statistical process control XBarChartUnit, RChartUnit, SChartUnit, CUSUMUnit, CChartUnit, PChartUnit, UChartUnit, // Tools CalculatorUnit, DataSmoothUnit, JPEGUnit, SelectCasesUnit, SortCasesUnit, // Not identified TransFrmUnit, LogRegUnit, RecodeUnit, InversezUnit, EquationUnit, ItemBankingUnit; const HELP_KEYWORD_PREFIX = 'html'; { TOS3MainFrm } procedure TOS3MainFrm.FormCloseQuery(Sender: TObject; var CanClose: Boolean); var res: TModalResult; begin res := MessageDlg('Do you really want to close LazStats?', mtConfirmation, [mbYes, mbNo], 0); CanClose := (res = mrYes); end; procedure TOS3MainFrm.DataGridEditingDone(Sender: TObject); begin ResetForms; end; procedure TOS3MainFrm.DataGridCellProcess(Sender: TObject; aCol, aRow: Integer; processType: TCellProcessType; var aValue: string); begin if ProcessType = cpPaste then ResetForms; end; procedure TOS3MainFrm.FormCreate(Sender: TObject); var helpfn: String; {$IFNDEF USE_EXTERNAL_HELP_VIEWER} lhelpfn: String; {$ENDIF} begin // Reduce ultra-wide width of Inputbox windows cInputQueryEditSizePercents := 0; if DictionaryFrm = nil then Application.CreateForm(TDictionaryFrm, DictionaryFrm); if OutputFrm = nil then Application.CreateForm(TOutputFrm, OutputFrm); helpfn := Application.Location + 'LazStats.chm'; if FileExists(helpfn) then begin Application.HelpFile := helpfn; {$IFDEF USE_EXTERNAL_HELP_VIEWER} Application.OnHelp := @HelpHandler; {$ELSE} lhelpfn := Options.LHelpPath; if lhelpfn = '' then lhelpfn := Application.Location + 'lhelp' + GetExeExt; if FileExists(lhelpfn) then begin CHMHelpDatabase := TCHMHelpDatabase.Create(self); CHMHelpDatabase.KeywordPrefix := HELP_KEYWORD_PREFIX; CHMHelpDatabase.AutoRegister := true; CHMHelpDatabase.Filename := helpfn; LHelpConnector := TLHelpConnector.Create(self); LHelpConnector.AutoRegister := true; LHelpConnector.LHelpPath := lhelpfn; //CreateLCLHelpSystem; end else MessageDlg('Help viewer LHelp.exe not found.' + LineEnding + 'Please copy this program to the LazStats directory to access the help system.', mtError, [mbOK], 0 ); {$ENDIF} end else MessageDlg('LazStats help file not found.', mtError, [mbOK], 0); end; procedure TOS3MainFrm.FormDestroy(Sender: TObject); begin SaveOptions; TempStream.Free; TempVarItm.Free; end; procedure TOS3MainFrm.FormShow(Sender: TObject); begin Init; if ParamCount > 0 then begin OpenOS2File(ParamStr(1), false); NoVarsEdit.Text := IntToStr(DataGrid.ColCount-1); NoCasesEdit.Text := IntToStr(DataGrid.RowCount-1); end; end; // Menu "Analysis" > "Financial" > "Double Declining Value" procedure TOS3MainFrm.mnuAnalysisFinancial_DblDeclingClick(Sender: TObject); begin if DblDeclineFrm = nil then Application.CreateForm(TDblDeclineFrm, DblDeclineFrm); DblDeclineFrm.ShowModal; end; // Menu "Analysis" > "One sample tests" procedure TOS3MainFrm.mnuAnalysisOneSampleTestsClick(Sender: TObject); begin if OneSampleForm = nil then Application.CreateForm(TOneSampleForm, OneSampleForm); OneSampleForm.Show; end; { procedure TOS3MainFrm.FormClick(Sender: TObject); begin with TOptionsFrm.Create(nil) do try ShowModal; finally Free; end; (* if OptionsFrm = nil then Application.CreateForm(TOptionsFrm, OptionsFrm); OptionsFrm.ShowModal; *) end; } procedure TOS3MainFrm.DataGridKeyPress(Sender: TObject; var Key: char); var row, col : integer; begin NoVarsEdit.Text := IntToStr(DataGrid.ColCount-1); if ord(Key) = 13 then exit; col := DataGrid.Col; row := DataGrid.Row; if StrToInt(NoCasesEdit.Text) < row then begin NoCasesEdit.Text := IntToStr(row); NoCases := row; end; if DataGrid.Cells[0,row] = '' then begin NoCases := row; DataGrid.Cells[0,row] := 'CASE ' + IntToStr(row); end; if NoVariables < col then begin NoVariables := col; end; if ((PrevCol <> col) or (PrevRow <> row)) then if DataGrid.Cells[PrevCol,PrevRow] <> '' then FormatCell(PrevCol,PrevRow); PrevCol := col; PrevRow := row; end; procedure TOS3MainFrm.DataGridPrepareCanvas(sender: TObject; aCol, aRow: Integer; aState: TGridDrawState); var ts: TTextStyle; justif: String; begin if not (Sender = DataGrid) then exit; if aCol >= DictionaryFrm.DictGrid.RowCount then exit; ts := DataGrid.Canvas.TextStyle; justif := DictionaryFrm.DictGrid.Cells[7, aCol]; if justif = '' then justif := 'L'; case justif[1] of 'L': ts.Alignment := taLeftJustify; 'C': ts.Alignment := taCenter; 'R': ts.Alignment := taRightJustify; end; DataGrid.Canvas.Textstyle := ts; end; procedure TOS3MainFrm.DataGridKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); var x, y, v : integer; begin x := DataGrid.Row; y := DataGrid.Col; v := ord(Key); case v of 13 : begin // return key if y =DataGrid.ColCount - 1 then begin { DataGrid.ColCount := DataGrid.ColCount + 1; DataGrid.Col := y + 1;} end; end; 40 : begin // arrow down if x =DataGrid.RowCount - 1 then begin DataGrid.RowCount := DataGrid.RowCount + 1; DataGrid.Cells[0,x+1] := 'CASE ' + IntToStr(x+1); NoCasesEdit.Text := IntToStr(x+1); NoCases := DataGrid.RowCount - 1; DataGrid.SetFocus; end; end; end; RowEdit.Text := IntToStr(DataGrid.RowCount - 1); ColEdit.Text := IntToStr(DataGrid.ColCount - 1); if ((PrevCol <> y) or (PrevRow <> x)) then if DataGrid.Cells[PrevCol,PrevRow] <> '' then FormatCell(PrevCol,PrevRow); end; procedure TOS3MainFrm.DataGridClick(Sender: TObject); begin RowEdit.Text := IntToStr(DataGrid.Row); ColEdit.Text := IntToStr(DataGrid.Col); end; {$IFDEF USE_EXTERNAL_HELP_VIEWER} // Call HTML help (.chm file) function TOS3MainFrm.HelpHandler(Command: Word; Data: PtrInt; var CallHelp: Boolean): Boolean; {$IFDEF MSWINDOWS} var s: String; ws: UnicodeString; res: Integer; begin if Command = HELP_CONTEXT then begin // see: http://www.helpware.net/download/delphi/hh_doc.txt ws := UnicodeString(Application.HelpFile); res := htmlhelp.HtmlHelpW(0, PWideChar(ws), HH_HELP_CONTEXT, Data); // Data is HelpContext here end else if Command = HELP_COMMAND then begin s := {%H-}PChar(Data); // Data is pointer to HelpKeyword here, but the Windows help viewer does // not want the KeywordPrefix required for LHelp. if pos(HELP_KEYWORD_PREFIX + '/', s) = 1 then Delete(s, 1, Length(HELP_KEYWORD_PREFIX) + 1); ws := UnicodeString(Application.HelpFile + '::/' + s); res := htmlhelp.HtmlHelpW(0, PWideChar(ws), HH_DISPLAY_TOPIC, 0); end; // Don't call regular help CallHelp := False; Result := res <> 0; end; {$ELSE} begin Result := false; end; {$ENDIF} {$ENDIF} procedure TOS3MainFrm.Init; var i: integer; begin NoVariables := 0; // global variable for no. of variables (columns) NoCases := 0; // global variable for no. of cases (rows) TempStream := TMemoryStream.Create; // global variable (simulate clipboard) TempVarItm := TMemoryStream.Create; // global var. for dictionary clips FilterOn := false; // global variable = true when a filter variable selected DictLoaded := false; // global variable = true when a dictionary file read RowEdit.Text := '1'; ColEdit.Text := '1'; FileNameEdit.Text := 'TempFile.TAB'; FilterEdit.Text := 'OFF'; DataGrid.RowCount := 2; DataGrid.ColCount := 2; DataGrid.Cells[0,0] := 'CASE/VAR.'; DataGrid.Cells[0,1] := 'CASE ' + IntToStr(1); DataGrid.Cells[1,1] := ''; PrevRow := 1; PrevCol := 1; NoCasesEdit.Text := '0'; NoVarsEdit.Text := '0'; DictionaryFrm.DictGrid.RowCount := DictionaryFrm.DictGrid.FixedRows; for i := 1 to 500 do VarDefined[i] := false; DictionaryFrm.Init; { DictionaryFrm.Show; DictionaryFrm.ReturnBtnClick(self) ; DictionaryFrm.Hide; } NoVarsEdit.Text := IntToStr(DataGrid.ColCount-1); NoCasesEdit.Text := IntToStr(DataGrid.RowCount-1); ResetForms; end; // Menu "Edit" > "Copy Block of Cells" procedure TOS3MainFrm.mnuEditCopyCellsClick(Sender: TObject); begin CopyCellBlock; end; // Menu "Edit" > "Copy Column" procedure TOS3MainFrm.mnuEditCopyColClick(Sender: TObject); begin CopyColumn; end; // Menu "Edit" > "Copy Row" procedure TOS3MainFrm.mnuEditCopyRowClick(Sender: TObject); begin CopyRow; end; // Menu "Edit" > "Cut column" procedure TOS3MainFrm.mnuEditCutColClick(Sender: TObject); begin DeleteCol; end; // Menu "Edit" > "Cut row" procedure TOS3MainFrm.mnuEditCutRowClick(Sender: TObject); begin CutRow; end; // Menu "Edit" > "Insert new column" procedure TOS3MainFrm.mnuEditNewColClick(Sender: TObject); begin InsertCol; end; // Menu "Edit" > "Insert new row" procedure TOS3MainFrm.mnuEditNewRowClick(Sender: TObject); begin InsertRow; end; // Menu "Edit" > "Paste cell block" procedure TOS3MainFrm.mnuEditPasteCellsClick(Sender: TObject); begin PasteCellBlock; end; // Menu "Edit" > "Paste column" procedure TOS3MainFrm.mnuEditPasteColClick(Sender: TObject); begin PasteColumn; end; // Menu "Edit" > "Paste row" procedure TOS3MainFrm.mnuEditPasteRowClick(Sender: TObject); begin PasteRow; end; // Menu "File" > "Close" procedure TOS3MainFrm.mnuFileCloseClick(Sender: TObject); begin NoCases := 0; NoVariables := 0; Init; DataGrid.Cells[1, 0] := ''; end; // Menu "File" > "Exit" procedure TOS3MainFrm.mnuFileExitClick(Sender: TObject); begin Close; end; // Menu "File" > "Export" > "COMMA File" procedure TOS3MainFrm.mnuFileExportCSVClick(Sender: TObject); begin SaveCommaFile; end; // Menu "File" > "Export" > "SPACE File" procedure TOS3MainFrm.mnuFileExportSSVClick(Sender: TObject); begin SaveSpaceFile; end; // Menu "File" > "Export" > "TAB format" procedure TOS3MainFrm.mnuFileExportTabClick(Sender: TObject); begin SaveTabFile; end; // Menu "File" > "Import" > "COMMA File" procedure TOS3MainFrm.mnuFileImportCSVClick(Sender: TObject); begin OpenCommaFile; ResetForms; end; // Menu "File" > "Import" > "SPACE File" procedure TOS3MainFrm.mnuFileImportSSVClick(Sender: TObject); begin OpenSpaceFile; ResetForms; end; // Menu "File" > "Import" > "TAB File" procedure TOS3MainFrm.mnuFileImportTABClick(Sender: TObject); begin OpenTabFile; ResetForms; end; // Menu "File" > "New" procedure TOS3MainFrm.mnuFileNewClick(Sender: TObject); begin ClearGrid; ResetForms; end; // Menu "File" > "Open" procedure TOS3MainFrm.mnuFileOpenClick(Sender: TObject); begin if OpenOS2File then begin SaveOptions; ResetForms; end; end; // Menu "File" > "Save" procedure TOS3MainFrm.mnuFileSaveClick(Sender: TObject); begin SaveOS2File; SaveOptions; end; // Menu "Help" > "About" procedure TOS3MainFrm.mnuHelpAboutClick(Sender: TObject); begin ShowAboutBox; end; // Menu "Help" > "License" procedure TOS3MainFrm.mnuHelpLicenseClick(Sender: TObject); begin ShowLicense(false); end; // Menu "Help" > "Table of contents" procedure TOS3MainFrm.mnuHelpShowTOCClick(Sender: TObject); begin Application.HelpKeyword('html/TableofContents.htm'); // Application.HelpContext(mnuHelpShowTOC.HelpContext); end; // Menu "Help" > "Using the Grid" procedure TOS3MainFrm.mnuHelpUsingGridClick(Sender: TObject); begin if GridHelpfrm = nil then Application.CreateForm(TGridHelpFrm, GridHelpFrm); GridHelpFrm.ShowModal; end; // Menu "Options" > "Show options" procedure TOS3MainFrm.mnuOptions_ShowOptionsClick(Sender: TObject); begin with TOptionsFrm.Create(nil) do try ShowModal; finally Free; end; { if OptionsFrm = nil then Application.CreateForm(TOptionsFrm, OptionsFrm); OptionsFrm.ShowModal; } end; // Menu "Simulations" > "Bivariate Scatter Plot" procedure TOS3MainFrm.mnuSimBivarScatterPlotClick(Sender: TObject); begin if CorSimForm = nil then Application.CreateForm(TCorSimForm, CorSimForm); CorSimForm.Show; end; // Menu "Simulations" > "Chisquare Probability" procedure TOS3MainFrm.mnuSimChiSqProbClick(Sender: TObject); begin if ChiSqrProbForm = nil then Application.CreateForm(TChiSqrProbForm, ChiSqrProbForm); ChiSqrProbForm.ShowModal; end; // Menu "Simulations" > "Distribution Plots and Critical Values" procedure TOS3MainFrm.mnuSimDistPlotsClick(Sender: TObject); begin if DistribFrm = nil then Application.CreateForm(TDistribFrm, DistribFrm); DistribFrm.Show; end; // Menu "Simulations" > "F probability" procedure TOS3MainFrm.mnuSimFProbClick(Sender: TObject); begin if FForm = nil then Application.CreateForm(TFForm, FForm); FForm.ShowModal; end; // Menu "Simulations" > "Random Theoretical Values" procedure TOS3MainFrm.mnuSimGenerateRandomValuesClick(Sender: TObject); begin if GenRndValsFrm = nil then Application.CreateForm(TGenRndValsFrm, GenRndValsFrm); GenRndValsFrm.ShowModal; end; // Menu "Simulations" > "Generate Sequential Values" procedure TOS3MainFrm.mnuSimGenerateSeqValuesClick(Sender: TObject); begin if GenSeqFrm = nil then Application.CreateForm(TGenSeqFrm, GenSeqFrm); GenSeqFrm.ShowModal; end; // Menu "Simulations" > "Hypergeometric probability" procedure TOS3MainFrm.mnuSimHyperGeomProbClick(Sender: TObject); begin if HyperGeoForm = nil then Application.CreateForm(THyperGeoForm, HyperGeoForm); HyperGeoForm.Show; end; // Menu "Simulations" > "z for a given cum. Probability" procedure TOS3MainFrm.mnuSimInverseZClick(Sender: TObject); begin if InverseZForm = nil then Application.CreateForm(TInverseZForm, InverseZForm); InverseZForm.ShowModal; end; // Menu "Simulations" > "Multivariate Distribution" procedure TOS3MainFrm.mnuSimMultiVarDistsClick(Sender: TObject); begin if MultGenFrm = nil then Application.CreateForm(TMultGenFrm, MultGenFrm); MultGenFrm.ShowModal; end; // Menu "Simulations" > "mnuSimPowerCurves Curves for a z test" procedure TOS3MainFrm.mnuSimPowerCurvesClick(Sender: TObject); begin if PCurvesFrm = nil then Application.CreateForm(TPCurvesFrm, PCurvesFrm); PCurvesFrm.ShowModal; end; // Menu "Simulations" > "Prob between 2 z values" procedure TOS3MainFrm.mnuSimProbBetweenClick(Sender: TObject); begin if TwoZProbForm = nil then Application.CreateForm(TTwoZProbForm, TwoZProbForm); TwozProbForm.ShowModal; end; // Menu "Simulations" > "Probability > z" procedure TOS3MainFrm.mnuSimProbGreaterZClick(Sender: TObject); begin if ProbzForm = nil then Application.CreateForm(TProbZForm, ProbZForm); ProbzForm.ShowModal; end; // Menu "Simulations" > "Probability < z" procedure TOS3MainFrm.mnuSimProbLessZClick(Sender: TObject); begin if ProbSmallerZForm = nil then Application.CreateForm(TProbSmallerZForm, ProbSmallerZForm); ProbSmallerzForm.ShowModal; end; // Menu "Simulations" > "Student t probability" procedure TOS3MainFrm.mnuSimStudentTProbClick(Sender: TObject); begin if TProbForm = nil then Application.CreateForm(TTProbForm, TProbForm); TprobForm.ShowModal; end; // Menu "Simulations" > "Type 1 and Type 2 Error Curves" procedure TOS3MainFrm.mnuSimTypeErrorCurvesClick(Sender: TObject); begin if ErrorCurvesFrm = nil then Application.CreateForm(TErrorCurvesFrm, ErrorCurvesFrm); ErrorCurvesFrm.ShowModal; end; // Menu "Tools" > "Calculator" procedure TOS3MainFrm.mnuToolsCalculatorClick(Sender: TObject); begin if CalculatorForm = nil then Application.CreateForm(TCalculatorForm, CalculatorForm); CalculatorForm.ShowModal; end; // Menu "Tools" > "Format grid" procedure TOS3MainFrm.mnuToolsFormatGridClick(Sender: TObject); begin DataProcs.FormatGrid; end; // Menu "Tools" > "JPEG Image Viewer" procedure TOS3MainFrm.mnuToolsJPEGViewerClick(Sender: TObject); begin if JPEGForm = nil then Application.CreateForm(TJPEGForm, JPEGForm); JPEGForm.ShowModal; end; // Menu "Tools" > "Show Output Form" procedure TOS3MainFrm.mnuToolsOutputFormClick(Sender: TObject); begin if OutputFrm = nil then Application.CreateForm(TOutputFrm, OutputFrm); OutputFrm.ShowModal; end; // Menu "Tools" > "Print grid" procedure TOS3MainFrm.mnuToolsPrintGridClick(Sender: TObject); var lReport: TStrings; begin lReport := TStringList.Create; try PrintData(lReport); finally lReport.Free; end; end; // Menu "Tools" > "Select cases" procedure TOS3MainFrm.mnuToolsSelectCasesClick(Sender: TObject); begin if SelectFrm = nil then Application.CreateForm(TSelectFrm, SelectFrm); SelectFrm.ShowModal; end; // Menu "Tools" > "Smooth Data in a Variable" procedure TOS3MainFrm.mnuToolsSmoothClick(Sender: TObject); begin if SmoothDataForm = nil then Application.CreateForm(TSmoothDataForm, SmoothDataForm); SmoothDataForm.ShowModal; end; // Menu "Tools" > "Sort Cases" procedure TOS3MainFrm.mnuToolsSortCasesClick(Sender: TObject); begin if SortCasesFrm = nil then Application.CreateForm(TSortCasesFrm, SortCasesFrm); SortCasesFrm.ShowModal; end; // Menu "Tools" > "Convert strings to integer codes" procedure TOS3MainFrm.mnuToolsStrToIntClick(Sender: TObject); var results, prompt: boolean; col: integer; begin col := DataGrid.Col; DataGrid.Row := 1; prompt := true; results := DataProcs.StringsToInt(col,col, prompt); DataGrid.Col := col; if not results then DeleteCol; end; // Menu "Tools" > "Change English to European or vice versa" procedure TOS3MainFrm.mnuToolsSwapDecTypeClick(Sender: TObject); var i, j, k: integer; newDecSep: Char; cellStr: String; begin case Options.FractionType of ftPoint: newDecSep := ','; // Current type is English - switch to European ftComma: newDecSep := '.'; // Current type is European - switch to English end; for i := 1 to DataGrid.RowCount-1 do for j := 1 to DataGrid.ColCount - 1 do begin cellstr := DataGrid.Cells[j,i]; for k := 1 to Length(cellStr) do if cellstr[k] = DefaultFormatSettings.DecimalSeparator then cellstr[k] := newDecSep; DataGrid.Cells[j,i] := cellstr; end; end; // Menu "Tools" > "Swap Rows and Columns of Grid" procedure TOS3MainFrm.mnuToolsSwapRowsColsClick(Sender: TObject); begin RowColSwap; end; // Menu "Variables" > "Define ..." procedure TOS3MainFrm.mnuVariablesDefineClick(Sender: TObject); begin if DictionaryFrm = nil then Application.CreateForm(TDictionaryFrm, DictionaryFrm); DictionaryFrm.ShowModal; end; // Menu "Variables" > "Equation Editor" procedure TOS3MainFrm.mnuVariablesEquationEditorClick(Sender: TObject); begin if EquationForm = nil then Application.CreateForm(TEquationForm, EquationForm); EquationForm.ShowModal; end; // Menu "Variables" > "Print Definitions" procedure TOS3MainFrm.mnuVariablesPrintDefsClick(Sender: TObject); var lReport: TStrings; begin lReport := TStringList.Create; try PrintDict(lReport); DisplayReport(lReport); finally lReport.Free; end; end; // Menu "Variables" > "Recode Variables" procedure TOS3MainFrm.mnuVariablesRecodeClick(Sender: TObject); begin if RecodeFrm = nil then Application.CreateForm(TRecodeFrm, RecodeFrm); RecodeFrm.ShowModal; end; // Menu "Variables" > "Transform Variables" procedure TOS3MainFrm.mnuVariablesTransformClick(Sender: TObject); var err: string; begin try if TransFrm = nil then Application.CreateForm(TTransFrm, TransFrm); TransFrm.ShowModal; except err := 'Error in showing transformations'; ErrorMsg(err); end; end; // Menu "Analysis" > "Nonparametric" > "General Linear Model" procedure TOS3MainFrm.mnuAnalysisComp_GLMClick(Sender: TObject); begin if GLMFrm = nil then Application.CreateForm(TGLMFrm, GLMFrm); GLMFrm.ShowModal; end; (* replaced by ShowTOC // Menu "Help" > "General Help" procedure TOS3MainFrm.HelpContentsClick(Sender: TObject); begin if HelpFrm = nil then Application.CreateForm(THelpFrm, HelpFrm); HelpFrm.ShowModal; end; *) procedure TOS3MainFrm.mnuAnalysisNonPar_KSTestClick(Sender: TObject); begin if CompareDistFrm = nil then Application.CreateForm(TCompareDistFrm, CompareDistFrm); CompareDistFrm.ShowModal; end; procedure TOS3MainFrm.MatManMnuClick(Sender: TObject); begin if MatManFrm = nil then Application.CreateForm(TMatManFrm, MatManFrm); MatManFrm.ShowModal; end; // Menu "Analysis" > "Multivariate" > "Median Polishing for a 2x2 Table". procedure TOS3MainFrm.mnuAnalysisMulti_MedianPolishClick(Sender: TObject); begin if MedianPolishForm = nil then Application.CreateForm(TMedianPolishForm, MedianPolishForm); MedianPolishForm.ShowModal; end; // Menu "Analysis" > "Financial" > "Loan Amortization Schedule" procedure TOS3MainFrm.mnuAnalysisFinancial_LoanAmortClick(Sender: TObject); begin if LoanItForm = nil then Application.CreateForm(TLoanItForm, LoanItForm); LoanItForm.Show; end; { "Correlation" commands } // Menu "Correlation" > "Product-Moment" procedure TOS3MainFrm.mnuAnalysisCorr_ProductMomentClick(Sender: TObject); begin if RMatForm = nil then Application.CreateForm(TRMatForm, RMatForm); RMatForm.Show; end; // Menu "Correlation" > "Partial, Semipartial" procedure TOS3MainFrm.mnuAnalysisCorr_PartialClick(Sender: TObject); begin if PartialsForm = nil then Application.CreateForm(TPartialsForm, PartialsForm); PartialsForm.Show; end; // Menu "Correlation" > "Autocorrelation" procedure TOS3MainFrm.mnuAnalysisCorr_AutoCorrClick(Sender: TObject); begin if AutoCorrForm = nil then Application.CreateForm(TAutoCorrForm, AutoCorrForm); AutocorrForm.Show; end; // Menu "Correlation" > "Canonical" procedure TOS3MainFrm.mnuAnalysisCorr_CanonicalClick(Sender: TObject); begin if CanonicalForm = nil then Application.CreateForm(TCanonicalForm, CanonicalForm); CanonicalForm.Show; end; { "Cross-classification" commands } // Menu "Analysis" > "Cross-classification" > "AxB Log Linear" procedure TOS3MainFrm.mnuAnalysisCC_ABLogLinClick(Sender: TObject); begin if TwoWayLogLinForm = nil then Application.CreateForm(TTwoWayLogLinForm, TwoWayLogLinForm); TwoWayLogLinForm.Show; end; // Menu "Analysis" > "Cross-Classification" > "AxBxC Log Linear" procedure TOS3MainFrm.mnuAnalysisCC_ABCLogLinClick(Sender: TObject); begin if ABCLogLinearForm = nil then Application.CreateForm(TABCLogLinearForm, ABCLogLinearForm); ABCLogLinearForm.Show; end; // Menu "Analysis" > "Cross-classification" > "Log Linear Screen" procedure TOS3MainFrm.mnuAnalysisCC_LogLinScreenClick(Sender: TObject); begin if LogLinScreenForm = nil then Application.CreateForm(TLogLinScreenForm, LogLinScreenForm); LogLinScreenForm.Show; end; { "Measurement Programs" commands } // Menu "Analysis" > "Measurement Programs" > "Generate Sample Test Data" procedure TOS3MainFrm.mnuAnalysisMeas_SampleDataClick(Sender: TObject); begin if TestGenFrm = nil then Application.CreateForm(TTestGenFrm, TestGenFrm); TestGenFrm.ShowModal; end; // Menu "Analysis" > "Measurement Programs" > "Classical Test Analysis" procedure TOS3MainFrm.mnuAnalysisMeas_ClassicalClick(Sender: TObject); begin if TestScoreForm = nil then Application.CreateForm(TTestScoreForm, TestScoreForm); TestScoreForm.Show; end; // Menu "Analysis" > "Measurement Programs" > "Rasch Test Calibration" procedure TOS3MainFrm.mnuAnalysisMeas_RashClick(Sender: TObject); begin if RaschForm = nil then Application.CreateForm(TRaschForm, RaschForm); RaschForm.Show; end; // Menu "Analysis" > "Measurement Programs" > "Successive Interval Scaling" procedure TOS3MainFrm.mnuAnalysisMeas_IntervalClick(Sender: TObject); begin if SuccIntFrm = nil then Application.CreateForm(TSuccIntFrm, SuccIntFrm); SuccIntFrm.Show; end; // Menu "Analysis" > "Measurement Programs" > "Guttman Scalogram Analysis procedure TOS3MainFrm.mnuAnalysisMeas_GuttmanClick(Sender: TObject); begin if GuttmanForm = nil then Application.CreateForm(TGuttmanForm, GuttmanForm); GuttmanForm.Show; end; // Menu "Analysis" > "Measurement Programs" > "Weighted Composite Reliability" procedure TOS3MainFrm.mnuAnalysisMeas_CompositeClick(Sender: TObject); begin if CompRelForm = nil then Application.CreateForm(TCompRelForm, CompRelForm); CompRelForm.Show; end; // Menu "Analysis" > "Measurement Programs" > "Kuder-Richardson #21 Reliability" procedure TOS3MainFrm.mnuAnalysisMeas_KR21Click(Sender: TObject); begin if KR21Frm = nil then Application.CreateForm(TKR21Frm, KR21Frm); KR21Frm.ShowModal; end; // Menu "Analysis" > "Measurement Programs" > "Spearman-Brown Prophecy Reliability" procedure TOS3MainFrm.mnuAnalysisMeas_SpearmanClick(Sender: TObject); begin if SpBrFrm = nil then Application.CreateForm(TSpBrFrm, SpBrFrm); SpBrFrm.ShowModal; end; // Menu "Analysis" > "Measurement Programs" > "Grade Book" procedure TOS3MainFrm.mnuAnalysisMeas_GradeBookClick(Sender: TObject); begin if GradeBookFrm = nil then Application.CreateForm(TGradeBookFrm, GradeBookFrm); GradebookFrm.ShowModal; end; // Menu "Analysis" > "Measurement Programs" > "Item Banking" procedure TOS3MainFrm.mnuAnalysisMeas_ItemBankingClick(Sender: TObject); begin if ItemBankFrm = nil then Application.CreateForm(TItemBankFrm, ItembankFrm); ItemBankFrm.ShowModal; end; // Menu "Analysis" > "Measurement Programs" > "Reliability Due to Test Variance Change" procedure TOS3MainFrm.mnuAnalysisMeas_VarChangeClick(Sender: TObject); begin if RelChangeFrm = nil then Application.CreateForm(TRelChangeFrm, RelChangeFrm); RelChangeFrm.ShowModal; end; // Menu "Analysis" > "Measurement Programs" > "Differential Item Functioning" procedure TOS3MainFrm.mnuAnalysisMeas_DifferentialClick(Sender: TObject); begin if DIFFrm = nil then Application.CreateForm(TDIFFrm, DIFFrm); DIFFrm.ShowModal; end; // Menu "Analysis" > "Measurement Programs" > "Polytomous DIF Analysis" procedure TOS3MainFrm.mnuAnalysisMeas_PolytomousClick(Sender: TObject); begin if PolyDIFFrm = nil then Application.CreateForm(TPolyDIFFrm, PolyDIFFrm); PolyDIFFrm.ShowModal; end; { "Nonparametric" commands } // Menu "Analysis" > "Nonparametric" > "Contingency Chi Square" procedure TOS3MainFrm.mnuAnalysisNonPar_ContingChiSqClick(Sender: TObject); begin if ChiSqrForm = nil then Application.CreateForm(TChiSqrForm, ChiSqrForm); ChiSqrForm.Show; end; // Menu "Analysis" > "Nonparametric" > "Spearman Rank Correlation" procedure TOS3MainFrm.mnuAnalysisNonPar_SpearmanClick(Sender: TObject); begin if SpearmanForm = nil then Application.CreateForm(TSpearmanForm, SpearmanForm); SpearmanForm.Show; end; // Menu "Analysis" > "Nonparametric" > "Mann-Whitney U Test" procedure TOS3MainFrm.mnuAnalysisNonPar_MannWhitneyClick(Sender: TObject); begin if MannWhitUForm = nil then Application.CreateForm(TMannWhitUForm, MannWhitUForm); MannWhitUForm.Show; end; // Menu "Analysis" > "Nonparametric" > "Fisher's Exact Text" procedure TOS3MainFrm.mnuAnalysisNonPar_FisherClick(Sender: TObject); begin if FisherForm = nil then Application.CreateForm(TFisherForm, FisherForm); FisherForm.Show; end; // Menu "Analysis" > "Nonparametric" > "Kendall's Coefficient of Concordance" procedure TOS3MainFrm.mnuAnalysisNonPar_KendallClick(Sender: TObject); begin if ConcordForm = nil then Application.CreateForm(TConcordForm, ConcordForm); ConcordForm.Show; end; // Menu "Analysis" > "Nonparametric" > "Kruskal-Wallis One-Way mnuAnalysisComp_Anova" procedure TOS3MainFrm.mnuAnalysisNonPar_KruskalWallisClick(Sender: TObject); begin if KWAnovaForm = nil then Application.CreateForm(TKWAnovaForm, KWAnovaForm); KWAnovaForm.Show; end; // Menu "Analysis" > "Nonparametric" > "Matched Pairs Signed Ranks Test" procedure TOS3MainFrm.mnuAnalysisNonPar_WilcoxonClick(Sender: TObject); begin if WilcoxonForm = nil then Application.CreateForm(TWilcoxonForm, WilcoxonForm); WilcoxonForm.Show; end; // Menu "Analysis" > "Nonparametric" > "Cochran Q Test" procedure TOS3MainFrm.mnuAnalysisNonPar_CochranClick(Sender: TObject); begin if CochranQForm = nil then Application.CreateForm(TCochranQForm, CochranQForm); CochranQForm.Show; end; // Menu "Analysis" > "Nonparametric" > "Sign Test" procedure TOS3MainFrm.mnuAnalysisNonPar_SignTestClick(Sender: TObject); begin if SignTestFrm = nil then Application.CreateForm(TSignTestFrm, SignTestFrm); SignTestFrm.Show; end; // Menu "Analysis" > "Nonparametric" > "Friedman Two-Way mnuAnalysisComp_Anova" procedure TOS3MainFrm.mnuAnalysisNonPar_FriedmanClick(Sender: TObject); begin if FriedmanFrm = nil then Application.CreateForm(TFriedmanFrm, FriedmanFrm); FriedmanFrm.Show; end; // Menu "Analysis" > "Nonparametric" > "Probability of a Binomial Event" procedure TOS3MainFrm.mnuAnalysisNonPar_BinomialClick(Sender: TObject); begin if BinomialForm = nil then Application.CreateForm(TBinomialForm, BinomialForm); BinomialForm.Show; end; // Menu "Analysis" > "Nonparametric" > Kendall's Tau and Partial Tau" procedure TOS3MainFrm.mnuAnalysisNonPar_TauClick(Sender: TObject); begin if KendallTauForm = nil then Application.CreateForm(TKendallTauForm, KendallTauForm); KendallTauForm.Show; end; // Menu "Analysis" > "Nonparametric" > "Kaplan-Meier Survival Analysis" procedure TOS3MainFrm.mnuAnalysisNonPar_SurvivalClick(Sender: TObject); begin if KaplanMeierForm = nil then Application.CreateForm(TKaplanMeierForm, KaplanMeierForm); KaplanMeierForm.Show; end; // Menu "Analysis" > "Nonparametric" > "RIDIT Analysis" procedure TOS3MainFrm.mnuAnalysisNonPar_RIDITClick(Sender: TObject); begin if RIDITForm = nil then Application.CreateForm(TRIDITForm, RIDITForm); RIDITForm.Show; end; // Menu "Analysis" > "Nonparametric" > "Runs Test for Normality" procedure TOS3MainFrm.mnuAnalysisNonPar_RunsTestClick(Sender: TObject); begin if RunsTestForm = nil then Application.CreateForm(TRunsTestForm, RunsTestForm); RunsTestForm.Show; end; // Menu "Analysis" > "Nonparametric" > "mnuAnalysisNonPar_Sens's Slope Analysis" procedure TOS3MainFrm.mnuAnalysisNonPar_SensClick(Sender: TObject); begin if SensForm = nil then Application.CreateForm(TSensForm, SensForm); SensForm.Show; end; // Menu "Analysis" > "Nonparametric" > "Simple Chi Square for Categories" procedure TOS3MainFrm.mnuAnalysisNonPar_SimpleChiSqClick(Sender: TObject); begin if SimpleChiSqrForm = nil then Application.CreateForm(TSimpleChiSqrForm, SimpleChiSqrForm); SimpleChiSqrForm.Show; end; // Menu "Analysis" > "Nonparametric" > "Schreier-Ray-Hare Two-Way ANOVA" procedure TOS3MainFrm.mnuAnalysisNonPar_SRHClick(Sender: TObject); begin if SRHTestForm = nil then Application.CreateForm(TSRHTestForm, SRHTestForm); SRHTestForm.Show; end; // Menu "Analysis" > "Nonparametric" > "Generalized Kappa" procedure TOS3MainFrm.mnuAnalysisNonPar_GenKappaClick(Sender: TObject); begin if GenKappaFrm = nil then Application.CreateForm(TGenKappaFrm, GenKappaFrm); GenKappaFrm.ShowModal; end; // Menu "Analysis" > "Nonparametric" > "Kappa and Weighted Kappa" procedure TOS3MainFrm.mnuAnalysisNonPar_WeightedKappaClick(Sender: TObject); begin if WeightedKappaFrm = nil then Application.CreateForm(TWeightedKappaFrm, WeightedKappaFrm); WeightedKappaFrm.ShowModal; end; // Menu "Analysis" > "Nonparametric" > "Life table" procedure TOS3MainFrm.mnuAnalysisNonPar_LifeTableClick(Sender: TObject); begin if LifeTableForm = nil then Application.CreateForm(TLifeTableForm, LifeTableForm); LifeTableForm.ShowModal; end; { Comparisons commands } // Menu "Analysis" > "Comparisons" > "1,2 or 3 Way ANOVAs" procedure TOS3MainFrm.mnuAnalysisComp_AnovaClick(Sender: TObject); begin if BlksAnovaForm = nil then Application.CreateForm(TBlksAnovaForm, BlksAnovaForm); BlksAnovaForm.Show; end; // Menu "Analysis" > "Comparisons" > "A x B x S Anova" procedure TOS3MainFrm.mnuAnalysisComp_ABSAnovaClick(Sender: TObject); begin if ABRAnovaForm = nil then Application.CreateForm(TABRAnovaForm, ABRAnovaForm); ABRAnovaForm.Show; end; // Menu "Analysis" > "Comparisons" > "Ancova by Regression" procedure TOS3MainFrm.mnuAnalysisComp_AncovaClick(Sender: TObject); begin if AncovaForm = nil then Application.CreateForm(TAncovaForm, AncovaForm); AncovaForm.Show; end; // Menu "Analysis" > "Comparisons" > "A x S Anova" procedure TOS3MainFrm.mnuAnalysisComp_AxSAnovaClick(Sender: TObject); begin if AxSAnovaForm = nil then Application.CreateForm(TAxSAnovaForm, AxSAnovaForm); AxSAnovaForm.Show; end; // Menu "Analysis" > "Comparisons" > "B Nested in A Anova" procedure TOS3MainFrm.mnuAnalysisComp_BinAClick(Sender: TObject); begin if BNestedAForm = nil then Application.CreateForm(TBNestedAForm, BNestedAForm); BNestedAForm.Show; end; // Menu "Analysis" > "Comparisons" > "Difference Between Correlations" procedure TOS3MainFrm.mnuAnalysisComp_CorrDiffClick(Sender: TObject); begin if TwoCorrsForm = nil then Application.CreateForm(TTwoCorrsForm, TwoCorrsForm); TwoCorrsForm.Show; end; // Menu "Analysis" > "Comparisons" > "Latin and Greco-Latin Squares" procedure TOS3MainFrm.mnuAnalysisComp_LatinSquaresClick(Sender: TObject); begin if LatinSqrsForm = nil then Application.CreateForm(TLatinSqrsForm, LatinSqrsForm); LatinSqrsForm.Show; end; // Menu "Analysis" > "Comparisons" > "ABC Anova with B Nested in A" procedure TOS3MainFrm.mnuAnalysisComp_NestedABCClick(Sender: TObject); begin if ABCNestedForm = nil then Application.CreateForm(TABCNestedForm, ABCNestedForm); ABCNestedForm.Show; end; // Menu "Analysis" > "Comparisons" > "2 or 3 Way Anova with One Case Per Cell" procedure TOS3MainFrm.mnuAnalysisComp_OneCaseAnovaClick(Sender: TObject); begin if OneCaseAnovaForm = nil then Application.CreateForm(TOneCaseAnovaForm, OneCaseAnovaForm); OneCaseAnovaForm.Show; end; // Menu "Analysis" > "Comparisons" > "Difference beween Proportions" procedure TOS3MainFrm.mnuAnalysisComp_PropDiffClick(Sender: TObject); begin if TwoPropForm = nil then Application.CreateForm(TTwoPropForm, TwoPropForm); TwoPropForm.Show; end; // Menu "Analysis" > "Comparisons" > "t-tests" procedure TOS3MainFrm.mnuAnalysisComp_tTestsClick(Sender: TObject); begin if TTestForm = nil then Application.CreateForm(TTTestForm, TTestForm); TTestForm.Show; end; // Menu "Analysis" > "Comparisons" > "Within Subjects Anova" procedure TOS3MainFrm.mnuAnalysisComp_WithinAnovaClick(Sender: TObject); begin if WithinANOVAFrm = nil then Application.CreateForm(TWithinANOVAFrm, WithinANOVAFrm); WithinAnovaFrm.ShowModal; end; { Descriptive statistics commands } // Menu "Analysis" > "Descriptive" > "Box Plot" procedure TOS3MainFrm.mnuAnalysisDescr_BoxPlotClick(Sender: TObject); begin if BoxPlotFrm = nil then Application.CreateForm(TBoxPlotFrm, BoxPlotFrm); BoxPlotFrm.Show; end; // Menu "Analysis" > "Descriptive" > "mnuAnalysisDescr_Breakdown" procedure TOS3MainFrm.mnuAnalysisDescr_BreakdownClick(Sender: TObject); begin if BreakDownFrm = nil then Application.CreateForm(TBreakDownFrm, BreakDownFrm); BreakDownFrm.Show; end; // Menu "Analysis" > "Descriptive" > "Repeated Measures Bubble Plot" procedure TOS3MainFrm.mnuAnalysisDescr_BubblePlotClick(Sender: TObject); begin if BubbleForm = nil then Application.CreateForm(TBubbleForm, BubbleForm); BubbleForm.Show; end; // Menu "Analysis" > "Descriptive" > "Compare mnuAnalysisDescr_DistribStats" procedure TOS3MainFrm.mnuAnalysisDescr_CompareDistsClick(Sender: TObject); begin if CompareDistFrm = nil then Application.CreateForm(TCompareDistFrm, CompareDistFrm); CompareDistFrm.Show; end; // Menu "Analysis" > "Descriptive" > "Cross tabulation" procedure TOS3MainFrm.mnuAnalysisDescr_CrossTabsClick(Sender: TObject); begin if CrossTabFrm = nil then Application.CreateForm(TCrossTabFrm, CrossTabFrm); CrossTabFrm.Show; end; // Menu "Analysis" > "Descriptive" > "Data Smoothing" procedure TOS3MainFrm.mnuAnalysisDescr_DataSmoothClick(Sender: TObject); begin if DataSmoothingForm = nil then Application.CreateForm(TDataSmoothingForm, DataSmoothingForm); DataSmoothingForm.Show; end; // Menu "Analysis" > "Descriptive" > "Distribution Statistics" procedure TOS3MainFrm.mnuAnalysisDescr_DistribStatsClick(Sender: TObject); begin if DescriptiveFrm = nil then Application.CreateForm(TDescriptiveFrm, DescriptiveFrm); DescriptiveFrm.Show; end; // Menu "Analysis" > "Descriptive" > "Frequency Analysis" procedure TOS3MainFrm.mnuAnalysisDescr_FreqClick(Sender: TObject); begin if FreqFrm = nil then Application.CreateForm(TFreqFrm, FreqFrm); FreqFrm.Show; end; // Menu "Analysis" > "Descriptive" > "Plot Group Frequencies" procedure TOS3MainFrm.mnuAnalysisDescr_GrpFreqClick(Sender: TObject); begin if GroupFreqForm = nil then Application.CreateForm(TGroupFreqForm, GroupFreqForm); GroupFreqForm.Show; 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.Show; end; // Menu "Analysis" > "Descriptive" > "Plot X vs Y" procedure TOS3MainFrm.mnuAnalysisDescr_PlotXvsYClick(Sender: TObject); begin if PlotXYForm = nil then Application.CreateForm(TPlotXYForm, PlotXYForm); PlotXYForm.Show; end; procedure TOS3MainFrm.mnuAnalysisDescr_ResistanceLineClick(Sender: TObject); begin if ResistanceLineForm = nil then Application.CreateForm(TResistanceLineForm, ResistanceLineForm); ResistanceLineForm.Show; end; // Menu "Analysis" > "Descriptive" > "Stem and Leaf Plot" procedure TOS3MainFrm.mnuAnalysisDescr_StemLeafClick(Sender: TObject); begin if StemLeafForm = nil then Application.CreateForm(TStemLeafForm, StemLeafForm); StemLeafForm.Show; end; // Menu "Analysis" > "Descriptive" > "3-D Variable Rotation" procedure TOS3MainFrm.mnuAnalysisDescr_ThreeDRotateClick(Sender: TObject); begin if Rot3DFrm = nil then Application.CreateForm(TRot3DFrm, Rot3DFrm); Rot3DFrm.Show; 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.Show; end; { Multiple regression commands } // Menu "Analysis" > "Multiple Regression" > "Backward Stepwise" procedure TOS3MainFrm.mnuAnalysisMultReg_BackwardClick(Sender: TObject); begin if BackRegForm = nil then Application.CreateForm(TBackRegForm, BackRegForm); BackRegForm.Show; end; // Menu "Analysis" > "Multiple Regression" > "Best Combination" procedure TOS3MainFrm.mnuAnalysisMultReg_BestCombClick(Sender: TObject); begin if BestRegForm = nil then Application.CreateForm(TBestRegForm, BestRegForm); BestRegForm.Show; end; // Menu "Analysis" > "Multiple Regression" > "Binary Logistic" procedure TOS3MainFrm.mnuAnalysisMultReg_BinLogisticClick(Sender: TObject); begin if LogRegForm = nil then Application.CreateForm(TLogRegForm, LogRegForm); LogRegForm.Show; end; // Menu "Analysis" > "Multiple Regression" > "Block Entry" procedure TOS3MainFrm.mnuAnalysisMultReg_BlockEntryClick(Sender: TObject); begin if BlkMregForm = nil then Application.CreateForm(TBlkMregForm, BlkMregForm); BlkMregForm.Show; end; // Menu "Analysis" > "Multiple Regression" > "Cox Proportional Hazzards Survival Regression" procedure TOS3MainFrm.mnuAnalysisMultReg_CoxSurvivalClick(Sender: TObject); begin if CoxRegForm = nil then Application.CreateForm(TCoxRegForm, CoxRegForm); CoxRegForm.Show; end; // Menu "Analysis" > "Multiple Regression" > "Forward Stepwise" procedure TOS3MainFrm.mnuAnalysisMultReg_ForwardClick(Sender: TObject); begin if StepFwdForm = nil then Application.CreateForm(TStepFwdForm, StepFwdForm); StepFwdForm.Show; end; // Menu "Analysis" > "Multiple Regression" > "Linear Programming" procedure TOS3MainFrm.mnuAnalysisMultReg_LinProgClick(Sender: TObject); begin if LinProForm = nil then Application.CreateForm(TLinProForm, LinProForm); LinProForm.Show; end; // Menu "Analysis" > "Multiple Regression" > "Least Squares Multiple Regression" procedure TOS3MainFrm.mnuAnalysisMultReg_LSMRClick(Sender: TObject); begin if LSMRegForm = nil then Application.CreateForm(TLSMregForm, LSMregForm); LSMregForm.Show; end; // Menu "Analysis" > "Multiple Regression" > "Simultaneous" procedure TOS3MainFrm.mnuAnalysisMultReg_SimultClick(Sender: TObject); begin if SimultForm = nil then Application.CreateForm(TSimultForm, SimultForm); SimultForm.Show; end; // Menu "Analysis" > "Multiple Regression" > "Two Stage Least Squares Regression" procedure TOS3MainFrm.mnuAnalysisMultReg_TwoStageClick(Sender: TObject); begin if TwoSLSForm = nil then Application.CreateForm(TTwoSLSForm, TwoSLSForm); TwoSLSForm.Show; end; // Menu "Analysis" > "Multiple Regression" > "Weighted Least Squares Regression" procedure TOS3MainFrm.mnuAnalysisMultReg_WeightedClick(Sender: TObject); begin if WLSForm = nil then Application.CreateForm(TWLSForm, WLSForm); WLSForm.Show; end; { Multivariate commands } // Menu "Analysis" > "Multivariate" > "Bartlett Test of Sphericity" procedure TOS3MainFrm.mnuAnalysisMulti_BartlettClick(Sender: TObject); begin if BartlettTestForm = nil then Application.CreateForm(TBartlettTestForm, BartlettTestform); BartlettTestForm.Show; end; // Menu "Analysis" > "Multivariate" > "mnuAnalysisMulti_Correspondence Analysis" procedure TOS3MainFrm.mnuAnalysisMulti_CorrespondenceClick(Sender: TObject); begin if CorrespondenceForm = nil then Application.CreateForm(TCorrespondenceForm, CorrespondenceForm); CorrespondenceForm.ShowModal; end; // Menu" "Analysis" > "Multivariate" > "Average Link Clustering" procedure TOS3MainFrm.mnuAnalysisMulti_AvgLinkClick(Sender: TObject); begin if AvgLinkFrm = nil then Application.CreateForm(TAvgLinkFrm, AvgLinkFrm); AvgLinkFrm.ShowModal; end; // Menu "Analysis" > "Multivariate" > "K Means Clustering" procedure TOS3MainFrm.mnuAnalysisMulti_KMeansClick(Sender: TObject); begin if KMeansForm = nil then Application.CreateForm(TKMeansForm, KMeansForm); KMeansForm.Show; end; // Menu "Analysis" > "Multivariate" > "Single Link Clustering" procedure TOS3MainFrm.mnuAnalysisMulti_SingleLinkClick(Sender: TObject); begin if SingleLinkForm = nil then Application.CreateForm(TSingleLinkForm, SingleLinkForm); SingleLinkForm.Show; end; // Menu "Analysis" > "Multivariate" > "MANOVA / Discriminant Function" procedure TOS3MainFrm.mnuAnalysisMulti_MANOVAClick(Sender: TObject); begin if DiscrimFrm = nil then Application.CreateForm(TDiscrimFrm, DiscrimFrm); DiscrimFrm.ShowModal; end; // Menu "Analysis" > "Multivariate" > "Hierarchical Analysis" procedure TOS3MainFrm.mnuAnalysisMulti_HierarchicalClick(Sender: TObject); begin if HierarchForm = nil then Application.CreateForm(THierarchForm, HierarchForm); HierarchForm.Show; end; // Menu "Analysis" > "Multivariate" > "Path analysis" procedure TOS3MainFrm.mnuAnalysisMulti_PathClick(Sender: TObject); begin if PathFrm = nil then Application.CreateForm(TPathFrm, PathFrm); PathFrm.ShowModal; end; // Menu "Analysis" > "Multivariate" > "Factor analysis" procedure TOS3MainFrm.mnuAnalysisMulti_FactorClick(Sender: TObject); begin if FactorFrm = nil then Application.CreateForm(TFactorFrm, FactorFrm); FactorFrm.ShowModal; end; procedure TOS3MainFrm.mnuAnalysisMulti_CanonicalClick(Sender: TObject); begin if CanonicalForm = nil then Application.CreateForm(TCanonicalForm, CanonicalForm); CanonicalForm.Show; end; // Menu "Analysis" > "Multivariate" > "Generalized Kappa" procedure TOS3MainFrm.mnuAnalysisMulti_GLMClick(Sender: TObject); begin if GLMFrm = nil then Application.CreateForm(TGLMFrm, GLMFrm); GLMFrm.ShowModal; end; { SPC commands } // Menu "Analysis" > "Statistical Process Control" > "Defect (nonconformity) c Chart" procedure TOS3MainFrm.mnuAnalysisSPC_CChartClick(Sender: TObject); begin if CChartForm = nil then Application.CreateForm(TCChartForm, CChartForm); CChartForm.Show; end; // Menu "Analysis" > "Statistical Process Control" > "CUSUM Chart" procedure TOS3MainFrm.mnuAnalysisSPC_CUSUMClick(Sender: TObject); begin if CUSUMChartForm = nil then Application.CreateForm(TCUSUMChartForm, CUSUMChartForm); CUSUMChartForm.Show; end; // Menu "Analysis" > "Statistical Process Control" > "p Control Chart" procedure TOS3MainFrm.mnuAnalysisSPC_PChartClick(Sender: TObject); begin if PChartForm = nil then Application.CreateForm(TPChartForm, PChartForm); PChartForm.Show; end; // Menu "Analysis" > "Statistical Process Control" > "Range Chart" procedure TOS3MainFrm.mnuAnalysisSPC_RangeClick(Sender: TObject); begin if RChartForm = nil then Application.CreateForm(TRChartForm, RChartForm); RChartForm.Show; end; // Menu "Analysis" > "Statistical Process Control" > "S Control Chart" procedure TOS3MainFrm.mnuAnalysisSPC_SChartClick(Sender: TObject); begin if SChartForm = nil then Application.CreateForm(TSChartForm, SChartForm); SChartForm.Show; end; // Menu "Analysis" > "Statistical Process Control" > "Defects per Unit u Chart" procedure TOS3MainFrm.mnuAnalysisSPC_UChartClick(Sender: TObject); begin if UChartForm = nil then Application.CreateForm(TUChartForm, UChartForm); UChartForm.Show; end; // Menu "Analysis" > "Statistical Process Control" > "XBAR Chart" procedure TOS3MainFrm.mnuAnalysisSPC_XBarClick(Sender: TObject); begin if XBarChartForm = nil then Application.CreateForm(TXBarChartForm, XBarChartForm); XBarChartForm.Show; end; // Menu "Analysis" > "Financial" > "Sum of years digits depreciation" procedure TOS3MainFrm.mnuAnalysisFinancial_SumOfYearsDigtsClick(Sender: TObject); begin if SumYrsDepFrm = nil then Application.CreateForm(TSumYrsDepFrm, SumYrsDepFrm); SumYrsDepFrm.ShowModal; end; // Menu "Analysis" > "Financial" > "Straight line depreciation" procedure TOS3MainFrm.mnuAnalysisFinancial_SLDeprecClick(Sender: TObject); begin if SLDepFrm = nil then Application.CreateForm(TSLDepFrm, SLDepFrm); SLDepFrm.ShowModal; end; procedure TOS3MainFrm.ResetForms; var i: Integer; begin for i := 0 to Screen.FormCount-1 do if Screen.Forms[i] is TBasicStatsForm then TBasicStatsForm(Screen.Forms[i]).Reset; end; end.