Files
lazarus-ccr/applications/lazstats/source/forms/mainunit.pas
wp_xxyyzz a6ac93ef34 LazStats: Refactor ABCNestedUnit
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@7865 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2020-11-13 13:16:59 +00:00

2272 lines
70 KiB
ObjectPascal

// 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;
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"
mnuAnalysisCorrel: TMenuItem;
mnuAnalysisCorrel_ProductMoment: TMenuItem;
mnuAnalysisCorrel_Partial: TMenuItem;
mnuAnalysisCorrel_AutoCorr: TMenuItem;
mnuAnalysisCorrel_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; aCol, aRow: Integer;
processType: TCellProcessType; var 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 mnuAnalysisCorrel_AutoCorrClick(Sender: TObject);
procedure mnuAnalysisCorrel_CanonicalClick(Sender: TObject);
procedure mnuAnalysisCorrel_PartialClick(Sender: TObject);
procedure mnuAnalysisCorrel_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
Utils, BasicStatsFormUnit,
OptionsUnit, OutputUnit, LicenseUnit, TransFrmUnit, DescriptiveUnit,
FreqUnit, CrossTabUnit, BreakDownUnit, BoxPlotUnit, NormalityUnit, Rot3DUnit,
PlotXYUnit, BubblePlotUnit, StemLeafUnit, MultXvsYUnit, OneSampleUnit,
TwoCorrsUnit, TwoPropUnit, TtestUnit, BlkAnovaUnit, WithinANOVAUnit,
AxSAnovaUnit, ABRAnovaUnit, ANCOVAUNIT, LatinSqrsUnit, RMatUnit, PartialsUnit,
AutoCorUnit, CanonUnit, GLMUnit, StepFwdMRUnit, BlkMRegUnit, BackRegUnit,
BestRegUnit, SimultRegUnit, CoxRegUnit, LogRegUnit, LinProUnit, DiscrimUnit,
FactorUnit, HierarchUnit, PathUnit, LogLinScreenUnit, TwoWayLogLinUnit,
ABCLogLinUnit, TestGenUnit, TestScoreUnit, RaschUnit, SuccIntUnit, GuttmanUnit,
CompRelUnit, KR21Unit, SpBrUnit, RelChangeUnit, DIFUnit, PolyDIFUnit,
ChiSqrUnit, SpearmanUnit, MannWhitUUnit, ExactUnit, ConcordanceUnit,
KWAnovaUnit, WilcoxonUnit, CochranQUnit, SignTestUnit, FriedmanUnit,
BinomialUnit, KendallTauUnit, KaplanMeierUnit,
// Statistical process control
XBarChartUnit, RChartUnit, SChartUnit, CUSUMUnit, CChartUnit,
PChartUnit, UChartUnit,
CorSimUnit,
ErrorCurvesUnit, PCurvesUnit, DistribUnit, GenSeqUnit, GenRndValsUnit,
MultGenUnit, LoanItUnit, SumYrsDepUnit, SLDUnit, DblDeclineUnit,
RIDITUnit, TwoSLSUnit, WLSUnit, SortCasesUnit,
SelectCasesUnit, GridHelpUnit, RecodeUnit, KappaUnit, AvgLinkUnit, kmeansunit,
SingleLinkUnit, GenKappaUnit, CompareDistUnit, matmanunit, gradebookunit,
ProbzUnit, ProbSmallerzUnit, TwozProbUnit, InversezUnit, ProbChiSqrUnit,
TprobUnit, FProbUnit, HyperGeoUnit, BNestAUnit, ABCNestedUnit, BartlettTestUnit,
DataSmoothUnit, GroupFreqUnit, RunsTestUnit, XvsMultYUnit, SensUnit,
CorrespondenceUnit, EquationUnit, CalculatorUnit, JPEGUnit, ResistanceLineUnit,
MedianPolishUnit, OneCaseAnovaUnit, SmoothDataUnit, SRHTestUnit, AboutUnit,
ItemBankingUnit, ANOVATESTSUnit, SimpleChiSqrUnit, LifeTableUnit, LSMRunit;
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 = '<default>' 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" > "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 KMeansFrm = nil then
Application.CreateForm(TKMeansFrm, KMeansFrm);
kmeansfrm.ShowModal;
end;
// Menu "Analysis" > "Multivariate" > "Single Link Clustering"
procedure TOS3MainFrm.mnuAnalysisMulti_SingleLinkClick(Sender: TObject);
begin
if SingleLinkFrm = nil then
Application.CreateForm(TSingleLinkFrm, SingleLinkFrm);
SingleLinkFrm.ShowModal;
end;
// Menu "Correlation" > "Product-Moment"
procedure TOS3MainFrm.mnuAnalysisCorrel_ProductMomentClick(Sender: TObject);
begin
if RMatFrm = nil then
Application.CreateForm(TRMatFrm, RMatFrm);
RMatFrm.ShowModal;
end;
// Menu "Correlation" > "Partial, Semipartial"
procedure TOS3MainFrm.mnuAnalysisCorrel_PartialClick(Sender: TObject);
begin
if PartialsFrm = nil then
Application.CreateForm(TPartialsFrm, PartialsFrm);
PartialsFrm.ShowModal;
end;
procedure TOS3MainFrm.mnuAnalysisCorrel_AutoCorrClick(Sender: TObject);
begin
if AutoCorrFrm = nil then
Application.CreateForm(TAutoCorrFrm, AutoCorrFrm);
AutocorrFrm.ShowModal;
end;
procedure TOS3MainFrm.mnuAnalysisCorrel_CanonicalClick(Sender: TObject);
begin
if CannonFrm = nil then
Application.CreateForm(TCannonFrm, CannonFrm);
CannonFrm.ShowModal;
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 HierarchFrm = nil then
Application.CreateForm(THierarchFrm, HierarchFrm);
HierarchFrm.ShowModal;
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 CannonFrm = nil then
Application.CreateForm(TCannonFrm, CannonFrm);
CannonFrm.ShowModal;
end;
// Menu "Analysis" > "Multivariate" > "Generalized Kappa"
procedure TOS3MainFrm.mnuAnalysisMulti_GLMClick(Sender: TObject);
begin
if GLMFrm = nil then
Application.CreateForm(TGLMFrm, GLMFrm);
GLMFrm.ShowModal;
end;
// Menu "Analysis" > "Cross-classification" > "AxB Log Linear"
procedure TOS3MainFrm.mnuAnalysisCC_ABLogLinClick(Sender: TObject);
begin
if TwoWayLogLinFrm = nil then
Application.CreateForm(TTwoWayLogLinFrm, TwoWayLogLinFrm);
TwoWayLogLinFrm.ShowModal;
end;
// Menu "Analysis" > "Cross-Classification" > "AxBxC Log Linear"
procedure TOS3MainFrm.mnuAnalysisCC_ABCLogLinClick(Sender: TObject);
begin
if ABCLogLinearFrm = nil then
Application.CreateForm(TABCLogLinearFrm, ABCLogLinearFrm);
ABCLogLinearFrm.ShowModal;
end;
// Menu "Analysis" > "Cross-classification" > "Log Linear Screen"
procedure TOS3MainFrm.mnuAnalysisCC_LogLinScreenClick(Sender: TObject);
begin
if LogLinScreenFrm = nil then
Application.CreateForm(TLogLinScreenFrm, LogLinScreenFrm);
LogLinScreenFrm.ShowModal;
end;
// 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 TestScoreFrm = nil then
Application.CreateForm(TTestScoreFrm, TestScoreFrm);
TestScoreFrm.ShowModal;
end;
// Menu "Analysis" > "Measurement Programs" > "Rasch Test Calibration"
procedure TOS3MainFrm.mnuAnalysisMeas_RashClick(Sender: TObject);
begin
if RaschFrm = nil then
Application.CreateForm(TRaschFrm, RaschFrm);
RaschFrm.ShowModal;
end;
// Menu "Analysis" > "Measurement Programs" > "Successive Interval Scaling"
procedure TOS3MainFrm.mnuAnalysisMeas_IntervalClick(Sender: TObject);
begin
if SuccIntFrm = nil then
Application.CreateForm(TSuccIntFrm, SuccIntFrm);
SuccIntFrm.ShowModal;
end;
// Menu "Analysis" > "Measurement Programs" > "Guttman Scalogram Analysis
procedure TOS3MainFrm.mnuAnalysisMeas_GuttmanClick(Sender: TObject);
begin
if GuttmanFrm = nil then
Application.CreateForm(TGuttmanFrm, GuttmanFrm);
GuttmanFrm.ShowModal;
end;
// Menu "Analysis" > "Measurement Programs" > "Weighted Composite Reliability"
procedure TOS3MainFrm.mnuAnalysisMeas_CompositeClick(Sender: TObject);
begin
if CompRelFrm = nil then
Application.CreateForm(TCompRelFrm, CompRelFrm);
CompRelFrm.ShowModal;
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" > "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;
// Menu "Analysis" > "Multivariate" > "Bartlett Test of Sphericity"
procedure TOS3MainFrm.mnuAnalysisMulti_BartlettClick(Sender: TObject);
begin
if BartlettTestForm = nil then
Application.CreateForm(TBartlettTestForm, BartlettTestform);
BartlettTestForm.ShowModal;
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;
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.ShowModal;
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;
// Menu "Analysis" > "Measurement Programs" > "Grade Book"
procedure TOS3MainFrm.mnuAnalysisMeas_GradeBookClick(Sender: TObject);
begin
if GradeBookFrm = nil then
Application.CreateForm(TGradeBookFrm, GradeBookFrm);
GradebookFrm.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;
*)
// Menu "Analysis" > "Measurement Programs" > "Item Banking"
procedure TOS3MainFrm.mnuAnalysisMeas_ItemBankingClick(Sender: TObject);
begin
if ItemBankFrm = nil then
Application.CreateForm(TItemBankFrm, ItembankFrm);
ItemBankFrm.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" > "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;
// Menu "Analysis" > "Financial" > "Loan Amortization Schedule"
procedure TOS3MainFrm.mnuAnalysisFinancial_LoanAmortClick(Sender: TObject);
begin
if LoanItForm = nil then
Application.CreateForm(TLoanItForm, LoanItForm);
LoanItForm.Show;
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 ANCOVAfrm = nil then
Application.CreateForm(TANCOVAfrm, ANCOVAfrm);
ANCOVAFRM.ShowModal;
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 LatinSqrsFrm = nil then
Application.CreateForm(TLatinSqrsFrm, LatinSqrsFrm);
LatinSqrsFrm.ShowModal;
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;
{ 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.