Files
lazarus-ccr/applications/lazstats/source/forms/mainunit.pas

2313 lines
70 KiB
ObjectPascal
Raw Normal View History

// 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
// 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 = '<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 RMatForm = nil then
Application.CreateForm(TRMatForm, RMatForm);
RMatForm.Show;
end;
// Menu "Correlation" > "Partial, Semipartial"
procedure TOS3MainFrm.mnuAnalysisCorrel_PartialClick(Sender: TObject);
begin
if PartialsForm = nil then
Application.CreateForm(TPartialsForm, PartialsForm);
PartialsForm.Show;
end;
// Menu "Correlation" > "Autocorrelation"
procedure TOS3MainFrm.mnuAnalysisCorrel_AutoCorrClick(Sender: TObject);
begin
if AutoCorrFrm = nil then
Application.CreateForm(TAutoCorrFrm, AutoCorrFrm);
AutocorrFrm.ShowModal;
end;
// Menu "Correlation" > "Canonical"
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.