LazStats: Adding original source, part 6.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@7885 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2020-11-16 11:16:49 +00:00
parent 15870755f1
commit e1c5977e0d
80 changed files with 37795 additions and 0 deletions

View File

@ -0,0 +1,948 @@
object OS3MainFrm: TOS3MainFrm
Left = 43
Height = 519
Top = 133
Width = 723
Caption = 'LazStats Sept. 5, 2013'
ClientHeight = 499
ClientWidth = 723
Font.CharSet = ANSI_CHARSET
Font.Color = clBlack
Font.Height = -11
Font.Name = 'Courier New'
Font.Pitch = fpFixed
Font.Quality = fqDraft
Menu = MainMenu1
OnClick = FormClick
OnShow = FormShow
LCLVersion = '0.9.30.4'
object Panel1: TPanel
Left = 0
Height = 35
Top = 0
Width = 723
Align = alTop
ClientHeight = 35
ClientWidth = 723
TabOrder = 0
object Label1: TLabel
Left = 15
Height = 15
Top = 9
Width = 64
Caption = 'No. Cases'
ParentColor = False
end
object Label2: TLabel
Left = 138
Height = 15
Top = 9
Width = 92
Caption = 'No. Variables'
ParentColor = False
end
object Label3: TLabel
Left = 297
Height = 15
Top = 10
Width = 92
Caption = 'Current File:'
ParentColor = False
end
object NoCasesEdit: TEdit
Left = 88
Height = 22
Top = 6
Width = 40
TabStop = False
TabOrder = 0
Text = 'NoCasesEdit'
end
object NoVarsEdit: TEdit
Left = 240
Height = 22
Top = 3
Width = 48
TabStop = False
TabOrder = 1
Text = 'NoVarsEdit'
end
object FileNameEdit: TEdit
Left = 392
Height = 22
Top = 8
Width = 305
TabStop = False
TabOrder = 2
Text = 'FileNameEdit'
end
end
object Panel2: TPanel
Left = 0
Height = 41
Top = 458
Width = 723
Align = alBottom
ClientHeight = 41
ClientWidth = 723
TabOrder = 1
object Label4: TLabel
Left = 11
Height = 15
Top = 15
Width = 29
Caption = 'Row:'
ParentColor = False
end
object Label5: TLabel
Left = 129
Height = 15
Top = 15
Width = 50
Caption = 'Column:'
ParentColor = False
end
object Label6: TLabel
Left = 257
Height = 15
Top = 11
Width = 92
Caption = 'Filter Status'
ParentColor = False
end
object RowEdit: TEdit
Left = 41
Height = 22
Top = 8
Width = 73
TabStop = False
TabOrder = 0
Text = 'RowEdit'
end
object ColEdit: TEdit
Left = 177
Height = 22
Top = 8
Width = 65
TabStop = False
TabOrder = 1
Text = 'ColEdit'
end
object FilterEdit: TEdit
Left = 352
Height = 22
Top = 8
Width = 231
TabStop = False
TabOrder = 2
Text = 'FilterEdit'
end
end
object DataGrid: TStringGrid
Left = 0
Height = 423
Top = 35
Width = 723
Align = alClient
AutoEdit = False
ColCount = 2
DefaultColWidth = 80
Options = [goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goColSizing, goEditing, goTabs, goSmoothScroll]
RowCount = 2
TabOrder = 2
TabStop = False
TitleFont.CharSet = ANSI_CHARSET
TitleFont.Color = clBlack
TitleFont.Height = -11
TitleFont.Name = 'Courier New'
TitleFont.Pitch = fpFixed
TitleFont.Quality = fqDraft
OnClick = DataGridClick
OnKeyDown = DataGridKeyDown
OnKeyPress = DataGridKeyPress
end
object MainMenu1: TMainMenu
left = 16
top = 360
object MenuItem1: TMenuItem
Caption = 'FILES'
object SaveFileBtn: TMenuItem
Caption = 'Save File (.LAZ)'
OnClick = SaveFileBtnClick
end
object OpenFileBtn: TMenuItem
Caption = 'Open File (.LAZ)'
OnClick = OpenFileBtnClick
end
object NewFileBtn: TMenuItem
Caption = 'New File'
OnClick = NewFileBtnClick
end
object CloseFileBtn: TMenuItem
Caption = 'Close File'
OnClick = CloseFileBtnClick
end
object MenuItem12: TMenuItem
Caption = '-----------------------'
end
object MenuItem13: TMenuItem
Caption = 'Import File of Type'
object TabFileInBtn: TMenuItem
Caption = 'TAB Separated'
OnClick = TabFileInBtnClick
end
object CSVFileIn: TMenuItem
Caption = 'Comma Separated'
OnClick = CSVFileInClick
end
object SSVFileIn: TMenuItem
Caption = 'Space Separated'
OnClick = SSVFileInClick
end
end
object TabFileOut: TMenuItem
Caption = 'Export File of Type'
object MenuItem20: TMenuItem
Caption = 'Tab Separated'
OnClick = MenuItem20Click
end
object CSVFileOut: TMenuItem
Caption = 'Comma Separated'
OnClick = CSVFileOutClick
end
object SSVFileOut: TMenuItem
Caption = 'Space Separated'
OnClick = SSVFileOutClick
end
end
object MenuItem15: TMenuItem
Caption = '---------------------'
end
object MenuItem16: TMenuItem
Caption = 'Exit'
OnClick = MenuItem16Click
end
end
object MenuItem2: TMenuItem
Caption = 'Variables'
object DefineVar: TMenuItem
Caption = 'Define'
OnClick = DefineVarClick
end
object PrintDefs: TMenuItem
Caption = 'Print Definitions'
OnClick = PrintDefsClick
end
object Transform: TMenuItem
Caption = 'Transform Variables'
OnClick = TransformClick
end
object Recode: TMenuItem
Caption = 'Recode Variables'
OnClick = RecodeClick
end
object Equation: TMenuItem
Caption = 'Equation Editor'
OnClick = EquationClick
end
end
object MenuItem3: TMenuItem
Caption = 'Tools'
object FormatGrid: TMenuItem
Caption = 'Format Grid Cells'
OnClick = FormatGridClick
end
object SortCases: TMenuItem
Caption = 'Sort Cases'
OnClick = SortCasesClick
end
object PrintGrid: TMenuItem
Caption = 'Print Grid File'
OnClick = PrintGridClick
end
object MenuItem28: TMenuItem
Caption = 'Show Output Form'
OnClick = MenuItem28Click
end
object SelectCases: TMenuItem
Caption = 'Select Cases'
OnClick = SelectCasesClick
end
object LoadSubFile: TMenuItem
Caption = 'Load a Sub File'
end
object MenuItem30: TMenuItem
Caption = 'Swap Rows and Columns of Grid'
OnClick = MenuItem30Click
end
object SwapDecType: TMenuItem
Caption = 'Change English to European or Vice Versa'
OnClick = SwapDecTypeClick
end
object StrToIntegers: TMenuItem
Caption = 'Convert strings to integer codes'
OnClick = StrToIntegersClick
end
object smooth: TMenuItem
Caption = 'Smooth Data in a Variable'
OnClick = smoothClick
end
object Calculater: TMenuItem
Caption = 'Calculator'
OnClick = CalculaterClick
end
object JPEGView: TMenuItem
Caption = 'JPEG Image Viewer'
OnClick = JPEGViewClick
end
end
object MenuItem4: TMenuItem
Caption = 'Edit'
object blockcopy: TMenuItem
Caption = 'Copy a Block of Cells'
OnClick = blockcopyClick
end
object BlockPaste: TMenuItem
Caption = 'Paste a Block of Cells'
OnClick = BlockPasteClick
end
object BlockCut: TMenuItem
Caption = 'Cut a Block of Cells'
Visible = False
end
object InsNewCol: TMenuItem
Caption = 'Insert New Column Before Current One'
OnClick = InsNewColClick
end
object CopyCol: TMenuItem
Caption = 'Copy Column'
OnClick = CopyColClick
end
object CutCol: TMenuItem
Caption = 'Cut Column'
OnClick = CutColClick
end
object PasteCol: TMenuItem
Caption = 'Paste Column'
OnClick = PasteColClick
end
object NewRow: TMenuItem
Caption = 'Insert New Row'
OnClick = NewRowClick
end
object CopyRow: TMenuItem
Caption = 'Copy Row'
OnClick = CopyRowClick
end
object CutRow: TMenuItem
Caption = 'Cut Row'
OnClick = CutRowClick
end
object PasteRow: TMenuItem
Caption = 'Paste Row'
OnClick = PasteRowClick
end
end
object MenuItem5: TMenuItem
Caption = 'Analyses'
object MenuItem32: TMenuItem
Caption = 'Descriptive'
object Distributions: TMenuItem
Caption = 'Distribution Statistics'
OnClick = DistributionsClick
end
object FreqAnal: TMenuItem
Caption = 'Frequency Analysis'
OnClick = FreqAnalClick
end
object GrpFreq: TMenuItem
Caption = 'Plot Group Frequencies'
OnClick = GrpFreqClick
end
object CrossTabs: TMenuItem
Caption = 'Cross Tabulation'
OnClick = CrossTabsClick
end
object Breakdown: TMenuItem
Caption = 'Breakdown'
OnClick = BreakdownClick
end
object BoxPlot: TMenuItem
Caption = 'Box Plot'
OnClick = BoxPlotClick
end
object NormalityTests: TMenuItem
Caption = 'Normality Tests'
OnClick = NormalityTestsClick
end
object ThreeDRotate: TMenuItem
Caption = '3-D Variable Rotation'
OnClick = ThreeDRotateClick
end
object PlotXvsY: TMenuItem
Caption = 'Plot X vs Y'
OnClick = PlotXvsYClick
end
object BubblePlot: TMenuItem
Caption = 'Repeated Measures Bubble Plot'
OnClick = BubblePlotClick
end
object StemLeaf: TMenuItem
Caption = 'Stem and Leaf Plot'
OnClick = StemLeafClick
end
object MultXvsY: TMenuItem
Caption = 'Multiple Group X vs Y Plot'
OnClick = MultXvsYClick
end
object XvsMultY: TMenuItem
Caption = 'X versus Multiple Y Plot'
OnClick = XvsMultYClick
end
object CompareDists: TMenuItem
Caption = 'Compare Distributions'
OnClick = CompareDistsClick
end
object ResistanceLine: TMenuItem
Caption = 'Resistant Line for Bivariate Data'
OnClick = ResistanceLineClick
end
object DataSmooth: TMenuItem
Caption = 'Data Smoothing'
OnClick = DataSmoothClick
end
object homotest: TMenuItem
Caption = 'Brown-Forsythe test for homogeneity of variance'
OnClick = homotestClick
end
end
object OneSampTests: TMenuItem
Caption = 'One Sample Tests'
OnClick = OneSampTestsClick
end
object MenuItem34: TMenuItem
Caption = 'Comparisons'
object PropDiff: TMenuItem
Caption = 'Difference beween Proportions'
OnClick = PropDiffClick
end
object CorrDiff: TMenuItem
Caption = 'Difference Between Correlations'
OnClick = CorrDiffClick
end
object ttests: TMenuItem
Caption = 't-tests'
OnClick = ttestsClick
end
object Anova: TMenuItem
Caption = '1,2 or 3 Way ANOVAs'
OnClick = AnovaClick
end
object WithinAnova: TMenuItem
Caption = 'Within Subjects ANOVA'
OnClick = WithinAnovaClick
end
object AxSAnova: TMenuItem
Caption = 'A x S ANOVA'
OnClick = AxSAnovaClick
end
object ABSAnova: TMenuItem
Caption = 'A x B x S ANOVA'
OnClick = ABSAnovaClick
end
object BinA: TMenuItem
Caption = 'B Nested in A ANOVA'
OnClick = BinAClick
end
object NestedABC: TMenuItem
Caption = 'ABC ANOVA with B Nested in A'
OnClick = NestedABCClick
end
object OneCaseAnova: TMenuItem
Caption = '2 or 3 Way ANOVA with One Case Per Cell'
OnClick = OneCaseAnovaClick
end
object Ancova: TMenuItem
Caption = 'ANCOVA by Regression'
OnClick = AncovaClick
end
object GLM: TMenuItem
Caption = 'General Linear Model'
OnClick = GLMClick
end
object LatinSquares: TMenuItem
Caption = 'Latin and Greco-Latin Squares'
OnClick = LatinSquaresClick
end
end
object MenuItem35: TMenuItem
Caption = 'Correlation'
object MenuItem71: TMenuItem
Caption = 'Product-Moment'
OnClick = MenuItem71Click
end
object MenuItem72: TMenuItem
Caption = 'Partial, Semipartial'
OnClick = MenuItem72Click
end
object MenuItem73: TMenuItem
Caption = 'Autocorrelation'
OnClick = MenuItem73Click
end
object MenuItem74: TMenuItem
Caption = 'Canonical'
OnClick = MenuItem74Click
end
end
object MenuItem36: TMenuItem
Caption = 'Multiple Regression'
object LSMRitem: TMenuItem
Caption = 'Least Squares Multiple Regression'
OnClick = LSMRitemClick
end
object MenuItem75: TMenuItem
Caption = 'Forward Stepwise'
OnClick = MenuItem75Click
end
object MenuItem76: TMenuItem
Caption = 'Backward Stepwise'
OnClick = MenuItem76Click
end
object MenuItem77: TMenuItem
Caption = 'Simultaneous'
OnClick = MenuItem77Click
end
object MenuItem78: TMenuItem
Caption = 'Block Entry'
OnClick = MenuItem78Click
end
object MenuItem79: TMenuItem
Caption = 'Best Combination'
OnClick = MenuItem79Click
end
object MenuItem80: TMenuItem
Caption = 'Binary Logistic'
OnClick = MenuItem80Click
end
object MenuItem81: TMenuItem
Caption = 'Cox Proportional Hazzards Survival Regression'
OnClick = MenuItem81Click
end
object MenuItem82: TMenuItem
Caption = 'Linear Programming'
OnClick = MenuItem82Click
end
object TwoSLSReg: TMenuItem
Caption = 'Two Stage Least Squares Regression'
OnClick = TwoSLSRegClick
end
object WLSReg: TMenuItem
Caption = 'Weighted Least Squares Regression'
OnClick = WLSRegClick
end
end
object MenuItem37: TMenuItem
Caption = 'Multivariate'
object MenuItem83: TMenuItem
Caption = 'MANOVA / Discriminant Function'
OnClick = MenuItem83Click
end
object MenuItem84: TMenuItem
Caption = 'Hierarchical Analysis'
OnClick = MenuItem84Click
end
object MenuItem29: TMenuItem
Caption = 'Average Link Clustering'
OnClick = MenuItem29Click
end
object MenuItem31: TMenuItem
Caption = 'K Means Clustering'
OnClick = MenuItem31Click
end
object MenuItem33: TMenuItem
Caption = 'Single Link Clustering'
OnClick = MenuItem33Click
end
object MenuItem85: TMenuItem
Caption = 'Path Analysis'
OnClick = MenuItem85Click
end
object MenuItem86: TMenuItem
Caption = 'Factor Analysis'
OnClick = MenuItem86Click
end
object MenuItem87: TMenuItem
Caption = 'Canonical Correlation'
OnClick = MenuItem87Click
end
object MenuItem88: TMenuItem
Caption = 'General Linear Model'
OnClick = MenuItem88Click
end
object BartlettTest: TMenuItem
Caption = 'Bartlett Test of Sphericity'
OnClick = BartlettTestClick
end
object Correspondence: TMenuItem
Caption = 'Correspondence Analysis'
OnClick = CorrespondenceClick
end
object MedianPolish: TMenuItem
Caption = 'Median Polishing for a 2x2 Table'
OnClick = MedianPolishClick
end
end
object MenuItem38: TMenuItem
Caption = 'Cross-Classification'
object MenuItem89: TMenuItem
Caption = 'AxB Log Linear'
OnClick = MenuItem89Click
end
object MenuItem90: TMenuItem
Caption = 'AxBxC Log Linear'
OnClick = MenuItem90Click
end
object MenuItem91: TMenuItem
Caption = 'Log Linear Screen'
OnClick = MenuItem91Click
end
end
object MenuItem39: TMenuItem
Caption = 'Measurement Programs'
object MenuItem92: TMenuItem
Caption = 'Generate Sample Test Data'
OnClick = MenuItem92Click
end
object MenuItem93: TMenuItem
Caption = 'Classical Test Analysis'
OnClick = MenuItem93Click
end
object MenuItem94: TMenuItem
Caption = 'Rasch Test Calibration'
OnClick = MenuItem94Click
end
object MenuItem95: TMenuItem
Caption = 'Successive Interval Scaling'
OnClick = MenuItem95Click
end
object MenuItem96: TMenuItem
Caption = 'Guttman Scalogram Analysis'
OnClick = MenuItem96Click
end
object MenuItem97: TMenuItem
Caption = 'Weighted Composite Reliability'
OnClick = MenuItem97Click
end
object MenuItem98: TMenuItem
Caption = 'Kuder-Richardson #21 Reliability'
OnClick = MenuItem98Click
end
object MenuItem99: TMenuItem
Caption = 'Spearman-Brown Prophecy Reliability'
OnClick = MenuItem99Click
end
object MenuItem100: TMenuItem
Caption = 'Reliability Due to Test Variance Change'
OnClick = MenuItem100Click
end
object MenuItem101: TMenuItem
Caption = 'Differential Item Functioning'
OnClick = MenuItem101Click
end
object MenuItem102: TMenuItem
Caption = 'Polytomous DIF Analysis'
OnClick = MenuItem102Click
end
object GrdBkMnu: TMenuItem
Caption = 'Grade Book'
OnClick = GrdBkMnuClick
end
object ItemBankMenuItem: TMenuItem
Caption = 'Item Banking'
OnClick = ItemBankMenuItemClick
end
end
object MenuItem40: TMenuItem
Caption = 'Nonparametric'
object SimpChiSqr: TMenuItem
Caption = 'Simple ChiSquare for Categories'
OnClick = SimpChiSqrClick
end
object MenuItem103: TMenuItem
Caption = 'Contingency Chi Square'
OnClick = MenuItem103Click
end
object MenuItem104: TMenuItem
Caption = 'Spearman Rank Correlation'
OnClick = MenuItem104Click
end
object MenuItem105: TMenuItem
Caption = 'Mann-Whitney U Test'
OnClick = MenuItem105Click
end
object MenuItem106: TMenuItem
Caption = 'Fisher''s Exact Test'
OnClick = MenuItem106Click
end
object MenuItem107: TMenuItem
Caption = 'Kendall''s Coefficient of Concordance'
OnClick = MenuItem107Click
end
object MenuItem108: TMenuItem
Caption = 'Kruskal-Wallis One Way ANOVA'
OnClick = MenuItem108Click
end
object MenuItem109: TMenuItem
Caption = 'Matched Pairs Signed Ranks Test'
OnClick = MenuItem109Click
end
object MenuItem110: TMenuItem
Caption = 'Cochran Q Test'
OnClick = MenuItem110Click
end
object MenuItem111: TMenuItem
Caption = 'Sign Test'
OnClick = MenuItem111Click
end
object MenuItem112: TMenuItem
Caption = 'Friedman Two Way ANOVA'
OnClick = MenuItem112Click
end
object MenuItem113: TMenuItem
Caption = 'Probability of a binomial event'
OnClick = MenuItem113Click
end
object MenuItem114: TMenuItem
Caption = 'Kendall''s Tau and Parrtial Tau'
OnClick = MenuItem114Click
end
object MenuItem115: TMenuItem
Caption = 'Kaplan-Meier Survival Analysis'
OnClick = MenuItem115Click
end
object RiditAnalysis: TMenuItem
Caption = 'RIDIT Analysis'
OnClick = RiditAnalysisClick
end
object WghtedKappa: TMenuItem
Caption = 'Kappa and Weighted Kappa'
OnClick = WghtedKappaClick
end
object GenKappa: TMenuItem
Caption = 'Generalized Kappa'
OnClick = GenKappaClick
end
object RunsTest: TMenuItem
Caption = 'Runs Test for Normality'
OnClick = RunsTestClick
end
object Sens: TMenuItem
Caption = 'Sen''s Slope Analysis'
OnClick = SensClick
end
object KSTest: TMenuItem
Caption = 'Kolmogorov-Smirnov Test'
OnClick = KSTestClick
end
object SRHItem: TMenuItem
Caption = 'Scheirer-Ray-Hart 2-way ANOVA'
OnClick = SRHItemClick
end
object lifetable: TMenuItem
Caption = 'LIFE TABLE'
OnClick = lifetableClick
end
end
object MenuItem41: TMenuItem
Caption = 'Statistical Process Control'
object MenuItem116: TMenuItem
Caption = 'XBAR Chart'
OnClick = MenuItem116Click
end
object MenuItem117: TMenuItem
Caption = 'Range Chart'
OnClick = MenuItem117Click
end
object MenuItem118: TMenuItem
Caption = 'S Control Chart'
OnClick = MenuItem118Click
end
object MenuItem6: TMenuItem
Caption = 'CUMSUM Chart'
OnClick = MenuItem6Click
end
object MenuItem119: TMenuItem
Caption = 'Defect (nonconformity) c Chart'
OnClick = MenuItem119Click
end
object pcontrochart: TMenuItem
Caption = 'p Control Chart'
OnClick = pcontrochartClick
end
object MenuItem120: TMenuItem
Caption = 'Defects per Unit u Chart'
OnClick = MenuItem120Click
end
end
object MenuItem9: TMenuItem
Caption = 'Financial'
object MenuItem10: TMenuItem
Caption = 'Loan Amortization Schedule'
OnClick = MenuItem10Click
end
object MenuItem11: TMenuItem
Caption = 'Sum of years digits depreciation'
OnClick = MenuItem11Click
end
object MenuItem14: TMenuItem
Caption = 'Straight line depreciation'
OnClick = MenuItem14Click
end
object MenuItem17: TMenuItem
Caption = 'Internal rate of return'
Visible = False
end
object MenuItem18: TMenuItem
Caption = 'Present Value'
Visible = False
end
object MenuItem19: TMenuItem
Caption = 'Period Payment'
Visible = False
end
object MenuItem21: TMenuItem
Caption = 'Payment'
Visible = False
end
object MenuItem22: TMenuItem
Caption = 'No. of Periods'
Visible = False
end
object MenuItem23: TMenuItem
Caption = 'Net Present Value'
Visible = False
end
object MenuItem24: TMenuItem
Caption = 'Interest Rate'
Visible = False
end
object MenuItem25: TMenuItem
Caption = 'Interest Payment'
Visible = False
end
object MenuItem26: TMenuItem
Caption = 'Future Value'
Visible = False
end
object MenuItem27: TMenuItem
Caption = 'Double Declining Value'
OnClick = MenuItem27Click
end
end
object MatManMnu: TMenuItem
Caption = 'Matrix Manipulation'
OnClick = MatManMnuClick
end
end
object Option: TMenuItem
Caption = 'Options'
object ShowOpts: TMenuItem
Caption = 'Show Options'
OnClick = OptionClick
end
object PicView: TMenuItem
Caption = 'View Pictures'
Visible = False
end
end
object MenuItem7: TMenuItem
Caption = 'Simulations'
object ScatPlot: TMenuItem
Caption = 'Bivariate Scatter Plot'
OnClick = ScatPlotClick
end
object MultDists: TMenuItem
Caption = 'Multivariate Distribution'
OnClick = MultDistsClick
end
object TypeErrors: TMenuItem
Caption = 'Type 1 and Type 2 Error Curves'
OnClick = TypeErrorsClick
end
object Power: TMenuItem
Caption = 'Power Curves for a z test'
OnClick = PowerClick
end
object DistPlots: TMenuItem
Caption = 'Distribution Plots and Critical Values'
OnClick = DistPlotsClick
end
object SeqValues: TMenuItem
Caption = 'Generate Sequential Values'
OnClick = SeqValuesClick
end
object RandomVals: TMenuItem
Caption = 'Random Theoretical Values'
OnClick = RandomValsClick
end
object Probabilities: TMenuItem
Caption = 'Probabilities'
object probgtz: TMenuItem
Caption = 'Probability > z'
OnClick = probgtzClick
end
object Probltz: TMenuItem
Caption = 'Probability < z'
OnClick = ProbltzClick
end
object probzbetween: TMenuItem
Caption = 'Prob between 2 z values'
OnClick = probzbetweenClick
end
object inversez: TMenuItem
Caption = 'z for a given cum. Probability'
OnClick = inversezClick
end
object Chiprob: TMenuItem
Caption = 'Chisquare Probability'
OnClick = ChiprobClick
end
object tprob: TMenuItem
Caption = 'Student t probability'
OnClick = tprobClick
end
object Fprob: TMenuItem
Caption = 'F probability'
OnClick = FprobClick
end
object HypergeoProb: TMenuItem
Caption = 'Hypergeometric probability'
OnClick = HypergeoProbClick
end
end
end
object MenuItem8: TMenuItem
Caption = 'Help'
object About: TMenuItem
Caption = 'About...'
OnClick = AboutClick
end
object GridUse: TMenuItem
Caption = 'Using the Grid'
OnClick = GridUseClick
end
object HelpContents: TMenuItem
Caption = 'General Help'
OnClick = HelpContentsClick
end
end
end
object OpenDialog1: TOpenDialog
left = 80
top = 360
end
object SaveDialog1: TSaveDialog
left = 144
top = 360
end
end

View File

@ -0,0 +1,299 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TOS3MainFrm','FORMDATA',[
'TPF0'#11'TOS3MainFrm'#10'OS3MainFrm'#4'Left'#2'+'#6'Height'#3#7#2#3'Top'#3
+#133#0#5'Width'#3#211#2#7'Caption'#6#22'LazStats Sept. 5, 2013'#12'ClientHei'
+'ght'#3#243#1#11'ClientWidth'#3#211#2#12'Font.CharSet'#7#12'ANSI_CHARSET'#10
+'Font.Color'#7#7'clBlack'#11'Font.Height'#2#245#9'Font.Name'#6#11'Courier Ne'
+'w'#10'Font.Pitch'#7#7'fpFixed'#12'Font.Quality'#7#7'fqDraft'#4'Menu'#7#9'Ma'
+'inMenu1'#7'OnClick'#7#9'FormClick'#6'OnShow'#7#8'FormShow'#10'LCLVersion'#6
+#8'0.9.30.4'#0#6'TPanel'#6'Panel1'#4'Left'#2#0#6'Height'#2'#'#3'Top'#2#0#5'W'
+'idth'#3#211#2#5'Align'#7#5'alTop'#12'ClientHeight'#2'#'#11'ClientWidth'#3
+#211#2#8'TabOrder'#2#0#0#6'TLabel'#6'Label1'#4'Left'#2#15#6'Height'#2#15#3'T'
+'op'#2#9#5'Width'#2'@'#7'Caption'#6#9'No. Cases'#11'ParentColor'#8#0#0#6'TLa'
+'bel'#6'Label2'#4'Left'#3#138#0#6'Height'#2#15#3'Top'#2#9#5'Width'#2'\'#7'Ca'
+'ption'#6#13'No. Variables'#11'ParentColor'#8#0#0#6'TLabel'#6'Label3'#4'Left'
+#3')'#1#6'Height'#2#15#3'Top'#2#10#5'Width'#2'\'#7'Caption'#6#13'Current Fil'
+'e:'#11'ParentColor'#8#0#0#5'TEdit'#11'NoCasesEdit'#4'Left'#2'X'#6'Height'#2
+#22#3'Top'#2#6#5'Width'#2'('#7'TabStop'#8#8'TabOrder'#2#0#4'Text'#6#11'NoCas'
+'esEdit'#0#0#5'TEdit'#10'NoVarsEdit'#4'Left'#3#240#0#6'Height'#2#22#3'Top'#2
+#3#5'Width'#2'0'#7'TabStop'#8#8'TabOrder'#2#1#4'Text'#6#10'NoVarsEdit'#0#0#5
+'TEdit'#12'FileNameEdit'#4'Left'#3#136#1#6'Height'#2#22#3'Top'#2#8#5'Width'#3
+'1'#1#7'TabStop'#8#8'TabOrder'#2#2#4'Text'#6#12'FileNameEdit'#0#0#0#6'TPanel'
+#6'Panel2'#4'Left'#2#0#6'Height'#2')'#3'Top'#3#202#1#5'Width'#3#211#2#5'Alig'
+'n'#7#8'alBottom'#12'ClientHeight'#2')'#11'ClientWidth'#3#211#2#8'TabOrder'#2
+#1#0#6'TLabel'#6'Label4'#4'Left'#2#11#6'Height'#2#15#3'Top'#2#15#5'Width'#2
+#29#7'Caption'#6#4'Row:'#11'ParentColor'#8#0#0#6'TLabel'#6'Label5'#4'Left'#3
+#129#0#6'Height'#2#15#3'Top'#2#15#5'Width'#2'2'#7'Caption'#6#7'Column:'#11'P'
+'arentColor'#8#0#0#6'TLabel'#6'Label6'#4'Left'#3#1#1#6'Height'#2#15#3'Top'#2
+#11#5'Width'#2'\'#7'Caption'#6#13'Filter Status'#11'ParentColor'#8#0#0#5'TEd'
+'it'#7'RowEdit'#4'Left'#2')'#6'Height'#2#22#3'Top'#2#8#5'Width'#2'I'#7'TabSt'
+'op'#8#8'TabOrder'#2#0#4'Text'#6#7'RowEdit'#0#0#5'TEdit'#7'ColEdit'#4'Left'#3
+#177#0#6'Height'#2#22#3'Top'#2#8#5'Width'#2'A'#7'TabStop'#8#8'TabOrder'#2#1#4
+'Text'#6#7'ColEdit'#0#0#5'TEdit'#10'FilterEdit'#4'Left'#3'`'#1#6'Height'#2#22
+#3'Top'#2#8#5'Width'#3#231#0#7'TabStop'#8#8'TabOrder'#2#2#4'Text'#6#10'Filte'
+'rEdit'#0#0#0#11'TStringGrid'#8'DataGrid'#4'Left'#2#0#6'Height'#3#167#1#3'To'
+'p'#2'#'#5'Width'#3#211#2#5'Align'#7#8'alClient'#8'AutoEdit'#8#8'ColCount'#2
+#2#15'DefaultColWidth'#2'P'#7'Options'#11#15'goFixedHorzLine'#10'goVertLine'
+#10'goHorzLine'#13'goRangeSelect'#11'goColSizing'#9'goEditing'#6'goTabs'#14
+'goSmoothScroll'#0#8'RowCount'#2#2#8'TabOrder'#2#2#7'TabStop'#8#17'TitleFont'
+'.CharSet'#7#12'ANSI_CHARSET'#15'TitleFont.Color'#7#7'clBlack'#16'TitleFont.'
+'Height'#2#245#14'TitleFont.Name'#6#11'Courier New'#15'TitleFont.Pitch'#7#7
+'fpFixed'#17'TitleFont.Quality'#7#7'fqDraft'#7'OnClick'#7#13'DataGridClick'#9
+'OnKeyDown'#7#15'DataGridKeyDown'#10'OnKeyPress'#7#16'DataGridKeyPress'#0#0#9
+'TMainMenu'#9'MainMenu1'#4'left'#2#16#3'top'#3'h'#1#0#9'TMenuItem'#9'MenuIte'
+'m1'#7'Caption'#6#5'FILES'#0#9'TMenuItem'#11'SaveFileBtn'#7'Caption'#6#16'Sa'
+'ve File (.LAZ)'#7'OnClick'#7#16'SaveFileBtnClick'#0#0#9'TMenuItem'#11'OpenF'
+'ileBtn'#7'Caption'#6#16'Open File (.LAZ)'#7'OnClick'#7#16'OpenFileBtnClick'
+#0#0#9'TMenuItem'#10'NewFileBtn'#7'Caption'#6#8'New File'#7'OnClick'#7#15'Ne'
+'wFileBtnClick'#0#0#9'TMenuItem'#12'CloseFileBtn'#7'Caption'#6#10'Close File'
+#7'OnClick'#7#17'CloseFileBtnClick'#0#0#9'TMenuItem'#10'MenuItem12'#7'Captio'
+'n'#6#23'-----------------------'#0#0#9'TMenuItem'#10'MenuItem13'#7'Caption'
+#6#19'Import File of Type'#0#9'TMenuItem'#12'TabFileInBtn'#7'Caption'#6#13'T'
+'AB Separated'#7'OnClick'#7#17'TabFileInBtnClick'#0#0#9'TMenuItem'#9'CSVFile'
+'In'#7'Caption'#6#15'Comma Separated'#7'OnClick'#7#14'CSVFileInClick'#0#0#9
+'TMenuItem'#9'SSVFileIn'#7'Caption'#6#15'Space Separated'#7'OnClick'#7#14'SS'
+'VFileInClick'#0#0#0#9'TMenuItem'#10'TabFileOut'#7'Caption'#6#19'Export File'
+' of Type'#0#9'TMenuItem'#10'MenuItem20'#7'Caption'#6#13'Tab Separated'#7'On'
+'Click'#7#15'MenuItem20Click'#0#0#9'TMenuItem'#10'CSVFileOut'#7'Caption'#6#15
+'Comma Separated'#7'OnClick'#7#15'CSVFileOutClick'#0#0#9'TMenuItem'#10'SSVFi'
+'leOut'#7'Caption'#6#15'Space Separated'#7'OnClick'#7#15'SSVFileOutClick'#0#0
+#0#9'TMenuItem'#10'MenuItem15'#7'Caption'#6#21'---------------------'#0#0#9
+'TMenuItem'#10'MenuItem16'#7'Caption'#6#4'Exit'#7'OnClick'#7#15'MenuItem16Cl'
+'ick'#0#0#0#9'TMenuItem'#9'MenuItem2'#7'Caption'#6#9'Variables'#0#9'TMenuIte'
+'m'#9'DefineVar'#7'Caption'#6#6'Define'#7'OnClick'#7#14'DefineVarClick'#0#0#9
+'TMenuItem'#9'PrintDefs'#7'Caption'#6#17'Print Definitions'#7'OnClick'#7#14
+'PrintDefsClick'#0#0#9'TMenuItem'#9'Transform'#7'Caption'#6#19'Transform Var'
+'iables'#7'OnClick'#7#14'TransformClick'#0#0#9'TMenuItem'#6'Recode'#7'Captio'
,'n'#6#16'Recode Variables'#7'OnClick'#7#11'RecodeClick'#0#0#9'TMenuItem'#8'E'
+'quation'#7'Caption'#6#15'Equation Editor'#7'OnClick'#7#13'EquationClick'#0#0
+#0#9'TMenuItem'#9'MenuItem3'#7'Caption'#6#5'Tools'#0#9'TMenuItem'#10'FormatG'
+'rid'#7'Caption'#6#17'Format Grid Cells'#7'OnClick'#7#15'FormatGridClick'#0#0
+#9'TMenuItem'#9'SortCases'#7'Caption'#6#10'Sort Cases'#7'OnClick'#7#14'SortC'
+'asesClick'#0#0#9'TMenuItem'#9'PrintGrid'#7'Caption'#6#15'Print Grid File'#7
+'OnClick'#7#14'PrintGridClick'#0#0#9'TMenuItem'#10'MenuItem28'#7'Caption'#6
+#16'Show Output Form'#7'OnClick'#7#15'MenuItem28Click'#0#0#9'TMenuItem'#11'S'
+'electCases'#7'Caption'#6#12'Select Cases'#7'OnClick'#7#16'SelectCasesClick'
+#0#0#9'TMenuItem'#11'LoadSubFile'#7'Caption'#6#15'Load a Sub File'#0#0#9'TMe'
+'nuItem'#10'MenuItem30'#7'Caption'#6#29'Swap Rows and Columns of Grid'#7'OnC'
+'lick'#7#15'MenuItem30Click'#0#0#9'TMenuItem'#11'SwapDecType'#7'Caption'#6'('
+'Change English to European or Vice Versa'#7'OnClick'#7#16'SwapDecTypeClick'
+#0#0#9'TMenuItem'#13'StrToIntegers'#7'Caption'#6' Convert strings to integer'
+' codes'#7'OnClick'#7#18'StrToIntegersClick'#0#0#9'TMenuItem'#6'smooth'#7'Ca'
+'ption'#6#25'Smooth Data in a Variable'#7'OnClick'#7#11'smoothClick'#0#0#9'T'
+'MenuItem'#10'Calculater'#7'Caption'#6#10'Calculator'#7'OnClick'#7#15'Calcul'
+'aterClick'#0#0#9'TMenuItem'#8'JPEGView'#7'Caption'#6#17'JPEG Image Viewer'#7
+'OnClick'#7#13'JPEGViewClick'#0#0#0#9'TMenuItem'#9'MenuItem4'#7'Caption'#6#4
+'Edit'#0#9'TMenuItem'#9'blockcopy'#7'Caption'#6#21'Copy a Block of Cells'#7
+'OnClick'#7#14'blockcopyClick'#0#0#9'TMenuItem'#10'BlockPaste'#7'Caption'#6
+#22'Paste a Block of Cells'#7'OnClick'#7#15'BlockPasteClick'#0#0#9'TMenuItem'
+#8'BlockCut'#7'Caption'#6#20'Cut a Block of Cells'#7'Visible'#8#0#0#9'TMenuI'
+'tem'#9'InsNewCol'#7'Caption'#6'%Insert New Column Before Current One'#7'On'
+'Click'#7#14'InsNewColClick'#0#0#9'TMenuItem'#7'CopyCol'#7'Caption'#6#11'Cop'
+'y Column'#7'OnClick'#7#12'CopyColClick'#0#0#9'TMenuItem'#6'CutCol'#7'Captio'
+'n'#6#10'Cut Column'#7'OnClick'#7#11'CutColClick'#0#0#9'TMenuItem'#8'PasteCo'
+'l'#7'Caption'#6#12'Paste Column'#7'OnClick'#7#13'PasteColClick'#0#0#9'TMenu'
+'Item'#6'NewRow'#7'Caption'#6#15'Insert New Row'#7'OnClick'#7#11'NewRowClic'
+'k'#0#0#9'TMenuItem'#7'CopyRow'#7'Caption'#6#8'Copy Row'#7'OnClick'#7#12'Cop'
+'yRowClick'#0#0#9'TMenuItem'#6'CutRow'#7'Caption'#6#7'Cut Row'#7'OnClick'#7
+#11'CutRowClick'#0#0#9'TMenuItem'#8'PasteRow'#7'Caption'#6#9'Paste Row'#7'On'
+'Click'#7#13'PasteRowClick'#0#0#0#9'TMenuItem'#9'MenuItem5'#7'Caption'#6#8'A'
+'nalyses'#0#9'TMenuItem'#10'MenuItem32'#7'Caption'#6#11'Descriptive'#0#9'TMe'
+'nuItem'#13'Distributions'#7'Caption'#6#23'Distribution Statistics'#7'OnClic'
+'k'#7#18'DistributionsClick'#0#0#9'TMenuItem'#8'FreqAnal'#7'Caption'#6#18'Fr'
+'equency Analysis'#7'OnClick'#7#13'FreqAnalClick'#0#0#9'TMenuItem'#7'GrpFreq'
+#7'Caption'#6#22'Plot Group Frequencies'#7'OnClick'#7#12'GrpFreqClick'#0#0#9
+'TMenuItem'#9'CrossTabs'#7'Caption'#6#16'Cross Tabulation'#7'OnClick'#7#14'C'
+'rossTabsClick'#0#0#9'TMenuItem'#9'Breakdown'#7'Caption'#6#9'Breakdown'#7'On'
+'Click'#7#14'BreakdownClick'#0#0#9'TMenuItem'#7'BoxPlot'#7'Caption'#6#8'Box '
+'Plot'#7'OnClick'#7#12'BoxPlotClick'#0#0#9'TMenuItem'#14'NormalityTests'#7'C'
+'aption'#6#15'Normality Tests'#7'OnClick'#7#19'NormalityTestsClick'#0#0#9'TM'
+'enuItem'#12'ThreeDRotate'#7'Caption'#6#21'3-D Variable Rotation'#7'OnClick'
+#7#17'ThreeDRotateClick'#0#0#9'TMenuItem'#8'PlotXvsY'#7'Caption'#6#11'Plot X'
+' vs Y'#7'OnClick'#7#13'PlotXvsYClick'#0#0#9'TMenuItem'#10'BubblePlot'#7'Cap'
+'tion'#6#29'Repeated Measures Bubble Plot'#7'OnClick'#7#15'BubblePlotClick'#0
+#0#9'TMenuItem'#8'StemLeaf'#7'Caption'#6#18'Stem and Leaf Plot'#7'OnClick'#7
+#13'StemLeafClick'#0#0#9'TMenuItem'#8'MultXvsY'#7'Caption'#6#26'Multiple Gro'
+'up X vs Y Plot'#7'OnClick'#7#13'MultXvsYClick'#0#0#9'TMenuItem'#8'XvsMultY'
+#7'Caption'#6#24'X versus Multiple Y Plot'#7'OnClick'#7#13'XvsMultYClick'#0#0
+#9'TMenuItem'#12'CompareDists'#7'Caption'#6#21'Compare Distributions'#7'OnCl'
+'ick'#7#17'CompareDistsClick'#0#0#9'TMenuItem'#14'ResistanceLine'#7'Caption'
+#6'!Resistant Line for Bivariate Data'#7'OnClick'#7#19'ResistanceLineClick'#0
+#0#9'TMenuItem'#10'DataSmooth'#7'Caption'#6#14'Data Smoothing'#7'OnClick'#7
+#15'DataSmoothClick'#0#0#9'TMenuItem'#8'homotest'#7'Caption'#6'/Brown-Forsyt'
+'he test for homogeneity of variance'#7'OnClick'#7#13'homotestClick'#0#0#0#9
+'TMenuItem'#12'OneSampTests'#7'Caption'#6#16'One Sample Tests'#7'OnClick'#7
+#17'OneSampTestsClick'#0#0#9'TMenuItem'#10'MenuItem34'#7'Caption'#6#11'Compa'
+'risons'#0#9'TMenuItem'#8'PropDiff'#7'Caption'#6#29'Difference beween Propor'
+'tions'#7'OnClick'#7#13'PropDiffClick'#0#0#9'TMenuItem'#8'CorrDiff'#7'Captio'
+'n'#6#31'Difference Between Correlations'#7'OnClick'#7#13'CorrDiffClick'#0#0
+#9'TMenuItem'#6'ttests'#7'Caption'#6#7't-tests'#7'OnClick'#7#11'ttestsClick'
+#0#0#9'TMenuItem'#5'Anova'#7'Caption'#6#19'1,2 or 3 Way ANOVAs'#7'OnClick'#7
,#10'AnovaClick'#0#0#9'TMenuItem'#11'WithinAnova'#7'Caption'#6#21'Within Subj'
+'ects ANOVA'#7'OnClick'#7#16'WithinAnovaClick'#0#0#9'TMenuItem'#8'AxSAnova'#7
+'Caption'#6#11'A x S ANOVA'#7'OnClick'#7#13'AxSAnovaClick'#0#0#9'TMenuItem'#8
+'ABSAnova'#7'Caption'#6#15'A x B x S ANOVA'#7'OnClick'#7#13'ABSAnovaClick'#0
+#0#9'TMenuItem'#4'BinA'#7'Caption'#6#19'B Nested in A ANOVA'#7'OnClick'#7#9
+'BinAClick'#0#0#9'TMenuItem'#9'NestedABC'#7'Caption'#6#28'ABC ANOVA with B N'
+'ested in A'#7'OnClick'#7#14'NestedABCClick'#0#0#9'TMenuItem'#12'OneCaseAnov'
+'a'#7'Caption'#6'''2 or 3 Way ANOVA with One Case Per Cell'#7'OnClick'#7#17
+'OneCaseAnovaClick'#0#0#9'TMenuItem'#6'Ancova'#7'Caption'#6#20'ANCOVA by Reg'
+'ression'#7'OnClick'#7#11'AncovaClick'#0#0#9'TMenuItem'#3'GLM'#7'Caption'#6
+#20'General Linear Model'#7'OnClick'#7#8'GLMClick'#0#0#9'TMenuItem'#12'Latin'
+'Squares'#7'Caption'#6#29'Latin and Greco-Latin Squares'#7'OnClick'#7#17'Lat'
+'inSquaresClick'#0#0#0#9'TMenuItem'#10'MenuItem35'#7'Caption'#6#11'Correlati'
+'on'#0#9'TMenuItem'#10'MenuItem71'#7'Caption'#6#14'Product-Moment'#7'OnClick'
+#7#15'MenuItem71Click'#0#0#9'TMenuItem'#10'MenuItem72'#7'Caption'#6#20'Parti'
+'al, Semipartial'#7'OnClick'#7#15'MenuItem72Click'#0#0#9'TMenuItem'#10'MenuI'
+'tem73'#7'Caption'#6#15'Autocorrelation'#7'OnClick'#7#15'MenuItem73Click'#0#0
+#9'TMenuItem'#10'MenuItem74'#7'Caption'#6#9'Canonical'#7'OnClick'#7#15'MenuI'
+'tem74Click'#0#0#0#9'TMenuItem'#10'MenuItem36'#7'Caption'#6#19'Multiple Regr'
+'ession'#0#9'TMenuItem'#8'LSMRitem'#7'Caption'#6'!Least Squares Multiple Reg'
+'ression'#7'OnClick'#7#13'LSMRitemClick'#0#0#9'TMenuItem'#10'MenuItem75'#7'C'
+'aption'#6#16'Forward Stepwise'#7'OnClick'#7#15'MenuItem75Click'#0#0#9'TMenu'
+'Item'#10'MenuItem76'#7'Caption'#6#17'Backward Stepwise'#7'OnClick'#7#15'Men'
+'uItem76Click'#0#0#9'TMenuItem'#10'MenuItem77'#7'Caption'#6#12'Simultaneous'
+#7'OnClick'#7#15'MenuItem77Click'#0#0#9'TMenuItem'#10'MenuItem78'#7'Caption'
+#6#11'Block Entry'#7'OnClick'#7#15'MenuItem78Click'#0#0#9'TMenuItem'#10'Menu'
+'Item79'#7'Caption'#6#16'Best Combination'#7'OnClick'#7#15'MenuItem79Click'#0
+#0#9'TMenuItem'#10'MenuItem80'#7'Caption'#6#15'Binary Logistic'#7'OnClick'#7
+#15'MenuItem80Click'#0#0#9'TMenuItem'#10'MenuItem81'#7'Caption'#6'-Cox Propo'
+'rtional Hazzards Survival Regression'#7'OnClick'#7#15'MenuItem81Click'#0#0#9
+'TMenuItem'#10'MenuItem82'#7'Caption'#6#18'Linear Programming'#7'OnClick'#7
+#15'MenuItem82Click'#0#0#9'TMenuItem'#9'TwoSLSReg'#7'Caption'#6'"Two Stage L'
+'east Squares Regression'#7'OnClick'#7#14'TwoSLSRegClick'#0#0#9'TMenuItem'#6
+'WLSReg'#7'Caption'#6'!Weighted Least Squares Regression'#7'OnClick'#7#11'WL'
+'SRegClick'#0#0#0#9'TMenuItem'#10'MenuItem37'#7'Caption'#6#12'Multivariate'#0
+#9'TMenuItem'#10'MenuItem83'#7'Caption'#6#30'MANOVA / Discriminant Function'
+#7'OnClick'#7#15'MenuItem83Click'#0#0#9'TMenuItem'#10'MenuItem84'#7'Caption'
+#6#21'Hierarchical Analysis'#7'OnClick'#7#15'MenuItem84Click'#0#0#9'TMenuIte'
+'m'#10'MenuItem29'#7'Caption'#6#23'Average Link Clustering'#7'OnClick'#7#15
+'MenuItem29Click'#0#0#9'TMenuItem'#10'MenuItem31'#7'Caption'#6#18'K Means Cl'
+'ustering'#7'OnClick'#7#15'MenuItem31Click'#0#0#9'TMenuItem'#10'MenuItem33'#7
+'Caption'#6#22'Single Link Clustering'#7'OnClick'#7#15'MenuItem33Click'#0#0#9
+'TMenuItem'#10'MenuItem85'#7'Caption'#6#13'Path Analysis'#7'OnClick'#7#15'Me'
+'nuItem85Click'#0#0#9'TMenuItem'#10'MenuItem86'#7'Caption'#6#15'Factor Analy'
+'sis'#7'OnClick'#7#15'MenuItem86Click'#0#0#9'TMenuItem'#10'MenuItem87'#7'Cap'
+'tion'#6#21'Canonical Correlation'#7'OnClick'#7#15'MenuItem87Click'#0#0#9'TM'
+'enuItem'#10'MenuItem88'#7'Caption'#6#20'General Linear Model'#7'OnClick'#7
+#15'MenuItem88Click'#0#0#9'TMenuItem'#12'BartlettTest'#7'Caption'#6#27'Bartl'
+'ett Test of Sphericity'#7'OnClick'#7#17'BartlettTestClick'#0#0#9'TMenuItem'
+#14'Correspondence'#7'Caption'#6#23'Correspondence Analysis'#7'OnClick'#7#19
+'CorrespondenceClick'#0#0#9'TMenuItem'#12'MedianPolish'#7'Caption'#6' Median'
+' Polishing for a 2x2 Table'#7'OnClick'#7#17'MedianPolishClick'#0#0#0#9'TMen'
+'uItem'#10'MenuItem38'#7'Caption'#6#20'Cross-Classification'#0#9'TMenuItem'
+#10'MenuItem89'#7'Caption'#6#14'AxB Log Linear'#7'OnClick'#7#15'MenuItem89Cl'
+'ick'#0#0#9'TMenuItem'#10'MenuItem90'#7'Caption'#6#16'AxBxC Log Linear'#7'On'
+'Click'#7#15'MenuItem90Click'#0#0#9'TMenuItem'#10'MenuItem91'#7'Caption'#6#17
+'Log Linear Screen'#7'OnClick'#7#15'MenuItem91Click'#0#0#0#9'TMenuItem'#10'M'
+'enuItem39'#7'Caption'#6#20'Measurement Programs'#0#9'TMenuItem'#10'MenuItem'
+'92'#7'Caption'#6#25'Generate Sample Test Data'#7'OnClick'#7#15'MenuItem92Cl'
+'ick'#0#0#9'TMenuItem'#10'MenuItem93'#7'Caption'#6#23'Classical Test Analysi'
+'s'#7'OnClick'#7#15'MenuItem93Click'#0#0#9'TMenuItem'#10'MenuItem94'#7'Capti'
+'on'#6#22'Rasch Test Calibration'#7'OnClick'#7#15'MenuItem94Click'#0#0#9'TMe'
+'nuItem'#10'MenuItem95'#7'Caption'#6#27'Successive Interval Scaling'#7'OnCli'
+'ck'#7#15'MenuItem95Click'#0#0#9'TMenuItem'#10'MenuItem96'#7'Caption'#6#26'G'
,'uttman Scalogram Analysis'#7'OnClick'#7#15'MenuItem96Click'#0#0#9'TMenuItem'
+#10'MenuItem97'#7'Caption'#6#30'Weighted Composite Reliability'#7'OnClick'#7
+#15'MenuItem97Click'#0#0#9'TMenuItem'#10'MenuItem98'#7'Caption'#6' Kuder-Ric'
+'hardson #21 Reliability'#7'OnClick'#7#15'MenuItem98Click'#0#0#9'TMenuItem'
+#10'MenuItem99'#7'Caption'#6'#Spearman-Brown Prophecy Reliability'#7'OnClick'
+#7#15'MenuItem99Click'#0#0#9'TMenuItem'#11'MenuItem100'#7'Caption'#6'''Relia'
+'bility Due to Test Variance Change'#7'OnClick'#7#16'MenuItem100Click'#0#0#9
+'TMenuItem'#11'MenuItem101'#7'Caption'#6#29'Differential Item Functioning'#7
+'OnClick'#7#16'MenuItem101Click'#0#0#9'TMenuItem'#11'MenuItem102'#7'Caption'
+#6#23'Polytomous DIF Analysis'#7'OnClick'#7#16'MenuItem102Click'#0#0#9'TMenu'
+'Item'#8'GrdBkMnu'#7'Caption'#6#10'Grade Book'#7'OnClick'#7#13'GrdBkMnuClick'
+#0#0#9'TMenuItem'#16'ItemBankMenuItem'#7'Caption'#6#12'Item Banking'#7'OnCli'
+'ck'#7#21'ItemBankMenuItemClick'#0#0#0#9'TMenuItem'#10'MenuItem40'#7'Caption'
+#6#13'Nonparametric'#0#9'TMenuItem'#10'SimpChiSqr'#7'Caption'#6#31'Simple Ch'
+'iSquare for Categories'#7'OnClick'#7#15'SimpChiSqrClick'#0#0#9'TMenuItem'#11
+'MenuItem103'#7'Caption'#6#22'Contingency Chi Square'#7'OnClick'#7#16'MenuIt'
+'em103Click'#0#0#9'TMenuItem'#11'MenuItem104'#7'Caption'#6#25'Spearman Rank '
+'Correlation'#7'OnClick'#7#16'MenuItem104Click'#0#0#9'TMenuItem'#11'MenuItem'
+'105'#7'Caption'#6#19'Mann-Whitney U Test'#7'OnClick'#7#16'MenuItem105Click'
+#0#0#9'TMenuItem'#11'MenuItem106'#7'Caption'#6#19'Fisher''s Exact Test'#7'On'
+'Click'#7#16'MenuItem106Click'#0#0#9'TMenuItem'#11'MenuItem107'#7'Caption'#6
+'$Kendall''s Coefficient of Concordance'#7'OnClick'#7#16'MenuItem107Click'#0
+#0#9'TMenuItem'#11'MenuItem108'#7'Caption'#6#28'Kruskal-Wallis One Way ANOVA'
+#7'OnClick'#7#16'MenuItem108Click'#0#0#9'TMenuItem'#11'MenuItem109'#7'Captio'
+'n'#6#31'Matched Pairs Signed Ranks Test'#7'OnClick'#7#16'MenuItem109Click'#0
+#0#9'TMenuItem'#11'MenuItem110'#7'Caption'#6#14'Cochran Q Test'#7'OnClick'#7
+#16'MenuItem110Click'#0#0#9'TMenuItem'#11'MenuItem111'#7'Caption'#6#9'Sign T'
+'est'#7'OnClick'#7#16'MenuItem111Click'#0#0#9'TMenuItem'#11'MenuItem112'#7'C'
+'aption'#6#22'Friedman Two Way ANOVA'#7'OnClick'#7#16'MenuItem112Click'#0#0#9
+'TMenuItem'#11'MenuItem113'#7'Caption'#6#31'Probability of a binomial event'
+#7'OnClick'#7#16'MenuItem113Click'#0#0#9'TMenuItem'#11'MenuItem114'#7'Captio'
+'n'#6#30'Kendall''s Tau and Parrtial Tau'#7'OnClick'#7#16'MenuItem114Click'#0
+#0#9'TMenuItem'#11'MenuItem115'#7'Caption'#6#30'Kaplan-Meier Survival Analys'
+'is'#7'OnClick'#7#16'MenuItem115Click'#0#0#9'TMenuItem'#13'RiditAnalysis'#7
+'Caption'#6#14'RIDIT Analysis'#7'OnClick'#7#18'RiditAnalysisClick'#0#0#9'TMe'
+'nuItem'#11'WghtedKappa'#7'Caption'#6#24'Kappa and Weighted Kappa'#7'OnClick'
+#7#16'WghtedKappaClick'#0#0#9'TMenuItem'#8'GenKappa'#7'Caption'#6#17'General'
+'ized Kappa'#7'OnClick'#7#13'GenKappaClick'#0#0#9'TMenuItem'#8'RunsTest'#7'C'
+'aption'#6#23'Runs Test for Normality'#7'OnClick'#7#13'RunsTestClick'#0#0#9
+'TMenuItem'#4'Sens'#7'Caption'#6#20'Sen''s Slope Analysis'#7'OnClick'#7#9'Se'
+'nsClick'#0#0#9'TMenuItem'#6'KSTest'#7'Caption'#6#23'Kolmogorov-Smirnov Test'
+#7'OnClick'#7#11'KSTestClick'#0#0#9'TMenuItem'#7'SRHItem'#7'Caption'#6#29'Sc'
+'heirer-Ray-Hart 2-way ANOVA'#7'OnClick'#7#12'SRHItemClick'#0#0#9'TMenuItem'
+#9'lifetable'#7'Caption'#6#10'LIFE TABLE'#7'OnClick'#7#14'lifetableClick'#0#0
+#0#9'TMenuItem'#10'MenuItem41'#7'Caption'#6#27'Statistical Process Control'#0
+#9'TMenuItem'#11'MenuItem116'#7'Caption'#6#10'XBAR Chart'#7'OnClick'#7#16'Me'
+'nuItem116Click'#0#0#9'TMenuItem'#11'MenuItem117'#7'Caption'#6#11'Range Char'
+'t'#7'OnClick'#7#16'MenuItem117Click'#0#0#9'TMenuItem'#11'MenuItem118'#7'Cap'
+'tion'#6#15'S Control Chart'#7'OnClick'#7#16'MenuItem118Click'#0#0#9'TMenuIt'
+'em'#9'MenuItem6'#7'Caption'#6#12'CUMSUM Chart'#7'OnClick'#7#14'MenuItem6Cli'
+'ck'#0#0#9'TMenuItem'#11'MenuItem119'#7'Caption'#6#30'Defect (nonconformity)'
+' c Chart'#7'OnClick'#7#16'MenuItem119Click'#0#0#9'TMenuItem'#12'pcontrochar'
+'t'#7'Caption'#6#15'p Control Chart'#7'OnClick'#7#17'pcontrochartClick'#0#0#9
+'TMenuItem'#11'MenuItem120'#7'Caption'#6#24'Defects per Unit u Chart'#7'OnCl'
+'ick'#7#16'MenuItem120Click'#0#0#0#9'TMenuItem'#9'MenuItem9'#7'Caption'#6#9
+'Financial'#0#9'TMenuItem'#10'MenuItem10'#7'Caption'#6#26'Loan Amortization '
+'Schedule'#7'OnClick'#7#15'MenuItem10Click'#0#0#9'TMenuItem'#10'MenuItem11'#7
+'Caption'#6' Sum of years digits depreciation'#7'OnClick'#7#15'MenuItem11Cli'
+'ck'#0#0#9'TMenuItem'#10'MenuItem14'#7'Caption'#6#26'Straight line depreciat'
+'ion'#7'OnClick'#7#15'MenuItem14Click'#0#0#9'TMenuItem'#10'MenuItem17'#7'Cap'
+'tion'#6#23'Internal rate of return'#7'Visible'#8#0#0#9'TMenuItem'#10'MenuIt'
+'em18'#7'Caption'#6#13'Present Value'#7'Visible'#8#0#0#9'TMenuItem'#10'MenuI'
+'tem19'#7'Caption'#6#14'Period Payment'#7'Visible'#8#0#0#9'TMenuItem'#10'Men'
+'uItem21'#7'Caption'#6#7'Payment'#7'Visible'#8#0#0#9'TMenuItem'#10'MenuItem2'
,'2'#7'Caption'#6#14'No. of Periods'#7'Visible'#8#0#0#9'TMenuItem'#10'MenuIte'
+'m23'#7'Caption'#6#17'Net Present Value'#7'Visible'#8#0#0#9'TMenuItem'#10'Me'
+'nuItem24'#7'Caption'#6#13'Interest Rate'#7'Visible'#8#0#0#9'TMenuItem'#10'M'
+'enuItem25'#7'Caption'#6#16'Interest Payment'#7'Visible'#8#0#0#9'TMenuItem'
+#10'MenuItem26'#7'Caption'#6#12'Future Value'#7'Visible'#8#0#0#9'TMenuItem'
+#10'MenuItem27'#7'Caption'#6#22'Double Declining Value'#7'OnClick'#7#15'Menu'
+'Item27Click'#0#0#0#9'TMenuItem'#9'MatManMnu'#7'Caption'#6#19'Matrix Manipul'
+'ation'#7'OnClick'#7#14'MatManMnuClick'#0#0#0#9'TMenuItem'#6'Option'#7'Capti'
+'on'#6#7'Options'#0#9'TMenuItem'#8'ShowOpts'#7'Caption'#6#12'Show Options'#7
+'OnClick'#7#11'OptionClick'#0#0#9'TMenuItem'#7'PicView'#7'Caption'#6#13'View'
+' Pictures'#7'Visible'#8#0#0#0#9'TMenuItem'#9'MenuItem7'#7'Caption'#6#11'Sim'
+'ulations'#0#9'TMenuItem'#8'ScatPlot'#7'Caption'#6#22'Bivariate Scatter Plot'
+#7'OnClick'#7#13'ScatPlotClick'#0#0#9'TMenuItem'#9'MultDists'#7'Caption'#6#25
+'Multivariate Distribution'#7'OnClick'#7#14'MultDistsClick'#0#0#9'TMenuItem'
+#10'TypeErrors'#7'Caption'#6#30'Type 1 and Type 2 Error Curves'#7'OnClick'#7
+#15'TypeErrorsClick'#0#0#9'TMenuItem'#5'Power'#7'Caption'#6#25'Power Curves '
+'for a z test'#7'OnClick'#7#10'PowerClick'#0#0#9'TMenuItem'#9'DistPlots'#7'C'
+'aption'#6'&Distribution Plots and Critical Values'#7'OnClick'#7#14'DistPlot'
+'sClick'#0#0#9'TMenuItem'#9'SeqValues'#7'Caption'#6#26'Generate Sequential V'
+'alues'#7'OnClick'#7#14'SeqValuesClick'#0#0#9'TMenuItem'#10'RandomVals'#7'Ca'
+'ption'#6#25'Random Theoretical Values'#7'OnClick'#7#15'RandomValsClick'#0#0
+#9'TMenuItem'#13'Probabilities'#7'Caption'#6#13'Probabilities'#0#9'TMenuItem'
+#7'probgtz'#7'Caption'#6#15'Probability > z'#7'OnClick'#7#12'probgtzClick'#0
+#0#9'TMenuItem'#7'Probltz'#7'Caption'#6#15'Probability < z'#7'OnClick'#7#12
+'ProbltzClick'#0#0#9'TMenuItem'#12'probzbetween'#7'Caption'#6#23'Prob betwee'
+'n 2 z values'#7'OnClick'#7#17'probzbetweenClick'#0#0#9'TMenuItem'#8'inverse'
+'z'#7'Caption'#6#30'z for a given cum. Probability'#7'OnClick'#7#13'inversez'
+'Click'#0#0#9'TMenuItem'#7'Chiprob'#7'Caption'#6#21'Chisquare Probability'#7
+'OnClick'#7#12'ChiprobClick'#0#0#9'TMenuItem'#5'tprob'#7'Caption'#6#21'Stude'
+'nt t probability'#7'OnClick'#7#10'tprobClick'#0#0#9'TMenuItem'#5'Fprob'#7'C'
+'aption'#6#13'F probability'#7'OnClick'#7#10'FprobClick'#0#0#9'TMenuItem'#12
+'HypergeoProb'#7'Caption'#6#26'Hypergeometric probability'#7'OnClick'#7#17'H'
+'ypergeoProbClick'#0#0#0#0#9'TMenuItem'#9'MenuItem8'#7'Caption'#6#4'Help'#0#9
+'TMenuItem'#5'About'#7'Caption'#6#8'About...'#7'OnClick'#7#10'AboutClick'#0#0
+#9'TMenuItem'#7'GridUse'#7'Caption'#6#14'Using the Grid'#7'OnClick'#7#12'Gri'
+'dUseClick'#0#0#9'TMenuItem'#12'HelpContents'#7'Caption'#6#12'General Help'#7
+'OnClick'#7#17'HelpContentsClick'#0#0#0#0#11'TOpenDialog'#11'OpenDialog1'#4
+'left'#2'P'#3'top'#3'h'#1#0#0#11'TSaveDialog'#11'SaveDialog1'#4'left'#3#144#0
+#3'top'#3'h'#1#0#0#0
]);

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,274 @@
object MannWhitUFrm: TMannWhitUFrm
Left = 186
Height = 300
Top = 102
Width = 325
Caption = 'Mann-Whitney U Test'
ClientHeight = 300
ClientWidth = 325
OnShow = FormShow
LCLVersion = '0.9.26.2'
object Label1: TLabel
Left = 7
Height = 14
Top = 7
Width = 90
Caption = 'Variables Available'
ParentColor = False
end
object Label2: TLabel
Left = 200
Height = 14
Top = 24
Width = 71
Caption = 'Group Variable'
ParentColor = False
end
object Label3: TLabel
Left = 198
Height = 14
Top = 119
Width = 95
Caption = 'Dependent Variable'
ParentColor = False
end
object VarList: TListBox
Left = 7
Height = 267
Top = 23
Width = 141
TabOrder = 0
end
object GrpIn: TBitBtn
Left = 160
Height = 28
Top = 24
Width = 31
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE
6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580
3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3
71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7
74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7
74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = GrpInClick
TabOrder = 1
end
object GrpOut: TBitBtn
Left = 160
Height = 28
Top = 56
Width = 31
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = GrpOutClick
TabOrder = 2
end
object DepIn: TBitBtn
Left = 160
Height = 28
Top = 120
Width = 31
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE
6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580
3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3
71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7
74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7
74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = DepInClick
TabOrder = 3
end
object DepOut: TBitBtn
Left = 160
Height = 28
Top = 152
Width = 31
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = DepOutClick
TabOrder = 4
end
object GrpEdit: TEdit
Left = 200
Height = 20
Top = 39
Width = 115
TabOrder = 5
Text = 'GrpEdit'
end
object DepEdit: TEdit
Left = 200
Height = 20
Top = 136
Width = 115
TabOrder = 6
Text = 'Edit1'
end
object ResetBtn: TButton
Left = 161
Height = 29
Top = 192
Width = 67
Caption = 'Reset'
OnClick = ResetBtnClick
TabOrder = 7
end
object CancelBtn: TButton
Left = 248
Height = 29
Top = 192
Width = 67
Caption = 'Cancel'
ModalResult = 2
TabOrder = 8
end
object ComputeBtn: TButton
Left = 161
Height = 29
Top = 240
Width = 67
Caption = 'Compute'
OnClick = ComputeBtnClick
TabOrder = 9
end
object ReturnBtn: TButton
Left = 248
Height = 29
Top = 240
Width = 67
Caption = 'Return'
ModalResult = 1
TabOrder = 10
end
end

View File

@ -0,0 +1,232 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TMannWhitUFrm','FORMDATA',[
'TPF0'#13'TMannWhitUFrm'#12'MannWhitUFrm'#4'Left'#3#186#0#6'Height'#3','#1#3
+'Top'#2'f'#5'Width'#3'E'#1#7'Caption'#6#19'Mann-Whitney U Test'#12'ClientHei'
+'ght'#3','#1#11'ClientWidth'#3'E'#1#6'OnShow'#7#8'FormShow'#10'LCLVersion'#6
+#8'0.9.26.2'#0#6'TLabel'#6'Label1'#4'Left'#2#7#6'Height'#2#14#3'Top'#2#7#5'W'
+'idth'#2'Z'#7'Caption'#6#19'Variables Available'#11'ParentColor'#8#0#0#6'TLa'
+'bel'#6'Label2'#4'Left'#3#200#0#6'Height'#2#14#3'Top'#2#24#5'Width'#2'G'#7'C'
+'aption'#6#14'Group Variable'#11'ParentColor'#8#0#0#6'TLabel'#6'Label3'#4'Le'
+'ft'#3#198#0#6'Height'#2#14#3'Top'#2'w'#5'Width'#2'_'#7'Caption'#6#18'Depend'
+'ent Variable'#11'ParentColor'#8#0#0#8'TListBox'#7'VarList'#4'Left'#2#7#6'He'
+'ight'#3#11#1#3'Top'#2#23#5'Width'#3#141#0#8'TabOrder'#2#0#0#0#7'TBitBtn'#5
+'GrpIn'#4'Left'#3#160#0#6'Height'#2#28#3'Top'#2#24#5'Width'#2#31#10'Glyph.Da'
+'ta'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0
+#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'!c$'#184
+#29'^ '#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'*p/8%i)'#247'!c$'#217#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0'a'#190'm'#255']'#184'h'#255'X'#177
+'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255
+'5'#128';'#255'?'#136'E'#255'Y'#161'^'#255'D'#139'I'#255'!c$'#207#255#255#255
+#0#255#255#255#0#255#255#255#0'e'#195'q'#255#160#215#169#255#156#213#165#255
+#152#211#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142
+#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'E'#140'J'
+#255'!c$'#196#255#255#255#0#255#255#255#0'h'#199't'#255#165#218#174#255#162
+#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255
+#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130
+#255'J'#145'P'#255'%i)'#201#255#255#255#0#255#255#255#0'h'#199't'#255'h'#199
+'t'#255'e'#195'q'#255'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255
+'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'
+#209#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'A'#145'I'#247';'#136'B'#219#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'G'#153'O'#187'A'#145'I'#6#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#10'GrpInClick'#8
+'TabOrder'#2#1#0#0#7'TBitBtn'#6'GrpOut'#4'Left'#3#160#0#6'Height'#2#28#3'Top'
+#2'8'#5'Width'#2#31#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'
+#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0
,#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'M'#161'V'#6'G'#153
+'O'#184#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'S'#169'\'#217'M'#161'V'
+#247'G'#153'O8'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131#255
+'['#170'd'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'
+#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255#255#255#255#0#255#255#255#0'e'#195
+'q'#196'{'#200#134#255#156#213#165#255#152#211#161#255#148#208#157#255#144
+#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255
+'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!c$'#255#255#255#255#0#255#255
+#255#0'h'#199't'#201''#204#138#255#162#216#171#255#158#214#167#255#154#212
+#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255#133
+#199#139#255#129#197#135#255'}'#194#130#255'x'#192'~'#255'%i)'#255#255#255
+#255#0#255#255#255#0#255#255#255#0'h'#199't'#209#128#205#139#255'|'#201#135
+#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'
+#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#219'e'#195'q'#247#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#6'h'#199't'#187#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyp'
+'hs'#2#0#7'OnClick'#7#11'GrpOutClick'#8'TabOrder'#2#2#0#0#7'TBitBtn'#5'DepIn'
+#4'Left'#3#160#0#6'Height'#2#28#3'Top'#2'x'#5'Width'#2#31#10'Glyph.Data'#10
+':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0
+' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
,#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'!c$'#184#29'^ '#6
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0'*p/8%i)'#247'!c$'#217#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'a'#190'm'#255']'#184'h'#255'X'#177'b'
+#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'
+#128';'#255'?'#136'E'#255'Y'#161'^'#255'D'#139'I'#255'!c$'#207#255#255#255#0
+#255#255#255#0#255#255#255#0'e'#195'q'#255#160#215#169#255#156#213#165#255
+#152#211#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142
+#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'E'#140'J'
+#255'!c$'#196#255#255#255#0#255#255#255#0'h'#199't'#255#165#218#174#255#162
+#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255
+#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130
+#255'J'#145'P'#255'%i)'#201#255#255#255#0#255#255#255#0'h'#199't'#255'h'#199
+'t'#255'e'#195'q'#255'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255
+'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'
+#209#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'A'#145'I'#247';'#136'B'#219#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'G'#153'O'#187'A'#145'I'#6#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#10'DepInClick'#8
+'TabOrder'#2#3#0#0#7'TBitBtn'#6'DepOut'#4'Left'#3#160#0#6'Height'#2#28#3'Top'
+#3#152#0#5'Width'#2#31#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0
+'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0
+#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'M'#161'V'#6'G'
+#153'O'#184#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'S'#169'\'#217'M'#161
+'V'#247'G'#153'O8'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131
+#255'['#170'd'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/'
+'x5'#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255#255#255#255#0#255#255#255#0'e'
+#195'q'#196'{'#200#134#255#156#213#165#255#152#211#161#255#148#208#157#255
+#144#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132
+#255'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!c$'#255#255#255#255#0#255
+#255#255#0'h'#199't'#201''#204#138#255#162#216#171#255#158#214#167#255#154
,#212#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255
+#133#199#139#255#129#197#135#255'}'#194#130#255'x'#192'~'#255'%i)'#255#255
+#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#209#128#205#139#255'|'#201
+#135#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'
+#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#219'e'#195'q'#247#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#6'h'#199't'#187#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'Num'
+'Glyphs'#2#0#7'OnClick'#7#11'DepOutClick'#8'TabOrder'#2#4#0#0#5'TEdit'#7'Grp'
+'Edit'#4'Left'#3#200#0#6'Height'#2#20#3'Top'#2''''#5'Width'#2's'#8'TabOrder'
+#2#5#4'Text'#6#7'GrpEdit'#0#0#5'TEdit'#7'DepEdit'#4'Left'#3#200#0#6'Height'#2
+#20#3'Top'#3#136#0#5'Width'#2's'#8'TabOrder'#2#6#4'Text'#6#5'Edit1'#0#0#7'TB'
+'utton'#8'ResetBtn'#4'Left'#3#161#0#6'Height'#2#29#3'Top'#3#192#0#5'Width'#2
+'C'#7'Caption'#6#5'Reset'#7'OnClick'#7#13'ResetBtnClick'#8'TabOrder'#2#7#0#0
+#7'TButton'#9'CancelBtn'#4'Left'#3#248#0#6'Height'#2#29#3'Top'#3#192#0#5'Wid'
+'th'#2'C'#7'Caption'#6#6'Cancel'#11'ModalResult'#2#2#8'TabOrder'#2#8#0#0#7'T'
+'Button'#10'ComputeBtn'#4'Left'#3#161#0#6'Height'#2#29#3'Top'#3#240#0#5'Widt'
+'h'#2'C'#7'Caption'#6#7'Compute'#7'OnClick'#7#15'ComputeBtnClick'#8'TabOrder'
+#2#9#0#0#7'TButton'#9'ReturnBtn'#4'Left'#3#248#0#6'Height'#2#29#3'Top'#3#240
+#0#5'Width'#2'C'#7'Caption'#6#6'Return'#11'ModalResult'#2#1#8'TabOrder'#2#10
+#0#0#0
]);

View File

@ -0,0 +1,326 @@
unit MannWhitUUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, Buttons, MainUnit, OutPutUnit, FunctionslIB,
Globals, DataProcs, Math;
type
{ TMannWhitUFrm }
TMannWhitUFrm = class(TForm)
GrpIn: TBitBtn;
GrpOut: TBitBtn;
DepIn: TBitBtn;
DepOut: TBitBtn;
ResetBtn: TButton;
CancelBtn: TButton;
ComputeBtn: TButton;
ReturnBtn: TButton;
GrpEdit: TEdit;
DepEdit: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
VarList: TListBox;
procedure ComputeBtnClick(Sender: TObject);
procedure DepInClick(Sender: TObject);
procedure DepOutClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure GrpInClick(Sender: TObject);
procedure GrpOutClick(Sender: TObject);
procedure ResetBtnClick(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
MannWhitUFrm: TMannWhitUFrm;
implementation
{ TMannWhitUFrm }
procedure TMannWhitUFrm.ResetBtnClick(Sender: TObject);
VAR i : integer;
begin
GrpEdit.Text := '';
DepEdit.Text := '';
GrpIn.Visible := true;
GrpOut.Visible := false;
DepIn.Visible := true;
DepOut.Visible := false;
VarList.Items.Clear;
for i := 1 to NoVariables do
VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]);
end;
procedure TMannWhitUFrm.FormShow(Sender: TObject);
begin
ResetBtnClick(self);
end;
procedure TMannWhitUFrm.DepInClick(Sender: TObject);
VAR index : integer;
begin
index := VarList.ItemIndex;
DepEdit.Text := VarList.Items.Strings[index];
VarList.Items.Delete(index);
DepIn.Visible := false;
DepOut.Visible := true;
end;
procedure TMannWhitUFrm.ComputeBtnClick(Sender: TObject);
label cleanup, Check1;
var
i, j, ind_var, dep_var, min_grp, max_grp, group, total_n : integer;
NoTies, NoTieGroups, n1, n2, nogroups, largestn : integer;
NoSelected : integer;
ColNoSelected : IntDyneVec;
group_count : IntdyneVec;
Ranks, X : DblDyneMat;
RankSums : DblDyneVec;
TieSum, score, t, SumT, Avg, z, prob, U, U2, SD, Temp : double;
cellstring, outline : string;
begin
total_n := 0;
NoTieGroups := 0;
NoSelected := 2;
SumT := 0.0;
// Check for data
if (NoVariables < 1) then
begin
ShowMessage('ERROR! You must have grid data!');
exit;
end;
// allocate space
SetLength(ColNoSelected,NoVariables);
// Get column numbers of the independent and dependent variables
ind_var := 0;
dep_var := 0;
for i := 1 to NoVariables do
begin
cellstring := GrpEdit.Text;
if (cellstring = OS3MainFrm.DataGrid.Cells[i,0]) then ind_var := i;
cellstring := DepEdit.Text;
if (cellstring = OS3MainFrm.DataGrid.Cells[i,0]) then dep_var := i;
end;
ColNoSelected[0] := ind_var;
ColNoSelected[1] := dep_var;
//get minimum and maximum group codes
min_grp := 10000;
max_grp := -10000;
for i := 1 to NoCases do
begin
if (not GoodRecord(i,NoSelected,ColNoSelected)) then continue;
group := round(StrToFloat(Trim(OS3MainFrm.DataGrid.Cells[ind_var,i])));
if (group < min_grp) then min_grp := group;
if (group > max_grp) then max_grp := group;
total_n := total_n + 1;
end;
nogroups := max_grp - min_grp + 1;
// Initialize arrays
SetLength(RankSums,nogroups);
SetLength(Ranks,NoCases,2);
SetLength(X,NoCases,2);
SetLength(group_count,nogroups);
for i := 0 to nogroups-1 do
begin
group_count[i] := 0;
RankSums[i] := 0.0;
end;
// Setup for printer output
OutPutFrm.RichEdit.Clear;
OutPutFrm.RichEdit.Lines.Add('Mann-Whitney U Test');
OutPutFrm.RichEdit.Lines.Add('See pages 116-127 in S. Siegel: Nonparametric Statistics for the Behavioral Sciences');
OutPutFrm.RichEdit.Lines.Add('');
// Get data
for i := 1 to NoCases do
begin
if (not GoodRecord(i,NoSelected,ColNoSelected)) then continue;
score := StrToFloat(Trim(OS3MainFrm.DataGrid.Cells[dep_var,i]));
group := round(StrToFloat(Trim(OS3MainFrm.DataGrid.Cells[ind_var,i])));
group := group - min_grp + 1;
if (group > 2) then
begin
ShowMessage('ERROR! Group codes must be 1 and 2!');
goto cleanup;
end;
group_count[group-1] := group_count[group-1] + 1;
X[i-1,0] := score;
X[i-1,1] := group;
end;
//Sort all scores in ascending order
for i := 1 to total_n - 1 do
begin
for j := i + 1 to total_n do
begin
if (X[i-1,0] > X[j-1,0]) then
begin
Temp := X[i-1,0];
X[i-1,0] := X[j-1,0];
X[j-1,0] := Temp;
Temp := X[i-1,1];
X[i-1,1] := X[j-1,1];
X[j-1,1] := Temp;
end;
end;
end;
// Store ranks
for i := 1 to total_n do
begin
Ranks[i-1,0] := i;
Ranks[i-1,1] := X[i-1,1];
end;
//Check for ties in ranks - replace with average rank and calculate
//T for each tie and sum of the T's
i := 1;
while i < total_n do
begin
j := i + 1;
TieSum := 0;
NoTies := 0;
while (j < total_n) do
begin
if (X[j-1,0] > X[i-1,0]) then goto Check1;
if (X[j-1,0] = X[i-1,0]) then // match
begin
TieSum := TieSum + round(Ranks[j-1,0]);
NoTies := NoTies + 1;
end;
j := j + 1;
end;
Check1:
if (NoTies > 0) then //At least one tie found
begin
TieSum := TieSum + Ranks[i-1,0];
NoTies := NoTies + 1;
Avg := TieSum / NoTies;
for j := i to i + NoTies - 1 do Ranks[j-1,0] := Avg;
t := Power(NoTies,3) - NoTies;
SumT := SumT + t;
NoTieGroups := NoTieGroups + 1;
i := i + (NoTies - 1);
end;
i := i + 1;
end; // next i
// Calculate sum of ranks in each group
for i := 1 to total_n do
begin
group := round(Ranks[i-1,1]);
RankSums[group-1] := RankSums[group-1] + Ranks[i-1,0];
end;
//Calculate U for larger and smaller groups
n1 := group_count[0];
n2 := group_count[1];
if (n1 > n2) then
U := (n1 * n2) + ((n1 * (n1 + 1)) / 2.0) - RankSums[0]
else
U := (n1 * n2) + ((n2 * (n2 + 1)) / 2.0) - RankSums[1];
U2 := (n1 * n2) - U;
SD := (n1 * n2 * (n1 + n2 + 1)) / 12.0;
SD := sqrt(SD);
if (U2 > U) then z := (U2 - (n1 * n2 / 2)) / SD
else z := (U - (n1 * n2 / 2)) / SD;
prob := 1.0 - probz(z);
//Report results
OutPutFrm.RichEdit.Lines.Add(' Score Rank Group');
OutPutFrm.RichEdit.Lines.Add('');
for i := 1 to total_n do
begin
outline := format('%10.2f %10.2f %10.0f',
[X[i-1,0], Ranks[i-1,0], Ranks[i-1,1]]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('Sum of Ranks in each Group');
OutPutFrm.RichEdit.Lines.Add('Group Sum No. in Group');
for i := 1 to nogroups do
begin
outline := format('%3d %10.2f %5d', [i+min_grp-1, RankSums[i-1],group_count[i-1]]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
OutPutFrm.RichEdit.Lines.Add('');
outline := format('No. of tied rank groups = %3d',[NoTieGroups]);
OutPutFrm.RichEdit.Lines.Add(outline);
if (n1 > n2) then largestn := n1
else largestn := n2;
if (largestn < 20) then
outline := format('Statistic U = %8.4f',[U])
else
begin
if (U > U2) then outline := format('Statistic U = %8.4f',[U])
else outline := format('Statistic U = %8.4f',[U2]);
end;
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('z Statistic (corrected for ties) = %8.4f, Prob. > z = %6.4f',
[z, prob]);
OutPutFrm.RichEdit.Lines.Add(outline);
if (n2 < 20) then
begin
OutPutFrm.RichEdit.Lines.Add('z test is approximate. Use tables of exact probabilities in Siegel.');
OutPutFrm.RichEdit.Lines.Add('(Table J or K, pages 271-277)');
end;
OutPutFrm.ShowModal;
// Clean up the heap
cleanup:
group_count := nil;
X := nil;
Ranks := nil;
RankSums := nil;
ColNoSelected := nil;
end;
procedure TMannWhitUFrm.DepOutClick(Sender: TObject);
begin
VarList.Items.Add(DepEdit.Text);
DepEdit.Text := '';
DepIn.Visible := true;
DepOut.Visible := false;
end;
procedure TMannWhitUFrm.GrpInClick(Sender: TObject);
VAR index : integer;
begin
index := VarList.ItemIndex;
GrpEdit.Text := VarList.Items.Strings[index];
VarList.Items.Delete(index);
GrpIn.Visible := false;
GrpOut.Visible := true;
end;
procedure TMannWhitUFrm.GrpOutClick(Sender: TObject);
begin
VarList.Items.Add(GrpEdit.Text);
GrpEdit.Text := '';
GrpIn.Visible := true;
GrpOut.Visible := false;
end;
initialization
{$I mannwhituunit.lrs}
end.

View File

@ -0,0 +1,368 @@
object MatchItemForm: TMatchItemForm
Left = 195
Height = 596
Top = 118
Width = 773
Caption = 'Matching Item Create or Edit Form'
ClientHeight = 596
ClientWidth = 773
OnShow = FormShow
LCLVersion = '0.9.30.4'
object jpeglabel: TLabel
Left = 19
Height = 16
Top = 399
Width = 225
Caption = 'jpeg photo to display prior to item (if any):'
ParentColor = False
end
object jpegnameEdit: TEdit
Left = 249
Height = 23
Top = 392
Width = 372
TabOrder = 0
Text = 'jpegnameEdit'
end
object jpegBrowseBtn: TButton
Left = 16
Height = 30
Top = 437
Width = 118
Caption = 'Browse jpeg Images'
OnClick = jpegBrowseBtnClick
TabOrder = 1
end
object SelectImageBtn: TButton
Left = 19
Height = 26
Top = 508
Width = 112
Caption = 'Select Shown Image'
OnClick = SelectImageBtnClick
TabOrder = 2
end
object ItemSaveBtn: TButton
Left = 376
Height = 33
Top = 436
Width = 111
Caption = 'Save this item'
OnClick = ItemSaveBtnClick
TabOrder = 3
end
object PreviousBtn: TButton
Left = 507
Height = 32
Top = 437
Width = 110
Caption = 'Show Previous Item'
OnClick = PreviousBtnClick
TabOrder = 4
end
object ShowNextBtn: TButton
Left = 378
Height = 30
Top = 492
Width = 109
Caption = 'Show Next Item'
OnClick = ShowNextBtnClick
TabOrder = 5
end
object StartNewBtn: TButton
Left = 507
Height = 30
Top = 492
Width = 111
Caption = 'Start a new item'
OnClick = StartNewBtnClick
TabOrder = 6
end
object ReturnBtn: TButton
Left = 441
Height = 30
Top = 556
Width = 111
Caption = 'Return'
OnClick = ReturnBtnClick
TabOrder = 7
end
object Image1: TImage
Left = 151
Height = 154
Top = 432
Width = 214
end
object Memo1: TMemo
Left = 96
Height = 93
Top = 3
Width = 616
Lines.Strings = (
'Directions: To create a Matching item, you will need to enter the number of an item code which contains'
'both a major code and a minor code. It is suggested you print all item codes from the options menu on the'
'main procedure page of the item banking program. You can however, browse the Matchin items from this '
'form.'
'After you have selected an item code number, enter the item stem in the space provided. Your item can also'
'include a jpeg picture prior to the presentation of the item on a test. To find the image, click the jpeg browse'
'button until you see the image you wish to include. When that item is shown, click the Select button to save'
'the name of the image file.'
''
)
ScrollBars = ssVertical
TabOrder = 8
end
object Label1: TLabel
Left = 7
Height = 16
Top = 364
Width = 396
Caption = 'The Item number in the Right-Hand list that matches the Left-Hand List is: '
ParentColor = False
end
object AnswerEdit: TEdit
Left = 407
Height = 23
Top = 357
Width = 36
TabOrder = 9
Text = 'AnswerEdit'
end
object Label2: TLabel
Left = 41
Height = 16
Top = 105
Width = 76
Caption = 'Left-Hand List'
ParentColor = False
end
object Label3: TLabel
Left = 480
Height = 16
Top = 105
Width = 84
Caption = 'Right-Hand List'
ParentColor = False
end
object Label4: TLabel
Left = 9
Height = 16
Top = 130
Width = 15
Caption = 'A. '
ParentColor = False
end
object Label5: TLabel
Left = 7
Height = 16
Top = 168
Width = 14
Caption = 'B. '
ParentColor = False
end
object Label6: TLabel
Left = 8
Height = 16
Top = 209
Width = 15
Caption = 'C. '
ParentColor = False
end
object Label7: TLabel
Left = 7
Height = 16
Top = 250
Width = 15
Caption = 'D. '
ParentColor = False
end
object Label8: TLabel
Left = 8
Height = 16
Top = 289
Width = 13
Caption = 'E. '
ParentColor = False
end
object Label9: TLabel
Left = 375
Height = 16
Top = 130
Width = 13
Caption = '1. '
ParentColor = False
end
object Label10: TLabel
Left = 376
Height = 16
Top = 168
Width = 13
Caption = '2. '
ParentColor = False
end
object Label11: TLabel
Left = 375
Height = 16
Top = 209
Width = 13
Caption = '3. '
ParentColor = False
end
object Label12: TLabel
Left = 376
Height = 16
Top = 250
Width = 13
Caption = '4. '
ParentColor = False
end
object Label13: TLabel
Left = 376
Height = 16
Top = 289
Width = 13
Caption = '5. '
ParentColor = False
end
object Left1Edit: TEdit
Left = 25
Height = 23
Top = 123
Width = 322
TabOrder = 10
Text = 'Left1Edit'
end
object Left5Edit: TEdit
Left = 25
Height = 23
Top = 288
Width = 322
TabOrder = 11
Text = 'Edit1'
end
object Left4Edit: TEdit
Left = 25
Height = 23
Top = 240
Width = 322
TabOrder = 12
Text = 'Edit1'
end
object Left3Edit: TEdit
Left = 25
Height = 23
Top = 200
Width = 322
TabOrder = 13
Text = 'Edit1'
end
object Right1Edit: TEdit
Left = 400
Height = 23
Top = 123
Width = 322
TabOrder = 14
Text = 'Edit1'
end
object Right5Edit: TEdit
Left = 400
Height = 23
Top = 282
Width = 322
TabOrder = 15
Text = 'Edit1'
end
object Right4Edit: TEdit
Left = 400
Height = 23
Top = 240
Width = 322
TabOrder = 16
Text = 'Edit1'
end
object Right3Edit: TEdit
Left = 400
Height = 23
Top = 200
Width = 322
TabOrder = 17
Text = 'Edit1'
end
object Right2Edit: TEdit
Left = 400
Height = 23
Top = 161
Width = 322
TabOrder = 18
Text = 'Edit1'
end
object Left2Edit: TEdit
Left = 25
Height = 23
Top = 161
Width = 322
TabOrder = 19
Text = 'Edit1'
end
object TFItemNoLabel: TLabel
Left = 9
Height = 16
Top = 331
Width = 75
Caption = 'Item Number:'
ParentColor = False
end
object ItemNoEdit: TEdit
Left = 112
Height = 23
Top = 324
Width = 44
TabOrder = 20
Text = '1'
end
object ItemCodeLabel: TLabel
Left = 178
Height = 16
Top = 331
Width = 93
Caption = 'Item Major Code:'
ParentColor = False
end
object MajorCodeEdit: TEdit
Left = 282
Height = 23
Top = 324
Width = 41
TabOrder = 21
Text = '1'
end
object MinorCodeLabel: TLabel
Left = 338
Height = 16
Top = 329
Width = 94
Caption = 'Item Minor Code:'
ParentColor = False
end
object MinorCodeEdit: TEdit
Left = 442
Height = 23
Top = 324
Width = 45
TabOrder = 22
Text = '0'
end
object CodeBrowseBtn: TButton
Left = 508
Height = 28
Top = 320
Width = 106
Caption = 'Browse Items'
OnClick = CodeBrowseBtnClick
TabOrder = 23
end
object OpenPictureDialog1: TOpenPictureDialog
left = 686
top = 464
end
end

View File

@ -0,0 +1,94 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TMatchItemForm','FORMDATA',[
'TPF0'#14'TMatchItemForm'#13'MatchItemForm'#4'Left'#3#195#0#6'Height'#3'T'#2#3
+'Top'#2'v'#5'Width'#3#5#3#7'Caption'#6'!Matching Item Create or Edit Form'#12
+'ClientHeight'#3'T'#2#11'ClientWidth'#3#5#3#6'OnShow'#7#8'FormShow'#10'LCLVe'
+'rsion'#6#8'0.9.30.4'#0#6'TLabel'#9'jpeglabel'#4'Left'#2#19#6'Height'#2#16#3
+'Top'#3#143#1#5'Width'#3#225#0#7'Caption'#6'-jpeg photo to display prior to '
+'item (if any):'#11'ParentColor'#8#0#0#5'TEdit'#12'jpegnameEdit'#4'Left'#3
+#249#0#6'Height'#2#23#3'Top'#3#136#1#5'Width'#3't'#1#8'TabOrder'#2#0#4'Text'
+#6#12'jpegnameEdit'#0#0#7'TButton'#13'jpegBrowseBtn'#4'Left'#2#16#6'Height'#2
+#30#3'Top'#3#181#1#5'Width'#2'v'#7'Caption'#6#18'Browse jpeg Images'#7'OnCli'
+'ck'#7#18'jpegBrowseBtnClick'#8'TabOrder'#2#1#0#0#7'TButton'#14'SelectImageB'
+'tn'#4'Left'#2#19#6'Height'#2#26#3'Top'#3#252#1#5'Width'#2'p'#7'Caption'#6#18
+'Select Shown Image'#7'OnClick'#7#19'SelectImageBtnClick'#8'TabOrder'#2#2#0#0
+#7'TButton'#11'ItemSaveBtn'#4'Left'#3'x'#1#6'Height'#2'!'#3'Top'#3#180#1#5'W'
+'idth'#2'o'#7'Caption'#6#14'Save this item'#7'OnClick'#7#16'ItemSaveBtnClick'
+#8'TabOrder'#2#3#0#0#7'TButton'#11'PreviousBtn'#4'Left'#3#251#1#6'Height'#2
+' '#3'Top'#3#181#1#5'Width'#2'n'#7'Caption'#6#18'Show Previous Item'#7'OnCli'
+'ck'#7#16'PreviousBtnClick'#8'TabOrder'#2#4#0#0#7'TButton'#11'ShowNextBtn'#4
+'Left'#3'z'#1#6'Height'#2#30#3'Top'#3#236#1#5'Width'#2'm'#7'Caption'#6#14'Sh'
+'ow Next Item'#7'OnClick'#7#16'ShowNextBtnClick'#8'TabOrder'#2#5#0#0#7'TButt'
+'on'#11'StartNewBtn'#4'Left'#3#251#1#6'Height'#2#30#3'Top'#3#236#1#5'Width'#2
+'o'#7'Caption'#6#16'Start a new item'#7'OnClick'#7#16'StartNewBtnClick'#8'Ta'
+'bOrder'#2#6#0#0#7'TButton'#9'ReturnBtn'#4'Left'#3#185#1#6'Height'#2#30#3'To'
+'p'#3','#2#5'Width'#2'o'#7'Caption'#6#6'Return'#7'OnClick'#7#14'ReturnBtnCli'
+'ck'#8'TabOrder'#2#7#0#0#6'TImage'#6'Image1'#4'Left'#3#151#0#6'Height'#3#154
+#0#3'Top'#3#176#1#5'Width'#3#214#0#0#0#5'TMemo'#5'Memo1'#4'Left'#2'`'#6'Heig'
+'ht'#2']'#3'Top'#2#3#5'Width'#3'h'#2#13'Lines.Strings'#1#6'hDirections: To '
+'create a Matching item, you will need to enter the number of an item code w'
+'hich contains'#6'jboth a major code and a minor code. It is suggested you '
+'print all item codes from the options menu on the'#6'gmain procedure page o'
+'f the item banking program. You can however, browse the Matchin items fro'
+'m this '#6#5'form.'#6'kAfter you have selected an item code number, enter t'
+'he item stem in the space provided. Your item can also'#6'qinclude a jpeg '
+'picture prior to the presentation of the item on a test. To find the image'
+', click the jpeg browse'#6'mbutton until you see the image you wish to incl'
+'ude. When that item is shown, click the Select button to save'#6#27'the na'
+'me of the image file.'#6#0#0#10'ScrollBars'#7#10'ssVertical'#8'TabOrder'#2#8
+#0#0#6'TLabel'#6'Label1'#4'Left'#2#7#6'Height'#2#16#3'Top'#3'l'#1#5'Width'#3
+#140#1#7'Caption'#6'KThe Item number in the Right-Hand list that matches the'
+' Left-Hand List is: '#11'ParentColor'#8#0#0#5'TEdit'#10'AnswerEdit'#4'Left'
+#3#151#1#6'Height'#2#23#3'Top'#3'e'#1#5'Width'#2'$'#8'TabOrder'#2#9#4'Text'#6
+#10'AnswerEdit'#0#0#6'TLabel'#6'Label2'#4'Left'#2')'#6'Height'#2#16#3'Top'#2
+'i'#5'Width'#2'L'#7'Caption'#6#14'Left-Hand List'#11'ParentColor'#8#0#0#6'TL'
+'abel'#6'Label3'#4'Left'#3#224#1#6'Height'#2#16#3'Top'#2'i'#5'Width'#2'T'#7
+'Caption'#6#15'Right-Hand List'#11'ParentColor'#8#0#0#6'TLabel'#6'Label4'#4
+'Left'#2#9#6'Height'#2#16#3'Top'#3#130#0#5'Width'#2#15#7'Caption'#6#3'A. '#11
+'ParentColor'#8#0#0#6'TLabel'#6'Label5'#4'Left'#2#7#6'Height'#2#16#3'Top'#3
+#168#0#5'Width'#2#14#7'Caption'#6#3'B. '#11'ParentColor'#8#0#0#6'TLabel'#6'L'
+'abel6'#4'Left'#2#8#6'Height'#2#16#3'Top'#3#209#0#5'Width'#2#15#7'Caption'#6
+#3'C. '#11'ParentColor'#8#0#0#6'TLabel'#6'Label7'#4'Left'#2#7#6'Height'#2#16
+#3'Top'#3#250#0#5'Width'#2#15#7'Caption'#6#3'D. '#11'ParentColor'#8#0#0#6'TL'
+'abel'#6'Label8'#4'Left'#2#8#6'Height'#2#16#3'Top'#3'!'#1#5'Width'#2#13#7'Ca'
+'ption'#6#3'E. '#11'ParentColor'#8#0#0#6'TLabel'#6'Label9'#4'Left'#3'w'#1#6
+'Height'#2#16#3'Top'#3#130#0#5'Width'#2#13#7'Caption'#6#3'1. '#11'ParentColo'
+'r'#8#0#0#6'TLabel'#7'Label10'#4'Left'#3'x'#1#6'Height'#2#16#3'Top'#3#168#0#5
+'Width'#2#13#7'Caption'#6#3'2. '#11'ParentColor'#8#0#0#6'TLabel'#7'Label11'#4
+'Left'#3'w'#1#6'Height'#2#16#3'Top'#3#209#0#5'Width'#2#13#7'Caption'#6#3'3. '
+#11'ParentColor'#8#0#0#6'TLabel'#7'Label12'#4'Left'#3'x'#1#6'Height'#2#16#3
+'Top'#3#250#0#5'Width'#2#13#7'Caption'#6#3'4. '#11'ParentColor'#8#0#0#6'TLab'
+'el'#7'Label13'#4'Left'#3'x'#1#6'Height'#2#16#3'Top'#3'!'#1#5'Width'#2#13#7
+'Caption'#6#3'5. '#11'ParentColor'#8#0#0#5'TEdit'#9'Left1Edit'#4'Left'#2#25#6
+'Height'#2#23#3'Top'#2'{'#5'Width'#3'B'#1#8'TabOrder'#2#10#4'Text'#6#9'Left1'
+'Edit'#0#0#5'TEdit'#9'Left5Edit'#4'Left'#2#25#6'Height'#2#23#3'Top'#3' '#1#5
+'Width'#3'B'#1#8'TabOrder'#2#11#4'Text'#6#5'Edit1'#0#0#5'TEdit'#9'Left4Edit'
+#4'Left'#2#25#6'Height'#2#23#3'Top'#3#240#0#5'Width'#3'B'#1#8'TabOrder'#2#12
,#4'Text'#6#5'Edit1'#0#0#5'TEdit'#9'Left3Edit'#4'Left'#2#25#6'Height'#2#23#3
+'Top'#3#200#0#5'Width'#3'B'#1#8'TabOrder'#2#13#4'Text'#6#5'Edit1'#0#0#5'TEdi'
+'t'#10'Right1Edit'#4'Left'#3#144#1#6'Height'#2#23#3'Top'#2'{'#5'Width'#3'B'#1
+#8'TabOrder'#2#14#4'Text'#6#5'Edit1'#0#0#5'TEdit'#10'Right5Edit'#4'Left'#3
+#144#1#6'Height'#2#23#3'Top'#3#26#1#5'Width'#3'B'#1#8'TabOrder'#2#15#4'Text'
+#6#5'Edit1'#0#0#5'TEdit'#10'Right4Edit'#4'Left'#3#144#1#6'Height'#2#23#3'Top'
+#3#240#0#5'Width'#3'B'#1#8'TabOrder'#2#16#4'Text'#6#5'Edit1'#0#0#5'TEdit'#10
+'Right3Edit'#4'Left'#3#144#1#6'Height'#2#23#3'Top'#3#200#0#5'Width'#3'B'#1#8
+'TabOrder'#2#17#4'Text'#6#5'Edit1'#0#0#5'TEdit'#10'Right2Edit'#4'Left'#3#144
+#1#6'Height'#2#23#3'Top'#3#161#0#5'Width'#3'B'#1#8'TabOrder'#2#18#4'Text'#6#5
+'Edit1'#0#0#5'TEdit'#9'Left2Edit'#4'Left'#2#25#6'Height'#2#23#3'Top'#3#161#0
+#5'Width'#3'B'#1#8'TabOrder'#2#19#4'Text'#6#5'Edit1'#0#0#6'TLabel'#13'TFItem'
+'NoLabel'#4'Left'#2#9#6'Height'#2#16#3'Top'#3'K'#1#5'Width'#2'K'#7'Caption'#6
+#12'Item Number:'#11'ParentColor'#8#0#0#5'TEdit'#10'ItemNoEdit'#4'Left'#2'p'
+#6'Height'#2#23#3'Top'#3'D'#1#5'Width'#2','#8'TabOrder'#2#20#4'Text'#6#1'1'#0
+#0#6'TLabel'#13'ItemCodeLabel'#4'Left'#3#178#0#6'Height'#2#16#3'Top'#3'K'#1#5
+'Width'#2']'#7'Caption'#6#16'Item Major Code:'#11'ParentColor'#8#0#0#5'TEdit'
+#13'MajorCodeEdit'#4'Left'#3#26#1#6'Height'#2#23#3'Top'#3'D'#1#5'Width'#2')'
+#8'TabOrder'#2#21#4'Text'#6#1'1'#0#0#6'TLabel'#14'MinorCodeLabel'#4'Left'#3
+'R'#1#6'Height'#2#16#3'Top'#3'I'#1#5'Width'#2'^'#7'Caption'#6#16'Item Minor '
+'Code:'#11'ParentColor'#8#0#0#5'TEdit'#13'MinorCodeEdit'#4'Left'#3#186#1#6'H'
+'eight'#2#23#3'Top'#3'D'#1#5'Width'#2'-'#8'TabOrder'#2#22#4'Text'#6#1'0'#0#0
+#7'TButton'#13'CodeBrowseBtn'#4'Left'#3#252#1#6'Height'#2#28#3'Top'#3'@'#1#5
+'Width'#2'j'#7'Caption'#6#12'Browse Items'#7'OnClick'#7#18'CodeBrowseBtnClic'
+'k'#8'TabOrder'#2#23#0#0#18'TOpenPictureDialog'#18'OpenPictureDialog1'#4'lef'
+'t'#3#174#2#3'top'#3#208#1#0#0#0
]);

View File

@ -0,0 +1,430 @@
unit MatchItemUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, ExtCtrls, ExtDlgs, outputunit;
type
{ TMatchItemForm }
TMatchItemForm = class(TForm)
AnswerEdit: TEdit;
CodeBrowseBtn: TButton;
ItemCodeLabel: TLabel;
Left1Edit: TEdit;
Left2Edit: TEdit;
Left5Edit: TEdit;
Left4Edit: TEdit;
Left3Edit: TEdit;
MajorCodeEdit: TEdit;
MinorCodeEdit: TEdit;
MinorCodeLabel: TLabel;
Right1Edit: TEdit;
Right5Edit: TEdit;
Right4Edit: TEdit;
Right3Edit: TEdit;
Right2Edit: TEdit;
Image1: TImage;
ItemSaveBtn: TButton;
jpegBrowseBtn: TButton;
jpeglabel: TLabel;
jpegnameEdit: TEdit;
Label1: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Memo1: TMemo;
OpenPictureDialog1: TOpenPictureDialog;
PreviousBtn: TButton;
ReturnBtn: TButton;
SelectImageBtn: TButton;
ShowNextBtn: TButton;
StartNewBtn: TButton;
ItemNoEdit: TEdit;
TFItemNoLabel: TLabel;
procedure CodeBrowseBtnClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure ItemSaveBtnClick(Sender: TObject);
procedure jpegBrowseBtnClick(Sender: TObject);
procedure PreviousBtnClick(Sender: TObject);
procedure ReturnBtnClick(Sender: TObject);
procedure SelectImageBtnClick(Sender: TObject);
procedure ShowNextBtnClick(Sender: TObject);
procedure StartNewBtnClick(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
MatchItemForm: TMatchItemForm;
implementation
uses ItemBankingUnit;
{ TMatchItemForm }
procedure TMatchItemForm.jpegBrowseBtnClick(Sender: TObject);
VAR
JPEG : TJPEGImage;
begin
OpenPictureDialog1.Options := OpenPictureDialog1.Options+[ofFileMustExist];
if not OpenPictureDialog1.Execute then exit;
try
JPEG := TJPEGImage.Create;
try
JPEG.LoadFromFile(OpenPictureDialog1.FileName);
Image1.Picture.Assign(JPEG);
finally
JPEG.Free;
end;
except
on E: Exception do begin
MessageDlg('Error','Error: '+E.Message,mtError,[mbOk],0);
end;
end;
Image1.Proportional := true;
end;
procedure TMatchItemForm.PreviousBtnClick(Sender: TObject);
Var
response : string;
itemno : integer;
JPEG : TJPEGImage;
noleft, noright : integer;
begin
response := InputBox('Code Number:','Number:','1');
itemno := StrToInt(response);
if itemno <= ItemBankFrm.BankInfo.NMatchItems then
begin
Image1.Canvas.Clear;
ItemNoEdit.Text := IntToStr(ItemBankFrm.MatchInfo[itemno].ItemNumber);
MajorCodeEdit.Text := IntToStr(ItemBankFrm.MatchInfo[itemno].majorcode);
MinorCodeEdit.Text := IntToStr(ItemBankFrm.MatchInfo[itemno].minorcode);
noleft := ItemBankFrm.MatchInfo[itemno].NLeft;
noright := ItemBankFrm.MatchInfo[itemno].NRight;
if noleft > 0 then Left1Edit.Text := ItemBankFrm.MatchInfo[itemno].Left1;
if noleft > 1 then Left2Edit.Text := ItemBankFrm.MatchInfo[itemno].Left2;
if noleft > 2 then Left3Edit.Text := ItemBankFrm.MatchInfo[itemno].Left3;
if noleft > 3 then Left4Edit.Text := ItemBankFrm.MatchInfo[itemno].Left4;
if noleft > 4 then Left5Edit.Text := ItemBankFrm.MatchInfo[itemno].Left5;
if noright > 0 then Right1Edit.Text := ItemBankFrm.MatchInfo[itemno].Right1;
if noright > 1 then Right2Edit.Text := ItemBankFrm.MatchInfo[itemno].Right2;
if noright > 2 then Right3Edit.Text := ItemBankFrm.MatchInfo[itemno].Right3;
if noright > 3 then Right4Edit.Text := ItemBankFrm.MatchInfo[itemno].Right4;
if noright > 4 then Right5Edit.Text := ItemBankFrm.MatchInfo[itemno].Right5;
AnswerEdit.Text := ItemBankFrm.MatchInfo[itemno].CorrectChoice;
jpegnameEdit.Text := ItemBankFrm.MatchInfo[itemno].PicName;
if jpegnameEdit.Text <> 'none' then
begin
JPEG := TJPEGImage.Create;
try
JPEG.LoadFromFile(jpegnameEdit.Text);
Image1.Picture.Assign(JPEG);
finally
JPEG.Free;
Image1.Proportional := true;
end;
end;
end;
end;
procedure TMatchItemForm.ReturnBtnClick(Sender: TObject);
begin
MatchItemForm.Hide;
Close;
end;
procedure TMatchItemForm.ItemSaveBtnClick(Sender: TObject);
var
currentno : integer;
count : integer;
noleft, noright : integer;
i : integer;
begin
count := ItemBankFrm.BankInfo.NMatchItems;
currentno := StrToInt(ItemNoEdit.Text);
noleft := 0;
if Left1Edit.Text <> '' then noleft := noleft + 1;
if Left2Edit.Text <> '' then noleft := noleft + 1;
if Left3Edit.Text <> '' then noleft := noleft + 1;
if Left4Edit.Text <> '' then noleft := noleft + 1;
if Left5Edit.Text <> '' then noleft := noleft + 1;
noright := 0;
if Right1Edit.Text <> '' then noright := noright + 1;
if Right2Edit.Text <> '' then noright := noright + 1;
if Right3Edit.Text <> '' then noright := noright + 1;
if Right4Edit.Text <> '' then noright := noright + 1;
if Right5Edit.Text <> '' then noright := noright + 1;
if currentno > count then
begin
ItemBankFrm.BankInfo.NMatchItems := currentno;
ItemBankFrm.NEssayText.Text := IntToStr(currentno);
end;
ItemBankFrm.MatchInfo[currentno].ItemNumber := currentno;
ItemBankFrm.MatchInfo[currentno].majorcode := StrToInt(MajorCodeEdit.Text);
ItemBankFrm.MatchInfo[currentno].minorcode := StrToInt(MinorCodeEdit.Text);
ItemBankFrm.MatchInfo[currentno].NLeft := noleft;
ItemBankFrm.MatchInfo[currentno].NRight := noright;
if noleft > 0 then ItemBankFrm.MatchInfo[currentno].Left1 := Left1Edit.Text;
if noleft > 1 then ItemBankFrm.MatchInfo[currentno].Left2 := Left2Edit.Text;
if noleft > 2 then ItemBankFrm.MatchInfo[currentno].Left3 := Left3Edit.Text;
if noleft > 3 then ItemBankFrm.MatchInfo[currentno].Left4 := Left4Edit.Text;
if noleft > 4 then ItemBankFrm.MatchInfo[currentno].Left5 := Left5Edit.Text;
if noright > 0 then ItemBankFrm.MatchInfo[currentno].Right1 := Right1Edit.Text;
if noright > 1 then ItemBankFrm.MatchInfo[currentno].Right2 := Right2Edit.Text;
if noright > 2 then ItemBankFrm.MatchInfo[currentno].Right3 := Right3Edit.Text;
if noright > 3 then ItemBankFrm.MatchInfo[currentno].Right4 := Right4Edit.Text;
if noright > 4 then ItemBankFrm.MatchInfo[currentno].Right5 := Right5Edit.Text;
ItemBankFrm.MatchInfo[currentno].CorrectChoice := AnswerEdit.Text[1];
ItemBankFrm.MatchInfo[currentno].PicName := jpegnameEdit.Text;
end;
procedure TMatchItemForm.FormShow(Sender: TObject);
Var
nitems : integer;
noleft, noright : integer;
JPEG : TJPEGImage;
begin
Image1.Canvas.Clear;
Left1Edit.Text := '';
Left2Edit.Text := '';
Left3Edit.Text := '';
Left4Edit.Text := '';
Left5Edit.Text := '';
Right1Edit.Text := '';
Right2Edit.Text := '';
Right3Edit.Text := '';
Right3Edit.Text := '';
Right5Edit.Text := '';
AnswerEdit.Text := '';
if ItemBankFrm.BankInfo.NMatchItems > 0 then
begin
nitems := ItemBankFrm.BankInfo.NMatchItems;
ItemNoEdit.Text := '1'; //IntToStr(ItemBankFrm.TFItemInfo[1].ItemNumber);
MajorCodeEdit.Text := IntToStr(ItemBankFrm.MatchInfo[1].majorcode) ;
MinorCodeEdit.Text := IntToStr(ItemBankFrm.MatchInfo[1].minorcode);
noleft := ItemBankFrm.MatchInfo[1].NLeft;
if noleft > 0 then Left1Edit.Text := ItemBankFrm.MatchInfo[1].Left1 ;
if noleft > 1 then Left2Edit.Text := ItemBankFrm.MatchInfo[1].Left2 ;
if noleft > 2 then Left3Edit.Text := ItemBankFrm.MatchInfo[1].Left3 ;
if noleft > 3 then Left4Edit.Text := ItemBankFrm.MatchInfo[1].Left4 ;
if noleft > 4 then Left5Edit.Text := ItemBankFrm.MatchInfo[1].Left5 ;
noright := ItemBankFrm.MatchInfo[1].NRight;
if noright > 0 then Right1Edit.Text := ItemBankFrm.MatchInfo[1].Right1 ;
if noright > 1 then Right2Edit.Text := ItemBankFrm.MatchInfo[1].Right2 ;
if noright > 2 then Right3Edit.Text := ItemBankFrm.MatchInfo[1].Right3 ;
if noright > 3 then Right4Edit.Text := ItemBankFrm.MatchInfo[1].Right4 ;
if noright > 4 then Right5Edit.Text := ItemBankFrm.MatchInfo[1].Right5 ;
AnswerEdit.Text := ItemBankFrm.MatchInfo[1].CorrectChoice;
jpegnameEdit.Text := ItemBankFrm.MatchInfo[1].PicName;
if jpegnameEdit.Text <> 'none' then
begin
JPEG := TJPEGImage.Create;
try
JPEG.LoadFromFile(jpegnameEdit.Text);
Image1.Picture.Assign(JPEG);
finally
JPEG.Free;
Image1.Proportional := true;
end;
end;
end else
begin
ItemNoEdit.Text := '1';
MajorCodeEdit.Text := '1';
MinorCodeEdit.Text := '0';
Left1Edit.Text := '';
Left2Edit.Text := '';
Left3Edit.Text := '';
Left4Edit.Text := '';
Left5Edit.Text := '';
Right1Edit.Text := '';
Right2Edit.Text := '';
Right3Edit.Text := '';
Right3Edit.Text := '';
Right5Edit.Text := '';
AnswerEdit.Text := '';
jpegnameEdit.Text := 'none';
Image1.Canvas.Clear;
end;
end;
procedure TMatchItemForm.CodeBrowseBtnClick(Sender: TObject);
var
count : integer;
i : integer;
outline : string;
noleft, noright : integer;
begin
OutPutFrm.RichEdit.Clear;
count := ItemBankFrm.BankInfo.NMatchItems ;
OutPutFrm.RichEdit.Lines.Add('Current Items');
OutPutFrm.RichEdit.Lines.Add('');
for i := 1 to count do
begin
noleft := ItemBankFrm.MatchInfo[i].NLeft;
noright := ItemBankFrm.MatchInfo[i].NRight;
outline := format('Item number %3d',[ItemBankFrm.MatchInfo[i].itemnumber]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Major Code %3d',[ItemBankFrm.MatchInfo[i].majorcode]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Minor Code %3d',[ItemBankFrm.MatchInfo[i].minorcode]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('No. Left items = %3d, No. Right items = %3d',
[ItemBankFrm.MatchInfo[i].NLeft,ItemBankFrm.MatchInfo[i].NRight]);
OutPutFrm.RichEdit.Lines.Add(outline);
if noleft > 0 then
begin
outline := format('Left Item 1 %s',[ItemBankFrm.MatchInfo[i].Left1]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
if noright > 0 then
begin
outline := format(' Right Item 1 %s',[ItemBankFrm.MatchInfo[i].Right1]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
if noleft > 1 then
begin
outline := format('Left Item 2 %s',[ItemBankFrm.MatchInfo[i].Left2]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
if noright > 1 then
begin
outline := format(' Right Item 2 %s',[ItemBankFrm.MatchInfo[i].Right2]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
if noleft > 2 then
begin
outline := format('Left Item 3 %s',[ItemBankFrm.MatchInfo[i].Left3]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
if noright > 2 then
begin
outline := format(' Right Item 3 %s',[ItemBankFrm.MatchInfo[i].Right3]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
if noleft > 3 then
begin
outline := format('Left Item 4 %s',[ItemBankFrm.MatchInfo[i].Left4]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
if noright > 3 then
begin
outline := format(' Right Item 4 %s',[ItemBankFrm.MatchInfo[i].Right4]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
if noleft > 4 then
begin
outline := format('Left Item 5 %s',[ItemBankFrm.MatchInfo[i].Left5]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
if noright > 4 then
begin
outline := format(' Right Item 5 %s',[ItemBankFrm.MatchInfo[i].Right5]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
outline := format('Correct Choice %s',[ItemBankFrm.MatchInfo[i].CorrectChoice]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Graphic Image %s',[ItemBankFrm.MatchInfo[i].PicName]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add('');
end;
OutPutFrm.ShowModal;
end;
procedure TMatchItemForm.SelectImageBtnClick(Sender: TObject);
begin
jpegnameEdit.Text := OpenPictureDialog1.FileName;
end;
procedure TMatchItemForm.ShowNextBtnClick(Sender: TObject);
var
count : integer;
itemno : integer;
JPEG : TJPEGImage;
noleft, noright : integer;
begin
itemno := StrToInt(ItemNoEdit.Text) + 1;
count := ItemBankFrm.BankInfo.NMatchItems;
if count <= itemno then
begin
Image1.Canvas.Clear;
ItemNoEdit.Text := IntToStr(ItemBankFrm.MatchInfo[itemno].ItemNumber);
MajorCodeEdit.Text := IntToStr(ItemBankFrm.MatchInfo[itemno].majorcode) ;
MinorCodeEdit.Text := IntToStr(ItemBankFrm.MatchInfo[itemno].minorcode);
noleft := ItemBankFrm.MatchInfo[itemno].NLeft;
noright := ItemBankFrm.MatchInfo[itemno].NRight;
if noleft > 0 then Left1Edit.Text := ItemBankFrm.MatchInfo[itemno].Left1 ;
if noleft > 1 then Left2Edit.Text := ItemBankFrm.MatchInfo[itemno].Left2;
if noleft > 2 then Left3Edit.Text := ItemBankFrm.MatchInfo[itemno].Left3;
if noleft > 3 then Left4Edit.Text := ItemBankFrm.MatchInfo[itemno].Left4;
if noleft > 4 then Left5Edit.Text := ItemBankFrm.MatchInfo[itemno].Left5;
if noright > 0 then Right1Edit.Text := ItemBankFrm.MatchInfo[itemno].Right1;
if noright > 1 then Right2Edit.Text := ItemBankFrm.MatchInfo[itemno].Right2;
if noright > 2 then Right3Edit.Text := ItemBankFrm.MatchInfo[itemno].Right3;
if noright > 3 then Right4Edit.Text := ItemBankFrm.MatchInfo[itemno].Right4;
if noright > 4 then Right5Edit.Text := ItemBankFrm.MatchInfo[itemno].Right5;
AnswerEdit.Text := ItemBankFrm.MatchInfo[itemno].CorrectChoice;
jpegnameEdit.Text := ItemBankFrm.MatchInfo[itemno].PicName;
if jpegnameEdit.Text <> 'none' then
begin
JPEG := TJPEGImage.Create;
try
JPEG.LoadFromFile(jpegnameEdit.Text);
Image1.Picture.Assign(JPEG);
finally
JPEG.Free;
Image1.Proportional := true;
end;
end;
end;
end;
procedure TMatchItemForm.StartNewBtnClick(Sender: TObject);
var
currentno : integer;
begin
Image1.Canvas.Clear;
currentno := ItemBankFrm.BankInfo.NMatchItems + 1;
ItemNoEdit.Text := IntToStr(currentno);
currentno := StrToInt(MinorCodeEdit.Text);
MinorCodeEdit.Text := IntToStr(currentno + 1);
Left1Edit.Text := '';
Left2Edit.Text := '';
Left3Edit.Text := '';
Left4Edit.Text := '';
Left5Edit.Text := '';
Right1Edit.Text := '';
Right2Edit.Text := '';
Right3Edit.Text := '';
Right4Edit.Text := '';
Right5Edit.Text := '';
AnswerEdit.Text := '';
jpegnameEdit.Text := 'none';
Image1.Canvas.Clear;
end;
initialization
{$I matchitemunit.lrs}
end.

View File

@ -0,0 +1,539 @@
object matmanfrm: Tmatmanfrm
Left = 16
Height = 575
Top = 93
Width = 943
Caption = 'Matrix Manipulation'
ClientHeight = 556
ClientWidth = 943
Menu = MainMenu1
OnShow = FormShow
LCLVersion = '0.9.28.2'
object Label1: TLabel
Left = 808
Height = 14
Top = 131
Width = 37
Caption = 'SCRIPT'
ParentColor = False
end
object Label2: TLabel
Left = 5
Height = 14
Top = 8
Width = 100
Caption = 'Current Active Grid: '
ParentColor = False
end
object Label3: TLabel
Left = 14
Height = 14
Top = 33
Width = 7
Caption = '1'
ParentColor = False
end
object Label4: TLabel
Left = 368
Height = 14
Top = 33
Width = 7
Caption = '3'
ParentColor = False
end
object Label5: TLabel
Left = 16
Height = 14
Top = 273
Width = 7
Caption = '2'
ParentColor = False
end
object Label6: TLabel
Left = 369
Height = 14
Top = 279
Width = 7
Caption = '4'
ParentColor = False
end
object MatricesBox: TComboBox
Left = 737
Height = 21
Top = 1
Width = 188
ItemHeight = 13
ItemIndex = 0
Items.Strings = (
'MATRICES'
)
OnClick = MatricesBoxClick
TabOrder = 0
Text = 'MATRICES'
end
object ColVecsBox: TComboBox
Left = 737
Height = 21
Top = 32
Width = 188
ItemHeight = 13
ItemIndex = 0
Items.Strings = (
'COLUMN VECTORS'
)
OnClick = ColVecsBoxClick
TabOrder = 1
Text = 'COLUMN VECTORS'
end
object RowVecsBox: TComboBox
Left = 736
Height = 21
Top = 66
Width = 189
ItemHeight = 13
ItemIndex = 0
Items.Strings = (
'ROW VECTORS'
)
OnClick = RowVecsBoxClick
TabOrder = 2
Text = 'ROW VECTORS'
end
object ScalarsBox: TComboBox
Left = 737
Height = 21
Top = 96
Width = 187
ItemHeight = 13
ItemIndex = 0
Items.Strings = (
'SCALARS'
)
OnClick = ScalarsBoxClick
TabOrder = 3
Text = 'SCALARS'
end
object ScriptList: TListBox
Left = 736
Height = 348
Top = 153
Width = 188
ItemHeight = 0
OnClick = ScriptListClick
TabOrder = 4
end
object GridNoEdit: TEdit
Left = 121
Height = 21
Top = 1
Width = 37
TabOrder = 5
Text = 'GridNoEdit'
end
object MatOneEdit: TEdit
Left = 48
Height = 21
Top = 34
Width = 304
TabOrder = 6
Text = 'MatOneEdit'
end
object Grid1: TStringGrid
Left = 9
Height = 203
Top = 64
Width = 343
Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goEditing, goSmoothScroll]
TabOrder = 7
OnClick = Grid1Click
OnKeyPress = Grid1KeyPress
OnMouseDown = Grid1MouseDown
end
object MatTwoEdit: TEdit
Left = 48
Height = 21
Top = 276
Width = 307
TabOrder = 8
Text = 'MatTwoEdit'
end
object Grid2: TStringGrid
Left = 10
Height = 199
Top = 303
Width = 342
Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goEditing, goSmoothScroll]
TabOrder = 9
OnClick = Grid2Click
OnKeyPress = Grid2KeyPress
OnMouseDown = Grid2MouseDown
end
object MatThreeEdit: TEdit
Left = 402
Height = 21
Top = 32
Width = 319
TabOrder = 10
Text = 'MatThreeEdit'
end
object Grid3: TStringGrid
Left = 368
Height = 200
Top = 64
Width = 352
Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goEditing, goSmoothScroll]
TabOrder = 11
OnClick = Grid3Click
OnKeyPress = Grid3KeyPress
OnMouseDown = Grid3MouseDown
end
object MatFourEdit: TEdit
Left = 402
Height = 21
Top = 276
Width = 320
TabOrder = 12
Text = 'MatFourEdit'
end
object Grid4: TStringGrid
Left = 370
Height = 196
Top = 306
Width = 350
Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goEditing, goSmoothScroll]
TabOrder = 13
OnClick = Grid4Click
OnKeyPress = Grid4KeyPress
OnMouseDown = Grid4MouseDown
end
object Op1Edit: TEdit
Left = 25
Height = 21
Top = 520
Width = 186
TabOrder = 14
Text = 'Op1Edit'
end
object Op2Edit: TEdit
Left = 224
Height = 21
Top = 520
Width = 186
TabOrder = 15
Text = 'Edit1'
end
object Op3Edit: TEdit
Left = 424
Height = 21
Top = 520
Width = 186
TabOrder = 16
Text = 'Edit1'
end
object Op4Edit: TEdit
Left = 624
Height = 21
Top = 520
Width = 186
TabOrder = 17
Text = 'Edit1'
end
object MainMenu1: TMainMenu
left = 696
object FilesMenu: TMenuItem
Caption = 'Files'
object keyBdmnu: TMenuItem
Caption = 'Keyboard Input'
object MatInmnu: TMenuItem
Caption = 'Matrix'
OnClick = MatInmnuClick
end
object VecInmnu: TMenuItem
Caption = 'Vector'
OnClick = VecInmnuClick
end
object ScalarInmnu: TMenuItem
Caption = 'Scalar'
OnClick = ScalarInmnuClick
end
end
object MainGridMnu: TMenuItem
Caption = 'Read Data from Main Form Grid'
OnClick = MainGridMnuClick
end
object MenuItem1: TMenuItem
Caption = '-----------------'
end
object OpenFileMnu: TMenuItem
Caption = 'Open File'
OnClick = OpenFileMnuClick
end
object SaveFileMnu: TMenuItem
Caption = 'Save File'
OnClick = SaveFileMnuClick
end
object PrintFileMnu: TMenuItem
Caption = 'Print File'
OnClick = PrintFileMnuClick
end
object MenuItem2: TMenuItem
Caption = '-------------------'
end
object ImportFileMnu: TMenuItem
Caption = 'Import a file'
object TabFileInmnu: TMenuItem
Caption = 'Tab File'
end
object SpaceFileInMnu: TMenuItem
Caption = 'Space File'
end
object CommaFileInMnu: TMenuItem
Caption = 'Comma File'
end
end
object ExportFileMnu: TMenuItem
Caption = 'Export a file'
object TabFileOutMnu: TMenuItem
Caption = 'Tab File'
end
object SpaceFileOutMnu: TMenuItem
Caption = 'Space File'
end
object CommaFileOutMnu: TMenuItem
Caption = 'Comma File'
end
end
object ScriptFileInMnu: TMenuItem
Caption = 'Open a Script File'
OnClick = ScriptFileInMnuClick
end
object ScriptSaveMnu: TMenuItem
Caption = 'Save a Script File'
OnClick = ScriptSaveMnuClick
end
object ResetMnu: TMenuItem
Caption = 'Reset All'
OnClick = ResetMnuClick
end
object ExitMnu: TMenuItem
Caption = 'EXIT'
OnClick = ExitMnuClick
end
end
object MatOpsMnu: TMenuItem
Caption = 'Matrix Operations'
object IdentMnu: TMenuItem
Caption = 'Create an Indentity Matrix'
OnClick = IdentMnuClick
end
object RowAugMnu: TMenuItem
Caption = 'Row Augment'
OnClick = RowAugMnuClick
end
object ColAugMnu: TMenuItem
Caption = 'Column Augment'
OnClick = ColAugMnuClick
end
object RowDelMnu: TMenuItem
Caption = 'Delete a Row'
OnClick = RowDelMnuClick
end
object RowInstMnu: TMenuItem
Caption = 'Insert a Row'
OnClick = RowInstMnuClick
end
object ColDelMnu: TMenuItem
Caption = 'Delete a Column'
OnClick = ColDelMnuClick
end
object ColInstMnu: TMenuItem
Caption = 'Insert a Column'
OnClick = ColInstMnuClick
end
object ExtractColVecMnu: TMenuItem
Caption = 'Extract a Column Vector'
OnClick = ExtractColVecMnuClick
end
object SVDInvMnu: TMenuItem
Caption = 'SVD Inverse'
OnClick = SVDInvMnuClick
end
object TriDiagMnu: TMenuItem
Caption = 'Tridiagonalize'
OnClick = TriDiagMnuClick
end
object ULDecompMnu: TMenuItem
Caption = 'Upper-lower Decomposition'
OnClick = ULDecompMnuClick
end
object Diagtovecmnu: TMenuItem
Caption = 'Diagonal to Vector'
OnClick = DiagtovecmnuClick
end
object Vec2DiagMnu: TMenuItem
Caption = 'Vector to Diagonal'
OnClick = Vec2DiagMnuClick
end
object DetermMnu: TMenuItem
Caption = 'Determinant'
OnClick = DetermMnuClick
end
object NormRowsMnu: TMenuItem
Caption = 'Normalize Rows'
OnClick = NormRowsMnuClick
end
object NormColsMnu: TMenuItem
Caption = 'Normalize Columns'
OnClick = NormColsMnuClick
end
object PreMultMnu: TMenuItem
Caption = 'Premultiply by'
object PrebyRowVmnu: TMenuItem
Caption = 'Row Vector'
OnClick = PrebyRowVmnuClick
end
object PreMatMnu: TMenuItem
Caption = 'Matrix'
OnClick = PreMatMnuClick
end
object PreScalarMnu: TMenuItem
Caption = 'Scalar'
OnClick = PreScalarMnuClick
end
end
object PostMultMnu: TMenuItem
Caption = 'Post Multiply by'
object PostColVMnu: TMenuItem
Caption = 'Column Vector'
OnClick = PostColVMnuClick
end
object PostMatMnu: TMenuItem
Caption = 'Matrix'
OnClick = PostMatMnuClick
end
object PostScalarMnu: TMenuItem
Caption = 'Scalar'
end
end
object EigenMnu: TMenuItem
Caption = 'Eigenvalues and Vectors'
OnClick = EigenMnuClick
end
object TransMnu: TMenuItem
Caption = 'Transpose'
OnClick = TransMnuClick
end
object TraceMnu: TMenuItem
Caption = 'Trace'
OnClick = TraceMnuClick
end
object MatSumMnu: TMenuItem
Caption = 'Matrix A + Matrix B'
OnClick = MatSumMnuClick
end
object MatSubMnu: TMenuItem
Caption = 'Matrix A - Matrix B'
OnClick = MatSubMnuClick
end
object MatPrintMnu: TMenuItem
Caption = 'Print'
OnClick = MatPrintMnuClick
end
end
object VecOpsMnu: TMenuItem
Caption = 'Vector Operations'
object VecTransMnu: TMenuItem
Caption = 'Transpose'
OnClick = VecTransMnuClick
end
object VecXscalarMnu: TMenuItem
Caption = 'Times a Scalar'
OnClick = VecXscalarMnuClick
end
object VecSqrtMnu: TMenuItem
Caption = 'Square Root of Elements'
OnClick = VecSqrtMnuClick
end
object VecRecipMnu: TMenuItem
Caption = 'Reciprocal of Elements'
OnClick = VecRecipMnuClick
end
object VecPrintMnu: TMenuItem
Caption = 'Print'
OnClick = VecPrintMnuClick
end
object RowxColVecMnu: TMenuItem
Caption = 'Row Vec. x Col. Vec.'
OnClick = RowxColVecMnuClick
end
object ColxRowVecMnu: TMenuItem
Caption = 'Col. Vec. x Row Vec.'
OnClick = ColxRowVecMnuClick
end
end
object ScalarOpsMnu: TMenuItem
Caption = 'Scalar Operations'
object ScalSqrtMnu: TMenuItem
Caption = 'Square Root'
OnClick = ScalSqrtMnuClick
end
object ScalRecipMnu: TMenuItem
Caption = 'Reciprocal'
OnClick = ScalRecipMnuClick
end
object ScalxScalMnu: TMenuItem
Caption = 'Scalar x Scalar'
OnClick = ScalxScalMnuClick
end
object PrintScalMnu: TMenuItem
Caption = 'Print'
OnClick = PrintScalMnuClick
end
end
object ScriptOptMnu: TMenuItem
Caption = 'Script Operations'
object ScriptPrintMnu: TMenuItem
Caption = 'Print'
OnClick = ScriptPrintMnuClick
end
object ScriptClearMnu: TMenuItem
Caption = 'Clear'
OnClick = ScriptClearMnuClick
end
object ScriptEditMnu: TMenuItem
Caption = 'Edit'
OnClick = ScriptEditMnuClick
end
object ScriptLoadMnu: TMenuItem
Caption = 'Load'
OnClick = ScriptLoadMnuClick
end
object ScrSavMnu: TMenuItem
Caption = 'Save'
OnClick = ScrSavMnuClick
end
object ScrExeMnu: TMenuItem
Caption = 'Execute'
OnClick = ScrExeMnuClick
end
object ScriptOpsMnu: TMenuItem
Caption = 'Options'
OnClick = ScriptOpsMnuClick
end
end
object HelpMnu: TMenuItem
Caption = 'Help'
object AboutMnu: TMenuItem
Caption = 'About'
OnClick = AboutMnuClick
end
end
end
object SaveDialog1: TSaveDialog
left = 506
top = 1
end
object OpenDialog1: TOpenDialog
left = 553
end
end

View File

@ -0,0 +1,154 @@
LazarusResources.Add('Tmatmanfrm','FORMDATA',[
'TPF0'#10'Tmatmanfrm'#9'matmanfrm'#4'Left'#2#16#6'Height'#3'?'#2#3'Top'#2']'#5
+'Width'#3#175#3#7'Caption'#6#19'Matrix Manipulation'#12'ClientHeight'#3','#2
+#11'ClientWidth'#3#175#3#4'Menu'#7#9'MainMenu1'#6'OnShow'#7#8'FormShow'#10'L'
+'CLVersion'#6#8'0.9.28.2'#0#6'TLabel'#6'Label1'#4'Left'#3'('#3#6'Height'#2#14
+#3'Top'#3#131#0#5'Width'#2'%'#7'Caption'#6#6'SCRIPT'#11'ParentColor'#8#0#0#6
+'TLabel'#6'Label2'#4'Left'#2#5#6'Height'#2#14#3'Top'#2#8#5'Width'#2'd'#7'Cap'
+'tion'#6#21'Current Active Grid: '#11'ParentColor'#8#0#0#6'TLabel'#6'Label3'
+#4'Left'#2#14#6'Height'#2#14#3'Top'#2'!'#5'Width'#2#7#7'Caption'#6#1'1'#11'P'
+'arentColor'#8#0#0#6'TLabel'#6'Label4'#4'Left'#3'p'#1#6'Height'#2#14#3'Top'#2
+'!'#5'Width'#2#7#7'Caption'#6#1'3'#11'ParentColor'#8#0#0#6'TLabel'#6'Label5'
+#4'Left'#2#16#6'Height'#2#14#3'Top'#3#17#1#5'Width'#2#7#7'Caption'#6#1'2'#11
+'ParentColor'#8#0#0#6'TLabel'#6'Label6'#4'Left'#3'q'#1#6'Height'#2#14#3'Top'
+#3#23#1#5'Width'#2#7#7'Caption'#6#1'4'#11'ParentColor'#8#0#0#9'TComboBox'#11
+'MatricesBox'#4'Left'#3#225#2#6'Height'#2#21#3'Top'#2#1#5'Width'#3#188#0#10
+'ItemHeight'#2#13#9'ItemIndex'#2#0#13'Items.Strings'#1#6#8'MATRICES'#0#7'OnC'
+'lick'#7#16'MatricesBoxClick'#8'TabOrder'#2#0#4'Text'#6#8'MATRICES'#0#0#9'TC'
+'omboBox'#10'ColVecsBox'#4'Left'#3#225#2#6'Height'#2#21#3'Top'#2' '#5'Width'
+#3#188#0#10'ItemHeight'#2#13#9'ItemIndex'#2#0#13'Items.Strings'#1#6#14'COLUM'
+'N VECTORS'#0#7'OnClick'#7#15'ColVecsBoxClick'#8'TabOrder'#2#1#4'Text'#6#14
+'COLUMN VECTORS'#0#0#9'TComboBox'#10'RowVecsBox'#4'Left'#3#224#2#6'Height'#2
+#21#3'Top'#2'B'#5'Width'#3#189#0#10'ItemHeight'#2#13#9'ItemIndex'#2#0#13'Ite'
+'ms.Strings'#1#6#11'ROW VECTORS'#0#7'OnClick'#7#15'RowVecsBoxClick'#8'TabOrd'
+'er'#2#2#4'Text'#6#11'ROW VECTORS'#0#0#9'TComboBox'#10'ScalarsBox'#4'Left'#3
+#225#2#6'Height'#2#21#3'Top'#2'`'#5'Width'#3#187#0#10'ItemHeight'#2#13#9'Ite'
+'mIndex'#2#0#13'Items.Strings'#1#6#7'SCALARS'#0#7'OnClick'#7#15'ScalarsBoxCl'
+'ick'#8'TabOrder'#2#3#4'Text'#6#7'SCALARS'#0#0#8'TListBox'#10'ScriptList'#4
+'Left'#3#224#2#6'Height'#3'\'#1#3'Top'#3#153#0#5'Width'#3#188#0#10'ItemHeigh'
+'t'#2#0#7'OnClick'#7#15'ScriptListClick'#8'TabOrder'#2#4#0#0#5'TEdit'#10'Gri'
+'dNoEdit'#4'Left'#2'y'#6'Height'#2#21#3'Top'#2#1#5'Width'#2'%'#8'TabOrder'#2
+#5#4'Text'#6#10'GridNoEdit'#0#0#5'TEdit'#10'MatOneEdit'#4'Left'#2'0'#6'Heigh'
+'t'#2#21#3'Top'#2'"'#5'Width'#3'0'#1#8'TabOrder'#2#6#4'Text'#6#10'MatOneEdit'
+#0#0#11'TStringGrid'#5'Grid1'#4'Left'#2#9#6'Height'#3#203#0#3'Top'#2'@'#5'Wi'
+'dth'#3'W'#1#7'Options'#11#15'goFixedVertLine'#15'goFixedHorzLine'#10'goVert'
+'Line'#10'goHorzLine'#13'goRangeSelect'#9'goEditing'#14'goSmoothScroll'#0#8
+'TabOrder'#2#7#7'OnClick'#7#10'Grid1Click'#10'OnKeyPress'#7#13'Grid1KeyPress'
+#11'OnMouseDown'#7#14'Grid1MouseDown'#0#0#5'TEdit'#10'MatTwoEdit'#4'Left'#2
+'0'#6'Height'#2#21#3'Top'#3#20#1#5'Width'#3'3'#1#8'TabOrder'#2#8#4'Text'#6#10
+'MatTwoEdit'#0#0#11'TStringGrid'#5'Grid2'#4'Left'#2#10#6'Height'#3#199#0#3'T'
+'op'#3'/'#1#5'Width'#3'V'#1#7'Options'#11#15'goFixedVertLine'#15'goFixedHorz'
+'Line'#10'goVertLine'#10'goHorzLine'#13'goRangeSelect'#9'goEditing'#14'goSmo'
+'othScroll'#0#8'TabOrder'#2#9#7'OnClick'#7#10'Grid2Click'#10'OnKeyPress'#7#13
+'Grid2KeyPress'#11'OnMouseDown'#7#14'Grid2MouseDown'#0#0#5'TEdit'#12'MatThre'
+'eEdit'#4'Left'#3#146#1#6'Height'#2#21#3'Top'#2' '#5'Width'#3'?'#1#8'TabOrde'
+'r'#2#10#4'Text'#6#12'MatThreeEdit'#0#0#11'TStringGrid'#5'Grid3'#4'Left'#3'p'
+#1#6'Height'#3#200#0#3'Top'#2'@'#5'Width'#3'`'#1#7'Options'#11#15'goFixedVer'
+'tLine'#15'goFixedHorzLine'#10'goVertLine'#10'goHorzLine'#13'goRangeSelect'#9
+'goEditing'#14'goSmoothScroll'#0#8'TabOrder'#2#11#7'OnClick'#7#10'Grid3Click'
+#10'OnKeyPress'#7#13'Grid3KeyPress'#11'OnMouseDown'#7#14'Grid3MouseDown'#0#0
+#5'TEdit'#11'MatFourEdit'#4'Left'#3#146#1#6'Height'#2#21#3'Top'#3#20#1#5'Wid'
+'th'#3'@'#1#8'TabOrder'#2#12#4'Text'#6#11'MatFourEdit'#0#0#11'TStringGrid'#5
+'Grid4'#4'Left'#3'r'#1#6'Height'#3#196#0#3'Top'#3'2'#1#5'Width'#3'^'#1#7'Opt'
+'ions'#11#15'goFixedVertLine'#15'goFixedHorzLine'#10'goVertLine'#10'goHorzLi'
+'ne'#13'goRangeSelect'#9'goEditing'#14'goSmoothScroll'#0#8'TabOrder'#2#13#7
+'OnClick'#7#10'Grid4Click'#10'OnKeyPress'#7#13'Grid4KeyPress'#11'OnMouseDown'
+#7#14'Grid4MouseDown'#0#0#5'TEdit'#7'Op1Edit'#4'Left'#2#25#6'Height'#2#21#3
+'Top'#3#8#2#5'Width'#3#186#0#8'TabOrder'#2#14#4'Text'#6#7'Op1Edit'#0#0#5'TEd'
+'it'#7'Op2Edit'#4'Left'#3#224#0#6'Height'#2#21#3'Top'#3#8#2#5'Width'#3#186#0
+#8'TabOrder'#2#15#4'Text'#6#5'Edit1'#0#0#5'TEdit'#7'Op3Edit'#4'Left'#3#168#1
+#6'Height'#2#21#3'Top'#3#8#2#5'Width'#3#186#0#8'TabOrder'#2#16#4'Text'#6#5'E'
+'dit1'#0#0#5'TEdit'#7'Op4Edit'#4'Left'#3'p'#2#6'Height'#2#21#3'Top'#3#8#2#5
+'Width'#3#186#0#8'TabOrder'#2#17#4'Text'#6#5'Edit1'#0#0#9'TMainMenu'#9'MainM'
+'enu1'#4'left'#3#184#2#0#9'TMenuItem'#9'FilesMenu'#7'Caption'#6#5'Files'#0#9
+'TMenuItem'#8'keyBdmnu'#7'Caption'#6#14'Keyboard Input'#0#9'TMenuItem'#8'Mat'
+'Inmnu'#7'Caption'#6#6'Matrix'#7'OnClick'#7#13'MatInmnuClick'#0#0#9'TMenuIte'
,'m'#8'VecInmnu'#7'Caption'#6#6'Vector'#7'OnClick'#7#13'VecInmnuClick'#0#0#9
+'TMenuItem'#11'ScalarInmnu'#7'Caption'#6#6'Scalar'#7'OnClick'#7#16'ScalarInm'
+'nuClick'#0#0#0#9'TMenuItem'#11'MainGridMnu'#7'Caption'#6#29'Read Data from '
+'Main Form Grid'#7'OnClick'#7#16'MainGridMnuClick'#0#0#9'TMenuItem'#9'MenuIt'
+'em1'#7'Caption'#6#17'-----------------'#0#0#9'TMenuItem'#11'OpenFileMnu'#7
+'Caption'#6#9'Open File'#7'OnClick'#7#16'OpenFileMnuClick'#0#0#9'TMenuItem'
+#11'SaveFileMnu'#7'Caption'#6#9'Save File'#7'OnClick'#7#16'SaveFileMnuClick'
+#0#0#9'TMenuItem'#12'PrintFileMnu'#7'Caption'#6#10'Print File'#7'OnClick'#7
+#17'PrintFileMnuClick'#0#0#9'TMenuItem'#9'MenuItem2'#7'Caption'#6#19'-------'
+'------------'#0#0#9'TMenuItem'#13'ImportFileMnu'#7'Caption'#6#13'Import a f'
+'ile'#0#9'TMenuItem'#12'TabFileInmnu'#7'Caption'#6#8'Tab File'#0#0#9'TMenuIt'
+'em'#14'SpaceFileInMnu'#7'Caption'#6#10'Space File'#0#0#9'TMenuItem'#14'Comm'
+'aFileInMnu'#7'Caption'#6#10'Comma File'#0#0#0#9'TMenuItem'#13'ExportFileMnu'
+#7'Caption'#6#13'Export a file'#0#9'TMenuItem'#13'TabFileOutMnu'#7'Caption'#6
+#8'Tab File'#0#0#9'TMenuItem'#15'SpaceFileOutMnu'#7'Caption'#6#10'Space File'
+#0#0#9'TMenuItem'#15'CommaFileOutMnu'#7'Caption'#6#10'Comma File'#0#0#0#9'TM'
+'enuItem'#15'ScriptFileInMnu'#7'Caption'#6#18'Open a Script File'#7'OnClick'
+#7#20'ScriptFileInMnuClick'#0#0#9'TMenuItem'#13'ScriptSaveMnu'#7'Caption'#6
+#18'Save a Script File'#7'OnClick'#7#18'ScriptSaveMnuClick'#0#0#9'TMenuItem'
+#8'ResetMnu'#7'Caption'#6#9'Reset All'#7'OnClick'#7#13'ResetMnuClick'#0#0#9
+'TMenuItem'#7'ExitMnu'#7'Caption'#6#4'EXIT'#7'OnClick'#7#12'ExitMnuClick'#0#0
+#0#9'TMenuItem'#9'MatOpsMnu'#7'Caption'#6#17'Matrix Operations'#0#9'TMenuIte'
+'m'#8'IdentMnu'#7'Caption'#6#26'Create an Indentity Matrix'#7'OnClick'#7#13
+'IdentMnuClick'#0#0#9'TMenuItem'#9'RowAugMnu'#7'Caption'#6#11'Row Augment'#7
+'OnClick'#7#14'RowAugMnuClick'#0#0#9'TMenuItem'#9'ColAugMnu'#7'Caption'#6#14
+'Column Augment'#7'OnClick'#7#14'ColAugMnuClick'#0#0#9'TMenuItem'#9'RowDelMn'
+'u'#7'Caption'#6#12'Delete a Row'#7'OnClick'#7#14'RowDelMnuClick'#0#0#9'TMen'
+'uItem'#10'RowInstMnu'#7'Caption'#6#12'Insert a Row'#7'OnClick'#7#15'RowInst'
+'MnuClick'#0#0#9'TMenuItem'#9'ColDelMnu'#7'Caption'#6#15'Delete a Column'#7
+'OnClick'#7#14'ColDelMnuClick'#0#0#9'TMenuItem'#10'ColInstMnu'#7'Caption'#6
+#15'Insert a Column'#7'OnClick'#7#15'ColInstMnuClick'#0#0#9'TMenuItem'#16'Ex'
+'tractColVecMnu'#7'Caption'#6#23'Extract a Column Vector'#7'OnClick'#7#21'Ex'
+'tractColVecMnuClick'#0#0#9'TMenuItem'#9'SVDInvMnu'#7'Caption'#6#11'SVD Inve'
+'rse'#7'OnClick'#7#14'SVDInvMnuClick'#0#0#9'TMenuItem'#10'TriDiagMnu'#7'Capt'
+'ion'#6#14'Tridiagonalize'#7'OnClick'#7#15'TriDiagMnuClick'#0#0#9'TMenuItem'
+#11'ULDecompMnu'#7'Caption'#6#25'Upper-lower Decomposition'#7'OnClick'#7#16
+'ULDecompMnuClick'#0#0#9'TMenuItem'#12'Diagtovecmnu'#7'Caption'#6#18'Diagona'
+'l to Vector'#7'OnClick'#7#17'DiagtovecmnuClick'#0#0#9'TMenuItem'#11'Vec2Dia'
+'gMnu'#7'Caption'#6#18'Vector to Diagonal'#7'OnClick'#7#16'Vec2DiagMnuClick'
+#0#0#9'TMenuItem'#9'DetermMnu'#7'Caption'#6#11'Determinant'#7'OnClick'#7#14
+'DetermMnuClick'#0#0#9'TMenuItem'#11'NormRowsMnu'#7'Caption'#6#14'Normalize '
+'Rows'#7'OnClick'#7#16'NormRowsMnuClick'#0#0#9'TMenuItem'#11'NormColsMnu'#7
+'Caption'#6#17'Normalize Columns'#7'OnClick'#7#16'NormColsMnuClick'#0#0#9'TM'
+'enuItem'#10'PreMultMnu'#7'Caption'#6#14'Premultiply by'#0#9'TMenuItem'#12'P'
+'rebyRowVmnu'#7'Caption'#6#10'Row Vector'#7'OnClick'#7#17'PrebyRowVmnuClick'
+#0#0#9'TMenuItem'#9'PreMatMnu'#7'Caption'#6#6'Matrix'#7'OnClick'#7#14'PreMat'
+'MnuClick'#0#0#9'TMenuItem'#12'PreScalarMnu'#7'Caption'#6#6'Scalar'#7'OnClic'
+'k'#7#17'PreScalarMnuClick'#0#0#0#9'TMenuItem'#11'PostMultMnu'#7'Caption'#6
+#16'Post Multiply by'#0#9'TMenuItem'#11'PostColVMnu'#7'Caption'#6#13'Column '
+'Vector'#7'OnClick'#7#16'PostColVMnuClick'#0#0#9'TMenuItem'#10'PostMatMnu'#7
+'Caption'#6#6'Matrix'#7'OnClick'#7#15'PostMatMnuClick'#0#0#9'TMenuItem'#13'P'
+'ostScalarMnu'#7'Caption'#6#6'Scalar'#0#0#0#9'TMenuItem'#8'EigenMnu'#7'Capti'
+'on'#6#23'Eigenvalues and Vectors'#7'OnClick'#7#13'EigenMnuClick'#0#0#9'TMen'
+'uItem'#8'TransMnu'#7'Caption'#6#9'Transpose'#7'OnClick'#7#13'TransMnuClick'
+#0#0#9'TMenuItem'#8'TraceMnu'#7'Caption'#6#5'Trace'#7'OnClick'#7#13'TraceMnu'
+'Click'#0#0#9'TMenuItem'#9'MatSumMnu'#7'Caption'#6#19'Matrix A + Matrix B'#7
+'OnClick'#7#14'MatSumMnuClick'#0#0#9'TMenuItem'#9'MatSubMnu'#7'Caption'#6#19
+'Matrix A - Matrix B'#7'OnClick'#7#14'MatSubMnuClick'#0#0#9'TMenuItem'#11'Ma'
+'tPrintMnu'#7'Caption'#6#5'Print'#7'OnClick'#7#16'MatPrintMnuClick'#0#0#0#9
+'TMenuItem'#9'VecOpsMnu'#7'Caption'#6#17'Vector Operations'#0#9'TMenuItem'#11
+'VecTransMnu'#7'Caption'#6#9'Transpose'#7'OnClick'#7#16'VecTransMnuClick'#0#0
+#9'TMenuItem'#13'VecXscalarMnu'#7'Caption'#6#14'Times a Scalar'#7'OnClick'#7
+#18'VecXscalarMnuClick'#0#0#9'TMenuItem'#10'VecSqrtMnu'#7'Caption'#6#23'Squa'
+'re Root of Elements'#7'OnClick'#7#15'VecSqrtMnuClick'#0#0#9'TMenuItem'#11'V'
,'ecRecipMnu'#7'Caption'#6#22'Reciprocal of Elements'#7'OnClick'#7#16'VecReci'
+'pMnuClick'#0#0#9'TMenuItem'#11'VecPrintMnu'#7'Caption'#6#5'Print'#7'OnClick'
+#7#16'VecPrintMnuClick'#0#0#9'TMenuItem'#13'RowxColVecMnu'#7'Caption'#6#20'R'
+'ow Vec. x Col. Vec.'#7'OnClick'#7#18'RowxColVecMnuClick'#0#0#9'TMenuItem'#13
+'ColxRowVecMnu'#7'Caption'#6#20'Col. Vec. x Row Vec.'#7'OnClick'#7#18'ColxRo'
+'wVecMnuClick'#0#0#0#9'TMenuItem'#12'ScalarOpsMnu'#7'Caption'#6#17'Scalar Op'
+'erations'#0#9'TMenuItem'#11'ScalSqrtMnu'#7'Caption'#6#11'Square Root'#7'OnC'
+'lick'#7#16'ScalSqrtMnuClick'#0#0#9'TMenuItem'#12'ScalRecipMnu'#7'Caption'#6
+#10'Reciprocal'#7'OnClick'#7#17'ScalRecipMnuClick'#0#0#9'TMenuItem'#12'Scalx'
+'ScalMnu'#7'Caption'#6#15'Scalar x Scalar'#7'OnClick'#7#17'ScalxScalMnuClick'
+#0#0#9'TMenuItem'#12'PrintScalMnu'#7'Caption'#6#5'Print'#7'OnClick'#7#17'Pri'
+'ntScalMnuClick'#0#0#0#9'TMenuItem'#12'ScriptOptMnu'#7'Caption'#6#17'Script '
+'Operations'#0#9'TMenuItem'#14'ScriptPrintMnu'#7'Caption'#6#5'Print'#7'OnCli'
+'ck'#7#19'ScriptPrintMnuClick'#0#0#9'TMenuItem'#14'ScriptClearMnu'#7'Caption'
+#6#5'Clear'#7'OnClick'#7#19'ScriptClearMnuClick'#0#0#9'TMenuItem'#13'ScriptE'
+'ditMnu'#7'Caption'#6#4'Edit'#7'OnClick'#7#18'ScriptEditMnuClick'#0#0#9'TMen'
+'uItem'#13'ScriptLoadMnu'#7'Caption'#6#4'Load'#7'OnClick'#7#18'ScriptLoadMnu'
+'Click'#0#0#9'TMenuItem'#9'ScrSavMnu'#7'Caption'#6#4'Save'#7'OnClick'#7#14'S'
+'crSavMnuClick'#0#0#9'TMenuItem'#9'ScrExeMnu'#7'Caption'#6#7'Execute'#7'OnCl'
+'ick'#7#14'ScrExeMnuClick'#0#0#9'TMenuItem'#12'ScriptOpsMnu'#7'Caption'#6#7
+'Options'#7'OnClick'#7#17'ScriptOpsMnuClick'#0#0#0#9'TMenuItem'#7'HelpMnu'#7
+'Caption'#6#4'Help'#0#9'TMenuItem'#8'AboutMnu'#7'Caption'#6#5'About'#7'OnCli'
+'ck'#7#13'AboutMnuClick'#0#0#0#0#11'TSaveDialog'#11'SaveDialog1'#4'left'#3
+#250#1#3'top'#2#1#0#0#11'TOpenDialog'#11'OpenDialog1'#4'left'#3')'#2#0#0#0
]);

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,313 @@
object MCItemForm: TMCItemForm
Left = 188
Height = 604
Top = 127
Width = 626
Caption = 'Multiple Choice Item Create or Edit'
ClientHeight = 604
ClientWidth = 626
OnShow = FormShow
LCLVersion = '0.9.30'
object jpeglabel: TLabel
Left = 7
Height = 16
Top = 424
Width = 225
Caption = 'jpeg photo to display prior to item (if any):'
ParentColor = False
end
object jpegnameEdit: TEdit
Left = 236
Height = 23
Top = 416
Width = 372
TabOrder = 0
Text = 'jpegnameEdit'
end
object jpegBrowseBtn: TButton
Left = 1
Height = 30
Top = 455
Width = 118
Caption = 'Browse jpeg Images'
OnClick = jpegBrowseBtnClick
TabOrder = 1
end
object SelectImageBtn: TButton
Left = 7
Height = 26
Top = 560
Width = 112
Caption = 'Select Shown Image'
OnClick = SelectImageBtnClick
TabOrder = 2
end
object ItemSaveBtn: TButton
Left = 368
Height = 33
Top = 455
Width = 111
Caption = 'Save this item'
OnClick = ItemSaveBtnClick
TabOrder = 3
end
object PreviousBtn: TButton
Left = 496
Height = 32
Top = 456
Width = 110
Caption = 'Show Previous Item'
OnClick = PreviousBtnClick
TabOrder = 4
end
object ShowNextBtn: TButton
Left = 368
Height = 30
Top = 512
Width = 109
Caption = 'Show Next Item'
OnClick = ShowNextBtnClick
TabOrder = 5
end
object StartNewBtn: TButton
Left = 498
Height = 30
Top = 512
Width = 111
Caption = 'Start a new item'
OnClick = StartNewBtnClick
TabOrder = 6
end
object ReturnBtn: TButton
Left = 432
Height = 30
Top = 560
Width = 111
Caption = 'Return'
OnClick = ReturnBtnClick
TabOrder = 7
end
object ItemStemLabel: TLabel
Left = 7
Height = 16
Top = 144
Width = 58
Caption = 'Item Stem:'
ParentColor = False
end
object ItemStemEdit: TEdit
Left = 80
Height = 23
Top = 136
Width = 539
TabOrder = 8
Text = 'ItemStemEdit'
end
object AnswerLabel: TLabel
Left = 7
Height = 16
Top = 392
Width = 117
Caption = 'Answer (A,B,C,D or F):'
ParentColor = False
end
object AnswerEdit: TEdit
Left = 128
Height = 23
Top = 384
Width = 29
TabOrder = 9
end
object Label1: TLabel
Left = 267
Height = 16
Top = 200
Width = 46
Caption = 'Choices:'
ParentColor = False
end
object Label2: TLabel
Left = 9
Height = 16
Top = 231
Width = 15
Caption = 'A. '
ParentColor = False
end
object Label3: TLabel
Left = 8
Height = 16
Top = 263
Width = 14
Caption = 'B. '
ParentColor = False
end
object Label4: TLabel
Left = 7
Height = 16
Top = 295
Width = 15
Caption = 'C. '
ParentColor = False
end
object Label5: TLabel
Left = 7
Height = 16
Top = 327
Width = 15
Caption = 'D. '
ParentColor = False
end
object Label6: TLabel
Left = 9
Height = 16
Top = 359
Width = 13
Caption = 'E. '
ParentColor = False
end
object ChoiceAEdit: TEdit
Left = 34
Height = 23
Top = 224
Width = 585
TabOrder = 10
Text = 'ChoiceAEdit'
end
object ChoiceDEdit: TEdit
Left = 34
Height = 23
Top = 320
Width = 585
TabOrder = 11
Text = 'Edit1'
end
object ChoiceEEdit: TEdit
Left = 34
Height = 23
Top = 352
Width = 585
TabOrder = 12
Text = 'Edit1'
end
object ChoiceCEdit: TEdit
Left = 34
Height = 23
Top = 288
Width = 585
TabOrder = 13
Text = 'Edit1'
end
object ChoiceBEdit: TEdit
Left = 34
Height = 23
Top = 256
Width = 585
TabOrder = 14
Text = 'Edit1'
end
object Memo1: TMemo
Left = 8
Height = 81
Top = 7
Width = 608
Lines.Strings = (
'Directions: To create a Multiple Choice item, you will need to enter the number of an item code which '
'contains'
'both a major code and a minor code. It is suggested you print all item codes from the options menu on the'
'main procedure page of the item banking program. You can however, browse the MC items from this '
'form.'
'After you have selected an item code number, enter the item stem in the space provided. Your item can also'
'include a jpeg picture prior to the presentation of the item on a test. To find the image, click the jpeg browse'
'button until you see the image you wish to include. When that item is shown, click the Select button to save'
'the name of the image file.'
'Memo1'
)
ScrollBars = ssVertical
TabOrder = 15
end
object Image1: TImage
Left = 136
Height = 130
Top = 455
Width = 217
end
object TFItemNoLabel: TLabel
Left = 9
Height = 16
Top = 112
Width = 75
Caption = 'Item Number:'
ParentColor = False
end
object ItemNoEdit: TEdit
Left = 104
Height = 23
Top = 105
Width = 44
TabOrder = 16
Text = '1'
end
object ItemCodeLabel: TLabel
Left = 168
Height = 16
Top = 112
Width = 93
Caption = 'Item Major Code:'
ParentColor = False
end
object MajorCodeEdit: TEdit
Left = 272
Height = 23
Top = 105
Width = 41
TabOrder = 17
Text = '1'
end
object MinorCodeLabel: TLabel
Left = 336
Height = 16
Top = 112
Width = 94
Caption = 'Item Minor Code:'
ParentColor = False
end
object MinorCodeEdit: TEdit
Left = 440
Height = 23
Top = 105
Width = 45
TabOrder = 18
Text = '0'
end
object CodeBrowseBtn: TButton
Left = 510
Height = 28
Top = 100
Width = 106
Caption = 'Browse Items'
OnClick = CodeBrowseBtnClick
TabOrder = 19
end
object Label7: TLabel
Left = 11
Height = 16
Top = 184
Width = 224
Caption = 'Enter number of choices and press return: '
ParentColor = False
end
object NoChoicesEdit: TEdit
Left = 240
Height = 23
Top = 168
Width = 32
OnChange = NoChoicesEditChange
TabOrder = 20
Text = '0'
end
object OpenPictureDialog1: TOpenPictureDialog
left = 512
top = 368
end
end

View File

@ -0,0 +1,83 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TMCItemForm','FORMDATA',[
'TPF0'#11'TMCItemForm'#10'MCItemForm'#4'Left'#3#188#0#6'Height'#3'\'#2#3'Top'
+#2#127#5'Width'#3'r'#2#7'Caption'#6'#Multiple Choice Item Create or Edit'#12
+'ClientHeight'#3'\'#2#11'ClientWidth'#3'r'#2#6'OnShow'#7#8'FormShow'#10'LCLV'
+'ersion'#6#6'0.9.30'#0#6'TLabel'#9'jpeglabel'#4'Left'#2#7#6'Height'#2#16#3'T'
+'op'#3#168#1#5'Width'#3#225#0#7'Caption'#6'-jpeg photo to display prior to i'
+'tem (if any):'#11'ParentColor'#8#0#0#5'TEdit'#12'jpegnameEdit'#4'Left'#3#236
+#0#6'Height'#2#23#3'Top'#3#160#1#5'Width'#3't'#1#8'TabOrder'#2#0#4'Text'#6#12
+'jpegnameEdit'#0#0#7'TButton'#13'jpegBrowseBtn'#4'Left'#2#1#6'Height'#2#30#3
+'Top'#3#199#1#5'Width'#2'v'#7'Caption'#6#18'Browse jpeg Images'#7'OnClick'#7
+#18'jpegBrowseBtnClick'#8'TabOrder'#2#1#0#0#7'TButton'#14'SelectImageBtn'#4
+'Left'#2#7#6'Height'#2#26#3'Top'#3'0'#2#5'Width'#2'p'#7'Caption'#6#18'Select'
+' Shown Image'#7'OnClick'#7#19'SelectImageBtnClick'#8'TabOrder'#2#2#0#0#7'TB'
+'utton'#11'ItemSaveBtn'#4'Left'#3'p'#1#6'Height'#2'!'#3'Top'#3#199#1#5'Width'
+#2'o'#7'Caption'#6#14'Save this item'#7'OnClick'#7#16'ItemSaveBtnClick'#8'Ta'
+'bOrder'#2#3#0#0#7'TButton'#11'PreviousBtn'#4'Left'#3#240#1#6'Height'#2' '#3
+'Top'#3#200#1#5'Width'#2'n'#7'Caption'#6#18'Show Previous Item'#7'OnClick'#7
+#16'PreviousBtnClick'#8'TabOrder'#2#4#0#0#7'TButton'#11'ShowNextBtn'#4'Left'
+#3'p'#1#6'Height'#2#30#3'Top'#3#0#2#5'Width'#2'm'#7'Caption'#6#14'Show Next '
+'Item'#7'OnClick'#7#16'ShowNextBtnClick'#8'TabOrder'#2#5#0#0#7'TButton'#11'S'
+'tartNewBtn'#4'Left'#3#242#1#6'Height'#2#30#3'Top'#3#0#2#5'Width'#2'o'#7'Cap'
+'tion'#6#16'Start a new item'#7'OnClick'#7#16'StartNewBtnClick'#8'TabOrder'#2
+#6#0#0#7'TButton'#9'ReturnBtn'#4'Left'#3#176#1#6'Height'#2#30#3'Top'#3'0'#2#5
+'Width'#2'o'#7'Caption'#6#6'Return'#7'OnClick'#7#14'ReturnBtnClick'#8'TabOrd'
+'er'#2#7#0#0#6'TLabel'#13'ItemStemLabel'#4'Left'#2#7#6'Height'#2#16#3'Top'#3
+#144#0#5'Width'#2':'#7'Caption'#6#10'Item Stem:'#11'ParentColor'#8#0#0#5'TEd'
+'it'#12'ItemStemEdit'#4'Left'#2'P'#6'Height'#2#23#3'Top'#3#136#0#5'Width'#3
+#27#2#8'TabOrder'#2#8#4'Text'#6#12'ItemStemEdit'#0#0#6'TLabel'#11'AnswerLabe'
+'l'#4'Left'#2#7#6'Height'#2#16#3'Top'#3#136#1#5'Width'#2'u'#7'Caption'#6#22
+'Answer (A,B,C,D or F):'#11'ParentColor'#8#0#0#5'TEdit'#10'AnswerEdit'#4'Lef'
+'t'#3#128#0#6'Height'#2#23#3'Top'#3#128#1#5'Width'#2#29#8'TabOrder'#2#9#0#0#6
+'TLabel'#6'Label1'#4'Left'#3#11#1#6'Height'#2#16#3'Top'#3#200#0#5'Width'#2'.'
+#7'Caption'#6#8'Choices:'#11'ParentColor'#8#0#0#6'TLabel'#6'Label2'#4'Left'#2
+#9#6'Height'#2#16#3'Top'#3#231#0#5'Width'#2#15#7'Caption'#6#3'A. '#11'Parent'
+'Color'#8#0#0#6'TLabel'#6'Label3'#4'Left'#2#8#6'Height'#2#16#3'Top'#3#7#1#5
+'Width'#2#14#7'Caption'#6#3'B. '#11'ParentColor'#8#0#0#6'TLabel'#6'Label4'#4
+'Left'#2#7#6'Height'#2#16#3'Top'#3''''#1#5'Width'#2#15#7'Caption'#6#3'C. '#11
+'ParentColor'#8#0#0#6'TLabel'#6'Label5'#4'Left'#2#7#6'Height'#2#16#3'Top'#3
+'G'#1#5'Width'#2#15#7'Caption'#6#3'D. '#11'ParentColor'#8#0#0#6'TLabel'#6'La'
+'bel6'#4'Left'#2#9#6'Height'#2#16#3'Top'#3'g'#1#5'Width'#2#13#7'Caption'#6#3
+'E. '#11'ParentColor'#8#0#0#5'TEdit'#11'ChoiceAEdit'#4'Left'#2'"'#6'Height'#2
+#23#3'Top'#3#224#0#5'Width'#3'I'#2#8'TabOrder'#2#10#4'Text'#6#11'ChoiceAEdit'
+#0#0#5'TEdit'#11'ChoiceDEdit'#4'Left'#2'"'#6'Height'#2#23#3'Top'#3'@'#1#5'Wi'
+'dth'#3'I'#2#8'TabOrder'#2#11#4'Text'#6#5'Edit1'#0#0#5'TEdit'#11'ChoiceEEdit'
+#4'Left'#2'"'#6'Height'#2#23#3'Top'#3'`'#1#5'Width'#3'I'#2#8'TabOrder'#2#12#4
+'Text'#6#5'Edit1'#0#0#5'TEdit'#11'ChoiceCEdit'#4'Left'#2'"'#6'Height'#2#23#3
+'Top'#3' '#1#5'Width'#3'I'#2#8'TabOrder'#2#13#4'Text'#6#5'Edit1'#0#0#5'TEdit'
+#11'ChoiceBEdit'#4'Left'#2'"'#6'Height'#2#23#3'Top'#3#0#1#5'Width'#3'I'#2#8
+'TabOrder'#2#14#4'Text'#6#5'Edit1'#0#0#5'TMemo'#5'Memo1'#4'Left'#2#8#6'Heigh'
+'t'#2'Q'#3'Top'#2#7#5'Width'#3'`'#2#13'Lines.Strings'#1#6'gDirections: To c'
+'reate a Multiple Choice item, you will need to enter the number of an item '
+'code which '#6#8'contains'#6'jboth a major code and a minor code. It is su'
+'ggested you print all item codes from the options menu on the'#6'bmain proc'
+'edure page of the item banking program. You can however, browse the MC ite'
+'ms from this '#6#5'form.'#6'kAfter you have selected an item code number, '
+'enter the item stem in the space provided. Your item can also'#6'qinclude '
+'a jpeg picture prior to the presentation of the item on a test. To find th'
+'e image, click the jpeg browse'#6'mbutton until you see the image you wish '
+'to include. When that item is shown, click the Select button to save'#6#27
+'the name of the image file.'#6#5'Memo1'#0#10'ScrollBars'#7#10'ssVertical'#8
+'TabOrder'#2#15#0#0#6'TImage'#6'Image1'#4'Left'#3#136#0#6'Height'#3#130#0#3
+'Top'#3#199#1#5'Width'#3#217#0#0#0#6'TLabel'#13'TFItemNoLabel'#4'Left'#2#9#6
+'Height'#2#16#3'Top'#2'p'#5'Width'#2'K'#7'Caption'#6#12'Item Number:'#11'Par'
+'entColor'#8#0#0#5'TEdit'#10'ItemNoEdit'#4'Left'#2'h'#6'Height'#2#23#3'Top'#2
+'i'#5'Width'#2','#8'TabOrder'#2#16#4'Text'#6#1'1'#0#0#6'TLabel'#13'ItemCodeL'
,'abel'#4'Left'#3#168#0#6'Height'#2#16#3'Top'#2'p'#5'Width'#2']'#7'Caption'#6
+#16'Item Major Code:'#11'ParentColor'#8#0#0#5'TEdit'#13'MajorCodeEdit'#4'Lef'
+'t'#3#16#1#6'Height'#2#23#3'Top'#2'i'#5'Width'#2')'#8'TabOrder'#2#17#4'Text'
+#6#1'1'#0#0#6'TLabel'#14'MinorCodeLabel'#4'Left'#3'P'#1#6'Height'#2#16#3'Top'
+#2'p'#5'Width'#2'^'#7'Caption'#6#16'Item Minor Code:'#11'ParentColor'#8#0#0#5
+'TEdit'#13'MinorCodeEdit'#4'Left'#3#184#1#6'Height'#2#23#3'Top'#2'i'#5'Width'
+#2'-'#8'TabOrder'#2#18#4'Text'#6#1'0'#0#0#7'TButton'#13'CodeBrowseBtn'#4'Lef'
+'t'#3#254#1#6'Height'#2#28#3'Top'#2'd'#5'Width'#2'j'#7'Caption'#6#12'Browse '
+'Items'#7'OnClick'#7#18'CodeBrowseBtnClick'#8'TabOrder'#2#19#0#0#6'TLabel'#6
+'Label7'#4'Left'#2#11#6'Height'#2#16#3'Top'#3#184#0#5'Width'#3#224#0#7'Capti'
+'on'#6'*Enter number of choices and press return: '#11'ParentColor'#8#0#0#5
+'TEdit'#13'NoChoicesEdit'#4'Left'#3#240#0#6'Height'#2#23#3'Top'#3#168#0#5'Wi'
+'dth'#2' '#8'OnChange'#7#19'NoChoicesEditChange'#8'TabOrder'#2#20#4'Text'#6#1
+'0'#0#0#18'TOpenPictureDialog'#18'OpenPictureDialog1'#4'left'#3#0#2#3'top'#3
+'p'#1#0#0#0
]);

View File

@ -0,0 +1,381 @@
unit MCItemUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, ExtCtrls, ExtDlgs, outputunit;
type
{ TMCItemForm }
TMCItemForm = class(TForm)
AnswerEdit: TEdit;
AnswerLabel: TLabel;
ChoiceAEdit: TEdit;
ChoiceDEdit: TEdit;
ChoiceEEdit: TEdit;
ChoiceCEdit: TEdit;
ChoiceBEdit: TEdit;
CodeBrowseBtn: TButton;
NoChoicesEdit: TEdit;
Image1: TImage;
ItemCodeLabel: TLabel;
ItemSaveBtn: TButton;
ItemStemEdit: TEdit;
ItemStemLabel: TLabel;
jpegBrowseBtn: TButton;
jpeglabel: TLabel;
jpegnameEdit: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
MajorCodeEdit: TEdit;
Memo1: TMemo;
MinorCodeEdit: TEdit;
MinorCodeLabel: TLabel;
OpenPictureDialog1: TOpenPictureDialog;
PreviousBtn: TButton;
ReturnBtn: TButton;
SelectImageBtn: TButton;
ShowNextBtn: TButton;
StartNewBtn: TButton;
ItemNoEdit: TEdit;
TFItemNoLabel: TLabel;
procedure CodeBrowseBtnClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure ItemSaveBtnClick(Sender: TObject);
procedure jpegBrowseBtnClick(Sender: TObject);
procedure NoChoicesEditChange(Sender: TObject);
procedure PreviousBtnClick(Sender: TObject);
procedure ReturnBtnClick(Sender: TObject);
procedure SelectImageBtnClick(Sender: TObject);
procedure ShowNextBtnClick(Sender: TObject);
procedure StartNewBtnClick(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
MCItemForm: TMCItemForm;
implementation
uses ItemBankingUnit;
{ TMCItemForm }
procedure TMCItemForm.jpegBrowseBtnClick(Sender: TObject);
VAR
JPEG : TJPEGImage;
begin
OpenPictureDialog1.Options := OpenPictureDialog1.Options+[ofFileMustExist];
if not OpenPictureDialog1.Execute then exit;
try
JPEG := TJPEGImage.Create;
try
JPEG.LoadFromFile(OpenPictureDialog1.FileName);
Image1.Picture.Assign(JPEG);
finally
JPEG.Free;
end;
except
on E: Exception do begin
MessageDlg('Error','Error: '+E.Message,mtError,[mbOk],0);
end;
end;
Image1.Proportional := true;
end;
procedure TMCItemForm.NoChoicesEditChange(Sender: TObject);
var
nochoices : integer;
begin
nochoices := StrToInt(NoChoicesEdit.Text);
if nochoices > 0 then ChoiceAEdit.Visible := true else ChoiceAEdit.Visible := false;
if nochoices > 1 then ChoiceBEdit.Visible := true else ChoiceBEdit.Visible := false;
if nochoices > 2 then ChoiceCEdit.Visible := true else ChoiceCEdit.Visible := false;
if nochoices > 3 then ChoiceDEdit.Visible := true else ChoiceDEdit.Visible := false;
if nochoices > 4 then ChoiceEEdit.Visible := true else ChoiceEEdit.Visible := false;
end;
procedure TMCItemForm.PreviousBtnClick(Sender: TObject);
Var
response : string;
itemno : integer;
JPEG : TJPEGImage;
nochoices : integer;
begin
response := InputBox('Save current item?','Save','Y');
if response = 'Y' then ItemSaveBtnClick(self);
Image1.Canvas.Clear;
ChoiceAEdit.Text := '';
ChoiceBEdit.Text := '';
ChoiceCEdit.Text := '';
ChoiceDEdit.Text := '';
ChoiceEEdit.Text := '';
response := InputBox('Code Number:','Number:','1');
itemno := StrToInt(response);
if itemno <= ItemBankFrm.BankInfo.NMCItems then
begin
nochoices := ItemBankFrm.MCItemInfo[itemno].NoChoices;
ItemNoEdit.Text := IntToStr(ItemBankFrm.MCItemInfo[itemno].ItemNumber);
MajorCodeEdit.Text := IntToStr(ItemBankFrm.MCItemInfo[itemno].majorcode);
MinorCodeEdit.Text := IntToStr(ItemBankFrm.MCItemInfo[itemno].minorcode);
NoChoicesEdit.Text := IntToStr(ItemBankFrm.MCItemInfo[itemno].NoChoices);
ItemStemEdit.Text := ItemBankFrm.MCItemInfo[itemno].ItemStem ;
if nochoices > 0 then ChoiceAEdit.Text := ItemBankFrm.MCItemInfo[itemno].ChoiceOne;
if nochoices > 1 then ChoiceBEdit.Text := ItemBankFrm.MCItemInfo[itemno].ChoiceTwo;
if nochoices > 2 then ChoiceCEdit.Text := ItemBankFrm.MCItemInfo[itemno].ChoiceThree;
if nochoices > 3 then ChoiceDEdit.Text := ItemBankFrm.MCItemInfo[itemno].ChoiceFour;
if nochoices > 4 then ChoiceEEdit.Text := ItemBankFrm.MCItemInfo[itemno].ChoiceFive;
AnswerEdit.Text := ItemBankFrm.MCItemInfo[itemno].CorrectChoice;
jpegnameEdit.Text := ItemBankFrm.MCItemInfo[itemno].PicName;
if jpegnameEdit.Text <> 'none' then
begin
JPEG := TJPEGImage.Create;
try
JPEG.LoadFromFile(jpegnameEdit.Text);
Image1.Picture.Assign(JPEG);
finally
JPEG.Free;
Image1.Proportional := true;
end;
end;
end;
end;
procedure TMCItemForm.ReturnBtnClick(Sender: TObject);
begin
MCItemForm.Hide;
Close;
end;
procedure TMCItemForm.ItemSaveBtnClick(Sender: TObject);
var
currentno : integer;
count : integer;
nochoices : integer;
begin
count := ItemBankFrm.BankInfo.NMCItems;
currentno := StrToInt(ItemNoEdit.Text);
if currentno > count then
begin
ItemBankFrm.BankInfo.NMCItems := currentno;
ItemBankFrm.NMCItemsText.Text := IntToStr(currentno);
end;
nochoices := StrToInt(NoChoicesEdit.Text);
ItemBankFrm.MCItemInfo[currentno].ItemNumber := currentno;
ItemBankFrm.MCItemInfo[currentno].majorcode := StrToInt(MajorCodeEdit.Text);
ItemBankFrm.MCItemInfo[currentno].minorcode := StrToInt(MinorCodeEdit.Text);
ItemBankFrm.MCItemInfo[currentno].NoChoices := nochoices;
ItemBankFrm.MCItemInfo[currentno].ItemStem := ItemStemEdit.Text;
if nochoices > 0 then ItemBankFrm.MCItemInfo[currentno].ChoiceOne := ChoiceAEdit.Text;
if nochoices > 1 then ItemBankFrm.MCItemInfo[currentno].ChoiceTwo := ChoiceBEdit.Text;
if nochoices > 2 then ItemBankFrm.MCItemInfo[currentno].ChoiceThree := ChoiceCEdit.Text;
if nochoices > 3 then ItemBankFrm.MCItemInfo[currentno].ChoiceFour := ChoiceDEdit.Text;
if nochoices > 4 then ItemBankFrm.MCItemInfo[currentno].ChoiceFive := ChoiceEEdit.Text;
ItemBankFrm.MCItemInfo[currentno].CorrectChoice := AnswerEdit.Text[1];
ItemBankFrm.MCItemInfo[currentno].PicName := jpegnameEdit.Text;
end;
procedure TMCItemForm.FormShow(Sender: TObject);
Var
JPEG : TJPEGImage;
nochoices : integer;
begin
ChoiceAEdit.Text := '';
ChoiceBEdit.Text := '';
ChoiceCEdit.Text := '';
ChoiceDEdit.Text := '';
ChoiceEEdit.Text := '';
Image1.Canvas.Clear;
if ItemBankFrm.BankInfo.NMCItems > 0 then
begin
ItemNoEdit.Text := IntToStr(ItemBankFrm.MCItemInfo[1].ItemNumber);
MajorCodeEdit.Text := IntToStr(ItemBankFrm.MCItemInfo[1].majorcode) ;
MinorCodeEdit.Text := IntToStr(ItemBankFrm.MCItemInfo[1].minorcode);
nochoices := ItemBankFrm.MCItemInfo[1].NoChoices;
NoChoicesEdit.Text := IntToStr(nochoices);
ItemStemEdit.Text := ItemBankFrm.MCItemInfo[1].ItemStem;
AnswerEdit.Text := ItemBankFrm.MCItemInfo[1].CorrectChoice;
if nochoices > 0 then ChoiceAEdit.Text := ItemBankFrm.MCItemInfo[1].ChoiceOne;
if nochoices > 1 then ChoiceBEdit.Text := ItemBankFrm.MCItemInfo[1].ChoiceTwo;
if nochoices > 2 then ChoiceCEdit.Text := ItemBankFrm.MCItemInfo[1].ChoiceThree;
if nochoices > 3 then ChoiceDEdit.Text := ItemBankFrm.MCItemInfo[1].ChoiceFour;
if nochoices > 4 then ChoiceEEdit.Text := ItemBankFrm.MCItemInfo[1].ChoiceFive;
jpegnameEdit.Text := ItemBankFrm.MCItemInfo[1].PicName;
if jpegnameEdit.Text <> 'none' then
begin
JPEG := TJPEGImage.Create;
try
JPEG.LoadFromFile(jpegnameEdit.Text);
Image1.Picture.Assign(JPEG);
finally
JPEG.Free;
Image1.Proportional := true;
end;
end;
end else
begin
ItemNoEdit.Text := '1';
MajorCodeEdit.Text := '1';
MinorCodeEdit.Text := '0';
ItemStemEdit.Text := '';
AnswerEdit.Text := '';
jpegnameEdit.Text := 'none';
Image1.Canvas.Clear;
end;
end;
procedure TMCItemForm.CodeBrowseBtnClick(Sender: TObject);
var
count : integer;
i : integer;
outline : string;
nochoices : integer;
begin
OutPutFrm.RichEdit.Clear;
count := ItemBankFrm.BankInfo.NMCItems;
OutPutFrm.RichEdit.Lines.Add('Current Items');
OutPutFrm.RichEdit.Lines.Add('');
for i := 1 to count do
begin
ChoiceAEdit.Text := '';
ChoiceBEdit.Text := '';
ChoiceCEdit.Text := '';
ChoiceDEdit.Text := '';
ChoiceEEdit.Text := '';
nochoices := ItemBankFrm.MCItemInfo[i].NoChoices;
outline := format('Item number %3d',[ItemBankFrm.MCItemInfo[i].itemnumber]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Major Code %3d',[ItemBankFrm.MCItemInfo[i].majorcode]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Minor Code %3d',[ItemBankFrm.MCItemInfo[i].minorcode]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('No. of Choices %3d',[ItemBankFrm.MCItemInfo[i].NoChoices]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Item Stem %s',[ItemBankFrm.MCItemInfo[i].ItemStem]);
OutPutFrm.RichEdit.Lines.Add(outline);
if nochoices > 0 then
begin
outline := format('Choice A %s',[ItemBankFrm.MCItemInfo[i].ChoiceOne]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
if nochoices > 1 then
begin
outline := format('Choice B %s',[ItemBankFrm.MCItemInfo[i].ChoiceTwo]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
if nochoices > 2 then
begin
outline := format('Choice C %s',[ItemBankFrm.MCItemInfo[i].ChoiceThree]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
if nochoices > 3 then
begin
outline := format('Choice D %s',[ItemBankFrm.MCItemInfo[i].ChoiceFour]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
if nochoices > 4 then
begin
outline := format('Choice E %s',[ItemBankFrm.MCItemInfo[i].ChoiceFive]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
outline := format('Correct Choice %s',[ItemBankFrm.MCItemInfo[i].CorrectChoice]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Graphic Image %s',[ItemBankFrm.MCItemInfo[i].PicName]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add('');
end;
OutPutFrm.ShowModal;
end;
procedure TMCItemForm.SelectImageBtnClick(Sender: TObject);
begin
jpegnameEdit.Text := OpenPictureDialog1.FileName;
end;
procedure TMCItemForm.ShowNextBtnClick(Sender: TObject);
var
count : integer;
itemno : integer;
JPEG : TJPEGImage;
nochoices : integer;
response : string;
begin
response := InputBox('Save current item?','Save','Y');
if response = 'Y' then ItemSaveBtnClick(self);
Image1.Canvas.Clear;
itemno := StrToInt(ItemNoEdit.Text) + 1;
count := ItemBankFrm.BankInfo.NMCItems;
if count <= itemno then
begin
ChoiceAEdit.Text := '';
ChoiceBEdit.Text := '';
ChoiceCEdit.Text := '';
ChoiceDEdit.Text := '';
ChoiceEEdit.Text := '';
nochoices := ItemBankFrm.MCItemInfo[itemno].NoChoices;
ItemNoEdit.Text := IntToStr(ItemBankFrm.MCItemInfo[itemno].ItemNumber);
MajorCodeEdit.Text := IntToStr(ItemBankFrm.MCItemInfo[itemno].majorcode) ;
MinorCodeEdit.Text := IntToStr(ItemBankFrm.MCItemInfo[itemno].minorcode);
ItemStemEdit.Text := ItemBankFrm.MCItemInfo[itemno].ItemStem;
if nochoices > 0 then ChoiceAEdit.Text := ItemBankFrm.MCItemInfo[itemno].ChoiceOne;
if nochoices > 1 then ChoiceBEdit.Text := ItemBankFrm.MCItemInfo[itemno].ChoiceTwo;
if nochoices > 2 then ChoiceCEdit.Text := ItemBankFrm.MCItemInfo[itemno].ChoiceThree;
if nochoices > 3 then ChoiceDEdit.Text := ItemBankFrm.MCItemInfo[itemno].ChoiceFour;
if nochoices > 4 then ChoiceEEdit.Text := ItemBankFrm.MCItemInfo[itemno].ChoiceFive;
AnswerEdit.Text := ItemBankFrm.MCItemInfo[itemno].CorrectChoice;
jpegnameEdit.Text := ItemBankFrm.MCItemInfo[itemno].PicName;
if jpegnameEdit.Text <> 'none' then
begin
JPEG := TJPEGImage.Create;
try
JPEG.LoadFromFile(jpegnameEdit.Text);
Image1.Picture.Assign(JPEG);
finally
JPEG.Free;
Image1.Proportional := true;
end;
end;
end;
end;
procedure TMCItemForm.StartNewBtnClick(Sender: TObject);
var
currentno : integer;
response : string;
begin
response := InputBox('Save current item?','Save','Y');
if response = 'Y' then ItemSaveBtnClick(self);
currentno := ItemBankFrm.BankInfo.NMCItems + 1;
ItemNoEdit.Text := IntToStr(currentno);
currentno := StrToInt(MinorCodeEdit.Text);
MinorCodeEdit.Text := IntToStr(currentno + 1);
NoChoicesEdit.Text := '0';
ItemStemEdit.Text := '';
ChoiceAEdit.Text := '';
ChoiceBEdit.Text := '';
ChoiceCEdit.Text := '';
ChoiceDEdit.Text := '';
ChoiceEEdit.Text := '';
AnswerEdit.Text := '';
jpegnameEdit.Text := 'none';
Image1.Canvas.Clear;
end;
initialization
{$I mcitemunit.lrs}
end.

View File

@ -0,0 +1,416 @@
object MedianPolishForm: TMedianPolishForm
Left = 288
Height = 371
Top = 161
Width = 531
Caption = 'Median Polishing for a Two-Way Table'
ClientHeight = 371
ClientWidth = 531
OnShow = ResetBtnClick
LCLVersion = '0.9.30'
object Label1: TLabel
Left = 8
Height = 16
Top = 11
Width = 51
Caption = 'Variables:'
ParentColor = False
end
object VarList: TListBox
Left = 8
Height = 275
Top = 29
Width = 185
ItemHeight = 0
TabOrder = 0
end
object DepVar: TEdit
Left = 256
Height = 23
Top = 56
Width = 135
TabOrder = 1
Text = 'DepVar'
end
object DepIn1: TBitBtn
Left = 208
Height = 29
Top = 35
Width = 32
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE
6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580
3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3
71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7
74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7
74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = DepIn1Click
TabOrder = 2
end
object DepOut: TBitBtn
Left = 208
Height = 29
Top = 72
Width = 32
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = DepOutClick
TabOrder = 3
end
object StaticText1: TStaticText
Left = 256
Height = 15
Top = 32
Width = 73
Caption = 'Dependent Variable'
TabOrder = 4
end
object Fact1In: TBitBtn
Left = 208
Height = 29
Top = 120
Width = 32
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE
6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580
3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3
71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7
74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7
74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = Fact1InClick
TabOrder = 5
end
object Fact1Out: TBitBtn
Left = 208
Height = 29
Top = 160
Width = 32
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = Fact1OutClick
TabOrder = 6
end
object Fact2In: TBitBtn
Left = 208
Height = 29
Top = 216
Width = 32
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE
6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580
3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3
71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7
74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7
74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = Fact2InClick
TabOrder = 7
end
object Fact2Out: TBitBtn
Left = 208
Height = 29
Top = 256
Width = 32
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = Fact2OutClick
TabOrder = 8
end
object Factor1: TEdit
Left = 256
Height = 23
Top = 136
Width = 135
TabOrder = 9
Text = 'Edit1'
end
object Factor2: TEdit
Left = 256
Height = 23
Top = 232
Width = 135
TabOrder = 10
Text = 'Edit1'
end
object Label2: TLabel
Left = 257
Height = 16
Top = 113
Width = 43
Caption = 'Factor 1'
ParentColor = False
end
object Label3: TLabel
Left = 257
Height = 16
Top = 209
Width = 43
Caption = 'Factor 2'
ParentColor = False
end
object ResetBtn: TButton
Left = 429
Height = 28
Top = 28
Width = 75
Caption = 'Reset'
OnClick = ResetBtnClick
TabOrder = 11
end
object CancelBtn: TButton
Left = 429
Height = 28
Top = 80
Width = 75
Cancel = True
Caption = 'Cancel'
ModalResult = 2
TabOrder = 12
end
object ComputeBtn: TButton
Left = 429
Height = 28
Top = 136
Width = 75
Caption = 'Compute'
OnClick = ComputeBtnClick
TabOrder = 13
end
object ReturnBtn: TButton
Left = 429
Height = 28
Top = 192
Width = 75
Caption = 'Return'
ModalResult = 1
TabOrder = 14
end
object Label4: TLabel
Left = 255
Height = 16
Top = 294
Width = 81
Caption = 'Max. Iterations:'
ParentColor = False
end
object MaxEdit: TEdit
Left = 356
Height = 23
Top = 288
Width = 35
TabOrder = 15
Text = '5'
end
object ItersBtn: TRadioButton
Left = 254
Height = 19
Top = 323
Width = 182
Caption = 'Show Results for Each Iteration'
OnChange = ItersBtnChange
TabOrder = 16
Visible = False
end
object NormChk: TCheckBox
Left = 9
Height = 19
Top = 325
Width = 234
Caption = 'Show Bill Miller''s Normalizing Procedure'
TabOrder = 17
end
end

View File

@ -0,0 +1,347 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TMedianPolishForm','FORMDATA',[
'TPF0'#17'TMedianPolishForm'#16'MedianPolishForm'#4'Left'#3' '#1#6'Height'#3
+'s'#1#3'Top'#3#161#0#5'Width'#3#19#2#7'Caption'#6'$Median Polishing for a Tw'
+'o-Way Table'#12'ClientHeight'#3's'#1#11'ClientWidth'#3#19#2#6'OnShow'#7#13
+'ResetBtnClick'#10'LCLVersion'#6#6'0.9.30'#0#6'TLabel'#6'Label1'#4'Left'#2#8
+#6'Height'#2#16#3'Top'#2#11#5'Width'#2'3'#7'Caption'#6#10'Variables:'#11'Par'
+'entColor'#8#0#0#8'TListBox'#7'VarList'#4'Left'#2#8#6'Height'#3#19#1#3'Top'#2
+#29#5'Width'#3#185#0#10'ItemHeight'#2#0#8'TabOrder'#2#0#0#0#5'TEdit'#6'DepVa'
+'r'#4'Left'#3#0#1#6'Height'#2#23#3'Top'#2'8'#5'Width'#3#135#0#8'TabOrder'#2#1
+#4'Text'#6#6'DepVar'#0#0#7'TBitBtn'#6'DepIn1'#4'Left'#3#208#0#6'Height'#2#29
+#3'Top'#2'#'#5'Width'#2' '#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0
+#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'
+#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0'!c$'#184#29'^ '#6#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+'*p/8%i)'#247'!c$'#217#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'
+#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'?'#136'E'#255'Y'#161'^'
+#255'D'#139'I'#255'!c$'#207#255#255#255#0#255#255#255#0#255#255#255#0'e'#195
+'q'#255#160#215#169#255#156#213#165#255#152#211#161#255#148#208#157#255#144
+#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255
+'z'#193#128#255'v'#190'|'#255'E'#140'J'#255'!c$'#196#255#255#255#0#255#255
+#255#0'h'#199't'#255#165#218#174#255#162#216#171#255#158#214#167#255#154#212
+#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255#133
+#199#139#255#129#197#135#255'}'#194#130#255'J'#145'P'#255'%i)'#201#255#255
+#255#0#255#255#255#0'h'#199't'#255'h'#199't'#255'e'#195'q'#255'a'#190'm'#255
+']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145
+'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'#209#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+'A'#145'I'#247';'#136'B'#219#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+'G'#153'O'#187'A'#145'I'#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyp'
+'hs'#2#0#7'OnClick'#7#11'DepIn1Click'#8'TabOrder'#2#2#0#0#7'TBitBtn'#6'DepOu'
+'t'#4'Left'#3#208#0#6'Height'#2#29#3'Top'#2'H'#5'Width'#2' '#10'Glyph.Data'
+#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0
+#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
,#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0'M'#161'V'#6'G'#153'O'#184#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0'S'#169'\'#217'M'#161'V'#247'G'#153'O8'#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+']'#184'h'#207'q'#190'{'#255'z'#193#131#255'['#170'd'#255'G'#153'O'#255'A'
+#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255'%i)'#255'!c$'#255
+#29'^ '#255#255#255#255#0#255#255#255#0'e'#195'q'#196'{'#200#134#255#156#213
+#165#255#152#211#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135
+#201#142#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'r'
+#189'x'#255'!c$'#255#255#255#255#0#255#255#255#0'h'#199't'#201#127#204#138
+#255#162#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207
+#154#255#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'
+#194#130#255'x'#192'~'#255'%i)'#255#255#255#255#0#255#255#255#0#255#255#255#0
+'h'#199't'#209#128#205#139#255'|'#201#135#255']'#184'h'#255'X'#177'b'#255'S'
+#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'
+#255'/x5'#255'*p/'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0'h'#199't'#219'e'#195'q'#247#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+'h'#199't'#6'h'#199't'#187#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#11'DepOutClick'#8
+'TabOrder'#2#3#0#0#11'TStaticText'#11'StaticText1'#4'Left'#3#0#1#6'Height'#2
+#15#3'Top'#2' '#5'Width'#2'I'#7'Caption'#6#18'Dependent Variable'#8'TabOrder'
+#2#4#0#0#7'TBitBtn'#7'Fact1In'#4'Left'#3#208#0#6'Height'#2#29#3'Top'#2'x'#5
+'Width'#2' '#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0
+'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0
+#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
,#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0'!c$'#184#29'^ '#6#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'*p/8%i)'
+#247'!c$'#217#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'a'#190
+'m'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255
+'A'#145'I'#255';'#136'B'#255'5'#128';'#255'?'#136'E'#255'Y'#161'^'#255'D'#139
+'I'#255'!c$'#207#255#255#255#0#255#255#255#0#255#255#255#0'e'#195'q'#255#160
+#215#169#255#156#213#165#255#152#211#161#255#148#208#157#255#144#206#152#255
+#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255'z'#193#128
+#255'v'#190'|'#255'E'#140'J'#255'!c$'#196#255#255#255#0#255#255#255#0'h'#199
+'t'#255#165#218#174#255#162#216#171#255#158#214#167#255#154#212#163#255#150
+#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255#133#199#139#255
+#129#197#135#255'}'#194#130#255'J'#145'P'#255'%i)'#201#255#255#255#0#255#255
+#255#0'h'#199't'#255'h'#199't'#255'e'#195'q'#255'a'#190'm'#255']'#184'h'#255
+'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255'Z'#163
+'b'#255'U'#157'\'#255'/x5'#209#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'A'#145'I'#247
+';'#136'B'#219#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'G'#153'O'#187
+'A'#145'I'#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnCl'
+'ick'#7#12'Fact1InClick'#8'TabOrder'#2#5#0#0#7'TBitBtn'#8'Fact1Out'#4'Left'#3
+#208#0#6'Height'#2#29#3'Top'#3#160#0#5'Width'#2' '#10'Glyph.Data'#10':'#4#0#0
+'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0
+#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0'M'#161'V'#6'G'#153'O'#184#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0'S'#169'\'#217'M'#161'V'#247'G'#153'O8'#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0']'#184'h'
+#207'q'#190'{'#255'z'#193#131#255'['#170'd'#255'G'#153'O'#255'A'#145'I'#255
+';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255
+#255#255#255#0#255#255#255#0'e'#195'q'#196'{'#200#134#255#156#213#165#255#152
+#211#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142#255
+#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!'
+'c$'#255#255#255#255#0#255#255#255#0'h'#199't'#201#127#204#138#255#162#216
,#171#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255#142
+#204#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130#255
+'x'#192'~'#255'%i)'#255#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'
+#209#128#205#139#255'|'#201#135#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255
+'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'
+#255'*p/'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199
+'t'#219'e'#195'q'#247#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'
+#6'h'#199't'#187#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#13'Fact1OutClick'#8'TabOr'
+'der'#2#6#0#0#7'TBitBtn'#7'Fact2In'#4'Left'#3#208#0#6'Height'#2#29#3'Top'#3
+#216#0#5'Width'#2' '#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0
+'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0
+#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0'!c$'#184#29'^ '#6#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+'*p/8%i)'#247'!c$'#217#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'
+#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'?'#136'E'#255'Y'#161'^'
+#255'D'#139'I'#255'!c$'#207#255#255#255#0#255#255#255#0#255#255#255#0'e'#195
+'q'#255#160#215#169#255#156#213#165#255#152#211#161#255#148#208#157#255#144
+#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255
+'z'#193#128#255'v'#190'|'#255'E'#140'J'#255'!c$'#196#255#255#255#0#255#255
+#255#0'h'#199't'#255#165#218#174#255#162#216#171#255#158#214#167#255#154#212
+#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255#133
+#199#139#255#129#197#135#255'}'#194#130#255'J'#145'P'#255'%i)'#201#255#255
+#255#0#255#255#255#0'h'#199't'#255'h'#199't'#255'e'#195'q'#255'a'#190'm'#255
+']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145
+'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'#209#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+'A'#145'I'#247';'#136'B'#219#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+'G'#153'O'#187'A'#145'I'#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
,#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyp'
+'hs'#2#0#7'OnClick'#7#12'Fact2InClick'#8'TabOrder'#2#7#0#0#7'TBitBtn'#8'Fact'
+'2Out'#4'Left'#3#208#0#6'Height'#2#29#3'Top'#3#0#1#5'Width'#2' '#10'Glyph.Da'
+'ta'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0
+#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0'M'#161'V'#6'G'#153'O'#184#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0'S'#169'\'#217'M'#161'V'#247'G'#153'O8'#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131#255'['#170'd'#255'G'#153'O'#255
+'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255'%i)'#255'!c$'
+#255#29'^ '#255#255#255#255#0#255#255#255#0'e'#195'q'#196'{'#200#134#255#156
+#213#165#255#152#211#161#255#148#208#157#255#144#206#152#255#139#203#147#255
+#135#201#142#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255
+'r'#189'x'#255'!c$'#255#255#255#255#0#255#255#255#0'h'#199't'#201#127#204#138
+#255#162#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207
+#154#255#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'
+#194#130#255'x'#192'~'#255'%i)'#255#255#255#255#0#255#255#255#0#255#255#255#0
+'h'#199't'#209#128#205#139#255'|'#201#135#255']'#184'h'#255'X'#177'b'#255'S'
+#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'
+#255'/x5'#255'*p/'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0'h'#199't'#219'e'#195'q'#247#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+'h'#199't'#6'h'#199't'#187#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#13'Fact2OutClick'
+#8'TabOrder'#2#8#0#0#5'TEdit'#7'Factor1'#4'Left'#3#0#1#6'Height'#2#23#3'Top'
,#3#136#0#5'Width'#3#135#0#8'TabOrder'#2#9#4'Text'#6#5'Edit1'#0#0#5'TEdit'#7
+'Factor2'#4'Left'#3#0#1#6'Height'#2#23#3'Top'#3#232#0#5'Width'#3#135#0#8'Tab'
+'Order'#2#10#4'Text'#6#5'Edit1'#0#0#6'TLabel'#6'Label2'#4'Left'#3#1#1#6'Heig'
+'ht'#2#16#3'Top'#2'q'#5'Width'#2'+'#7'Caption'#6#8'Factor 1'#11'ParentColor'
+#8#0#0#6'TLabel'#6'Label3'#4'Left'#3#1#1#6'Height'#2#16#3'Top'#3#209#0#5'Wid'
+'th'#2'+'#7'Caption'#6#8'Factor 2'#11'ParentColor'#8#0#0#7'TButton'#8'ResetB'
+'tn'#4'Left'#3#173#1#6'Height'#2#28#3'Top'#2#28#5'Width'#2'K'#7'Caption'#6#5
+'Reset'#7'OnClick'#7#13'ResetBtnClick'#8'TabOrder'#2#11#0#0#7'TButton'#9'Can'
+'celBtn'#4'Left'#3#173#1#6'Height'#2#28#3'Top'#2'P'#5'Width'#2'K'#6'Cancel'#9
+#7'Caption'#6#6'Cancel'#11'ModalResult'#2#2#8'TabOrder'#2#12#0#0#7'TButton'
+#10'ComputeBtn'#4'Left'#3#173#1#6'Height'#2#28#3'Top'#3#136#0#5'Width'#2'K'#7
+'Caption'#6#7'Compute'#7'OnClick'#7#15'ComputeBtnClick'#8'TabOrder'#2#13#0#0
+#7'TButton'#9'ReturnBtn'#4'Left'#3#173#1#6'Height'#2#28#3'Top'#3#192#0#5'Wid'
+'th'#2'K'#7'Caption'#6#6'Return'#11'ModalResult'#2#1#8'TabOrder'#2#14#0#0#6
+'TLabel'#6'Label4'#4'Left'#3#255#0#6'Height'#2#16#3'Top'#3'&'#1#5'Width'#2'Q'
+#7'Caption'#6#16'Max. Iterations:'#11'ParentColor'#8#0#0#5'TEdit'#7'MaxEdit'
+#4'Left'#3'd'#1#6'Height'#2#23#3'Top'#3' '#1#5'Width'#2'#'#8'TabOrder'#2#15#4
+'Text'#6#1'5'#0#0#12'TRadioButton'#8'ItersBtn'#4'Left'#3#254#0#6'Height'#2#19
+#3'Top'#3'C'#1#5'Width'#3#182#0#7'Caption'#6#31'Show Results for Each Iterat'
+'ion'#8'OnChange'#7#14'ItersBtnChange'#8'TabOrder'#2#16#7'Visible'#8#0#0#9'T'
+'CheckBox'#7'NormChk'#4'Left'#2#9#6'Height'#2#19#3'Top'#3'E'#1#5'Width'#3#234
+#0#7'Caption'#6'(Show Bill Miller''s Normalizing Procedure'#8'TabOrder'#2#17
+#0#0#0
]);

View File

@ -0,0 +1,926 @@
unit MedianPolishUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, Buttons, MainUnit, Globals, FunctionsLib, OutPutUnit,
DataProcs, Math, GraphLib;
type
{ TMedianPolishForm }
TMedianPolishForm = class(TForm)
NormChk: TCheckBox;
MaxEdit: TEdit;
Label4: TLabel;
ItersBtn: TRadioButton;
ResetBtn: TButton;
CancelBtn: TButton;
ComputeBtn: TButton;
ReturnBtn: TButton;
DepIn1: TBitBtn;
DepOut: TBitBtn;
DepVar: TEdit;
Fact1In: TBitBtn;
Fact1Out: TBitBtn;
Fact2In: TBitBtn;
Fact2Out: TBitBtn;
Factor1: TEdit;
Factor2: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
StaticText1: TStaticText;
VarList: TListBox;
procedure ComputeBtnClick(Sender: TObject);
procedure DepIn1Click(Sender: TObject);
procedure DepOutClick(Sender: TObject);
procedure Fact1InClick(Sender: TObject);
procedure Fact1OutClick(Sender: TObject);
procedure Fact2InClick(Sender: TObject);
procedure Fact2OutClick(Sender: TObject);
procedure ItersBtnChange(Sender: TObject);
procedure ResetBtnClick(Sender: TObject);
private
{ private declarations }
CumRowResiduals : DblDyneVec;
CumColResiduals : DblDyneVec;
function Median(VAR X : DblDyneVec; size : integer) : double;
procedure PrintObsTable(ObsTable : DblDyneMat; nrows, ncols : integer);
procedure PrintResults(ObsTable : DblDyneMat; rowmedian,rowresid : DblDyneVec;
comedian, colresid : DblDyneVec; nrows, ncols : integer);
procedure sortvalues(VAR X : DblDyneVec; size : integer);
procedure TwoWayPlot(NF1cells : integer; RowSums : DblDyneVec;
graphtitle : string; Heading : string);
procedure InteractPlot(NF1cells, NF2Cells : integer;
ObsTable :DblDyneMat; graphtitle : string;
Heading : string); public
{ public declarations }
end;
var
MedianPolishForm: TMedianPolishForm;
implementation
{ TMedianPolishForm }
{ TMedianPolishForm }
procedure TMedianPolishForm.ResetBtnClick(Sender: TObject);
var i : integer;
begin
VarList.Clear;
for i := 1 to NoVariables do
VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]);
DepVar.Text := '';
Factor1.Text := '';
Factor2.Text := '';
DepIn1.Visible := true;
DepOut.Visible := false;
Fact1In.Visible := true;
Fact1Out.Visible := false;
Fact2In.Visible := true;
Fact2out.Visible := false;
ItersBtn.Checked := false;
NormChk.Checked := false;
end;
procedure TMedianPolishForm.ComputeBtnClick(Sender: TObject);
VAR
NoSelected, DepVarCol, F1Col, F2Col, i, j, k : integer;
NoRows, NoCols, minrow, maxrow, mincol, maxcol : integer;
intvalue, xrange, yrange, row, col, N, count, iteration : integer;
X, Resid, M, sumrowmedians, sumcolmedians, GrandMedian, scale, TotResid : double;
SumAbsRows, SumAbsCols, SumAbsInter, SumAbsTable, TableSum, explained : double;
Q1, Q2, Q3, Qrange1, Qrange2, total : double;
ColNoSelected : IntDyneVec;
Observed : DblDyneCube;
Residuals : DblDyneCube;
RowResiduals : DblDyneVec;
ColResiduals : DblDyneVec;
RowMedian : DblDyneVec;
ColMedian : DblDyneVec;
CellCount : IntDyneMat;
GroupScores : DblDyneVec;
ObsTable : DblDyneMat;
cellstring : string;
single : boolean;
NoIterations : integer;
done : boolean;
WholeTable : DblDyneVec;
RowEffects : DblDyneVec;
ColEffects : DblDyneVec;
begin
OutPutFrm.RichEdit.Clear;
for i := 1 to NoVariables do
begin
cellstring := Trim(OS3MainFrm.DataGrid.Cells[i,0]);
if cellstring = DepVar.Text then DepVarCol := i;
if cellstring = Factor1.Text then F1Col := i;
if cellstring = Factor2.Text then F2Col := i;
end;
NoSelected := 3;
SetLength(ColNoSelected,3);
ColNoSelected[0] := DepVarCol;
ColNoSelected[1] := F1Col;
ColNoSelected[2] := F2Col;
// get no. of rows and columns (Factor 1 and Factor 2)
mincol := 10000;
maxcol := 0;
minrow := 10000;
maxrow := 0;
for i := 1 to NoCases do
begin
intvalue := StrToInt(Trim(OS3MainFrm.DataGrid.Cells[F1Col,i]));
if intvalue > maxrow then maxrow := intvalue;
if intvalue < minrow then minrow := intvalue;
intvalue := StrToInt(Trim(OS3MainFrm.DataGrid.Cells[F2Col,i]));
if intvalue > maxcol then maxcol := intvalue;
if intvalue < mincol then mincol := intvalue;
end;
xrange := maxrow - minrow + 1;
yrange := maxcol - mincol + 1;
// get no. of observations in each cell
SetLength(CellCount,xrange,yrange);
for i := 0 to xrange-1 do
begin
for j := 0 to yrange-1 do
begin
CellCount[i,j] := 0;
end;
end;
count := 0;
single := false;
for i := 1 to NoCases do
begin
row := StrToInt(Trim(OS3MainFrm.DataGrid.Cells[F1Col,i]));
row := row - minrow;
col := StrToInt(Trim(OS3MainFrm.DataGrid.Cells[F2Col,i]));
col := col - mincol;
CellCount[row,col] := CellCount[row,col] + 1;
count := count + 1;
end;
if count = (xrange * yrange) then single := true;
SetLength(Observed,NoCases,xrange,yrange);
SetLength(Residuals,NoCases,xrange,yrange);
SetLength(RowResiduals,xrange);
SetLength(ColResiduals,yrange);
SetLength(GroupScores,NoCases);
SetLength(RowMedian,xrange);
SetLength(ColMedian,yrange);
SetLength(CumRowResiduals,xrange);
SetLength(CumColResiduals,yrange);
SetLength(WholeTable,xrange * yrange);
SetLength(RowEffects,xrange);
SetLength(ColEffects,yrange);
for i := 0 to NoCases-1 do
begin
for j := 0 to xrange-1 do
begin
for k := 0 to yrange-1 do
begin
Observed[i,j,k] := 0.0;
Residuals[i,j,k] := 0.0;
end;
end;
end;
for j := 0 to xrange-1 do
begin
RowResiduals[j] := 0.0;
CumRowResiduals[j] := 0.0;
end;
for j := 0 to yrange-1 do
begin
ColResiduals[j] := 0.0;
CumColResiduals[j] := 0.0;
end;
// Get observed scores
for i := 0 to xrange-1 do
begin
for j := 0 to yrange-1 do
begin
CellCount[i,j] := 0;
end;
end;
for i := 1 to NoCases do
begin
row := StrToInt(Trim(OS3MainFrm.DataGrid.Cells[F1Col,i]));
row := row - minrow;
col := StrToInt(Trim(OS3MainFrm.DataGrid.Cells[F2Col,i]));
col := col - mincol;
X := StrToFloat(Trim(OS3MainFrm.DataGrid.Cells[DepVarCol,i]));
CellCount[row,col] := CellCount[row,col] + 1;
N := CellCount[row,col];
Observed[N-1,row,col] := X;
end;
// if not single case in each cell, obtain median for each cell
if not single then
begin
for i := 0 to xrange-1 do
begin
for j := 0 to yrange-1 do
begin
for k := 0 to CellCount[i,j]-1 do
begin
GroupScores[k] := Observed[k,i,j];
end;
M := Median(GroupScores,CellCount[i,j]);
Observed[0,i,j] := M;
end;
end;
end;
SetLength(ObsTable,xrange,yrange);
k := 0;
for i := 0 to xrange-1 do
begin
for j := 0 to yrange-1 do
begin
ObsTable[i,j] := Observed[0,i,j];
WholeTable[k] := Observed[0,i,j];
k := k + 1;
end;
end;
sortvalues(WholeTable,xrange*yrange);
Q1 := Quartiles(2,0.25,xrange*yrange,WholeTable);
Q3 := Quartiles(2,0.75,xrange*yrange,WholeTable);
Qrange1 := Q3 - Q1;
cellstring := format('Quartiles of original data = %8.3f %8.3f',[Q1,Q3]);
OutPutFrm.RichEdit.Lines.Add(cellstring);
if NormChk.Checked = true then
begin
// Bill Miller's solution
// get deviations of each cell from the grand mean, row and column residuals
// and row and column absolute deviations
k := 0;
for i := 0 to xrange-1 do
begin
for j := 0 to yrange-1 do
begin
ObsTable[i,j] := Observed[0,i,j];
WholeTable[k] := Observed[0,i,j];
k := k + 1;
end;
end;
sortvalues(WholeTable,xrange*yrange);
M := Median(WholeTable,xrange*yrange);
GrandMedian := M;
// OutPutFrm.RichEdit.Clear;
cellstring := Format('Grand Median = %9.3f',[M]);
OutPutFrm.RichEdit.Lines.Add(cellstring);
OutPutFrm.RichEdit.Lines.Add('');
PrintObsTable(ObsTable,xrange,yrange);
OutPutFrm.ShowModal;
OutPutFrm.RichEdit.Clear;
for i := 0 to xrange-1 do
begin
RowMedian[i] := 0.0;
RowResiduals[i] := 0.0;
CumRowResiduals[i] := 0.0;
end;
for j := 0 to yrange-1 do
begin
ColMedian[j] := 0.0;
ColResiduals[j] := 0.0;
CumColResiduals[j] := 0.0;
end;
for i := 0 to xrange-1 do
begin
for j := 0 to yrange-1 do
begin
GroupScores[j] := ObsTable[i,j];
end;
sortvalues(GroupScores,yrange);
M := Median(GroupScores,yrange);
RowMedian[i] := M;
end;
for i := 0 to xrange-1 do
begin
for j := 0 to yrange-1 do
begin
RowResiduals[i] := RowResiduals[i] + (ObsTable[i,j] - RowMedian[i]);
end;
CumRowResiduals[i] := CumRowResiduals[i] + abs(RowResiduals[i]);
end;
for j := 0 to yrange-1 do
begin
for i := 0 to xrange-1 do
begin
GroupScores[i] := ObsTable[i,j];
end;
sortvalues(GroupScores,xrange);
M := Median(GroupScores,xrange);
ColMedian[j] := M;
end;
for j := 0 to yrange-1 do
begin
for i := 0 to xrange-1 do
begin
ColResiduals[j] := ColResiduals[j] + (ObsTable[i,j] - ColMedian[j]);
end;
CumColResiduals[j] := CumColResiduals[j] + abs(ColResiduals[j]);
end;
PrintResults(ObsTable,RowMedian,RowResiduals,ColMedian,ColResiduals,xrange,yrange);
OutPutFrm.ShowModal;
OutPutFrm.RichEdit.Clear;
// TwoWayPlot(xrange, RowMedian,'Rows','ROW MEDIANS');
// TwoWayPlot(yrange, ColMedian,'Columns','COL. MEDIANS');
// Normalize medians and raw data
// This will result in the sum of column, row and table residuals all
// summing to zero. The model is X = Total Median + Row effects +
// col. effects + interaction effects and the row, col and interaction
// effects each sum to zero (as in ANOVA)
TableSum := 0.0;
scale := 0;
for i := 0 to xrange-1 do
begin
for j := 0 to yrange-1 do
begin
scale := scale + ObsTable[i,j];
end;
end;
scale := scale / (xrange * yrange);
for i := 0 to xrange-1 do
begin
for j := 0 to yrange-1 do
begin
ObsTable[i,j] := ObsTable[i,j] - scale;
TableSum := TableSum + abs(ObsTable[i,j]);
end;
end;
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('Normalized Data');
PrintObsTable(ObsTable,xrange,yrange);
scale := 0;
for i := 0 to xrange-1 do scale := scale + RowMedian[i];
scale := scale / xrange;
for i := 0 to xrange-1 do RowMedian[i] := RowMedian[i] - scale;
scale := 0;
for j := 0 to yrange-1 do scale := scale + ColMedian[j];
scale := scale / yrange;
for j := 0 to yrange-1 do ColMedian[j] := ColMedian[j] - scale;
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('Normalized Adjusted Data');
PrintResults(ObsTable,RowMedian,RowResiduals,ColMedian,ColResiduals,xrange,yrange);
OutPutFrm.RichEdit.Lines.Add('');
for i := 0 to xrange-1 do
begin
for j := 0 to yrange-1 do
begin
ObsTable[i,j] := ObsTable[i,j] - (RowMedian[i] + ColMedian[j]);
end;
end;
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('Normalized Table minus Row and Column Medians');
PrintObsTable(ObsTable,xrange,yrange);
for i := 0 to xrange-1 do RowResiduals[i] := 0.0;
for j := 0 to yrange-1 do ColResiduals[j] := 0.0;
TotResid := 0.0;
for i := 0 to xrange-1 do
begin
for j := 0 to yrange-1 do
begin
RowResiduals[i] := RowResiduals[i] + ObsTable[i,j];
ColResiduals[j] := ColResiduals[j] + ObsTable[i,j];
TotResid := TotResid + ObsTable[i,j];
end;
end;
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('Normalized Adjusted Data');
PrintResults(ObsTable,RowMedian,RowResiduals,ColMedian,ColResiduals,xrange,yrange);
OutPutFrm.RichEdit.Lines.Add('');
cellstring := format('Total Table Residuals = %8.3f',[TotResid]);
OutPutFrm.RichEdit.Lines.Add(cellstring);
SumAbsRows := 0.0;
SumAbsCols := 0.0;
SumAbsTable := 0.0;
for i := 0 to xrange-1 do SumAbsRows := SumAbsRows + abs(RowMedian[i]);
for j := 0 to yrange-1 do SumAbsCols := SumAbsCols + abs(ColMedian[j]);
for i := 0 to xrange - 1 do
for j := 0 to yrange - 1 do
SumAbsTable := SumAbsTable + abs(ObsTable[i,j]);
cellstring := format('Absolute Sums of Row, Col and Interactions = %8.3f %8.3f %8.3f',
[SumAbsRows, SumAbsCols, SumAbsTable]);
OutPutFrm.RichEdit.Lines.Add(cellstring);
total := SumAbsRows + SumAbsCols + SumAbsTable;
cellstring := format('Absolute Sums of Table Values prior to Extracting Row and Col. = %8.3f',
[TableSum]);
OutPutFrm.RichEdit.Lines.Add(cellstring);
cellstring := format('Percentages explained by rows, col.s, interactions plus error %8.3f %8.3f %8.3f',
[100*SumAbsRows/total, 100*SumAbsCols/total, 100*SumAbsTable/total]);
OutPutFrm.RichEdit.Lines.Add(cellstring);
explained := 100*SumAbsRows/total + 100*SumAbsCols/total + 100*SumAbsTable/total;
cellstring := format('Percentage explained = %8.3f percent',[explained]);
OutPutFrm.RichEdit.Lines.Add(cellstring);
OutPutFrm.ShowModal;
OutPutFrm.RichEdit.Clear;
TwoWayPlot(xrange, RowMedian,'Rows','ROW MEDIANS');
TwoWayPlot(yrange, ColMedian,'Columns','COL. MEDIANS');
end; // Bills method
// Now do traditional median smoothing
OutPutFrm.RichEdit.Lines.Add('Tukey Iterative Median Smoothing Method');
OutPutFrm.RichEdit.Lines.Add('');
NoIterations := StrToInt(MaxEdit.Text);
done := false;
iteration := 1;
for i := 0 to xrange-1 do RowEffects[i] := 0.0;
for j := 0 to yrange-1 do ColEffects[j] := 0.0;
while not done do
begin
// Get residuals from the median for each row
count := 0;
for i := 0 to xrange-1 do
begin
count := 0;
for j := 0 to yrange-1 do
begin
GroupScores[count] := Observed[0,i,j];
count := count + 1;
end;
sortvalues(GroupScores,count);
M := Median(GroupScores,count);
RowMedian[i] := M;
for j := 0 to yrange-1 do Observed[0,i,j] := Observed[0,i,j] - M;
for j := 0 to yrange-1 do RowResiduals[i] := RowResiduals[i] + Observed[0,i,j];
CumRowResiduals[i] := CumRowResiduals[i] + abs(RowResiduals[i]);
end;
// get sum of residuals for cols
count := 0;
for i := 0 to yrange-1 do
begin
count := 0;
for j := 0 to xrange-1 do
begin
GroupScores[count] := Observed[0,j,i];
count := count + 1;
end;
sortvalues(GroupScores,count);
M := Median(GroupScores,count);
ColMedian[i] := M;
for j := 0 to xrange-1 do Observed[0,j,i] := Observed[0,j,i] - M;
for j := 0 to xrange-1 do ColResiduals[i] := ColResiduals[i] + Observed[0,j,i];
CumColResiduals[i] := CumColResiduals[i] + abs(ColResiduals[i]);
end;
// build table of results
for i := 0 to xrange-1 do
begin
for j := 0 to yrange-1 do
begin
ObsTable[i,j] := Observed[0,i,j]; // Residuals[0,i,j];
end;
end;
// if ItersBtn.Checked then
// begin
OutPutFrm.RichEdit.Lines.Add('');
cellstring := format('Iteration = %d',[iteration]);
OutPutFrm.RichEdit.Lines.Add(cellstring);
PrintResults(ObsTable,RowMedian,RowResiduals,ColMedian,ColResiduals,xrange,yrange);
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('Row Effects');
for i := 0 to xrange-1 do
begin
GroupScores[i] := RowMedian[i];
end;
sortvalues(GroupScores,xrange);
M := Median(GroupScores,xrange);
cellstring := format('Overall Median = %8.3f',[m]);
OutPutFrm.RichEdit.Lines.Add(cellstring);
OutPutFrm.RichEdit.Lines.Add('');
for i := 0 to xrange-1 do
begin
RowEffects[i] := RowEffects[i] + (RowMedian[i] - M);
cellstring := format('Row %d Effect = %8.3f',[i+1,RowEffects[i]]);
OutPutFrm.RichEdit.Lines.Add(cellstring);
end;
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('Column Effects');
for j := 0 to yrange-1 do
begin
ColEffects[j] := ColEffects[j] + ColMedian[j];
cellstring := format('Col. %d Effect = %8.3f',[j+1,ColEffects[j]]);
OutPutFrm.RichEdit.Lines.Add(cellstring);
end;
// OutPutFrm.ShowModal;
// OutPutFrm.RichEdit.Clear;
// end;
for i := 0 to xrange-1 do RowResiduals[i] := 0.0;
for j := 0 to yrange-1 do ColResiduals[j] := 0.0;
NoIterations := NoIterations - 1;
iteration := iteration + 1;
if NoIterations = 0 then done := true;
sumrowmedians := 0.0;
sumcolmedians := 0.0;
for i := 0 to xrange-1 do sumrowmedians := sumrowmedians + RowMedian[i];
for i := 0 to yrange-1 do sumcolmedians := sumcolmedians + ColMedian[i];
if (sumrowmedians + sumcolmedians) = 0.0 then done := true;
if done then
begin
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('SUMMARY OF THE ANALYSIS');
PrintResults(ObsTable,RowMedian,RowResiduals,ColMedian,ColResiduals,xrange,yrange);
for i := 0 to xrange-1 do
begin
RowEffects[i] := RowEffects[i] + (RowMedian[i] - M);
cellstring := format('Row %d Effect = %8.3f',[i+1,RowEffects[i]]);
OutPutFrm.RichEdit.Lines.Add(cellstring);
end;
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('Column Effects');
for j := 0 to yrange-1 do
begin
ColEffects[j] := ColEffects[j] + ColMedian[j];
cellstring := format('Col. %d Effect = %8.3f',[j+1,ColEffects[j]]);
OutPutFrm.RichEdit.Lines.Add(cellstring);
end;
k := 0;
OutPutFrm.RichEdit.Lines.Add('');
for i := 0 to xrange-1 do
begin
for j := 0 to yrange-1 do
begin
WholeTable[k] := ObsTable[i,j];
k := k + 1;
end;
end;
sortvalues(WholeTable,xrange*yrange);
M := Median(WholeTable,xrange*yrange);
Q1 := Quartiles(2,0.25,xrange*yrange,WholeTable);
Q3 := Quartiles(2,0.75,xrange*yrange,WholeTable);
cellstring := format('Quartiles of the residuals = %8.3f %8.3f',
[Q1, Q3]);
OutPutFrm.RichEdit.Lines.Add(cellstring);
Qrange2 := Q3 - Q1;
cellstring := format('Original interquartile and final interquartile ranges = %8.3f %8.3f',
[Qrange1, Qrange2]);
OutPutFrm.RichEdit.Lines.Add(cellstring);
cellstring := format('Quality of the additive fit = %8.3f percent',
[100 * (Qrange1 - Qrange2) / Qrange1]);
OutPutFrm.RichEdit.Lines.Add(cellstring);
OutPutFrm.ShowModal;
OutPutFrm.RichEdit.Clear;
end;
end; // while not done
// if ItersBtn.Checked then
// begin
TwoWayPlot(xrange, RowEffects,'Rows','CUMULATIVE ROW EFFECTS');
TwoWayPlot(yrange, ColEffects,'Columns','CUMULATIVE COL. EFFECTS');
InteractPlot(xrange, yrange, ObsTable, 'Interaction',
'RESIDUALS OF ROWS AND COLUMNS');
// end;
// cleanup
ColEffects := nil;
RowEffects := nil;
WholeTable := nil;
CumColResiduals := nil;
CumRowResiduals := nil;
ObsTable := nil;
ColMedian := nil;
RowMedian := nil;
GroupScores := nil;
CellCount := nil;
ColResiduals := nil;
RowResiduals := nil;
Residuals := nil;
Observed := nil;
ColNoSelected := nil;
end;
procedure TMedianPolishForm.DepIn1Click(Sender: TObject);
var index : integer;
begin
index := VarList.ItemIndex;
DepVar.Text := VarList.Items.Strings[index];
VarList.Items.Delete(index);
DepIn1.Visible := false;
DepOut.Visible := true;;
end;
procedure TMedianPolishForm.DepOutClick(Sender: TObject);
begin
VarList.Items.Add(DepVar.Text);
DepVar.Text := '';
DepIn1.Visible := true;
DepOut.Visible := false;
end;
procedure TMedianPolishForm.Fact1InClick(Sender: TObject);
var index : integer;
begin
index := VarList.ItemIndex;
Factor1.Text := VarList.Items.Strings[index];
VarList.Items.Delete(index);
Fact1In.Visible := false;
Fact1Out.Visible := true;;
end;
procedure TMedianPolishForm.Fact1OutClick(Sender: TObject);
begin
VarList.Items.Add(Factor1.Text);
Factor1.Text := '';
Fact1In.Visible := true;
Fact1Out.Visible := false;
end;
procedure TMedianPolishForm.Fact2InClick(Sender: TObject);
VAR index : integer;
begin
index := VarList.ItemIndex;
Factor2.Text := VarList.Items.Strings[index];
VarList.Items.Delete(index);
Fact2In.Visible := false;
Fact2Out.Visible := true;;
end;
procedure TMedianPolishForm.Fact2OutClick(Sender: TObject);
begin
VarList.Items.Add(Factor2.Text);
Factor2.Text := '';
Fact2In.Visible := true;
Fact2Out.Visible := false;
end;
procedure TMedianPolishForm.ItersBtnChange(Sender: TObject);
begin
end;
function TMedianPolishForm.Median(VAR X : DblDyneVec; size : integer) : double;
var
midpt : integer;
value : double;
i : integer;
cellstring : string;
begin
(* check for correct median calculation
OutPutFrm.RichEdit.Lines.Add('Sorted values to get median');
cellstring := format('size of array = %d',[size]);
OutPutFrm.RichEdit.Lines.Add(cellstring);
for i := 0 to size do
begin
cellstring := format('no. %d = %9.3f',[i+1,X[i]]);
OutPutFrm.RichEdit.Lines.Add(cellstring);
end;
*)
if size > 2 then
begin
midpt := size div 2;
if 2 * midpt = size then // even no. of values
begin
value := (X[midpt-1] + X[midpt]) / 2;
end
else value := X[midpt]; // odd no. of values
Median := value;
end
else if size = 2 then Median := (X[0] + X[1]) / 2;
// cellstring := format('Median = %9.3f',[value]);
// OutPutFrm.ShowModal;
end;
procedure TMedianPolishForm.PrintObsTable(ObsTable : DblDyneMat; nrows, ncols : integer);
VAR
cellstring, outline : string;
i, j : integer;
begin
outline := 'Observed Data';
OutPutFrm.RichEdit.Lines.Add(outline);
outline := 'ROW COLUMNS';
OutPutFrm.RichEdit.Lines.Add(outline);
outline := ' ';
for i := 1 to ncols do
begin
outline := outline + format('%10d',[i]);
end;
OutPutFrm.RichEdit.Lines.Add(outline);
for i := 1 to nrows do
begin
outline := format('%3d ',[i]);
for j := 1 to ncols do
begin
cellstring := format('%9.3f ',[ObsTable[i-1,j-1]]);
outline := outline + cellstring;
end;
OutPutFrm.RichEdit.Lines.Add(outline);
end;
end;
procedure TMedianPolishForm.PrintResults(ObsTable : DblDyneMat;
rowmedian,rowresid : DblDyneVec;
comedian, colresid : DblDyneVec; nrows, ncols : integer);
var
i, j : integer;
cellstring, outline : string;
begin
OutPutFrm.RichEdit.Lines.Add('');
outline := 'Adjusted Data';
OutPutFrm.RichEdit.Lines.Add(outline);
outline := 'MEDIAN';
for i := 1 to ncols do
begin
outline := outline + format('%10d',[i]);
end;
outline := outline + ' Residuals';
OutPutFrm.RichEdit.Lines.Add(outline);
outline := '---------------------------------------------------------';
OutPutFrm.RichEdit.Lines.Add(outline);
for i := 0 to nrows-1 do
begin
cellstring := format('%9.3f ',[rowmedian[i]]);
outline := cellstring;
for j := 0 to ncols-1 do
begin
cellstring := format('%9.3f ',[ObsTable[i,j]]);
outline := outline + cellstring;
end;
cellstring := format('%9.3f ',[rowresid[i]]);
outline := outline + cellstring;
OutPutFrm.RichEdit.Lines.Add(outline);
end;
outline := '---------------------------------------------------------';
OutPutFrm.RichEdit.Lines.Add(outline);
cellstring := 'Col.Resid.';
outline := cellstring;
for j := 0 to ncols-1 do
begin
cellstring := format('%9.3f ',[colresid[j]]);
outline := outline + cellstring;
end;
OutPutFrm.RichEdit.Lines.Add(outline);
cellstring := 'Col.Median';
outline := cellstring;
for j := 0 to ncols-1 do
begin
cellstring := format('%9.3f ',[comedian[j]]);
outline := outline + cellstring;
end;
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('Cumulative absolute value of Row Residuals');
for j := 0 to nrows-1 do
begin
outline := format('Row = %d Cum.Residuals = %9.3f',[j+1,CumRowResiduals[j]]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('Cumulative absolute value of Column Residuals');
for j := 0 to ncols-1 do
begin
outline := format('Column = %d Cum.Residuals = %9.3f',[j+1,CumColResiduals[j]]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
end;
procedure TMedianPolishForm.sortvalues(VAR X : DblDyneVec; size : integer);
VAR
i, j : integer;
temp : double;
cellstring : string;
begin
for i := 0 to size-2 do
begin
for j := i+1 to size-1 do
begin
if X[i] > X[j] then // swap
begin
temp := X[i];
X[i] := X[j];
X[j] := temp;
end;
end;
end;
// OutPutFrm.RichEdit.Lines.Add('Sorted values');
// for i := 0 to size-1 do
// begin
// cellstring := format('no. %d = %9.3f',[i+1,X[i]]);
// OutPutFrm.RichEdit.Lines.Add(cellstring);
// end;
// OutPutFrm.RichEdit.Lines.Add('');
end;
//-----------------------------------------------------------------------
procedure TMedianPolishForm.TwoWayPlot(NF1cells : integer;
RowSums : DblDyneVec; graphtitle : string; Heading : string);
var
i, j : integer;
minmean, maxmean, XBar : double;
XValue : DblDyneVec;
title : string;
plottype : integer;
setstring : string[11];
begin
SetLength(XValue,Nf1cells);
plottype := 2;
setstring := 'Group';
GraphFrm.SetLabels[1] := setstring;
maxmean := -10000.0;
minmean := 10000.0;
SetLength(GraphFrm.Xpoints,1,NF1cells);
SetLength(GraphFrm.Ypoints,1,NF1cells);
for i := 1 to NF1cells do
begin
GraphFrm.Ypoints[0,i-1] := RowSums[i-1];
if RowSums[i-1] > maxmean then maxmean := RowSums[i-1];
if RowSums[i-1] < minmean then minmean := RowSums[i-1];
XValue[i-1] := i;
GraphFrm.Xpoints[0,i-1] := XValue[i-1];
end;
GraphFrm.nosets := 1;
GraphFrm.nbars := NF1cells;
GraphFrm.Heading := Heading;
title := graphtitle;
GraphFrm.XTitle := title;
GraphFrm.YTitle := 'Y Values';
GraphFrm.barwideprop := 0.5;
GraphFrm.AutoScale := false;
GraphFrm.miny := minmean;
GraphFrm.maxy := maxmean;
GraphFrm.GraphType := plottype;
GraphFrm.BackColor := clYellow;
GraphFrm.WallColor := clBlack;
GraphFrm.FloorColor := clLtGray;
GraphFrm.ShowBackWall := true;
GraphFrm.ShowModal;
GraphFrm.Xpoints := nil;
GraphFrm.Ypoints := nil;
end;
procedure TMedianPolishForm.InteractPlot(NF1cells, NF2Cells : integer;
ObsTable :DblDyneMat; graphtitle : string;
Heading : string);
VAR
i, j : integer;
minmean, maxmean, XBar : double;
XValue, YValue : DblDyneVec;
title : string;
plottype : integer;
setstring : string[11];
begin
SetLength(GraphFrm.Ypoints,NF1cells,NF2cells);
SetLength(GraphFrm.Xpoints,1,NF2cells);
SetLength(XValue,Nf1cells+Nf2cells);
plottype := 2;
for i := 1 to NF1cells do
begin
setstring := 'Row ' + IntToStr(i);
GraphFrm.SetLabels[i] := setstring;
for j := 1 to NF2cells do
begin
XBar := ObsTable[i-1,j-1];
if XBar > maxmean then maxmean := XBar;
if XBar < minmean then minmean := XBar;
GraphFrm.Ypoints[i-1,j-1] := XBar;
end;
end;
for j := 1 to NF2cells do
begin
XValue[j-1] := j;
GraphFrm.Xpoints[0,j-1] := XValue[j-1];
end;
GraphFrm.nosets := NF1cells;
GraphFrm.nbars := NF2cells;
GraphFrm.Heading := 'Factor X x Factor Y';
title := 'Column Codes';
GraphFrm.XTitle := title;
GraphFrm.YTitle := 'Mean';
GraphFrm.barwideprop := 0.5;
GraphFrm.AutoScale := false;
GraphFrm.miny := minmean;
GraphFrm.maxy := maxmean;
GraphFrm.GraphType := plottype;
GraphFrm.BackColor := clYellow;
GraphFrm.WallColor := clBlack;
GraphFrm.FloorColor := clLtGray;
GraphFrm.ShowBackWall := true;
GraphFrm.ShowModal;
XValue := nil;
GraphFrm.Xpoints := nil;
GraphFrm.Ypoints := nil;
end;
initialization
{$I medianpolishunit.lrs}
end.

View File

@ -0,0 +1,100 @@
object MoveAvgFrm: TMoveAvgFrm
Left = 180
Height = 252
Top = 112
Width = 276
Caption = 'Moving Average Specification Form'
ClientHeight = 252
ClientWidth = 276
OnShow = FormShow
LCLVersion = '0.9.28.2'
object Label1: TLabel
Left = 8
Height = 14
Top = 16
Width = 36
Caption = 'Order: '
ParentColor = False
end
object Label2: TLabel
Left = 8
Height = 14
Top = 56
Width = 65
Caption = 'Theta Value: '
ParentColor = False
end
object OrderEdit: TEdit
Left = 48
Height = 21
Top = 9
Width = 37
OnKeyPress = OrderEditKeyPress
TabOrder = 0
Text = 'OrderEdit'
end
object ThetaEdit: TEdit
Left = 74
Height = 21
Top = 49
Width = 40
OnKeyPress = ThetaEditKeyPress
TabOrder = 1
Text = 'ThetaEdit'
end
object ThetaList: TListBox
Left = 7
Height = 147
Top = 80
Width = 162
ItemHeight = 0
OnClick = ThetaListClick
TabOrder = 2
end
object ResetBtn: TButton
Left = 184
Height = 32
Top = 49
Width = 80
Caption = 'Reset'
OnClick = ResetBtnClick
TabOrder = 3
end
object CancelBtn: TButton
Left = 184
Height = 32
Top = 96
Width = 80
Caption = 'Cancel'
ModalResult = 2
TabOrder = 4
end
object ApplyBtn: TButton
Left = 184
Height = 32
Top = 144
Width = 80
Caption = 'Apply'
OnClick = ApplyBtnClick
TabOrder = 5
end
object OKBtn: TButton
Left = 184
Height = 32
Top = 195
Width = 80
Caption = 'OK'
ModalResult = 1
TabOrder = 6
end
object HelpBtn: TButton
Tag = 132
Left = 184
Height = 28
Top = 8
Width = 81
Caption = 'Help'
OnClick = HelpBtnClick
TabOrder = 7
end
end

View File

@ -0,0 +1,27 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TMoveAvgFrm','FORMDATA',[
'TPF0'#11'TMoveAvgFrm'#10'MoveAvgFrm'#4'Left'#3#180#0#6'Height'#3#252#0#3'Top'
+#2'p'#5'Width'#3#20#1#7'Caption'#6'!Moving Average Specification Form'#12'Cl'
+'ientHeight'#3#252#0#11'ClientWidth'#3#20#1#6'OnShow'#7#8'FormShow'#10'LCLVe'
+'rsion'#6#8'0.9.28.2'#0#6'TLabel'#6'Label1'#4'Left'#2#8#6'Height'#2#14#3'Top'
+#2#16#5'Width'#2'$'#7'Caption'#6#7'Order: '#11'ParentColor'#8#0#0#6'TLabel'#6
+'Label2'#4'Left'#2#8#6'Height'#2#14#3'Top'#2'8'#5'Width'#2'A'#7'Caption'#6#13
+'Theta Value: '#11'ParentColor'#8#0#0#5'TEdit'#9'OrderEdit'#4'Left'#2'0'#6'H'
+'eight'#2#21#3'Top'#2#9#5'Width'#2'%'#10'OnKeyPress'#7#17'OrderEditKeyPress'
+#8'TabOrder'#2#0#4'Text'#6#9'OrderEdit'#0#0#5'TEdit'#9'ThetaEdit'#4'Left'#2
+'J'#6'Height'#2#21#3'Top'#2'1'#5'Width'#2'('#10'OnKeyPress'#7#17'ThetaEditKe'
+'yPress'#8'TabOrder'#2#1#4'Text'#6#9'ThetaEdit'#0#0#8'TListBox'#9'ThetaList'
+#4'Left'#2#7#6'Height'#3#147#0#3'Top'#2'P'#5'Width'#3#162#0#10'ItemHeight'#2
+#0#7'OnClick'#7#14'ThetaListClick'#8'TabOrder'#2#2#0#0#7'TButton'#8'ResetBtn'
+#4'Left'#3#184#0#6'Height'#2' '#3'Top'#2'1'#5'Width'#2'P'#7'Caption'#6#5'Res'
+'et'#7'OnClick'#7#13'ResetBtnClick'#8'TabOrder'#2#3#0#0#7'TButton'#9'CancelB'
+'tn'#4'Left'#3#184#0#6'Height'#2' '#3'Top'#2'`'#5'Width'#2'P'#7'Caption'#6#6
+'Cancel'#11'ModalResult'#2#2#8'TabOrder'#2#4#0#0#7'TButton'#8'ApplyBtn'#4'Le'
+'ft'#3#184#0#6'Height'#2' '#3'Top'#3#144#0#5'Width'#2'P'#7'Caption'#6#5'Appl'
+'y'#7'OnClick'#7#13'ApplyBtnClick'#8'TabOrder'#2#5#0#0#7'TButton'#5'OKBtn'#4
+'Left'#3#184#0#6'Height'#2' '#3'Top'#3#195#0#5'Width'#2'P'#7'Caption'#6#2'OK'
+#11'ModalResult'#2#1#8'TabOrder'#2#6#0#0#7'TButton'#7'HelpBtn'#3'Tag'#3#132#0
+#4'Left'#3#184#0#6'Height'#2#28#3'Top'#2#8#5'Width'#2'Q'#7'Caption'#6#4'Help'
+#7'OnClick'#7#12'HelpBtnClick'#8'TabOrder'#2#7#0#0#0
]);

View File

@ -0,0 +1,129 @@
unit MoveAvgUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, contexthelpunit;
type
{ TMoveAvgFrm }
TMoveAvgFrm = class(TForm)
HelpBtn: TButton;
ResetBtn: TButton;
CancelBtn: TButton;
ApplyBtn: TButton;
OKBtn: TButton;
ThetaList: TListBox;
ThetaEdit: TEdit;
Label2: TLabel;
OrderEdit: TEdit;
Label1: TLabel;
procedure ApplyBtnClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure HelpBtnClick(Sender: TObject);
procedure OrderEditKeyPress(Sender: TObject; var Key: char);
procedure ResetBtnClick(Sender: TObject);
procedure ThetaEditKeyPress(Sender: TObject; var Key: char);
procedure ThetaListClick(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
W : array[0..20] of double;
order : integer;
currentindex : integer;
end;
var
MoveAvgFrm: TMoveAvgFrm;
implementation
{ TMoveAvgFrm }
procedure TMoveAvgFrm.ResetBtnClick(Sender: TObject);
VAR i : integer;
begin
OrderEdit.Text := '';
ThetaEdit.Text := '';
ThetaList.Clear;
currentindex := 0;
for i := 0 to 20 do W[i] := 1.0;
end;
procedure TMoveAvgFrm.ThetaEditKeyPress(Sender: TObject; var Key: char);
var cellstring : string;
begin
if currentindex < 1 then exit;
if ord(Key) <> 13 then exit;
cellstring := 'Theta(' + IntToStr(currentindex + 1) + ') = ';
cellstring := cellstring + ThetaEdit.Text;
W[currentindex + 1] := StrToFloat(ThetaEdit.Text);
end;
procedure TMoveAvgFrm.ThetaListClick(Sender: TObject);
VAR index : integer;
begin
index := ThetaList.ItemIndex;
if index < 0 then exit;
currentindex := index;
ThetaEdit.Text := '1.0';
ThetaEdit.SetFocus;
end;
procedure TMoveAvgFrm.FormShow(Sender: TObject);
begin
ResetBtnClick(self);
end;
procedure TMoveAvgFrm.HelpBtnClick(Sender: TObject);
begin
ContextHelpForm.HelpMessage((Sender as TButton).tag);
end;
procedure TMoveAvgFrm.ApplyBtnClick(Sender: TObject);
var
sum : double;
i : integer;
cellstring : string;
begin
ThetaList.Clear;
sum := W[0];
for i := 1 to order do sum := sum + (2.0 * W[i]);
for i := 0 to order do
begin
W[i] := W[i] / sum;
cellstring := 'Theta(' + IntToStr(i+1) + ') = ';
cellstring := cellstring + FloatToStr(W[i]);
ThetaList.Items.Add(cellstring);
end;
end;
procedure TMoveAvgFrm.OrderEditKeyPress(Sender: TObject; var Key: char);
VAR cellstring : string;
i : integer;
begin
if ord(Key) <> 13 then exit;
ThetaList.Clear;
order := StrToInt(OrderEdit.Text);
for i := 1 to order do
begin
cellstring := 'Theta(' + IntToStr(i) + ')';
ThetaList.Items.Add(cellstring);
end;
end;
initialization
{$I moveavgunit.lrs}
end.

View File

@ -0,0 +1,129 @@
object MultGenFrm: TMultGenFrm
Left = 211
Height = 396
Top = 108
Width = 561
Caption = 'Multivariate Generator'
ClientHeight = 396
ClientWidth = 561
OnShow = FormShow
LCLVersion = '0.9.28.2'
object Label1: TLabel
Left = 9
Height = 14
Top = 16
Width = 101
Caption = 'Number of variables:'
ParentColor = False
end
object Label2: TLabel
Left = 176
Height = 14
Top = 16
Width = 61
Caption = 'Sample Size:'
ParentColor = False
end
object NoVarsEdit: TEdit
Left = 120
Height = 21
Top = 8
Width = 45
OnExit = NoVarsEditExit
OnKeyPress = NoVarsEditKeyPress
TabOrder = 0
Text = 'NoVarsEdit'
end
object NoObsEdit: TEdit
Left = 248
Height = 21
Top = 8
Width = 34
OnExit = NoObsEditExit
OnKeyPress = NoObsEditKeyPress
TabOrder = 1
Text = 'NoObsEdit'
end
object ParmsChk: TCheckBox
Left = 304
Height = 17
Top = 13
Width = 100
Caption = 'Print Parametes:'
TabOrder = 2
end
object SampleChk: TCheckBox
Left = 416
Height = 17
Top = 13
Width = 111
Caption = 'Print Sample Stats:'
TabOrder = 3
end
object PerturbChk: TCheckBox
Left = 304
Height = 17
Top = 40
Width = 227
Caption = 'Select Distribution Perturbation Parameters'
TabOrder = 4
end
object ResetBtn: TButton
Left = 128
Height = 28
Top = 352
Width = 71
Caption = 'Reset'
OnClick = ResetBtnClick
TabOrder = 5
end
object CancelBtn: TButton
Left = 232
Height = 30
Top = 352
Width = 71
Caption = 'Cancel'
ModalResult = 2
OnClick = CancelBtnClick
TabOrder = 6
end
object ComputeBtn: TButton
Left = 336
Height = 28
Top = 352
Width = 71
Caption = 'Compute'
OnClick = ComputeBtnClick
TabOrder = 7
end
object ReturnBtn: TButton
Left = 470
Height = 28
Top = 352
Width = 71
Caption = 'Return'
ModalResult = 1
OnClick = ReturnBtnClick
TabOrder = 8
end
object Grid: TStringGrid
Left = 9
Height = 265
Top = 64
Width = 532
Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goEditing, goTabs, goSmoothScroll]
TabOrder = 9
OnKeyPress = GridKeyPress
OnSetEditText = GridSetEditText
end
object HelpBtn: TButton
Tag = 133
Left = 8
Height = 28
Top = 352
Width = 81
Caption = 'Help'
OnClick = HelpBtnClick
TabOrder = 10
end
end

View File

@ -0,0 +1,37 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TMultGenFrm','FORMDATA',[
'TPF0'#11'TMultGenFrm'#10'MultGenFrm'#4'Left'#3#211#0#6'Height'#3#140#1#3'Top'
+#2'l'#5'Width'#3'1'#2#7'Caption'#6#22'Multivariate Generator'#12'ClientHeigh'
+'t'#3#140#1#11'ClientWidth'#3'1'#2#6'OnShow'#7#8'FormShow'#10'LCLVersion'#6#8
+'0.9.28.2'#0#6'TLabel'#6'Label1'#4'Left'#2#9#6'Height'#2#14#3'Top'#2#16#5'Wi'
+'dth'#2'e'#7'Caption'#6#20'Number of variables:'#11'ParentColor'#8#0#0#6'TLa'
+'bel'#6'Label2'#4'Left'#3#176#0#6'Height'#2#14#3'Top'#2#16#5'Width'#2'='#7'C'
+'aption'#6#12'Sample Size:'#11'ParentColor'#8#0#0#5'TEdit'#10'NoVarsEdit'#4
+'Left'#2'x'#6'Height'#2#21#3'Top'#2#8#5'Width'#2'-'#6'OnExit'#7#14'NoVarsEdi'
+'tExit'#10'OnKeyPress'#7#18'NoVarsEditKeyPress'#8'TabOrder'#2#0#4'Text'#6#10
+'NoVarsEdit'#0#0#5'TEdit'#9'NoObsEdit'#4'Left'#3#248#0#6'Height'#2#21#3'Top'
+#2#8#5'Width'#2'"'#6'OnExit'#7#13'NoObsEditExit'#10'OnKeyPress'#7#17'NoObsEd'
+'itKeyPress'#8'TabOrder'#2#1#4'Text'#6#9'NoObsEdit'#0#0#9'TCheckBox'#8'Parms'
+'Chk'#4'Left'#3'0'#1#6'Height'#2#17#3'Top'#2#13#5'Width'#2'd'#7'Caption'#6#16
+'Print Parametes:'#8'TabOrder'#2#2#0#0#9'TCheckBox'#9'SampleChk'#4'Left'#3
+#160#1#6'Height'#2#17#3'Top'#2#13#5'Width'#2'o'#7'Caption'#6#19'Print Sample'
+' Stats:'#8'TabOrder'#2#3#0#0#9'TCheckBox'#10'PerturbChk'#4'Left'#3'0'#1#6'H'
+'eight'#2#17#3'Top'#2'('#5'Width'#3#227#0#7'Caption'#6'+Select Distribution '
+'Perturbation Parameters'#8'TabOrder'#2#4#0#0#7'TButton'#8'ResetBtn'#4'Left'
+#3#128#0#6'Height'#2#28#3'Top'#3'`'#1#5'Width'#2'G'#7'Caption'#6#5'Reset'#7
+'OnClick'#7#13'ResetBtnClick'#8'TabOrder'#2#5#0#0#7'TButton'#9'CancelBtn'#4
+'Left'#3#232#0#6'Height'#2#30#3'Top'#3'`'#1#5'Width'#2'G'#7'Caption'#6#6'Can'
+'cel'#11'ModalResult'#2#2#7'OnClick'#7#14'CancelBtnClick'#8'TabOrder'#2#6#0#0
+#7'TButton'#10'ComputeBtn'#4'Left'#3'P'#1#6'Height'#2#28#3'Top'#3'`'#1#5'Wid'
+'th'#2'G'#7'Caption'#6#7'Compute'#7'OnClick'#7#15'ComputeBtnClick'#8'TabOrde'
+'r'#2#7#0#0#7'TButton'#9'ReturnBtn'#4'Left'#3#214#1#6'Height'#2#28#3'Top'#3
+'`'#1#5'Width'#2'G'#7'Caption'#6#6'Return'#11'ModalResult'#2#1#7'OnClick'#7
+#14'ReturnBtnClick'#8'TabOrder'#2#8#0#0#11'TStringGrid'#4'Grid'#4'Left'#2#9#6
+'Height'#3#9#1#3'Top'#2'@'#5'Width'#3#20#2#7'Options'#11#15'goFixedVertLine'
+#15'goFixedHorzLine'#10'goVertLine'#10'goHorzLine'#13'goRangeSelect'#9'goEdi'
+'ting'#6'goTabs'#14'goSmoothScroll'#0#8'TabOrder'#2#9#10'OnKeyPress'#7#12'Gr'
+'idKeyPress'#13'OnSetEditText'#7#15'GridSetEditText'#0#0#7'TButton'#7'HelpBt'
+'n'#3'Tag'#3#133#0#4'Left'#2#8#6'Height'#2#28#3'Top'#3'`'#1#5'Width'#2'Q'#7
+'Caption'#6#4'Help'#7'OnClick'#7#12'HelpBtnClick'#8'TabOrder'#2#10#0#0#0
]);

View File

@ -0,0 +1,452 @@
unit MultGenUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, Grids, Globals, MainUnit, OutPutUnit, Math,
DictionaryUnit, MatrixLib, contexthelpunit;
type
{ TMultGenFrm }
TMultGenFrm = class(TForm)
HelpBtn: TButton;
ResetBtn: TButton;
CancelBtn: TButton;
ComputeBtn: TButton;
ReturnBtn: TButton;
PerturbChk: TCheckBox;
SampleChk: TCheckBox;
ParmsChk: TCheckBox;
NoObsEdit: TEdit;
Label2: TLabel;
NoVarsEdit: TEdit;
Label1: TLabel;
Grid: TStringGrid;
procedure CancelBtnClick(Sender: TObject);
procedure ComputeBtnClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure GridKeyPress(Sender: TObject; var Key: char);
procedure GridSetEditText(Sender: TObject; ACol, ARow: Integer;
const Value: string);
procedure HelpBtnClick(Sender: TObject);
procedure NoObsEditExit(Sender: TObject);
procedure NoObsEditKeyPress(Sender: TObject; var Key: char);
procedure NoVarsEditExit(Sender: TObject);
procedure NoVarsEditKeyPress(Sender: TObject; var Key: char);
procedure ResetBtnClick(Sender: TObject);
procedure ReturnBtnClick(Sender: TObject);
private
{ private declarations }
NoVars : integer;
NoObs : integer;
gridrow, gridcol : integer;
public
{ public declarations }
end;
var
MultGenFrm: TMultGenFrm;
implementation
{ TMultGenFrm }
procedure TMultGenFrm.ResetBtnClick(Sender: TObject);
VAR i, j : integer;
begin
NoVarsEdit.Text := '';
NoObsEdit.Text := '';
ParmsChk.Checked := true;
SampleChk.Checked := true;
Grid.RowCount := 2;
Grid.ColCount := 2;
for i := 0 to 1 do
for j := 0 to 1 do Grid.Cells[i,j] := '';
CancelBtn.SetFocus;
end;
procedure TMultGenFrm.ReturnBtnClick(Sender: TObject);
begin
exit;
end;
procedure TMultGenFrm.FormShow(Sender: TObject);
begin
ResetBtnClick(self);
end;
procedure TMultGenFrm.ComputeBtnClick(Sender: TObject);
var
RhoMat : DblDyneMat;
SampMat : DblDyneMat;
Mus : DblDyneVec;
means : DblDyneVec;
Sigmas : DblDyneVec;
stddevs : DblDyneVec;
i, j, k, i1, i2, n2, k1 : integer;
determ, n3, r1, s8, s9, d2, x, y, mean : double;
linestring : string;
cellstring : string;
singular : boolean;
title : string;
RowLabels: StrDyneVec;
ColLabels: StrDyneVec;
begin
OutPutFrm.RichEdit.Clear;
// get memory allocations
SetLength(RhoMat,NoVars,NoVars);
SetLength(SampMat,NoVars,NoVars);
SetLength(Mus,NoVars);
SetLength(means,NoVars);
SetLength(Sigmas,NoVars);
SetLength(stddevs,NoVars);
SetLength(RowLabels,NoVars);
SetLength(ColLabels,NoVars);
// get data from grid into arrays
for i := 1 to NoVars do
for j := 1 to NoVars do
begin
RhoMat[i-1,j-1] := StrToFloat(Grid.Cells[i,j]);
end;
for i := 1 to NoVars do
begin
Mus[i-1] := StrToFloat(Grid.Cells[i,NoVars+1]);
Sigmas[i-1] := StrToFloat(Grid.Cells[i,NoVars+2]);
RowLabels[i-1] := Grid.Cells[i,0];
ColLabels[i-1] := RowLabels[i-1];
end;
// get determinant of Rho matrix, i.e. check for singularity
singular := FALSE;
for i := 0 to NoVars-1 do
begin
for j := 0 to NoVars - 1 do
begin
SampMat[i,j] := RhoMat[i,j] * Sigmas[i] * Sigmas[j];
RhoMat[i,j] := SampMat[i,j];
end;
end;
n2 := 1;
i1 := 0;
while (n2 < NoVars) do
begin
for i := n2 to NoVars - 1 do
begin
n3 := RhoMat[i,i1] / RhoMat[i1,i1];
for j := n2 to NoVars - 1 do RhoMat[i,j] := RhoMat[i,j] - (RhoMat[i1,j] * n3);
end;
i1 := n2;
n2 := N2 + 1;
end;
determ := 1.0;
for i := 0 to NoVars - 1 do determ := determ * RhoMat[i,i];
linestring := format('Determinant of the population matrix = %10.4f',[determ]);
OutPutFrm.RichEdit.Lines.Add(linestring);
// triangular factorization
if (abs(determ) > 0.00001) then
begin
if (SampMat[0,0] < 0.0) then SampMat[0,0] := 1.0;
r1 := sqrt(SampMat[0,0]);
for i := 0 to NoVars - 1 do
begin
RhoMat[i,0] := SampMat[i,0] / r1;
for j := 1 to NoVars - 1 do RhoMat[i,j] := 0.0;
end;
for i := 1 to NoVars - 1 do
begin
s9 := 0.0;
k1 := i - 1;
for k := 0 to k1 - 1 do s9 := s9 + (RhoMat[i,k] * RhoMat[i,k]);
d2 := SampMat[i,i] - s9;
if (d2 > 0.0) then
begin
RhoMat[i,i] := sqrt(d2);
for j := 1 to i - 1 do
begin
if (j <> i) then
begin
s8 := 0.0;
k1 := j - 1;
for k := 0 to k1 - 1 do s8 := s8 + (RhoMat[i,k] * RhoMat[j,k]);
RhoMat[i,j] := (SampMat[i,j] - s8) / RhoMat[j,j];
end;
end; // end j loop
end; // end if d2 > 0
end; // end i loop
// title := 'Triangularized Matrix';
// MAT_PRINT(RhoMat,NoVars,NoVars,title,RowLabels,ColLabels,NoObs);
// initialize variables for mainform grid
NoVariables := 0;
DictionaryFrm.DictGrid.RowCount := 1;
DictionaryFrm.DictGrid.ColCount := 8;
if not PerturbChk.Checked then
begin
for i := 1 to NoVars do
begin
DictionaryFrm.NewVar(i);
// NoVariables := NoVariables + 1;
end;
NoCases := NoObs;
OS3MainFrm.NoVarsEdit.Text := IntToStr(NoVars);
OS3MainFrm.NoCasesEdit.Text := IntToStr(NoObs);
end else
begin
for i := 1 to NoVars*2 do
begin
DictionaryFrm.NewVar(i);
// NoVariables := NoVariables + 1;
end;
NoCases := NoObs;
OS3MainFrm.NoVarsEdit.Text := IntToStr(NoVars*2);
OS3MainFrm.NoCasesEdit.Text := IntToStr(NoObs);
end;
// Now generate score vectors
for i2 := 0 to NoObs - 1 do // rows
begin // label case heading
cellstring := format('Case%d',[i2+1]);
OS3MainFrm.DataGrid.Cells[0,i2+1] := cellstring;
for i := 0 to NoVars -1 do stddevs[i] := RandG(0.0,1.0);
for i := 0 to NoVars - 1 do
begin
x := 0.0;
for j := 0 to i do x := x + (RhoMat[i,j] * stddevs[j]);
mean := StrToFloat(Grid.Cells[i+1,NoVars+1]);
cellstring := format('%10.3f',[x+mean]);
OS3MainFrm.DataGrid.Cells[i+1,i2+1] := cellstring;
end; // next variable
end; // next observation
end; // if abs(determ > .00001)
// if perturbation elected, convert generated data to z scores and perturb
// with the selected perturbation coefficients
if PerturbChk.Checked then
begin
for i := 1 to NoVars do
begin
means[i-1] := 0.0;
stddevs[i-1] := 0.0;
end;
for i := 1 to NoVars do
begin
for j := 1 to NoObs do
begin
x := StrToFloat(OS3MainFrm.DataGrid.Cells[i,j]);
means[i-1] := means[i-1] + x;
stddevs[i-1] := stddevs[i-1] + (x * x);
end;
stddevs[i-1] := stddevs[i-1] - (means[i-1] * means[i-1] / NoObs);
stddevs[i-1] := stddevs[i-1] / (NoObs - 1);
stddevs[i-1] := sqrt(stddevs[i-1]);
means[i-1] := means[i-1] / NoObs;
OS3MainFrm.DataGrid.Cells[NoVars+i,0] := OS3MainFrm.DataGrid.Cells[i,0] + 'Z';
end;
for i := 1 to NoVars do
begin
for j := 1 to NoObs do
begin
x := StrToFloat(OS3MainFrm.DataGrid.Cells[i,j]);
x := (x - means[i-1]) / stddevs[i-1];
OS3MainFrm.DataGrid.Cells[NoVars+i,j] := FloatToStr(x);
end;
end;
// Now, show perturbation options form and select coefficients
end; // end if perturbchk is checked
// print parameters if checked
if ParmsChk.Checked then
begin
for i := 1 to NoVars do
for j := 1 to NoVars do RhoMat[i-1,j-1] := StrToFloat(Grid.Cells[i,j]);
for i := 1 to NoVars do
begin
Mus[i-1] := StrToFloat(Grid.Cells[i,NoVars+1]);
Sigmas[i-1] := StrToFloat(Grid.Cells[i,NoVars+2]);
end;
title := 'Rho Matrix';
MAT_PRINT(RhoMat,NoVars,NoVars,title,RowLabels,ColLabels,NoObs);
title := 'Population Means';
DynVectorPrint(Mus,NoVars,title,RowLabels,NoObs);
title := 'Sigmas';
DynVectorPrint(Sigmas,NoVars,title,RowLabels,NoObs);
OutPutFrm.ShowModal;
end;
// do sample values if checked
if SampleChk.Checked then
begin
OutPutFrm.RichEdit.Clear;
for i := 1 to NoVars do
begin
for j := 1 to NoVars do SampMat[i-1,j-1] := 0.0;
means[i-1] := 0.0;
stddevs[i-1] := 0.0;
end;
for i := 1 to NoObs do
begin
for j := 0 to NoVars - 1 do
begin
x := StrToFloat(OS3MainFrm.DataGrid.Cells[j+1,i]);
for k := 0 to NoVars - 1 do
begin // cross-products matrix
y := StrToFloat(OS3MainFrm.DataGrid.Cells[k+1,i]);
SampMat[j,k] := SampMat[j,k] + (x * y);
end;
means[j] := means[j] + x;
end;
end;
// variance - covariance matrix
for i := 0 to NoVars - 1 do
begin
for j := 0 to NoVars - 1 do
begin
SampMat[i,j] := SampMat[i,j] - (means[i] * means[j] / NoObs);
SampMat[i,j] := SampMat[i,j] / (NoObs - 1.0);
end;
stddevs[i] := sqrt(SampMat[i][i]);
end;
for i := 0 to NoVars - 1 do
begin
for j := 0 to NoVars - 1 do
begin // correlation matrix
SampMat[i,j] := SampMat[i,j] / (stddevs[i] * stddevs[j]);
end;
means[i] := means[i] / NoObs;
end;
title := 'Sample r Matrix';
MAT_PRINT(SampMat,NoVars,NoVars,title,RowLabels,ColLabels,NoObs);
title := 'Sample Means';
DynVectorPrint(means,NoVars,title,RowLabels,NoObs);
title := 'Standard Deviations';
DynVectorPrint(stddevs,NoVars,title,RowLabels,NoObs);
OutPutFrm.ShowModal;
end;
// dispose of arrays
ColLabels := nil;
RowLabels := nil;
stddevs := nil;
Sigmas := nil;
means := nil;
Mus := nil;
SampMat := nil;
RhoMat := nil;
end;
procedure TMultGenFrm.CancelBtnClick(Sender: TObject);
begin
exit;
end;
procedure TMultGenFrm.GridKeyPress(Sender: TObject; var Key: char);
begin
gridrow := Grid.Row;
gridcol := Grid.Col;
if ord(Key) = 13 then
begin
if (gridrow <= gridcol) then
begin
grid.Cells[gridrow,gridcol] := grid.Cells[gridcol,gridrow];
end;
end;
end;
procedure TMultGenFrm.GridSetEditText(Sender: TObject; ACol, ARow: Integer;
const Value: string);
begin
if (gridrow <= gridcol) then
begin
grid.Cells[gridrow,gridcol] := grid.Cells[gridcol,gridrow];
end;
end;
procedure TMultGenFrm.HelpBtnClick(Sender: TObject);
begin
ContextHelpForm.HelpMessage((Sender as TButton).tag);
end;
procedure TMultGenFrm.NoObsEditExit(Sender: TObject);
var
i, j : integer;
cellstring : string;
begin
NoObs := StrToInt(NoObsEdit.Text);
if NoObs > 0 then
begin
OS3MainFrm.DataGrid.RowCount := NoObs + 1;
OS3MainFrm.DataGrid.ColCount := NoVars + 1;
for i := 1 to NoObs do
begin
for j := 1 to NoVars do
begin
OS3MainFrm.DataGrid.Cells[j,i] := '';
end;
end;
end;
for j := 1 to NoVars do
begin
cellstring := format('VAR%d',[j]);
OS3MainFrm.DataGrid.Cells[j,0] := cellstring;
end;
Grid.Cells[0,0] := 'Variable';
Grid.Cells[0,NoVars+1] := 'Mean';
Grid.Cells[0,NoVars+2] := 'Std.Dev.';
end;
procedure TMultGenFrm.NoObsEditKeyPress(Sender: TObject; var Key: char);
begin
if ord(Key) = 13 then NoObsEditExit(self);
end;
procedure TMultGenFrm.NoVarsEditExit(Sender: TObject);
var
i,j : integer;
cellstring : string;
begin
NoVars := StrToInt(NoVarsEdit.Text);
if NoVars > 0 then
begin
Grid.RowCount := NoVars + 3;
Grid.ColCount := NoVars + 1;
for i := 1 to NoVars do
begin
Grid.Cells[i,i] := FloatToStr(1.0);
cellstring := format('VAR%d',[i]);
Grid.Cells[i,0] := cellstring;
{ for j := 1 to NoVars do
begin
if i <> j then
begin
Grid.Cells[i,j] := '';
Grid.Cells[j,i] := '';
end;
end; // for j := 1 to NoVars }
end; // for i := 1 to NoVars
end; // if NoVars > 0
end;
procedure TMultGenFrm.NoVarsEditKeyPress(Sender: TObject; var Key: char);
begin
if ord(Key) = 13 then NoVarsEditExit(self);
end;
initialization
{$I multgenunit.lrs}
end.

View File

@ -0,0 +1,433 @@
object MultXvsYFrm: TMultXvsYFrm
Left = 144
Height = 362
Top = 109
Width = 484
Caption = 'Multiple X Versus Y Plot'
ClientHeight = 362
ClientWidth = 484
OnShow = FormShow
LCLVersion = '0.9.28.2'
object Label1: TLabel
Left = 8
Height = 14
Top = 8
Width = 94
Caption = 'Available Variables:'
ParentColor = False
end
object Label2: TLabel
Left = 224
Height = 14
Top = 24
Width = 48
Caption = 'X Variable'
ParentColor = False
end
object Label3: TLabel
Left = 224
Height = 14
Top = 104
Width = 48
Caption = 'Y Variable'
ParentColor = False
end
object Label4: TLabel
Left = 224
Height = 14
Top = 184
Width = 71
Caption = 'Group Variable'
ParentColor = False
end
object Label5: TLabel
Left = 8
Height = 14
Top = 272
Width = 51
Caption = 'Plot Label:'
ParentColor = False
end
object VarList: TListBox
Left = 8
Height = 225
Top = 24
Width = 161
ItemHeight = 0
TabOrder = 0
end
object XInBtn: TBitBtn
Left = 184
Height = 27
Top = 24
Width = 32
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE
6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580
3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3
71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7
74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7
74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = XInBtnClick
TabOrder = 1
end
object XOutBtn: TBitBtn
Left = 184
Height = 27
Top = 56
Width = 32
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = XOutBtnClick
TabOrder = 2
end
object YInBtn: TBitBtn
Left = 184
Height = 27
Top = 104
Width = 32
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE
6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580
3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3
71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7
74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7
74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = YInBtnClick
TabOrder = 3
end
object YOutBtn: TBitBtn
Left = 184
Height = 27
Top = 136
Width = 32
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = YOutBtnClick
TabOrder = 4
end
object GroupInBtn: TBitBtn
Left = 184
Height = 27
Top = 184
Width = 32
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE
6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580
3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3
71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7
74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7
74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = GroupInBtnClick
TabOrder = 5
end
object GroupOutBtn: TBitBtn
Left = 184
Height = 27
Top = 216
Width = 32
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = GroupOutBtnClick
TabOrder = 6
end
object XEdit: TEdit
Left = 224
Height = 21
Top = 40
Width = 139
TabOrder = 7
Text = 'XEdit'
end
object YEdit: TEdit
Left = 224
Height = 21
Top = 120
Width = 138
TabOrder = 8
Text = 'YEdit'
end
object GroupEdit: TEdit
Left = 222
Height = 21
Top = 200
Width = 138
TabOrder = 9
Text = 'GroupEdit'
end
object LabelEdit: TEdit
Left = 67
Height = 21
Top = 264
Width = 295
TabOrder = 10
Text = 'LabelEdit'
end
object GroupBox1: TGroupBox
Left = 112
Height = 56
Top = 296
Width = 164
Caption = 'Options:'
ClientHeight = 38
ClientWidth = 160
TabOrder = 11
object DescChk: TCheckBox
Left = 7
Height = 17
Top = 2
Width = 148
Caption = 'Show Descriptive Statistics'
TabOrder = 0
end
object LinesChk: TCheckBox
Left = 6
Height = 17
Top = 19
Width = 142
Caption = 'Connect Points with Lines'
TabOrder = 1
end
end
object ResetBtn: TButton
Left = 385
Height = 28
Top = 72
Width = 80
Caption = 'Reset'
OnClick = ResetBtnClick
TabOrder = 12
end
object CancelBtn: TButton
Left = 385
Height = 28
Top = 136
Width = 81
Caption = 'Cancel'
ModalResult = 2
TabOrder = 13
end
object ComputeBtn: TButton
Left = 385
Height = 28
Top = 200
Width = 80
Caption = 'Compute'
OnClick = ComputeBtnClick
TabOrder = 14
end
object ReturnBtn: TButton
Left = 384
Height = 28
Top = 258
Width = 80
Caption = 'Return'
ModalResult = 1
TabOrder = 15
end
object HelpBtn: TButton
Tag = 134
Left = 383
Height = 28
Top = 10
Width = 81
Caption = 'Help'
OnClick = HelpBtnClick
TabOrder = 16
end
end

View File

@ -0,0 +1,350 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TMultXvsYFrm','FORMDATA',[
'TPF0'#12'TMultXvsYFrm'#11'MultXvsYFrm'#4'Left'#3#144#0#6'Height'#3'j'#1#3'To'
+'p'#2'm'#5'Width'#3#228#1#7'Caption'#6#24'Multiple X Versus Y Plot'#12'Clien'
+'tHeight'#3'j'#1#11'ClientWidth'#3#228#1#6'OnShow'#7#8'FormShow'#10'LCLVersi'
+'on'#6#8'0.9.28.2'#0#6'TLabel'#6'Label1'#4'Left'#2#8#6'Height'#2#14#3'Top'#2
+#8#5'Width'#2'^'#7'Caption'#6#20'Available Variables:'#11'ParentColor'#8#0#0
+#6'TLabel'#6'Label2'#4'Left'#3#224#0#6'Height'#2#14#3'Top'#2#24#5'Width'#2'0'
+#7'Caption'#6#10'X Variable'#11'ParentColor'#8#0#0#6'TLabel'#6'Label3'#4'Lef'
+'t'#3#224#0#6'Height'#2#14#3'Top'#2'h'#5'Width'#2'0'#7'Caption'#6#10'Y Varia'
+'ble'#11'ParentColor'#8#0#0#6'TLabel'#6'Label4'#4'Left'#3#224#0#6'Height'#2
+#14#3'Top'#3#184#0#5'Width'#2'G'#7'Caption'#6#14'Group Variable'#11'ParentCo'
+'lor'#8#0#0#6'TLabel'#6'Label5'#4'Left'#2#8#6'Height'#2#14#3'Top'#3#16#1#5'W'
+'idth'#2'3'#7'Caption'#6#11'Plot Label:'#11'ParentColor'#8#0#0#8'TListBox'#7
+'VarList'#4'Left'#2#8#6'Height'#3#225#0#3'Top'#2#24#5'Width'#3#161#0#10'Item'
+'Height'#2#0#8'TabOrder'#2#0#0#0#7'TBitBtn'#6'XInBtn'#4'Left'#3#184#0#6'Heig'
+'ht'#2#27#3'Top'#2#24#5'Width'#2' '#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'
+#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0
+'d'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'!c$'#184#29'^ '#6#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0'*p/8%i)'#247'!c$'#217#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'
+#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'?'#136'E'
+#255'Y'#161'^'#255'D'#139'I'#255'!c$'#207#255#255#255#0#255#255#255#0#255#255
+#255#0'e'#195'q'#255#160#215#169#255#156#213#165#255#152#211#161#255#148#208
+#157#255#144#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'
+#195#132#255'z'#193#128#255'v'#190'|'#255'E'#140'J'#255'!c$'#196#255#255#255
+#0#255#255#255#0'h'#199't'#255#165#218#174#255#162#216#171#255#158#214#167
+#255#154#212#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202
+#144#255#133#199#139#255#129#197#135#255'}'#194#130#255'J'#145'P'#255'%i)'
+#201#255#255#255#0#255#255#255#0'h'#199't'#255'h'#199't'#255'e'#195'q'#255'a'
+#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'
+#255'A'#145'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'#209#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0'A'#145'I'#247';'#136'B'#219#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0'G'#153'O'#187'A'#145'I'#6#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
,#9'NumGlyphs'#2#0#7'OnClick'#7#11'XInBtnClick'#8'TabOrder'#2#1#0#0#7'TBitBtn'
+#7'XOutBtn'#4'Left'#3#184#0#6'Height'#2#27#3'Top'#2'8'#5'Width'#2' '#10'Glyp'
+'h.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0
+#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0'M'#161'V'#6'G'#153'O'#184#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0'S'#169'\'#217'M'#161'V'#247'G'#153'O8'#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131#255'['#170'd'#255'G'
+#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255'%i)'
+#255'!c$'#255#29'^ '#255#255#255#255#0#255#255#255#0'e'#195'q'#196'{'#200#134
+#255#156#213#165#255#152#211#161#255#148#208#157#255#144#206#152#255#139#203
+#147#255#135#201#142#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190
+'|'#255'r'#189'x'#255'!c$'#255#255#255#255#0#255#255#255#0'h'#199't'#201#127
+#204#138#255#162#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255
+#147#207#154#255#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135
+#255'}'#194#130#255'x'#192'~'#255'%i)'#255#255#255#255#0#255#255#255#0#255
+#255#255#0'h'#199't'#209#128#205#139#255'|'#201#135#255']'#184'h'#255'X'#177
+'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255
+'5'#128';'#255'/x5'#255'*p/'#255#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0'h'#199't'#219'e'#195'q'#247#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0'h'#199't'#6'h'#199't'#187#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#12
+'XOutBtnClick'#8'TabOrder'#2#2#0#0#7'TBitBtn'#6'YInBtn'#4'Left'#3#184#0#6'He'
+'ight'#2#27#3'Top'#2'h'#5'Width'#2' '#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM'
+'6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0
+#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
,#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'!c$'#184#29'^ '#6#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0'*p/8%i)'#247'!c$'#217#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'
+#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'?'#136'E'
+#255'Y'#161'^'#255'D'#139'I'#255'!c$'#207#255#255#255#0#255#255#255#0#255#255
+#255#0'e'#195'q'#255#160#215#169#255#156#213#165#255#152#211#161#255#148#208
+#157#255#144#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'
+#195#132#255'z'#193#128#255'v'#190'|'#255'E'#140'J'#255'!c$'#196#255#255#255
+#0#255#255#255#0'h'#199't'#255#165#218#174#255#162#216#171#255#158#214#167
+#255#154#212#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202
+#144#255#133#199#139#255#129#197#135#255'}'#194#130#255'J'#145'P'#255'%i)'
+#201#255#255#255#0#255#255#255#0'h'#199't'#255'h'#199't'#255'e'#195'q'#255'a'
+#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'
+#255'A'#145'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'#209#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0'A'#145'I'#247';'#136'B'#219#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0'G'#153'O'#187'A'#145'I'#6#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#9'NumGlyphs'#2#0#7'OnClick'#7#11'YInBtnClick'#8'TabOrder'#2#3#0#0#7'TBitBtn'
+#7'YOutBtn'#4'Left'#3#184#0#6'Height'#2#27#3'Top'#3#136#0#5'Width'#2' '#10'G'
+'lyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0
+#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'M'#161'V'#6'G'#153'O'#184#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0'S'#169'\'#217'M'#161'V'#247'G'#153'O8'#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131#255'['#170'd'#255'G'
+#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255'%i)'
+#255'!c$'#255#29'^ '#255#255#255#255#0#255#255#255#0'e'#195'q'#196'{'#200#134
,#255#156#213#165#255#152#211#161#255#148#208#157#255#144#206#152#255#139#203
+#147#255#135#201#142#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190
+'|'#255'r'#189'x'#255'!c$'#255#255#255#255#0#255#255#255#0'h'#199't'#201#127
+#204#138#255#162#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255
+#147#207#154#255#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135
+#255'}'#194#130#255'x'#192'~'#255'%i)'#255#255#255#255#0#255#255#255#0#255
+#255#255#0'h'#199't'#209#128#205#139#255'|'#201#135#255']'#184'h'#255'X'#177
+'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255
+'5'#128';'#255'/x5'#255'*p/'#255#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0'h'#199't'#219'e'#195'q'#247#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0'h'#199't'#6'h'#199't'#187#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#12
+'YOutBtnClick'#8'TabOrder'#2#4#0#0#7'TBitBtn'#10'GroupInBtn'#4'Left'#3#184#0
+#6'Height'#2#27#3'Top'#3#184#0#5'Width'#2' '#10'Glyph.Data'#10':'#4#0#0'6'#4
+#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0
+#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0'!c$'#184#29'^ '#6#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0'*p/8%i)'#247'!c$'#217#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169
+'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255
+'?'#136'E'#255'Y'#161'^'#255'D'#139'I'#255'!c$'#207#255#255#255#0#255#255#255
+#0#255#255#255#0'e'#195'q'#255#160#215#169#255#156#213#165#255#152#211#161
+#255#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142#255#130#198
+#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'E'#140'J'#255'!c$'#196
+#255#255#255#0#255#255#255#0'h'#199't'#255#165#218#174#255#162#216#171#255
+#158#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255#142#204#149
+#255#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130#255'J'#145'P'
+#255'%i)'#201#255#255#255#0#255#255#255#0'h'#199't'#255'h'#199't'#255'e'#195
+'q'#255'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255
+'G'#153'O'#255'A'#145'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'#209#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0'A'#145'I'#247';'#136'B'#219#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
,#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0'G'#153'O'#187'A'#145'I'#6#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#15'GroupInBtnClick'#8'TabOrder'
+#2#5#0#0#7'TBitBtn'#11'GroupOutBtn'#4'Left'#3#184#0#6'Height'#2#27#3'Top'#3
+#216#0#5'Width'#2' '#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0
+'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0
+#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'M'#161'V'#6'G'
+#153'O'#184#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'S'#169'\'#217'M'#161
+'V'#247'G'#153'O8'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131
+#255'['#170'd'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/'
+'x5'#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255#255#255#255#0#255#255#255#0'e'
+#195'q'#196'{'#200#134#255#156#213#165#255#152#211#161#255#148#208#157#255
+#144#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132
+#255'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!c$'#255#255#255#255#0#255
+#255#255#0'h'#199't'#201#127#204#138#255#162#216#171#255#158#214#167#255#154
+#212#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255
+#133#199#139#255#129#197#135#255'}'#194#130#255'x'#192'~'#255'%i)'#255#255
+#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#209#128#205#139#255'|'#201
+#135#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'
+#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#219'e'#195'q'#247#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#6'h'#199't'#187#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
,#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'Num'
+'Glyphs'#2#0#7'OnClick'#7#16'GroupOutBtnClick'#8'TabOrder'#2#6#0#0#5'TEdit'#5
+'XEdit'#4'Left'#3#224#0#6'Height'#2#21#3'Top'#2'('#5'Width'#3#139#0#8'TabOrd'
+'er'#2#7#4'Text'#6#5'XEdit'#0#0#5'TEdit'#5'YEdit'#4'Left'#3#224#0#6'Height'#2
+#21#3'Top'#2'x'#5'Width'#3#138#0#8'TabOrder'#2#8#4'Text'#6#5'YEdit'#0#0#5'TE'
+'dit'#9'GroupEdit'#4'Left'#3#222#0#6'Height'#2#21#3'Top'#3#200#0#5'Width'#3
+#138#0#8'TabOrder'#2#9#4'Text'#6#9'GroupEdit'#0#0#5'TEdit'#9'LabelEdit'#4'Le'
+'ft'#2'C'#6'Height'#2#21#3'Top'#3#8#1#5'Width'#3''''#1#8'TabOrder'#2#10#4'Te'
+'xt'#6#9'LabelEdit'#0#0#9'TGroupBox'#9'GroupBox1'#4'Left'#2'p'#6'Height'#2'8'
+#3'Top'#3'('#1#5'Width'#3#164#0#7'Caption'#6#8'Options:'#12'ClientHeight'#2
+'&'#11'ClientWidth'#3#160#0#8'TabOrder'#2#11#0#9'TCheckBox'#7'DescChk'#4'Lef'
+'t'#2#7#6'Height'#2#17#3'Top'#2#2#5'Width'#3#148#0#7'Caption'#6#27'Show Desc'
+'riptive Statistics'#8'TabOrder'#2#0#0#0#9'TCheckBox'#8'LinesChk'#4'Left'#2#6
+#6'Height'#2#17#3'Top'#2#19#5'Width'#3#142#0#7'Caption'#6#25'Connect Points '
+'with Lines'#8'TabOrder'#2#1#0#0#0#7'TButton'#8'ResetBtn'#4'Left'#3#129#1#6
+'Height'#2#28#3'Top'#2'H'#5'Width'#2'P'#7'Caption'#6#5'Reset'#7'OnClick'#7#13
+'ResetBtnClick'#8'TabOrder'#2#12#0#0#7'TButton'#9'CancelBtn'#4'Left'#3#129#1
+#6'Height'#2#28#3'Top'#3#136#0#5'Width'#2'Q'#7'Caption'#6#6'Cancel'#11'Modal'
+'Result'#2#2#8'TabOrder'#2#13#0#0#7'TButton'#10'ComputeBtn'#4'Left'#3#129#1#6
+'Height'#2#28#3'Top'#3#200#0#5'Width'#2'P'#7'Caption'#6#7'Compute'#7'OnClick'
+#7#15'ComputeBtnClick'#8'TabOrder'#2#14#0#0#7'TButton'#9'ReturnBtn'#4'Left'#3
+#128#1#6'Height'#2#28#3'Top'#3#2#1#5'Width'#2'P'#7'Caption'#6#6'Return'#11'M'
+'odalResult'#2#1#8'TabOrder'#2#15#0#0#7'TButton'#7'HelpBtn'#3'Tag'#3#134#0#4
+'Left'#3#127#1#6'Height'#2#28#3'Top'#2#10#5'Width'#2'Q'#7'Caption'#6#4'Help'
+#7'OnClick'#7#12'HelpBtnClick'#8'TabOrder'#2#16#0#0#0
]);

View File

@ -0,0 +1,426 @@
unit MultXvsYUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, Buttons, MainUnit, Globals, functionsLib, OutPutUnit, DataProcs,
DictionaryUnit, Math, Clipbrd, contexthelpunit;
type
{ TMultXvsYFrm }
TMultXvsYFrm = class(TForm)
HelpBtn: TButton;
XInBtn: TBitBtn;
XOutBtn: TBitBtn;
YInBtn: TBitBtn;
YOutBtn: TBitBtn;
GroupInBtn: TBitBtn;
GroupOutBtn: TBitBtn;
ResetBtn: TButton;
CancelBtn: TButton;
ComputeBtn: TButton;
ReturnBtn: TButton;
DescChk: TCheckBox;
LinesChk: TCheckBox;
XEdit: TEdit;
YEdit: TEdit;
GroupEdit: TEdit;
GroupBox1: TGroupBox;
LabelEdit: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
VarList: TListBox;
procedure ComputeBtnClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure GroupInBtnClick(Sender: TObject);
procedure GroupOutBtnClick(Sender: TObject);
procedure HelpBtnClick(Sender: TObject);
procedure ResetBtnClick(Sender: TObject);
procedure XInBtnClick(Sender: TObject);
procedure XOutBtnClick(Sender: TObject);
procedure YInBtnClick(Sender: TObject);
procedure YOutBtnClick(Sender: TObject);
private
{ private declarations }
procedure plotxy(var XValues : DblDyneMat;
YValues : DblDyneMat;
MaxX, MinX, MaxY, MinY : double;
N, NoY, MinGrp : integer);
public
{ public declarations }
end;
var
MultXvsYFrm: TMultXvsYFrm;
implementation
uses BlankFrmUnit;
{ TMultXvsYFrm }
procedure TMultXvsYFrm.ResetBtnClick(Sender: TObject);
VAR i : integer;
begin
VarList.Clear;
for i := 1 to NoVariables do
VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]);
XEdit.Text := '';
YEdit.Text := '';
GroupEdit.Text := '';
DescChk.Checked := false;
LinesChk.Checked := false;
XInBtn.Visible := true;
YInBtn.Visible := true;
GroupInBtn.Visible := true;
XOutBtn.Visible := false;
YOutBtn.Visible := false;
GroupOutBtn.Visible := false;
end;
procedure TMultXvsYFrm.GroupInBtnClick(Sender: TObject);
VAR i : integer;
begin
i := VarList.ItemIndex;
GroupEdit.Text := VarList.Items.Strings[i];
VarList.Items.Delete(i);
GroupInBtn.Visible := false;
GroupOutBtn.Visible := true;
end;
procedure TMultXvsYFrm.ComputeBtnClick(Sender: TObject);
var
i, j, k, N, NoGrps, XCol, YCol, GrpCol, Grp, MinGrp, MaxGrp : integer;
NoSelected, MaxGrpSize : integer;
selected, NoInGrp : IntDyneVec;
YValues, XValues : DblDyneMat;
Means, StdDevs : DblDyneVec;
MinX, MaxX, MinY, MaxY, X, Y, temp : double;
cellstring, prtline : string;
begin
MaxGrpSize := 0;
SetLength(selected,3);
MaxX := -1.0e20;
MinX := 1.0e20;
MaxY := -1.0e20;
MinY := 1.0e20;
MinGrp := 1000;
MaxGrp := -1000;
N:=0;
// Get selected variables
for i := 1 to NoVariables do
begin
cellstring := OS3MainFrm.DataGrid.Cells[i,0];
if (cellstring = XEdit.Text) then selected[0] := i;
if (cellstring = YEdit.Text) then selected[1] := i;
if (cellstring = GroupEdit.Text) then selected[2] := i;
end;
XCol := selected[0];
YCol := selected[1];
GrpCol := selected[2];
NoSelected := 3;
// Get number of groups
for i := 1 to NoCases do
begin
Grp := StrToInt(OS3MainFrm.DataGrid.Cells[GrpCol,i]);
if (Grp > MaxGrp) then MaxGrp := Grp;
if (Grp < MinGrp) then MinGrp := Grp;
end;
NoGrps := (MaxGrp - MinGrp) + 1;
OutPutFrm.RichEdit.Clear;
OutPutFrm.RichEdit.Lines.Add('X VERSUS Y FOR GROUPS PLOT');
OutPutFrm.RichEdit.Lines.Add('');
SetLength(YValues,NoCases+1,NoGrps+1);
SetLength(XValues,NoCases+1,NoGrps+1);
SetLength(Means,2);
SetLength(StdDevs,2);
SetLength(NoInGrp,NoGrps);
for i := 0 to 1 do
begin
Means[i] := 0.0;
StdDevs[i] := 0.0;
end;
for i := 0 to NoGrps - 1 do NoInGrp[i] := 0;
for i := 1 to NoCases do
begin
if (not GoodRecord(i,NoSelected,selected))then continue;
N := N + 1;
X := StrToFloat(OS3MainFrm.DataGrid.Cells[XCol,i]);
if (X > MaxX) then MaxX := X;
if (X < MinX) then MinX := X;
Y := StrToFloat(OS3MainFrm.DataGrid.Cells[YCol,i]);
if (Y > MaxY) then MaxY := Y;
if (Y < MinY) then MinY := Y;
end;
for i := 1 to NoCases do
begin
if (not GoodRecord(i,NoSelected,selected))then continue;
Y := StrToFloat(OS3MainFrm.DataGrid.Cells[YCol,i]);
if (Y > MaxY) then MaxY := Y;
if (Y < MinY) then MinY := Y;
Grp := StrToInt(OS3MainFrm.DataGrid.Cells[GrpCol,i]);
Grp := Grp - MinGrp;
NoInGrp[Grp] := NoInGrp[Grp] + 1;
if (NoInGrp[Grp] > MaxGrpSize) then MaxGrpSize := NoInGrp[Grp];
YValues[NoInGrp[Grp]-1,Grp] := Y;
XValues[NoInGrp[Grp]-1,Grp] := StrToFloat(OS3MainFrm.DataGrid.Cells[XCol,i]);
end;
// get descriptive data
if (DescChk.Checked) then
begin
for i := 1 to NoCases do
begin
if (not GoodRecord(i,NoSelected,selected)) then continue;
Y := StrToFloat(OS3MainFrm.DataGrid.Cells[YCol,i]);
X := StrToFloat(OS3MainFrm.DataGrid.Cells[XCol,i]);
Means[0] := Means[0] + X;
StdDevs[0] := StdDevs[0] + (X * X);
Means[1] := Means[1] + Y;
StdDevs[1] := StdDevs[1] + (Y * Y);
end;
for i := 0 to 1 do
begin
StdDevs[i] := StdDevs[i] - (Means[i] * Means[i]) / N;
StdDevs[i] := StdDevs[i] / (N - 1);
StdDevs[i] := sqrt(StdDevs[i]);
Means[i] := Means[i] / N;
end;
OutPutFrm.RichEdit.Lines.Add('VARIABLE MEAN STANDARED DEVIATION');
prtline := format(' X %9.3f %8.3f',[Means[0],StdDevs[0]]);
OutPutFrm.RichEdit.Lines.Add(prtline);
prtline := format(' Y %9.3f %8.3f',[Means[1],StdDevs[1]]);
OutPutFrm.RichEdit.Lines.Add(prtline);
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.ShowModal;
end;
// sort on X
for i := 0 to NoGrps - 1 do
begin
for j := 0 to MaxGrpSize-2 do
begin
for k := j+1 to MaxGrpSize - 1 do
begin
if (XValues[j,i] > XValues[k,i]) then // swap
begin
temp := XValues[j,i];
XValues[j,i] := XValues[k,i];
XValues[k,i] := temp;
temp := YValues[j,i];
YValues[j,i] := YValues[k,i];
YValues[k,i] := temp;
end;
end;
end;
end;
BlankFrm.Show;
plotxy(XValues, YValues, MaxX, MinX, MaxY, MinY, MaxGrpSize, NoGrps, MinGrp);
NoInGrp := nil;
StdDevs := nil;
Means := nil;
XValues := nil;
YValues := nil;
end;
procedure TMultXvsYFrm.FormShow(Sender: TObject);
begin
ResetBtnClick(self);
end;
procedure TMultXvsYFrm.GroupOutBtnClick(Sender: TObject);
begin
VarList.Items.Add(GroupEdit.Text);
GroupEdit.Text := '';
GroupInBtn.Visible := true;
GroupOutBtn.Visible := false;
end;
procedure TMultXvsYFrm.HelpBtnClick(Sender: TObject);
begin
ContextHelpForm.HelpMessage((Sender as TButton).tag);
end;
procedure TMultXvsYFrm.XInBtnClick(Sender: TObject);
VAR i : integer;
begin
i := VarList.ItemIndex;
XEdit.Text := VarList.Items.Strings[i];
VarList.Items.Delete(i);
XInBtn.Visible := false;
XOutBtn.Visible := true;
end;
procedure TMultXvsYFrm.XOutBtnClick(Sender: TObject);
begin
VarList.Items.Add(XEdit.Text);
XEdit.Text := '';
XInBtn.Visible := true;
XOutBtn.Visible := false;
end;
procedure TMultXvsYFrm.YInBtnClick(Sender: TObject);
VAR i : integer;
begin
i := VarList.ItemIndex;
YEdit.Text := VarList.Items.Strings[i];
VarList.Items.Delete(i);
YInBtn.Visible := false;
YOutBtn.Visible := true;
end;
procedure TMultXvsYFrm.YOutBtnClick(Sender: TObject);
begin
VarList.Items.Add(YEdit.Text);
YEdit.Text := '';
YInBtn.Visible := true;
YOutBtn.Visible := false;
end;
procedure TMultXvsYFrm.plotxy(var XValues : DblDyneMat;
YValues : DblDyneMat;
MaxX, MinX, MaxY, MinY : double;
N, NoY, MinGrp : integer);
var
// routine to plot X versus multiple Y values
xpos, ypos, hleft, hright, vtop, vbottom, imagewide : integer;
vhi, hwide, offset, strhi, imagehi, i, j, k, Grp : integer;
maxval, minval, valincr, Yvalue, Xvalue, value : double;
Title, outline : string;
Colors : array[0..12] of TColor;
begin
Colors[1] := clRed;
Colors[2] := clBlue;
Colors[3] := clGreen;
Colors[4] := clNavy;
Colors[5] := clTeal;
Colors[6] := clAqua;
Colors[7] := clLime;
Colors[8] := clFuchsia;
Colors[9] := clGray;
Colors[10] := clPurple;
Colors[11] := clOlive;
Colors[0] := clMaroon;
Title := LabelEdit.Text;
BlankFrm.Image1.Canvas.Clear;
BlankFrm.Caption := Title;
imagewide := BlankFrm.Image1.Width;
imagehi := BlankFrm.Image1.Height;
// ImageFrm.Image.Canvas.FloodFill(0,0,clWhite,fsBorder);
vtop := 20;
vbottom := ceil(imagehi) - 80;
vhi := vbottom - vtop;
hleft := 100;
hright := imagewide - 80;
hwide := hright - hleft;
BlankFrm.Image1.Canvas.Pen.Color := clBlack;
BlankFrm.Image1.Canvas.Brush.Color := clWhite;
// Draw chart border
// ImageFrm.Image.Canvas.Rectangle(0,0,imagewide,imagehi);
// draw horizontal axis
BlankFrm.Image1.Canvas.Pen.Color := clBlack;
BlankFrm.Image1.Canvas.MoveTo(hleft,vbottom);
BlankFrm.Image1.Canvas.LineTo(hright,vbottom);
valincr := (MaxX - MinX) / 10.0;
for i := 1 to 10 do
begin
ypos := vbottom;
Xvalue := MinX + valincr * (i - 1);
xpos := ceil(hwide * ((Xvalue - MinX) / (MaxX - MinX)));
xpos := xpos + hleft;
BlankFrm.Image1.Canvas.MoveTo(xpos,ypos);
ypos := ypos + 10;
BlankFrm.Image1.Canvas.LineTo(xpos,ypos);
outline := format('%6.2f',[Xvalue]);
Title := outline;
offset := BlankFrm.Image1.Canvas.TextWidth(Title) div 2;
xpos := xpos - offset;
BlankFrm.Image1.Canvas.Pen.Color := clBlack;
BlankFrm.Image1.Canvas.TextOut(xpos,ypos,Title);
end;
xpos := hleft + (hwide div 2) - (BlankFrm.Image1.Canvas.TextWidth(XEdit.Text) div 2);
ypos := vbottom + 20;
BlankFrm.Image1.Canvas.TextOut(xpos,ypos,XEdit.Text);
// Draw vertical axis
Title := 'Y VALUES';
xpos := hleft - BlankFrm.Image1.Canvas.TextWidth(Title) div 2;
ypos := vtop - BlankFrm.Image1.Canvas.TextHeight(Title);
BlankFrm.Image1.Canvas.TextOut(xpos,ypos,Title);
xpos := hleft;
ypos := vtop;
BlankFrm.Image1.Canvas.MoveTo(xpos,ypos);
ypos := vbottom;
BlankFrm.Image1.Canvas.LineTo(xpos,ypos);
valincr := (MaxY - MinY) / 10.0;
for i := 1 to 10 do
begin
value := MaxY - ((i-1) * valincr);
outline := format('%8.2f',[value]);
Title := outline;
strhi := BlankFrm.Image1.Canvas.TextHeight(Title);
xpos := 10;
Yvalue := MaxY - (valincr * (i-1));
ypos := ceil(vhi * ( (MaxY - Yvalue) / (MaxY - MinY)));
ypos := ypos + vtop - strhi div 2;
BlankFrm.Image1.Canvas.TextOut(xpos,ypos,Title);
xpos := hleft;
ypos := ypos + strhi div 2;
BlankFrm.Image1.Canvas.MoveTo(xpos,ypos);
xpos := hleft - 10;
BlankFrm.Image1.Canvas.LineTo(xpos,ypos);
end;
// draw points for x and y pairs
for j := 0 to NoY - 1 do
begin
BlankFrm.Image1.Canvas.Brush.Style := bsSolid;
BlankFrm.Image1.Canvas.Brush.Color := Colors[j mod 12];
BlankFrm.Image1.Canvas.Pen.Color := Colors[j mod 12];
Grp := MinGrp + j;
Title := 'GROUP ' + IntToStr(Grp);
for i := 1 to N do
begin
ypos := ceil(vhi * ( (MaxY - YValues[i-1,j]) / (MaxY - MinY)));
ypos := ypos + vtop;
xpos := ceil(hwide * ( (XValues[i-1,j] - MinX) / (MaxX - MinX)));
xpos := xpos + hleft;
if (i = 1) then BlankFrm.Image1.Canvas.MoveTo(xpos,ypos);
if (LinesChk.Checked) then BlankFrm.Image1.Canvas.LineTo(xpos,ypos);
BlankFrm.Image1.Canvas.Ellipse(xpos,ypos,xpos+5,ypos+5);
end;
strhi := BlankFrm.Image1.Canvas.TextHeight(Title);
BlankFrm.Image1.Canvas.Brush.Color := clWhite;
BlankFrm.Image1.Canvas.Pen.Color := clBlack;
xpos := hwide + hleft;
BlankFrm.Image1.Canvas.MoveTo(xpos,ypos-strhi);
BlankFrm.Image1.Canvas.TextOut(xpos,ypos,Title);
end;
end;
initialization
{$I multxvsyunit.lrs}
end.

View File

@ -0,0 +1,311 @@
object NormalityFrm: TNormalityFrm
Left = 192
Height = 392
Top = 90
Width = 392
Caption = 'Normality Tests'
ClientHeight = 392
ClientWidth = 392
OnShow = FormShow
LCLVersion = '0.9.26.2'
object Label1: TLabel
Left = 6
Height = 14
Top = 9
Width = 59
Caption = 'VARIABLES:'
ParentColor = False
end
object Label2: TLabel
Left = 233
Height = 14
Top = 8
Width = 87
Caption = 'Test Normality of:'
ParentColor = False
end
object Label8: TLabel
Left = 5
Height = 14
Top = 314
Width = 33
Caption = 'Lillifors'
ParentColor = False
end
object Label9: TLabel
Left = 5
Height = 14
Top = 329
Width = 56
Caption = 'Conclusion:'
ParentColor = False
end
object VarList: TListBox
Left = 5
Height = 273
Top = 29
Width = 162
TabOrder = 0
end
object VarInBtn: TBitBtn
Left = 176
Height = 35
Top = 13
Width = 37
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE
6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580
3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3
71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7
74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7
74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = VarInBtnClick
TabOrder = 1
end
object VarOutBtn: TBitBtn
Left = 176
Height = 35
Top = 56
Width = 37
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = VarOutBtnClick
TabOrder = 2
end
object TestVarEdit: TEdit
Left = 231
Height = 26
Top = 30
Width = 153
TabOrder = 3
Text = 'TestVarEdit'
end
object GroupBox1: TGroupBox
Left = 178
Height = 85
Top = 102
Width = 209
Caption = 'Shapiro-Wilkes Rresults'
ClientHeight = 67
ClientWidth = 205
TabOrder = 4
object Label3: TLabel
Left = 7
Height = 14
Top = 9
Width = 45
Caption = 'WWW = '
ParentColor = False
end
object Label4: TLabel
Left = 6
Height = 14
Top = 37
Width = 65
Caption = 'Probability = '
ParentColor = False
end
object WEdit: TEdit
Left = 82
Height = 18
Top = 3
Width = 100
TabOrder = 0
Text = 'WEdit'
end
object ProbEdit: TEdit
Left = 80
Height = 17
Top = 32
Width = 102
TabOrder = 1
Text = 'ProbEdit'
end
end
object GroupBox2: TGroupBox
Left = 176
Height = 102
Top = 202
Width = 207
Caption = 'Lilliefors Test Results'
ClientHeight = 84
ClientWidth = 203
TabOrder = 5
object Label5: TLabel
Left = 6
Height = 14
Top = 6
Width = 52
Caption = 'Skewness:'
ParentColor = False
end
object Label6: TLabel
Left = 6
Height = 14
Top = 34
Width = 43
Caption = 'Kurtosis:'
ParentColor = False
end
object Label7: TLabel
Left = 5
Height = 14
Top = 61
Width = 67
Caption = 'Test Statistic:'
ParentColor = False
end
object SkewEdit: TEdit
Left = 81
Height = 16
Top = 4
Width = 101
TabOrder = 0
Text = 'SkewEdit'
end
object KurtosisEdit: TEdit
Left = 82
Height = 16
Top = 32
Width = 99
TabOrder = 1
Text = 'KurtosisEdit'
end
object StatEdit: TEdit
Left = 81
Height = 15
Top = 60
Width = 98
TabOrder = 2
Text = 'StatEdit'
end
end
object ConclusionEdit: TEdit
Left = 65
Height = 19
Top = 320
Width = 315
TabOrder = 6
Text = 'ConclusionEdit'
end
object Panel1: TPanel
Height = 46
Top = 346
Width = 392
Align = alBottom
ClientHeight = 46
ClientWidth = 392
TabOrder = 7
object CancelBtn: TButton
Left = 6
Height = 28
Top = 6
Width = 66
Caption = 'Cancel'
ModalResult = 2
OnClick = CancelBtnClick
TabOrder = 0
end
end
object ResetBtn: TButton
Left = 80
Height = 28
Top = 352
Width = 66
Caption = 'Reset'
OnClick = ResetBtnClick
TabOrder = 8
end
object PrintBtn: TButton
Left = 160
Height = 28
Top = 352
Width = 66
Caption = 'Print'
OnClick = PrintBtnClick
TabOrder = 9
end
object ApplyBtn: TButton
Left = 233
Height = 28
Top = 352
Width = 66
Caption = 'Apply'
OnClick = ApplyBtnClick
TabOrder = 10
end
object ReturnBtn: TButton
Left = 314
Height = 28
Top = 352
Width = 66
Caption = 'Return'
OnClick = ReturnBtnClick
TabOrder = 11
end
end

View File

@ -0,0 +1,156 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TNormalityFrm','FORMDATA',[
'TPF0'#13'TNormalityFrm'#12'NormalityFrm'#4'Left'#3#192#0#6'Height'#3#136#1#3
+'Top'#2'Z'#5'Width'#3#136#1#7'Caption'#6#15'Normality Tests'#12'ClientHeight'
+#3#136#1#11'ClientWidth'#3#136#1#6'OnShow'#7#8'FormShow'#10'LCLVersion'#6#8
+'0.9.26.2'#0#6'TLabel'#6'Label1'#4'Left'#2#6#6'Height'#2#14#3'Top'#2#9#5'Wid'
+'th'#2';'#7'Caption'#6#10'VARIABLES:'#11'ParentColor'#8#0#0#6'TLabel'#6'Labe'
+'l2'#4'Left'#3#233#0#6'Height'#2#14#3'Top'#2#8#5'Width'#2'W'#7'Caption'#6#18
+'Test Normality of:'#11'ParentColor'#8#0#0#6'TLabel'#6'Label8'#4'Left'#2#5#6
+'Height'#2#14#3'Top'#3':'#1#5'Width'#2'!'#7'Caption'#6#9'Lillifors'#11'Paren'
+'tColor'#8#0#0#6'TLabel'#6'Label9'#4'Left'#2#5#6'Height'#2#14#3'Top'#3'I'#1#5
+'Width'#2'8'#7'Caption'#6#11'Conclusion:'#11'ParentColor'#8#0#0#8'TListBox'#7
+'VarList'#4'Left'#2#5#6'Height'#3#17#1#3'Top'#2#29#5'Width'#3#162#0#8'TabOrd'
+'er'#2#0#0#0#7'TBitBtn'#8'VarInBtn'#4'Left'#3#176#0#6'Height'#2'#'#3'Top'#2
+#13#5'Width'#2'%'#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0
+#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0
+#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0'!c$'#184#29'^ '#6#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'*p/8%'
+'i)'#247'!c$'#217#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'a'
+#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'
+#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'?'#136'E'#255'Y'#161'^'#255'D'
+#139'I'#255'!c$'#207#255#255#255#0#255#255#255#0#255#255#255#0'e'#195'q'#255
+#160#215#169#255#156#213#165#255#152#211#161#255#148#208#157#255#144#206#152
+#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255'z'#193
+#128#255'v'#190'|'#255'E'#140'J'#255'!c$'#196#255#255#255#0#255#255#255#0'h'
+#199't'#255#165#218#174#255#162#216#171#255#158#214#167#255#154#212#163#255
+#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255#133#199#139
+#255#129#197#135#255'}'#194#130#255'J'#145'P'#255'%i)'#201#255#255#255#0#255
+#255#255#0'h'#199't'#255'h'#199't'#255'e'#195'q'#255'a'#190'm'#255']'#184'h'
+#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255'Z'
+#163'b'#255'U'#157'\'#255'/x5'#209#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'A'#145'I'
+#247';'#136'B'#219#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'G'#153'O'
+#187'A'#145'I'#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7
+'OnClick'#7#13'VarInBtnClick'#8'TabOrder'#2#1#0#0#7'TBitBtn'#9'VarOutBtn'#4
+'Left'#3#176#0#6'Height'#2'#'#3'Top'#2'8'#5'Width'#2'%'#10'Glyph.Data'#10':'
,#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '
+#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0'M'#161'V'#6'G'#153'O'#184#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0'S'#169'\'#217'M'#161'V'#247'G'#153'O8'#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+']'#184'h'#207'q'#190'{'#255'z'#193#131#255'['#170'd'#255'G'#153'O'#255'A'
+#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255'%i)'#255'!c$'#255
+#29'^ '#255#255#255#255#0#255#255#255#0'e'#195'q'#196'{'#200#134#255#156#213
+#165#255#152#211#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135
+#201#142#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'r'
+#189'x'#255'!c$'#255#255#255#255#0#255#255#255#0'h'#199't'#201''#204#138#255
+#162#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207#154
+#255#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'#194
+#130#255'x'#192'~'#255'%i)'#255#255#255#255#0#255#255#255#0#255#255#255#0'h'
+#199't'#209#128#205#139#255'|'#201#135#255']'#184'h'#255'X'#177'b'#255'S'#169
+'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255
+'/x5'#255'*p/'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'
+#199't'#219'e'#195'q'#247#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199
+'t'#6'h'#199't'#187#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#14'VarOutBtnClick'#8
+'TabOrder'#2#2#0#0#5'TEdit'#11'TestVarEdit'#4'Left'#3#231#0#6'Height'#2#26#3
+'Top'#2#30#5'Width'#3#153#0#8'TabOrder'#2#3#4'Text'#6#11'TestVarEdit'#0#0#9
+'TGroupBox'#9'GroupBox1'#4'Left'#3#178#0#6'Height'#2'U'#3'Top'#2'f'#5'Width'
+#3#209#0#7'Caption'#6#23'Shapiro-Wilkes Rresults'#12'ClientHeight'#2'C'#11'C'
+'lientWidth'#3#205#0#8'TabOrder'#2#4#0#6'TLabel'#6'Label3'#4'Left'#2#7#6'Hei'
+'ght'#2#14#3'Top'#2#9#5'Width'#2'-'#7'Caption'#6#6'WWW = '#11'ParentColor'#8
+#0#0#6'TLabel'#6'Label4'#4'Left'#2#6#6'Height'#2#14#3'Top'#2'%'#5'Width'#2'A'
+#7'Caption'#6#14'Probability = '#11'ParentColor'#8#0#0#5'TEdit'#5'WEdit'#4'L'
+'eft'#2'R'#6'Height'#2#18#3'Top'#2#3#5'Width'#2'd'#8'TabOrder'#2#0#4'Text'#6
+#5'WEdit'#0#0#5'TEdit'#8'ProbEdit'#4'Left'#2'P'#6'Height'#2#17#3'Top'#2' '#5
+'Width'#2'f'#8'TabOrder'#2#1#4'Text'#6#8'ProbEdit'#0#0#0#9'TGroupBox'#9'Grou'
+'pBox2'#4'Left'#3#176#0#6'Height'#2'f'#3'Top'#3#202#0#5'Width'#3#207#0#7'Cap'
+'tion'#6#23'Lilliefors Test Results'#12'ClientHeight'#2'T'#11'ClientWidth'#3
+#203#0#8'TabOrder'#2#5#0#6'TLabel'#6'Label5'#4'Left'#2#6#6'Height'#2#14#3'To'
,'p'#2#6#5'Width'#2'4'#7'Caption'#6#9'Skewness:'#11'ParentColor'#8#0#0#6'TLab'
+'el'#6'Label6'#4'Left'#2#6#6'Height'#2#14#3'Top'#2'"'#5'Width'#2'+'#7'Captio'
+'n'#6#9'Kurtosis:'#11'ParentColor'#8#0#0#6'TLabel'#6'Label7'#4'Left'#2#5#6'H'
+'eight'#2#14#3'Top'#2'='#5'Width'#2'C'#7'Caption'#6#15'Test Statistic:'#11'P'
+'arentColor'#8#0#0#5'TEdit'#8'SkewEdit'#4'Left'#2'Q'#6'Height'#2#16#3'Top'#2
+#4#5'Width'#2'e'#8'TabOrder'#2#0#4'Text'#6#8'SkewEdit'#0#0#5'TEdit'#12'Kurto'
+'sisEdit'#4'Left'#2'R'#6'Height'#2#16#3'Top'#2' '#5'Width'#2'c'#8'TabOrder'#2
+#1#4'Text'#6#12'KurtosisEdit'#0#0#5'TEdit'#8'StatEdit'#4'Left'#2'Q'#6'Height'
+#2#15#3'Top'#2'<'#5'Width'#2'b'#8'TabOrder'#2#2#4'Text'#6#8'StatEdit'#0#0#0#5
+'TEdit'#14'ConclusionEdit'#4'Left'#2'A'#6'Height'#2#19#3'Top'#3'@'#1#5'Width'
+#3';'#1#8'TabOrder'#2#6#4'Text'#6#14'ConclusionEdit'#0#0#6'TPanel'#6'Panel1'
+#6'Height'#2'.'#3'Top'#3'Z'#1#5'Width'#3#136#1#5'Align'#7#8'alBottom'#12'Cli'
+'entHeight'#2'.'#11'ClientWidth'#3#136#1#8'TabOrder'#2#7#0#7'TButton'#9'Canc'
+'elBtn'#4'Left'#2#6#6'Height'#2#28#3'Top'#2#6#5'Width'#2'B'#7'Caption'#6#6'C'
+'ancel'#11'ModalResult'#2#2#7'OnClick'#7#14'CancelBtnClick'#8'TabOrder'#2#0#0
+#0#0#7'TButton'#8'ResetBtn'#4'Left'#2'P'#6'Height'#2#28#3'Top'#3'`'#1#5'Widt'
+'h'#2'B'#7'Caption'#6#5'Reset'#7'OnClick'#7#13'ResetBtnClick'#8'TabOrder'#2#8
+#0#0#7'TButton'#8'PrintBtn'#4'Left'#3#160#0#6'Height'#2#28#3'Top'#3'`'#1#5'W'
+'idth'#2'B'#7'Caption'#6#5'Print'#7'OnClick'#7#13'PrintBtnClick'#8'TabOrder'
+#2#9#0#0#7'TButton'#8'ApplyBtn'#4'Left'#3#233#0#6'Height'#2#28#3'Top'#3'`'#1
+#5'Width'#2'B'#7'Caption'#6#5'Apply'#7'OnClick'#7#13'ApplyBtnClick'#8'TabOrd'
+'er'#2#10#0#0#7'TButton'#9'ReturnBtn'#4'Left'#3':'#1#6'Height'#2#28#3'Top'#3
+'`'#1#5'Width'#2'B'#7'Caption'#6#6'Return'#7'OnClick'#7#14'ReturnBtnClick'#8
+'TabOrder'#2#11#0#0#0
]);

View File

@ -0,0 +1,330 @@
unit NormalityUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, Buttons, ExtCtrls, MainUnit, Globals, functionsLib, DataProcs,
OutPutUnit;
type
{ TNormalityFrm }
TNormalityFrm = class(TForm)
CancelBtn: TButton;
ResetBtn: TButton;
PrintBtn: TButton;
ApplyBtn: TButton;
ReturnBtn: TButton;
ConclusionEdit: TEdit;
Label8: TLabel;
Label9: TLabel;
Panel1: TPanel;
StatEdit: TEdit;
KurtosisEdit: TEdit;
SkewEdit: TEdit;
GroupBox2: TGroupBox;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
ProbEdit: TEdit;
Label4: TLabel;
WEdit: TEdit;
GroupBox1: TGroupBox;
Label3: TLabel;
TestVarEdit: TEdit;
Label2: TLabel;
VarInBtn: TBitBtn;
VarOutBtn: TBitBtn;
Label1: TLabel;
VarList: TListBox;
procedure ApplyBtnClick(Sender: TObject);
procedure CancelBtnClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure PrintBtnClick(Sender: TObject);
procedure ResetBtnClick(Sender: TObject);
procedure ReturnBtnClick(Sender: TObject);
procedure VarInBtnClick(Sender: TObject);
procedure VarOutBtnClick(Sender: TObject);
private
{ private declarations }
function Norm(z : double) : double;
public
{ public declarations }
end;
var
NormalityFrm: TNormalityFrm;
implementation
{ TNormalityFrm }
procedure TNormalityFrm.FormShow(Sender: TObject);
var
i : integer;
begin
TestVarEdit.Text := '';
WEdit.Text := '';
ProbEdit.Text := '';
ConclusionEdit.Text := '';
SkewEdit.Text := '';
KurtosisEdit.Text := '';
StatEdit.Text := '';
VarOutBtn.Visible := false;
VarInBtn.Visible := true;
VarList.Items.Clear;
for i := 1 to NoVariables do
VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]);
end;
procedure TNormalityFrm.PrintBtnClick(Sender: TObject);
begin
OutPutFrm.RichEdit.Clear;
OutPutFrm.RichEdit.Lines.Add('NORMALITY TESTS FOR '+ TestVarEdit.Text);
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('Shapiro-Wilkes W = ' + WEdit.Text);
OutPutFrm.RichEdit.Lines.Add('Shapiro-Wilkes Prob. = ' + ProbEdit.Text);
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('Skew = ' + SkewEdit.Text);
OutPutFrm.RichEdit.Lines.Add('Kurtosis = ' + KurtosisEdit.Text);
OutPutFrm.RichEdit.Lines.Add('Lilliefors Test Statistic = ' + StatEdit.Text);
OutPutFrm.RichEdit.Lines.Add('Conclusion: ' + ConclusionEdit.Text);
OutPutFrm.ShowModal;
end;
procedure TNormalityFrm.ResetBtnClick(Sender: TObject);
begin
FormShow(self);
end;
procedure TNormalityFrm.ReturnBtnClick(Sender: TObject);
begin
NormalityFrm.Hide;
end;
procedure TNormalityFrm.CancelBtnClick(Sender: TObject);
begin
NormalityFrm.Hide;
end;
procedure TNormalityFrm.ApplyBtnClick(Sender: TObject);
label again;
var
temp, w, pw : double;
skew, kurtosis : double;
mean, variance, stddev, deviation, devsqr, M2, M3, M4 : double;
i, j, n, n1, n2, ier : integer;
varlabel : string;
selcol : integer;
data, a, z, x : DblDyneVec;
freq : IntDyneVec;
fval, jval, DP : DblDyneVec;
F1, DPP, D, D1, A0, C1, D15, D10, D05, D025, t2 : double;
init : boolean;
msg : string;
begin
init := false;
n := 0;
selcol := 0;
for i := 1 to NoVariables do
if OS3MainFrm.DataGrid.Cells[i,0] = TestVarEdit.Text then selcol := i;
if selcol <> 0 then
begin
varlabel := TestVarEdit.Text;
// place values into the data array
SetLength(data,NoCases+1); // arrays start at 1
SetLength(a,NoCases+1);
SetLength(freq, NoCases+1);
SetLength(z, NoCases+1);
SetLength(x, NoCases+1);
SetLength(fval,NoCases+1);
SetLength(jval,NoCases+1);
SetLength(DP,NoCases+1);
for i := 1 to NoCases do
begin
if NOT ValidValue(i,selcol) then continue;
n := n + 1;
data[n] := StrToFloat(OS3MainFrm.DataGrid.Cells[selcol,i]);
end;
n1 := n;
n2 := n div 2;
// sort into ascending order
for i := 1 to n - 1 do
begin
for j := i + 1 to n do
begin
if data[i] > data[j] then
begin
temp := data[i];
data[i] := data[j];
data[j] := temp;
end;
end;
end;
// call Shapiro-Wilks function
swilk(init, data, n, n1, n2, a, w, pw, ier);
if ier <> 0 then
begin
Msg := 'Error encountered = ' + IntToStr(ier);
ShowMessage(Msg);
DP := nil;
jval := nil;
fval := nil;
data := nil;
a := nil;
freq := nil;
z := nil;
x := nil;
exit;
end;
WEdit.Text := format('%8.4f',[w]);
ProbEdit.Text := format('%8.4f',[pw]);
// Now do Lilliefors
// get unique scores and their frequencies
n1 := 1;
i := 1;
freq[1] := 1;
x[1] := data[1];
again: for j := i + 1 to n do
begin
if data[j] = x[n1] then freq[n1] := freq[n1] + 1;
end;
i := i + freq[n1];
if i <= n then
begin
n1 := n1 + 1;
x[n1] := data[i];
freq[n1] := 1;
goto again;
end;
// now get skew and kurtosis of scores
mean := 0.0;
variance := 0.0;
for i := 1 to n do
begin
mean := mean + data[i];
variance := variance + (data[i] * data[i]);
end;
variance := variance - (mean * mean) / n;
variance := variance / (n - 1);
stddev := sqrt(variance);
mean := mean / n;
// obtain skew, kurtosis and z scores
M2 := 0.0;
M3 := 0.0;
M4 := 0.0;
for i := 1 to n do
begin
deviation := data[i] - mean;
devsqr := deviation * deviation;
M2 := M2 + devsqr;
M3 := M3 + (deviation * devsqr);
M4 := M4 + (devsqr * devsqr);
z[i] := (data[i] - mean) / stddev;
end;
for i := 1 to n1 do x[i] := (x[i] - mean) / stddev;
skew := (n * M3) / ((n - 1) * (n - 2) * stddev * variance);
kurtosis := (n * (n + 1) * M4) - (3 * M2 * M2 * (n - 1));
kurtosis := kurtosis /( (n - 1) * (n - 2) * (n - 3) * (variance * variance) );
SkewEdit.Text := format('%8.3f',[skew]);
KurtosisEdit.Text := format('%8.3f',[kurtosis]);
// obtain the test statistic
for i := 1 to n1 do
begin
F1 := Norm(x[i]);
if x[i] >= 0 then fval[i] := 1.0 - (F1 / 2.0)
else fval[i] := F1 / 2.0;
end;
// cumulative proportions
jval[1] := freq[1] / n;
for i := 2 to n1 do jval[i] := jval[i-1] + freq[i] / n;
for i := 1 to n1 do DP[i] := abs(jval[i] - fval[i]);
// sort DP
for i := 1 to n1-1 do
begin
for j := i+1 to n1 do
begin
if DP[j] < DP[i] then
begin
temp := DP[i];
DP[i] := DP[j];
DP[j] := temp;
end;
end;
end;
DPP := DP[n1];
D := DPP;
D1 := D;
StatEdit.Text := format('%8.3f',[D]);
A0 := sqrt(n);
C1 := A0 - 0.01 + (0.85 / A0);
D15 := 0.775 / C1;
D10 := 0.819 / C1;
D05 := 0.895 / C1;
D025 := 0.995 / C1;
t2 := D;
if t2 > D025 then ConclusionEdit.Text := 'Strong evidence against normality.';
if ((t2 <= D025) and (t2 > D05)) then ConclusionEdit.Text := 'Sufficient evidence against normality.';
if ((t2 <= D05) and (t2 > D10)) then ConclusionEdit.Text := 'Suggestive evidence against normality.';
if ((t2 <= D10) and (t2 > D15)) then ConclusionEdit.Text := 'Little evidence against normality.';
if (t2 <= D15) then ConclusionEdit.Text := 'No evidence against normality.';
end;
DP := nil;
jval := nil;
fval := nil;
data := nil;
a := nil;
freq := nil;
z := nil;
x := nil;
end;
procedure TNormalityFrm.VarInBtnClick(Sender: TObject);
var
i : integer;
begin
i := VarList.ItemIndex;
if i < 0 then exit;
TestVarEdit.Text := VarList.Items.Strings[i];
VarList.Items.Delete(i);
VarInBtn.Visible := false;
VarOutBtn.Visible := true;
end;
procedure TNormalityFrm.VarOutBtnClick(Sender: TObject);
begin
if TestVarEdit.Text = '' then exit;
VarList.Items.Add(TestVarEdit.Text);
TestVarEdit.Text := '';
VarOutBtn.Visible := false;
VarInBtn.Visible := true;
end;
function TNormalityFrm.Norm(z : double) : double;
var
p : double;
begin
z := abs(z);
p := 1.0 + z * (0.04986735 + z * (0.02114101 + z * (0.00327763 +
z * (0.0000380036 + z * (0.0000488906 + z * 0.000005383)))));
p := p * p;
p := p * p;
p := p * p;
Result := 1.0 / (p * p);
end;
//-------------------------------------------------------------------
initialization
{$I normalityunit.lrs}
end.

View File

@ -0,0 +1,621 @@
object OneCaseAnovaForm: TOneCaseAnovaForm
Left = 288
Height = 510
Top = 161
Width = 728
Caption = 'OneCaseAnovaForm'
ClientHeight = 510
ClientWidth = 728
OnShow = FormShow
LCLVersion = '0.9.30'
object Label1: TLabel
Left = 8
Height = 16
Top = 11
Width = 51
Caption = 'Variables:'
ParentColor = False
end
object VarList: TListBox
Left = 8
Height = 368
Top = 29
Width = 185
ItemHeight = 0
TabOrder = 0
end
object DepIn: TBitBtn
Left = 208
Height = 29
Top = 25
Width = 32
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE
6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580
3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3
71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7
74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7
74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = DepInClick
TabOrder = 1
end
object StaticText1: TStaticText
Left = 256
Height = 15
Top = 21
Width = 73
Caption = 'Dependent Variable'
TabOrder = 2
end
object DepOut: TBitBtn
Left = 208
Height = 29
Top = 64
Width = 32
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = DepOutClick
TabOrder = 3
end
object Fact1In: TBitBtn
Left = 208
Height = 29
Top = 120
Width = 32
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE
6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580
3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3
71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7
74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7
74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = Fact1InClick
TabOrder = 4
end
object Fact1Out: TBitBtn
Left = 208
Height = 29
Top = 160
Width = 32
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = Fact1OutClick
TabOrder = 5
end
object Fact2In: TBitBtn
Left = 208
Height = 29
Top = 216
Width = 32
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE
6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580
3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3
71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7
74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7
74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = Fact2InClick
TabOrder = 6
end
object Fact2Out: TBitBtn
Left = 208
Height = 29
Top = 256
Width = 32
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = Fact2OutClick
TabOrder = 7
end
object StaticText2: TStaticText
Left = 256
Height = 17
Top = 112
Width = 83
Caption = 'Factor 1 Variable'
TabOrder = 8
end
object Factor1: TEdit
Left = 256
Height = 23
Top = 136
Width = 135
TabOrder = 9
Text = 'Edit1'
end
object StaticText3: TStaticText
Left = 256
Height = 13
Top = 216
Width = 95
Caption = 'Factor 2 Variable'
TabOrder = 10
end
object Factor2: TEdit
Left = 256
Height = 23
Top = 240
Width = 135
TabOrder = 11
Text = 'Edit1'
end
object Fact3In: TBitBtn
Left = 208
Height = 29
Top = 312
Width = 32
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE
6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580
3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3
71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7
74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7
74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = Fact3InClick
TabOrder = 12
end
object Fact3Out: TBitBtn
Left = 208
Height = 29
Top = 352
Width = 32
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = Fact3OutClick
TabOrder = 13
end
object StaticText4: TStaticText
Left = 256
Height = 12
Top = 312
Width = 88
Caption = 'Factor 3 Clark'
TabOrder = 14
end
object Factor3: TEdit
Left = 256
Height = 23
Top = 336
Width = 135
TabOrder = 15
Text = 'Edit1'
end
object DepVar: TEdit
Left = 257
Height = 23
Top = 41
Width = 135
TabOrder = 16
Text = 'DepVar'
end
object GroupBox1: TGroupBox
Left = 502
Height = 163
Top = 21
Width = 194
Caption = 'Post-Hoc Comparisons:'
ClientHeight = 145
ClientWidth = 190
TabOrder = 17
object ScheffeChk: TCheckBox
Left = 8
Height = 19
Top = 8
Width = 80
Caption = 'ScheffeChk'
TabOrder = 0
end
object TukeyHSDChk: TCheckBox
Left = 8
Height = 19
Top = 35
Width = 115
Caption = 'Tukey HSD (= n''s)'
TabOrder = 1
end
object TukeyBChk: TCheckBox
Left = 8
Height = 19
Top = 59
Width = 99
Caption = 'Tukey B (= n''s)'
TabOrder = 2
end
object TukeyKramerChk: TCheckBox
Left = 8
Height = 19
Top = 83
Width = 95
Caption = 'Tukey-Kramer'
TabOrder = 3
end
object NewmanKeulsChk: TCheckBox
Left = 8
Height = 19
Top = 107
Width = 138
Caption = 'Newman-Keuls (= n''s)'
TabOrder = 4
end
end
object OptionsBox: TGroupBox
Left = 502
Height = 104
Top = 248
Width = 193
Caption = 'Options'
ClientHeight = 86
ClientWidth = 189
TabOrder = 18
object PlotMeans: TCheckBox
Left = 8
Height = 19
Top = 6
Width = 154
Caption = 'Plot Means Using 3D bars'
TabOrder = 0
end
object Plot2DLines: TCheckBox
Left = 8
Height = 19
Top = 29
Width = 154
Caption = 'Plot Means Using 2D bars'
TabOrder = 1
end
object Plot3DLines: TCheckBox
Left = 8
Height = 19
Top = 53
Width = 171
Caption = 'Plot Means Horizontally (3D)'
TabOrder = 2
end
end
object Label3: TLabel
Left = 7
Height = 16
Top = 415
Width = 150
Caption = 'Alpha Level for Overall Tests'
ParentColor = False
end
object OverAllAlpha: TEdit
Left = 158
Height = 23
Top = 408
Width = 45
TabOrder = 19
Text = 'OverAllAlpha'
end
object Label4: TLabel
Left = 223
Height = 16
Top = 415
Width = 166
Caption = 'Alpha Level for Post-Hoc Tests:'
ParentColor = False
end
object PostAlpha: TEdit
Left = 384
Height = 23
Top = 408
Width = 51
TabOrder = 20
Text = 'PostAlpha'
end
object HelpBtn: TButton
Tag = 107
Left = 96
Height = 32
Top = 447
Width = 78
Caption = 'Help'
OnClick = HelpBtnClick
TabOrder = 21
end
object ResetBtn: TButton
Left = 207
Height = 32
Top = 447
Width = 77
Caption = 'Reset'
OnClick = ResetBtnClick
TabOrder = 22
end
object CancelBtn: TButton
Left = 320
Height = 32
Top = 448
Width = 77
Caption = 'Cancel'
ModalResult = 2
TabOrder = 23
end
object ComputeBtn: TButton
Left = 432
Height = 31
Top = 448
Width = 77
Caption = 'Compute'
OnClick = ComputeBtnClick
TabOrder = 24
end
object ReturnBtn: TButton
Left = 544
Height = 31
Top = 448
Width = 77
Caption = 'Return'
ModalResult = 1
TabOrder = 25
end
object InteractBtn: TRadioButton
Left = 512
Height = 19
Top = 408
Width = 103
Caption = 'Get Interactions'
TabOrder = 26
end
end

View File

@ -0,0 +1,477 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TOneCaseAnovaForm','FORMDATA',[
'TPF0'#17'TOneCaseAnovaForm'#16'OneCaseAnovaForm'#4'Left'#3' '#1#6'Height'#3
+#254#1#3'Top'#3#161#0#5'Width'#3#216#2#7'Caption'#6#16'OneCaseAnovaForm'#12
+'ClientHeight'#3#254#1#11'ClientWidth'#3#216#2#6'OnShow'#7#8'FormShow'#10'LC'
+'LVersion'#6#6'0.9.30'#0#6'TLabel'#6'Label1'#4'Left'#2#8#6'Height'#2#16#3'To'
+'p'#2#11#5'Width'#2'3'#7'Caption'#6#10'Variables:'#11'ParentColor'#8#0#0#8'T'
+'ListBox'#7'VarList'#4'Left'#2#8#6'Height'#3'p'#1#3'Top'#2#29#5'Width'#3#185
+#0#10'ItemHeight'#2#0#8'TabOrder'#2#0#0#0#7'TBitBtn'#5'DepIn'#4'Left'#3#208#0
+#6'Height'#2#29#3'Top'#2#25#5'Width'#2' '#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0
+'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4
+#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0'!c$'#184#29'^ '#6#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0'*p/8%i)'#247'!c$'#217#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'
+#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'?'
+#136'E'#255'Y'#161'^'#255'D'#139'I'#255'!c$'#207#255#255#255#0#255#255#255#0
+#255#255#255#0'e'#195'q'#255#160#215#169#255#156#213#165#255#152#211#161#255
+#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142#255#130#198#137
+#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'E'#140'J'#255'!c$'#196#255
+#255#255#0#255#255#255#0'h'#199't'#255#165#218#174#255#162#216#171#255#158
+#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255#142#204#149#255
+#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130#255'J'#145'P'#255
+'%i)'#201#255#255#255#0#255#255#255#0'h'#199't'#255'h'#199't'#255'e'#195'q'
+#255'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'
+#153'O'#255'A'#145'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'#209#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0'A'#145'I'#247';'#136'B'#219#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0'G'#153'O'#187'A'#145'I'#6#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#10'DepInClick'#8'TabOrder'#2#1#0
+#0#11'TStaticText'#11'StaticText1'#4'Left'#3#0#1#6'Height'#2#15#3'Top'#2#21#5
+'Width'#2'I'#7'Caption'#6#18'Dependent Variable'#8'TabOrder'#2#2#0#0#7'TBitB'
+'tn'#6'DepOut'#4'Left'#3#208#0#6'Height'#2#29#3'Top'#2'@'#5'Width'#2' '#10'G'
+'lyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0
+#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
,#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'M'#161'V'#6'G'#153'O'#184#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0'S'#169'\'#217'M'#161'V'#247'G'#153'O8'#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131#255'['#170'd'#255'G'
+#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255'%i)'
+#255'!c$'#255#29'^ '#255#255#255#255#0#255#255#255#0'e'#195'q'#196'{'#200#134
+#255#156#213#165#255#152#211#161#255#148#208#157#255#144#206#152#255#139#203
+#147#255#135#201#142#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190
+'|'#255'r'#189'x'#255'!c$'#255#255#255#255#0#255#255#255#0'h'#199't'#201#127
+#204#138#255#162#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255
+#147#207#154#255#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135
+#255'}'#194#130#255'x'#192'~'#255'%i)'#255#255#255#255#0#255#255#255#0#255
+#255#255#0'h'#199't'#209#128#205#139#255'|'#201#135#255']'#184'h'#255'X'#177
+'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255
+'5'#128';'#255'/x5'#255'*p/'#255#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0'h'#199't'#219'e'#195'q'#247#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0'h'#199't'#6'h'#199't'#187#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#11
+'DepOutClick'#8'TabOrder'#2#3#0#0#7'TBitBtn'#7'Fact1In'#4'Left'#3#208#0#6'He'
+'ight'#2#29#3'Top'#2'x'#5'Width'#2' '#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM'
+'6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0
+#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
,#255#255#0#255#255#255#0#255#255#255#0'!c$'#184#29'^ '#6#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0'*p/8%i)'#247'!c$'#217#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'
+#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'?'#136'E'
+#255'Y'#161'^'#255'D'#139'I'#255'!c$'#207#255#255#255#0#255#255#255#0#255#255
+#255#0'e'#195'q'#255#160#215#169#255#156#213#165#255#152#211#161#255#148#208
+#157#255#144#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'
+#195#132#255'z'#193#128#255'v'#190'|'#255'E'#140'J'#255'!c$'#196#255#255#255
+#0#255#255#255#0'h'#199't'#255#165#218#174#255#162#216#171#255#158#214#167
+#255#154#212#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202
+#144#255#133#199#139#255#129#197#135#255'}'#194#130#255'J'#145'P'#255'%i)'
+#201#255#255#255#0#255#255#255#0'h'#199't'#255'h'#199't'#255'e'#195'q'#255'a'
+#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'
+#255'A'#145'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'#209#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0'A'#145'I'#247';'#136'B'#219#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0'G'#153'O'#187'A'#145'I'#6#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#9'NumGlyphs'#2#0#7'OnClick'#7#12'Fact1InClick'#8'TabOrder'#2#4#0#0#7'TBitBt'
+'n'#8'Fact1Out'#4'Left'#3#208#0#6'Height'#2#29#3'Top'#3#160#0#5'Width'#2' '
+#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16
+#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0'M'#161'V'#6'G'#153'O'#184#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'S'#169'\'#217'M'#161'V'#247'G'#153'O8'
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131#255'['#170'd'#255
+'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255'%'
+'i)'#255'!c$'#255#29'^ '#255#255#255#255#0#255#255#255#0'e'#195'q'#196'{'#200
+#134#255#156#213#165#255#152#211#161#255#148#208#157#255#144#206#152#255#139
+#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'
+#190'|'#255'r'#189'x'#255'!c$'#255#255#255#255#0#255#255#255#0'h'#199't'#201
+#127#204#138#255#162#216#171#255#158#214#167#255#154#212#163#255#150#210#159
+#255#147#207#154#255#142#204#149#255#137#202#144#255#133#199#139#255#129#197
,#135#255'}'#194#130#255'x'#192'~'#255'%i)'#255#255#255#255#0#255#255#255#0
+#255#255#255#0'h'#199't'#209#128#205#139#255'|'#201#135#255']'#184'h'#255'X'
+#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'
+#255'5'#128';'#255'/x5'#255'*p/'#255#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0'h'#199't'#219'e'#195'q'#247#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0'h'#199't'#6'h'#199't'#187#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#13
+'Fact1OutClick'#8'TabOrder'#2#5#0#0#7'TBitBtn'#7'Fact2In'#4'Left'#3#208#0#6
+'Height'#2#29#3'Top'#3#216#0#5'Width'#2' '#10'Glyph.Data'#10':'#4#0#0'6'#4#0
+#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0
+#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0'!c$'#184#29'^ '#6#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0'*p/8%i)'#247'!c$'#217#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'
+#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'?'
+#136'E'#255'Y'#161'^'#255'D'#139'I'#255'!c$'#207#255#255#255#0#255#255#255#0
+#255#255#255#0'e'#195'q'#255#160#215#169#255#156#213#165#255#152#211#161#255
+#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142#255#130#198#137
+#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'E'#140'J'#255'!c$'#196#255
+#255#255#0#255#255#255#0'h'#199't'#255#165#218#174#255#162#216#171#255#158
+#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255#142#204#149#255
+#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130#255'J'#145'P'#255
+'%i)'#201#255#255#255#0#255#255#255#0'h'#199't'#255'h'#199't'#255'e'#195'q'
+#255'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'
+#153'O'#255'A'#145'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'#209#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0'A'#145'I'#247';'#136'B'#219#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0'G'#153'O'#187'A'#145'I'#6#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
,#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#12'Fact2InClick'#8'TabOrder'#2#6
+#0#0#7'TBitBtn'#8'Fact2Out'#4'Left'#3#208#0#6'Height'#2#29#3'Top'#3#0#1#5'Wi'
+'dth'#2' '#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('
+#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0
+#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0'M'#161'V'#6'G'#153'O'#184
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0'S'#169'\'#217'M'#161'V'#247
+'G'#153'O8'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131#255'['
+#170'd'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255
+'*p/'#255'%i)'#255'!c$'#255#29'^ '#255#255#255#255#0#255#255#255#0'e'#195'q'
+#196'{'#200#134#255#156#213#165#255#152#211#161#255#148#208#157#255#144#206
+#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255'z'
+#193#128#255'v'#190'|'#255'r'#189'x'#255'!c$'#255#255#255#255#0#255#255#255#0
+'h'#199't'#201#127#204#138#255#162#216#171#255#158#214#167#255#154#212#163
+#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255#133#199
+#139#255#129#197#135#255'}'#194#130#255'x'#192'~'#255'%i)'#255#255#255#255#0
+#255#255#255#0#255#255#255#0'h'#199't'#209#128#205#139#255'|'#201#135#255']'
+#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'
+#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0'h'#199't'#219'e'#195'q'#247#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0'h'#199't'#6'h'#199't'#187#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7
+'OnClick'#7#13'Fact2OutClick'#8'TabOrder'#2#7#0#0#11'TStaticText'#11'StaticT'
+'ext2'#4'Left'#3#0#1#6'Height'#2#17#3'Top'#2'p'#5'Width'#2'S'#7'Caption'#6#17
+'Factor 1 Variable'#8'TabOrder'#2#8#0#0#5'TEdit'#7'Factor1'#4'Left'#3#0#1#6
,'Height'#2#23#3'Top'#3#136#0#5'Width'#3#135#0#8'TabOrder'#2#9#4'Text'#6#5'Ed'
+'it1'#0#0#11'TStaticText'#11'StaticText3'#4'Left'#3#0#1#6'Height'#2#13#3'Top'
+#3#216#0#5'Width'#2'_'#7'Caption'#6#17'Factor 2 Variable'#8'TabOrder'#2#10#0
+#0#5'TEdit'#7'Factor2'#4'Left'#3#0#1#6'Height'#2#23#3'Top'#3#240#0#5'Width'#3
+#135#0#8'TabOrder'#2#11#4'Text'#6#5'Edit1'#0#0#7'TBitBtn'#7'Fact3In'#4'Left'
+#3#208#0#6'Height'#2#29#3'Top'#3'8'#1#5'Width'#2' '#10'Glyph.Data'#10':'#4#0
+#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0
+#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'!c$'#184#29'^ '#6#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0'*p/8%i)'#247'!c$'#217#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'
+#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'
+#255'?'#136'E'#255'Y'#161'^'#255'D'#139'I'#255'!c$'#207#255#255#255#0#255#255
+#255#0#255#255#255#0'e'#195'q'#255#160#215#169#255#156#213#165#255#152#211
+#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142#255#130
+#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'E'#140'J'#255'!c$'
+#196#255#255#255#0#255#255#255#0'h'#199't'#255#165#218#174#255#162#216#171
+#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255#142#204
+#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130#255'J'
+#145'P'#255'%i)'#201#255#255#255#0#255#255#255#0'h'#199't'#255'h'#199't'#255
+'e'#195'q'#255'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161
+'V'#255'G'#153'O'#255'A'#145'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'#209#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0'A'#145'I'#247';'#136'B'#219#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0'G'#153'O'#187'A'#145'I'#6#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#12'Fact3InClick'#8'TabOrd'
+'er'#2#12#0#0#7'TBitBtn'#8'Fact3Out'#4'Left'#3#208#0#6'Height'#2#29#3'Top'#3
+'`'#1#5'Width'#2' '#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'
+#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0
+#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
,#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'M'#161'V'#6'G'#153
+'O'#184#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'S'#169'\'#217'M'#161'V'
+#247'G'#153'O8'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131#255
+'['#170'd'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'
+#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255#255#255#255#0#255#255#255#0'e'#195
+'q'#196'{'#200#134#255#156#213#165#255#152#211#161#255#148#208#157#255#144
+#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255
+'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!c$'#255#255#255#255#0#255#255
+#255#0'h'#199't'#201#127#204#138#255#162#216#171#255#158#214#167#255#154#212
+#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255#133
+#199#139#255#129#197#135#255'}'#194#130#255'x'#192'~'#255'%i)'#255#255#255
+#255#0#255#255#255#0#255#255#255#0'h'#199't'#209#128#205#139#255'|'#201#135
+#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'
+#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#219'e'#195'q'#247#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#6'h'#199't'#187#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyp'
+'hs'#2#0#7'OnClick'#7#13'Fact3OutClick'#8'TabOrder'#2#13#0#0#11'TStaticText'
+#11'StaticText4'#4'Left'#3#0#1#6'Height'#2#12#3'Top'#3'8'#1#5'Width'#2'X'#7
+'Caption'#6#14'Factor 3 Clark'#8'TabOrder'#2#14#0#0#5'TEdit'#7'Factor3'#4'Le'
+'ft'#3#0#1#6'Height'#2#23#3'Top'#3'P'#1#5'Width'#3#135#0#8'TabOrder'#2#15#4
+'Text'#6#5'Edit1'#0#0#5'TEdit'#6'DepVar'#4'Left'#3#1#1#6'Height'#2#23#3'Top'
+#2')'#5'Width'#3#135#0#8'TabOrder'#2#16#4'Text'#6#6'DepVar'#0#0#9'TGroupBox'
+#9'GroupBox1'#4'Left'#3#246#1#6'Height'#3#163#0#3'Top'#2#21#5'Width'#3#194#0
+#7'Caption'#6#21'Post-Hoc Comparisons:'#12'ClientHeight'#3#145#0#11'ClientWi'
+'dth'#3#190#0#8'TabOrder'#2#17#0#9'TCheckBox'#10'ScheffeChk'#4'Left'#2#8#6'H'
+'eight'#2#19#3'Top'#2#8#5'Width'#2'P'#7'Caption'#6#10'ScheffeChk'#8'TabOrder'
+#2#0#0#0#9'TCheckBox'#11'TukeyHSDChk'#4'Left'#2#8#6'Height'#2#19#3'Top'#2'#'
+#5'Width'#2's'#7'Caption'#6#17'Tukey HSD (= n''s)'#8'TabOrder'#2#1#0#0#9'TCh'
+'eckBox'#9'TukeyBChk'#4'Left'#2#8#6'Height'#2#19#3'Top'#2';'#5'Width'#2'c'#7
+'Caption'#6#15'Tukey B (= n''s)'#8'TabOrder'#2#2#0#0#9'TCheckBox'#14'TukeyKr'
+'amerChk'#4'Left'#2#8#6'Height'#2#19#3'Top'#2'S'#5'Width'#2'_'#7'Caption'#6
+#12'Tukey-Kramer'#8'TabOrder'#2#3#0#0#9'TCheckBox'#14'NewmanKeulsChk'#4'Left'
+#2#8#6'Height'#2#19#3'Top'#2'k'#5'Width'#3#138#0#7'Caption'#6#20'Newman-Keul'
+'s (= n''s)'#8'TabOrder'#2#4#0#0#0#9'TGroupBox'#10'OptionsBox'#4'Left'#3#246
+#1#6'Height'#2'h'#3'Top'#3#248#0#5'Width'#3#193#0#7'Caption'#6#7'Options'#12
+'ClientHeight'#2'V'#11'ClientWidth'#3#189#0#8'TabOrder'#2#18#0#9'TCheckBox'#9
+'PlotMeans'#4'Left'#2#8#6'Height'#2#19#3'Top'#2#6#5'Width'#3#154#0#7'Caption'
,#6#24'Plot Means Using 3D bars'#8'TabOrder'#2#0#0#0#9'TCheckBox'#11'Plot2DLi'
+'nes'#4'Left'#2#8#6'Height'#2#19#3'Top'#2#29#5'Width'#3#154#0#7'Caption'#6#24
+'Plot Means Using 2D bars'#8'TabOrder'#2#1#0#0#9'TCheckBox'#11'Plot3DLines'#4
+'Left'#2#8#6'Height'#2#19#3'Top'#2'5'#5'Width'#3#171#0#7'Caption'#6#28'Plot '
+'Means Horizontally (3D)'#8'TabOrder'#2#2#0#0#0#6'TLabel'#6'Label3'#4'Left'#2
+#7#6'Height'#2#16#3'Top'#3#159#1#5'Width'#3#150#0#7'Caption'#6#29'Alpha Leve'
+'l for Overall Tests'#11'ParentColor'#8#0#0#5'TEdit'#12'OverAllAlpha'#4'Left'
+#3#158#0#6'Height'#2#23#3'Top'#3#152#1#5'Width'#2'-'#8'TabOrder'#2#19#4'Text'
+#6#12'OverAllAlpha'#0#0#6'TLabel'#6'Label4'#4'Left'#3#223#0#6'Height'#2#16#3
+'Top'#3#159#1#5'Width'#3#166#0#7'Caption'#6#31'Alpha Level for Post-Hoc Test'
+'s:'#11'ParentColor'#8#0#0#5'TEdit'#9'PostAlpha'#4'Left'#3#128#1#6'Height'#2
+#23#3'Top'#3#152#1#5'Width'#2'3'#8'TabOrder'#2#20#4'Text'#6#9'PostAlpha'#0#0
+#7'TButton'#7'HelpBtn'#3'Tag'#2'k'#4'Left'#2'`'#6'Height'#2' '#3'Top'#3#191#1
+#5'Width'#2'N'#7'Caption'#6#4'Help'#7'OnClick'#7#12'HelpBtnClick'#8'TabOrder'
+#2#21#0#0#7'TButton'#8'ResetBtn'#4'Left'#3#207#0#6'Height'#2' '#3'Top'#3#191
+#1#5'Width'#2'M'#7'Caption'#6#5'Reset'#7'OnClick'#7#13'ResetBtnClick'#8'TabO'
+'rder'#2#22#0#0#7'TButton'#9'CancelBtn'#4'Left'#3'@'#1#6'Height'#2' '#3'Top'
+#3#192#1#5'Width'#2'M'#7'Caption'#6#6'Cancel'#11'ModalResult'#2#2#8'TabOrder'
+#2#23#0#0#7'TButton'#10'ComputeBtn'#4'Left'#3#176#1#6'Height'#2#31#3'Top'#3
+#192#1#5'Width'#2'M'#7'Caption'#6#7'Compute'#7'OnClick'#7#15'ComputeBtnClick'
+#8'TabOrder'#2#24#0#0#7'TButton'#9'ReturnBtn'#4'Left'#3' '#2#6'Height'#2#31#3
+'Top'#3#192#1#5'Width'#2'M'#7'Caption'#6#6'Return'#11'ModalResult'#2#1#8'Tab'
+'Order'#2#25#0#0#12'TRadioButton'#11'InteractBtn'#4'Left'#3#0#2#6'Height'#2
+#19#3'Top'#3#152#1#5'Width'#2'g'#7'Caption'#6#16'Get Interactions'#8'TabOrde'
+'r'#2#26#0#0#0
]);

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,163 @@
object OneSampFrm: TOneSampFrm
Left = 163
Height = 256
Top = 117
Width = 487
Caption = 'One Sample Tests'
ClientHeight = 256
ClientWidth = 487
OnShow = FormShow
LCLVersion = '0.9.30'
object RadioGroup1: TRadioGroup
Left = 8
Height = 184
Top = 8
Width = 196
AutoFill = True
Caption = 'Statistic of Interest'
ChildSizing.LeftRightSpacing = 6
ChildSizing.TopBottomSpacing = 6
ChildSizing.EnlargeHorizontal = crsHomogenousChildResize
ChildSizing.EnlargeVertical = crsHomogenousChildResize
ChildSizing.ShrinkHorizontal = crsScaleChilds
ChildSizing.ShrinkVertical = crsScaleChilds
ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 1
ClientHeight = 166
ClientWidth = 192
ItemIndex = 0
Items.Strings = (
'Sample Mean'
'Sample Proportion'
'Sample Correlation'
'Sample Variance'
)
OnClick = RadioGroup1Click
TabOrder = 0
end
object Panel1: TPanel
Left = 218
Height = 177
Top = 15
Width = 254
ClientHeight = 177
ClientWidth = 254
TabOrder = 1
object Label1: TLabel
Left = 16
Height = 16
Top = 17
Width = 100
Caption = 'Sample Proportion'
ParentColor = False
end
object Label2: TLabel
Left = 16
Height = 16
Top = 49
Width = 119
Caption = 'Population Parameter:'
ParentColor = False
end
object Label3: TLabel
Left = 16
Height = 16
Top = 81
Width = 66
Caption = 'Sample Size:'
ParentColor = False
end
object Label4: TLabel
Left = 18
Height = 16
Top = 113
Width = 113
Caption = 'Confidence Level (%)'
ParentColor = False
end
object Label5: TLabel
Left = 16
Height = 16
Top = 145
Width = 146
Caption = 'Sample Standard Deviation:'
ParentColor = False
end
object Statistic: TEdit
Left = 150
Height = 23
Top = 9
Width = 83
TabOrder = 0
Text = 'Statistic'
end
object StdDev: TEdit
Left = 150
Height = 23
Top = 137
Width = 83
TabOrder = 1
Text = 'Edit1'
end
end
object Parameter: TEdit
Left = 368
Height = 23
Top = 56
Width = 83
TabOrder = 2
Text = 'Edit1'
end
object Size: TEdit
Left = 368
Height = 23
Top = 88
Width = 83
TabOrder = 3
Text = 'Edit1'
end
object CInterval: TEdit
Left = 368
Height = 23
Top = 120
Width = 83
TabOrder = 4
Text = 'Edit1'
end
object ResetBtn: TButton
Left = 8
Height = 31
Top = 208
Width = 89
Caption = 'Reset'
OnClick = ResetBtnClick
TabOrder = 5
end
object CancelBtn: TButton
Left = 115
Height = 31
Top = 209
Width = 89
Caption = 'Cancel'
ModalResult = 2
TabOrder = 6
end
object OKBtn: TButton
Left = 376
Height = 31
Top = 209
Width = 89
Caption = 'Return'
ModalResult = 1
TabOrder = 7
end
object ComputeBtn: TButton
Left = 264
Height = 31
Top = 209
Width = 89
Caption = 'Compute'
OnClick = ComputeBtnClick
TabOrder = 8
end
end

View File

@ -0,0 +1,44 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TOneSampFrm','FORMDATA',[
'TPF0'#11'TOneSampFrm'#10'OneSampFrm'#4'Left'#3#163#0#6'Height'#3#0#1#3'Top'#2
+'u'#5'Width'#3#231#1#7'Caption'#6#16'One Sample Tests'#12'ClientHeight'#3#0#1
+#11'ClientWidth'#3#231#1#6'OnShow'#7#8'FormShow'#10'LCLVersion'#6#6'0.9.30'#0
+#11'TRadioGroup'#11'RadioGroup1'#4'Left'#2#8#6'Height'#3#184#0#3'Top'#2#8#5
+'Width'#3#196#0#8'AutoFill'#9#7'Caption'#6#21'Statistic of Interest'#28'Chil'
+'dSizing.LeftRightSpacing'#2#6#28'ChildSizing.TopBottomSpacing'#2#6#29'Child'
+'Sizing.EnlargeHorizontal'#7#24'crsHomogenousChildResize'#27'ChildSizing.Enl'
+'argeVertical'#7#24'crsHomogenousChildResize'#28'ChildSizing.ShrinkHorizonta'
+'l'#7#14'crsScaleChilds'#26'ChildSizing.ShrinkVertical'#7#14'crsScaleChilds'
+#18'ChildSizing.Layout'#7#29'cclLeftToRightThenTopToBottom'#27'ChildSizing.C'
+'ontrolsPerLine'#2#1#12'ClientHeight'#3#166#0#11'ClientWidth'#3#192#0#9'Item'
+'Index'#2#0#13'Items.Strings'#1#6#11'Sample Mean'#6#17'Sample Proportion'#6
+#18'Sample Correlation'#6#15'Sample Variance'#0#7'OnClick'#7#16'RadioGroup1C'
+'lick'#8'TabOrder'#2#0#0#0#6'TPanel'#6'Panel1'#4'Left'#3#218#0#6'Height'#3
+#177#0#3'Top'#2#15#5'Width'#3#254#0#12'ClientHeight'#3#177#0#11'ClientWidth'
+#3#254#0#8'TabOrder'#2#1#0#6'TLabel'#6'Label1'#4'Left'#2#16#6'Height'#2#16#3
+'Top'#2#17#5'Width'#2'd'#7'Caption'#6#17'Sample Proportion'#11'ParentColor'#8
+#0#0#6'TLabel'#6'Label2'#4'Left'#2#16#6'Height'#2#16#3'Top'#2'1'#5'Width'#2
+'w'#7'Caption'#6#21'Population Parameter:'#11'ParentColor'#8#0#0#6'TLabel'#6
+'Label3'#4'Left'#2#16#6'Height'#2#16#3'Top'#2'Q'#5'Width'#2'B'#7'Caption'#6
+#12'Sample Size:'#11'ParentColor'#8#0#0#6'TLabel'#6'Label4'#4'Left'#2#18#6'H'
+'eight'#2#16#3'Top'#2'q'#5'Width'#2'q'#7'Caption'#6#20'Confidence Level (%)'
+#11'ParentColor'#8#0#0#6'TLabel'#6'Label5'#4'Left'#2#16#6'Height'#2#16#3'Top'
+#3#145#0#5'Width'#3#146#0#7'Caption'#6#26'Sample Standard Deviation:'#11'Par'
+'entColor'#8#0#0#5'TEdit'#9'Statistic'#4'Left'#3#150#0#6'Height'#2#23#3'Top'
+#2#9#5'Width'#2'S'#8'TabOrder'#2#0#4'Text'#6#9'Statistic'#0#0#5'TEdit'#6'Std'
+'Dev'#4'Left'#3#150#0#6'Height'#2#23#3'Top'#3#137#0#5'Width'#2'S'#8'TabOrder'
+#2#1#4'Text'#6#5'Edit1'#0#0#0#5'TEdit'#9'Parameter'#4'Left'#3'p'#1#6'Height'
+#2#23#3'Top'#2'8'#5'Width'#2'S'#8'TabOrder'#2#2#4'Text'#6#5'Edit1'#0#0#5'TEd'
+'it'#4'Size'#4'Left'#3'p'#1#6'Height'#2#23#3'Top'#2'X'#5'Width'#2'S'#8'TabOr'
+'der'#2#3#4'Text'#6#5'Edit1'#0#0#5'TEdit'#9'CInterval'#4'Left'#3'p'#1#6'Heig'
+'ht'#2#23#3'Top'#2'x'#5'Width'#2'S'#8'TabOrder'#2#4#4'Text'#6#5'Edit1'#0#0#7
+'TButton'#8'ResetBtn'#4'Left'#2#8#6'Height'#2#31#3'Top'#3#208#0#5'Width'#2'Y'
+#7'Caption'#6#5'Reset'#7'OnClick'#7#13'ResetBtnClick'#8'TabOrder'#2#5#0#0#7
+'TButton'#9'CancelBtn'#4'Left'#2's'#6'Height'#2#31#3'Top'#3#209#0#5'Width'#2
+'Y'#7'Caption'#6#6'Cancel'#11'ModalResult'#2#2#8'TabOrder'#2#6#0#0#7'TButton'
+#5'OKBtn'#4'Left'#3'x'#1#6'Height'#2#31#3'Top'#3#209#0#5'Width'#2'Y'#7'Capti'
+'on'#6#6'Return'#11'ModalResult'#2#1#8'TabOrder'#2#7#0#0#7'TButton'#10'Compu'
+'teBtn'#4'Left'#3#8#1#6'Height'#2#31#3'Top'#3#209#0#5'Width'#2'Y'#7'Caption'
+#6#7'Compute'#7'OnClick'#7#15'ComputeBtnClick'#8'TabOrder'#2#8#0#0#0
]);

View File

@ -0,0 +1,226 @@
unit OneSampUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
ExtCtrls, StdCtrls;
type
{ TOneSampFrm }
TOneSampFrm = class(TForm)
ComputeBtn: TButton;
ResetBtn: TButton;
CancelBtn: TButton;
OKBtn: TButton;
Statistic: TEdit;
Parameter: TEdit;
Size: TEdit;
CInterval: TEdit;
StdDev: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Panel1: TPanel;
RadioGroup1: TRadioGroup;
procedure ComputeBtnClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure RadioGroup1Click(Sender: TObject);
procedure ResetBtnClick(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
OneSampFrm: TOneSampFrm;
implementation
uses OutPutUnit, FunctionsLib;
{ TOneSampFrm }
procedure TOneSampFrm.ResetBtnClick(Sender: TObject);
begin
Statistic.Text := '';
Parameter.Text := '';
Size.Text := '';
CInterval.Text := '95.0';
StdDev.Text := '';
RadioGroup1.ItemIndex := 0;
end;
procedure TOneSampFrm.FormShow(Sender: TObject);
begin
ResetBtnClick(self);
end;
procedure TOneSampFrm.RadioGroup1Click(Sender: TObject);
begin
if RadioGroup1.ItemIndex <> 0 then
begin
Label5.Visible := false;
StdDev.Visible := false;
end
else
begin
Label5.Visible := true;
StdDev.Visible := true;
end;
end;
procedure TOneSampFrm.ComputeBtnClick(Sender: TObject);
var
i, N : integer;
sampmean, sampprop, sampcor, sampvar, Confidence, alpha, df : double;
sampsize, popmean, popprop, popcor, popvar, stderr : double;
z, zprobability, zreject, zconf, UCL, LCL, sampsd : double;
t, tprobability, testt : double;
poptrans, samptrans, chisqrval, chiprob, lowchi, hichi, testchi : double;
outline : string;
begin
// Initialize output form
OutPutFrm.RichEdit.Clear;
// OutPutFrm.RichEdit.ParaGraph.Alignment := taLeftJustify;
N := round(StrToFloat(Size.Text));
Confidence := StrToFloat(CInterval.Text) / 100.0;
Case RadioGroup1.ItemIndex of
0 : begin
sampmean := StrToFloat(Statistic.Text);
popmean := StrToFloat(Parameter.Text);
sampsd := StrToFloat(StdDev.Text);
df := N;
stderr := sampsd / sqrt(df);
df := N-1;
t := (sampmean - popmean) / stderr;
tprobability := probt(t,df);
alpha := (1.0 - confidence) / 2.0;
testt := inverset((1.0 - alpha),df);
UCL := sampmean + testt * stderr;
LCL := sampmean - testt * stderr;
OutPutFrm.RichEdit.Lines.Add('ANALYSIS OF A SAMPLE MEAN');
OutPutFrm.RichEdit.Lines.Add('');
outline := format('Sample Mean = %6.3f',[sampmean]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Population Mean = %6.3f',[popmean]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Sample Size = %d',[N]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Standard error of Mean = %6.3f',[stderr]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('t test statistic = %6.3f with probability %6.3f',[t,tprobability]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('t value required for rejection = %6.3f',[testt]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Confidence Interval = (%6.3f,%6.3f)',[LCL,UCL]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
1 : begin
sampprop := StrToFloat(Statistic.Text);
popprop := StrToFloat(Parameter.Text);
stderr := sqrt((sampprop * (1.0 - sampprop)) / N);
z := (sampprop - popprop) / StdErr;
zprobability := 1.0 - probz(z);
zreject := inversez(confidence);
zconf := abs(inversez((1.0 - confidence) / 2.0));
UCL := sampprop + (zconf * stderr);
LCL := sampprop - (zconf * stderr);
OutPutFrm.RichEdit.Lines.Add('ANALYSIS OF A SAMPLE PROPORTION');
OutPutFrm.RichEdit.Lines.Add('');
outline := format('Sample Proportion = %6.3f',[sampprop]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Population Proportion = %6.3f',[popprop]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Sample Size = %d',[N]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Standard error of proportion = %6.3f',[stderr]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('z test statistic = %6.3f with probability > P = %6.3f',[z,zprobability]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('z value required for rejection = %6.3f',[zreject]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Confidence Interval = (%6.3f,%6.3f)',[LCL,UCL]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
2 : begin
sampcor := StrToFloat(Statistic.Text);
popcor := StrToFloat(Parameter.Text);
zconf := abs(inversez((1.0 - confidence) / 2.0));
samptrans := ln((1.0 + sampcor) / (1.0 - sampcor)) / 2.0;
poptrans := ln((1.0 + popcor) / (1.0 - popcor)) / 2.0;
stderr := sqrt(1.0 / (N - 3.0));
z := (samptrans - poptrans) / stderr;
zprobability := probz(z);
alpha := (1.0 - confidence) / 2.0;
zreject := inversez(1.0 - alpha);
UCL := samptrans + (zconf * stderr);
LCL := samptrans - (zconf * stderr);
UCL := (exp(2.0 * UCL) - 1.0) / (exp(2.0 * UCL) + 1.0);
LCL := (exp(2.0 * LCL) - 1.0) / (exp(2.0 * LCL) + 1.0);
OutPutFrm.RichEdit.Lines.Add('ANALYSIS OF A SAMPLE CORRELATION');
OutPutFrm.RichEdit.Lines.Add('');
outline := format('Sample Correlation = %6.3f',[sampcor]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Population Correlation = %6.3f',[popcor]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Sample Size = %d',[N]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('z Transform of sample correlation = %6.3f',[samptrans]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('z Transform of population correlation = %6.3f',[poptrans]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Standard error of transform = %6.3f',[stderr]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('z test statistic = %6.3f with probability %6.3f',[z,zprobability]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('z value required for rejection = %6.3f',[zreject]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Confidence Interval for sample correlation = (%6.3f,%6.3f)',[LCL,UCL]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
3 : begin
sampvar := StrToFloat(Statistic.Text);
popvar := StrToFloat(Parameter.Text);
alpha := 1.0 - confidence;
chisqrval := ((N - 1.0) * sampvar) / Popvar;
chiprob := 1.0 - chisquaredprob(chisqrval,N-1);
lowchi := inversechi((1.0 - alpha / 2.0),N-1);
hichi := inversechi((alpha / 2.0),N-1);
LCL := ((N - 1.0) * sampvar) / lowchi;
UCL := ((N - 1.0) * sampvar) / hichi;
if sampvar > popvar then testchi := lowchi
else testchi := hichi;
OutPutFrm.RichEdit.Lines.Add('ANALYSIS OF A SAMPLE VARIANCE');
OutPutFrm.RichEdit.Lines.Add('');
outline := format('Sample Variance = %6.3f',[sampvar]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Population Variance = %6.3f',[popvar]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Sample Size = %d',[N]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Chi-square statistic = %6.3f with probability > chisquare = %6.3f and D.F. = %d',[chisqrval,chiprob, N-1]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Chi-square value required for rejection = %6.3f',[testchi]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Chi-square Confidence Interval = (%6.3f,%6.3f)',[lowchi,hichi]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Variance Confidence Interval = (%6.3f,%6.3f)',[LCL,UCL]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
end;
OutPutFrm.ShowModal;
end;
initialization
{$I onesampunit.lrs}
end.

View File

@ -0,0 +1,147 @@
object OptionsFrm: TOptionsFrm
Left = 189
Height = 383
Top = 95
Width = 441
Caption = 'Options'
ClientHeight = 383
ClientWidth = 441
OnShow = FormShow
LCLVersion = '0.9.28.2'
object Label1: TLabel
Left = 9
Height = 14
Top = 280
Width = 98
Caption = 'Default File Location'
ParentColor = False
end
object FractionTypeGrp: TRadioGroup
Left = 9
Height = 61
Top = 16
Width = 414
AutoFill = True
Caption = 'Decimal Fraction Usage'
ChildSizing.LeftRightSpacing = 6
ChildSizing.TopBottomSpacing = 6
ChildSizing.EnlargeHorizontal = crsHomogenousChildResize
ChildSizing.EnlargeVertical = crsHomogenousChildResize
ChildSizing.ShrinkHorizontal = crsScaleChilds
ChildSizing.ShrinkVertical = crsScaleChilds
ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 1
ClientHeight = 43
ClientWidth = 410
ItemIndex = 0
Items.Strings = (
'English (default) period separator'
'European (comma) separator'
)
OnClick = FractionTypeGrpClick
TabOrder = 0
end
object MissValsGrp: TRadioGroup
Left = 9
Height = 98
Top = 88
Width = 409
AutoFill = True
Caption = 'Default Missing Values'
ChildSizing.LeftRightSpacing = 6
ChildSizing.TopBottomSpacing = 6
ChildSizing.EnlargeHorizontal = crsHomogenousChildResize
ChildSizing.EnlargeVertical = crsHomogenousChildResize
ChildSizing.ShrinkHorizontal = crsScaleChilds
ChildSizing.ShrinkVertical = crsScaleChilds
ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 1
ClientHeight = 80
ClientWidth = 405
ItemIndex = 3
Items.Strings = (
'Blank '
'Period '
'Zero (0) '
'99999'
)
OnClick = MissValsGrpClick
TabOrder = 1
end
object JustificationGrp: TRadioGroup
Left = 9
Height = 68
Top = 200
Width = 407
AutoFill = True
Caption = 'Justification'
ChildSizing.LeftRightSpacing = 6
ChildSizing.TopBottomSpacing = 6
ChildSizing.EnlargeHorizontal = crsHomogenousChildResize
ChildSizing.EnlargeVertical = crsHomogenousChildResize
ChildSizing.ShrinkHorizontal = crsScaleChilds
ChildSizing.ShrinkVertical = crsScaleChilds
ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 1
ClientHeight = 50
ClientWidth = 403
ItemIndex = 2
Items.Strings = (
'Left'
'Center'
'Right'
)
OnClick = JustificationGrpClick
TabOrder = 2
end
object FilePathEdit: TEdit
Left = 10
Height = 21
Top = 296
Width = 404
TabOrder = 3
end
object CancelBtn: TButton
Left = 216
Height = 28
Top = 336
Width = 82
Cancel = True
Caption = 'Cancel'
OnClick = CancelBtnClick
TabOrder = 4
end
object SaveBtn: TButton
Left = 328
Height = 28
Top = 336
Width = 78
Caption = 'Save'
ModalResult = 1
OnClick = SaveBtnClick
TabOrder = 5
end
object BrowseBtn: TButton
Left = 112
Height = 28
Top = 336
Width = 76
Caption = 'Browse...'
OnClick = BrowseBtnClick
TabOrder = 6
end
object HelpBtn: TButton
Tag = 135
Left = 10
Height = 28
Top = 336
Width = 81
Caption = 'Help'
OnClick = HelpBtnClick
TabOrder = 7
end
object SelDir: TSelectDirectoryDialog
left = 408
top = 264
end
end

View File

@ -0,0 +1,50 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TOptionsFrm','FORMDATA',[
'TPF0'#11'TOptionsFrm'#10'OptionsFrm'#4'Left'#3#189#0#6'Height'#3#127#1#3'Top'
+#2'_'#5'Width'#3#185#1#7'Caption'#6#7'Options'#12'ClientHeight'#3#127#1#11'C'
+'lientWidth'#3#185#1#6'OnShow'#7#8'FormShow'#10'LCLVersion'#6#8'0.9.28.2'#0#6
+'TLabel'#6'Label1'#4'Left'#2#9#6'Height'#2#14#3'Top'#3#24#1#5'Width'#2'b'#7
+'Caption'#6#21'Default File Location'#11'ParentColor'#8#0#0#11'TRadioGroup'
+#15'FractionTypeGrp'#4'Left'#2#9#6'Height'#2'='#3'Top'#2#16#5'Width'#3#158#1
+#8'AutoFill'#9#7'Caption'#6#22'Decimal Fraction Usage'#28'ChildSizing.LeftRi'
+'ghtSpacing'#2#6#28'ChildSizing.TopBottomSpacing'#2#6#29'ChildSizing.Enlarge'
+'Horizontal'#7#24'crsHomogenousChildResize'#27'ChildSizing.EnlargeVertical'#7
+#24'crsHomogenousChildResize'#28'ChildSizing.ShrinkHorizontal'#7#14'crsScale'
+'Childs'#26'ChildSizing.ShrinkVertical'#7#14'crsScaleChilds'#18'ChildSizing.'
+'Layout'#7#29'cclLeftToRightThenTopToBottom'#27'ChildSizing.ControlsPerLine'
+#2#1#12'ClientHeight'#2'+'#11'ClientWidth'#3#154#1#9'ItemIndex'#2#0#13'Items'
+'.Strings'#1#6'"English (default) period separator'#6#26'European (comma) se'
+'parator'#0#7'OnClick'#7#20'FractionTypeGrpClick'#8'TabOrder'#2#0#0#0#11'TRa'
+'dioGroup'#11'MissValsGrp'#4'Left'#2#9#6'Height'#2'b'#3'Top'#2'X'#5'Width'#3
+#153#1#8'AutoFill'#9#7'Caption'#6#22'Default Missing Values'#28'ChildSizing.'
+'LeftRightSpacing'#2#6#28'ChildSizing.TopBottomSpacing'#2#6#29'ChildSizing.E'
+'nlargeHorizontal'#7#24'crsHomogenousChildResize'#27'ChildSizing.EnlargeVert'
+'ical'#7#24'crsHomogenousChildResize'#28'ChildSizing.ShrinkHorizontal'#7#14
+'crsScaleChilds'#26'ChildSizing.ShrinkVertical'#7#14'crsScaleChilds'#18'Chil'
+'dSizing.Layout'#7#29'cclLeftToRightThenTopToBottom'#27'ChildSizing.Controls'
+'PerLine'#2#1#12'ClientHeight'#2'P'#11'ClientWidth'#3#149#1#9'ItemIndex'#2#3
+#13'Items.Strings'#1#6#6'Blank '#6#7'Period '#6#9'Zero (0) '#6#5'99999'#0#7
+'OnClick'#7#16'MissValsGrpClick'#8'TabOrder'#2#1#0#0#11'TRadioGroup'#16'Just'
+'ificationGrp'#4'Left'#2#9#6'Height'#2'D'#3'Top'#3#200#0#5'Width'#3#151#1#8
+'AutoFill'#9#7'Caption'#6#13'Justification'#28'ChildSizing.LeftRightSpacing'
+#2#6#28'ChildSizing.TopBottomSpacing'#2#6#29'ChildSizing.EnlargeHorizontal'#7
+#24'crsHomogenousChildResize'#27'ChildSizing.EnlargeVertical'#7#24'crsHomoge'
+'nousChildResize'#28'ChildSizing.ShrinkHorizontal'#7#14'crsScaleChilds'#26'C'
+'hildSizing.ShrinkVertical'#7#14'crsScaleChilds'#18'ChildSizing.Layout'#7#29
+'cclLeftToRightThenTopToBottom'#27'ChildSizing.ControlsPerLine'#2#1#12'Clien'
+'tHeight'#2'2'#11'ClientWidth'#3#147#1#9'ItemIndex'#2#2#13'Items.Strings'#1#6
+#4'Left'#6#6'Center'#6#5'Right'#0#7'OnClick'#7#21'JustificationGrpClick'#8'T'
+'abOrder'#2#2#0#0#5'TEdit'#12'FilePathEdit'#4'Left'#2#10#6'Height'#2#21#3'To'
+'p'#3'('#1#5'Width'#3#148#1#8'TabOrder'#2#3#0#0#7'TButton'#9'CancelBtn'#4'Le'
+'ft'#3#216#0#6'Height'#2#28#3'Top'#3'P'#1#5'Width'#2'R'#6'Cancel'#9#7'Captio'
+'n'#6#6'Cancel'#7'OnClick'#7#14'CancelBtnClick'#8'TabOrder'#2#4#0#0#7'TButto'
+'n'#7'SaveBtn'#4'Left'#3'H'#1#6'Height'#2#28#3'Top'#3'P'#1#5'Width'#2'N'#7'C'
+'aption'#6#4'Save'#11'ModalResult'#2#1#7'OnClick'#7#12'SaveBtnClick'#8'TabOr'
+'der'#2#5#0#0#7'TButton'#9'BrowseBtn'#4'Left'#2'p'#6'Height'#2#28#3'Top'#3'P'
+#1#5'Width'#2'L'#7'Caption'#6#9'Browse...'#7'OnClick'#7#14'BrowseBtnClick'#8
+'TabOrder'#2#6#0#0#7'TButton'#7'HelpBtn'#3'Tag'#3#135#0#4'Left'#2#10#6'Heigh'
+'t'#2#28#3'Top'#3'P'#1#5'Width'#2'Q'#7'Caption'#6#4'Help'#7'OnClick'#7#12'He'
+'lpBtnClick'#8'TabOrder'#2#7#0#0#22'TSelectDirectoryDialog'#6'SelDir'#4'left'
+#3#152#1#3'top'#3#8#1#0#0#0
]);

View File

@ -0,0 +1,194 @@
unit OptionsUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, ExtCtrls, Globals, Clipbrd, EditBtn, contexthelpunit;
type
{ TOptionsFrm }
TOptionsFrm = class(TForm)
BrowseBtn: TButton;
CancelBtn: TButton;
HelpBtn: TButton;
SaveBtn: TButton;
FilePathEdit: TEdit;
Label1: TLabel;
FractionTypeGrp: TRadioGroup;
MissValsGrp: TRadioGroup;
JustificationGrp: TRadioGroup;
SelDir: TSelectDirectoryDialog;
procedure BrowseBtnClick(Sender: TObject);
procedure CancelBtnClick(Sender: TObject);
procedure FractionTypeGrpClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure HelpBtnClick(Sender: TObject);
procedure JustificationGrpClick(Sender: TObject);
procedure MissValsGrpClick(Sender: TObject);
procedure SaveBtnClick(Sender: TObject);
procedure InitOptions(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
DefaultPath : string;
FractionType : integer;
DefaultMiss : integer;
DefaultJust : integer;
end;
var
OptionsFrm: TOptionsFrm;
implementation
{ TOptionsFrm }
procedure TOptionsFrm.FormShow(Sender: TObject);
begin
InitOptions(Self);
end;
procedure TOptionsFrm.HelpBtnClick(Sender: TObject);
begin
ContextHelpForm.HelpMessage((Sender as TButton).tag);
end;
procedure TOptionsFrm.JustificationGrpClick(Sender: TObject);
begin
DefaultJust := JustificationGrp.ItemIndex;
end;
procedure TOptionsFrm.MissValsGrpClick(Sender: TObject);
begin
DefaultMiss := MissValsGrp.ItemIndex;
end;
procedure TOptionsFrm.SaveBtnClick(Sender: TObject);
var
pathname : string;
filename : string;
priorfile : string;
F : TextFile;
i : integer;
approved : integer;
begin
if LoggedOn then approved := 1 else approved := 0;
if FilePathEdit.Text <> '' then pathname := FilePathEdit.Text
else pathname := OpenStatPath;
FractionType := FractionTypeGrp.ItemIndex;
DefaultMiss := MissValsGrp.ItemIndex;
DefaultJust := JustificationGrp.ItemIndex;
filename := 'Options.txt';
AssignFile(F,filename);
ReWrite(F);
Writeln(F,approved);
Writeln(F,FractionType);
Writeln(F,DefaultMiss);
Writeln(F,DefaultJust);
Writeln(F,pathname);
{ for i := 0 to 7 do
begin
priorfile := OS3MainFrm.MainMenu1.Items[0].Items[11].Items[i].Caption;
Writeln(F,priorfile);
end; }
CloseFile(F);
end;
procedure TOptionsFrm.CancelBtnClick(Sender: TObject);
begin
OptionsFrm.Hide;
end;
procedure TOptionsFrm.BrowseBtnClick(Sender: TObject);
begin
if SelDir.Execute then
begin
FilePathEdit.Text := SelDir.FileName;
end;
end;
procedure TOptionsFrm.FractionTypeGrpClick(Sender: TObject);
begin
if FractionTypeGrp.ItemIndex = 0 then
begin
FractionType := 0;
DecimalSeparator := '.'
end
else begin
FractionType := 1;
DecimalSeparator := ',';
end;
end;
procedure TOptionsFrm.InitOptions(Sender: TObject);
label full;
var
pathname : string;
filename : string;
priorfile : string;
F : TextFile;
i : integer;
approved : integer;
begin
ChDir(OpenStatPath);
filename := 'Options.txt';
if fileexists(filename) then
begin
AssignFile(F,filename);
Reset(F);
Readln(F,approved);
if approved = 0 then LoggedOn := false else LoggedOn := true;
Readln(F,FractionType);
FractionTypeGrp.ItemIndex := FractionType;
Readln(F,DefaultMiss);
MissValsGrp.ItemIndex := DefaultMiss;
Readln(F,DefaultJust);
JustificationGrp.ItemIndex := DefaultJust;
Readln(F,pathname);
FilePathEdit.Text := pathname;
i := 0;
{ while NOT Eof(F) do
begin
Readln(F,priorfile);
OS3MainFrm.MainMenu1.Items[0].Items[11].Items[i].Action := OS3MainFrm.ActionList1.Actions[i];
OS3MainFrm.MainMenu1.Items[0].Items[11].Items[i].Caption := priorfile;
i := i + 1;
if i > 7 then goto full;
end; }
full: CloseFile(F);
end;
if FilePathEdit.Text = '' then
begin
pathname := GetCurrentDir;
ChDir(pathname);
FilePathEdit.Text := pathname;
end;
{ else begin
pathname := FilePathEdit.Text;
ChDir(pathname);
end; }
if FractionTypeGrp.ItemIndex = 0 then
begin
FractionType := 0;
DecimalSeparator := '.'
end
else begin
FractionType := 1;
DecimalSeparator := ',';
end;
end;
initialization
{$I optionsunit.lrs}
end.

View File

@ -0,0 +1,125 @@
object OutputFrm: TOutputFrm
Left = 61
Height = 535
Top = 91
Width = 825
Caption = 'Output'
ClientHeight = 535
ClientWidth = 825
Font.CharSet = ANSI_CHARSET
Font.Color = clBlack
Font.Height = -13
Font.Name = 'Courier New'
Font.Pitch = fpFixed
Font.Quality = fqDraft
LCLVersion = '0.9.30.4'
object Panel1: TPanel
Left = 0
Height = 49
Top = 0
Width = 825
Align = alTop
ClientHeight = 49
ClientWidth = 825
TabOrder = 0
object SaveFileBtn: TButton
Left = 7
Height = 28
Top = 8
Width = 65
Caption = 'Save'
OnClick = SaveFileBtnClick
TabOrder = 0
end
object OpenFileBtn: TButton
Left = 80
Height = 26
Top = 9
Width = 84
Caption = 'Open File'
OnClick = OpenFileBtnClick
TabOrder = 1
end
object FontBtn: TButton
Left = 176
Height = 27
Top = 8
Width = 72
Caption = 'Font'
OnClick = FontBtnClick
TabOrder = 2
end
object CutBtn: TButton
Left = 336
Height = 25
Top = 9
Width = 73
Caption = 'Cut'
OnClick = CutBtnClick
TabOrder = 3
end
object CopyBtn: TButton
Left = 415
Height = 26
Top = 8
Width = 73
Caption = 'Copy'
OnClick = CopyBtnClick
TabOrder = 4
end
object PasteBtn: TButton
Left = 495
Height = 25
Top = 9
Width = 70
Caption = 'Paste'
OnClick = PasteBtnClick
TabOrder = 5
end
object PrintBtn: TButton
Left = 584
Height = 24
Top = 10
Width = 65
Caption = 'Print'
OnClick = PrintBtnClick
TabOrder = 6
end
object ReturnBtn: TButton
Left = 663
Height = 27
Top = 9
Width = 68
Caption = 'Return'
ModalResult = 1
TabOrder = 7
end
end
object RichEdit: TMemo
Left = 0
Height = 486
Top = 49
Width = 825
Align = alClient
ScrollBars = ssBoth
TabOrder = 1
end
object OpenDialog1: TOpenDialog
left = 35
top = 218
end
object SaveDialog1: TSaveDialog
left = 100
top = 217
end
object FontDialog1: TFontDialog
MinFontSize = 0
MaxFontSize = 0
left = 208
top = 214
end
object PrintDialog1: TPrintDialog
left = 296
top = 218
end
end

View File

@ -0,0 +1,31 @@
LazarusResources.Add('TOutputFrm','FORMDATA',[
'TPF0'#10'TOutputFrm'#9'OutputFrm'#4'Left'#2'='#6'Height'#3#23#2#3'Top'#2'['#5
+'Width'#3'9'#3#7'Caption'#6#6'Output'#12'ClientHeight'#3#23#2#11'ClientWidth'
+#3'9'#3#12'Font.CharSet'#7#12'ANSI_CHARSET'#10'Font.Color'#7#7'clBlack'#11'F'
+'ont.Height'#2#243#9'Font.Name'#6#11'Courier New'#10'Font.Pitch'#7#7'fpFixed'
+#12'Font.Quality'#7#7'fqDraft'#10'LCLVersion'#6#8'0.9.30.4'#0#6'TPanel'#6'Pa'
+'nel1'#4'Left'#2#0#6'Height'#2'1'#3'Top'#2#0#5'Width'#3'9'#3#5'Align'#7#5'al'
+'Top'#12'ClientHeight'#2'1'#11'ClientWidth'#3'9'#3#8'TabOrder'#2#0#0#7'TButt'
+'on'#11'SaveFileBtn'#4'Left'#2#7#6'Height'#2#28#3'Top'#2#8#5'Width'#2'A'#7'C'
+'aption'#6#4'Save'#7'OnClick'#7#16'SaveFileBtnClick'#8'TabOrder'#2#0#0#0#7'T'
+'Button'#11'OpenFileBtn'#4'Left'#2'P'#6'Height'#2#26#3'Top'#2#9#5'Width'#2'T'
+#7'Caption'#6#9'Open File'#7'OnClick'#7#16'OpenFileBtnClick'#8'TabOrder'#2#1
+#0#0#7'TButton'#7'FontBtn'#4'Left'#3#176#0#6'Height'#2#27#3'Top'#2#8#5'Width'
+#2'H'#7'Caption'#6#4'Font'#7'OnClick'#7#12'FontBtnClick'#8'TabOrder'#2#2#0#0
+#7'TButton'#6'CutBtn'#4'Left'#3'P'#1#6'Height'#2#25#3'Top'#2#9#5'Width'#2'I'
+#7'Caption'#6#3'Cut'#7'OnClick'#7#11'CutBtnClick'#8'TabOrder'#2#3#0#0#7'TBut'
+'ton'#7'CopyBtn'#4'Left'#3#159#1#6'Height'#2#26#3'Top'#2#8#5'Width'#2'I'#7'C'
+'aption'#6#4'Copy'#7'OnClick'#7#12'CopyBtnClick'#8'TabOrder'#2#4#0#0#7'TButt'
+'on'#8'PasteBtn'#4'Left'#3#239#1#6'Height'#2#25#3'Top'#2#9#5'Width'#2'F'#7'C'
+'aption'#6#5'Paste'#7'OnClick'#7#13'PasteBtnClick'#8'TabOrder'#2#5#0#0#7'TBu'
+'tton'#8'PrintBtn'#4'Left'#3'H'#2#6'Height'#2#24#3'Top'#2#10#5'Width'#2'A'#7
+'Caption'#6#5'Print'#7'OnClick'#7#13'PrintBtnClick'#8'TabOrder'#2#6#0#0#7'TB'
+'utton'#9'ReturnBtn'#4'Left'#3#151#2#6'Height'#2#27#3'Top'#2#9#5'Width'#2'D'
+#7'Caption'#6#6'Return'#11'ModalResult'#2#1#8'TabOrder'#2#7#0#0#0#5'TMemo'#8
+'RichEdit'#4'Left'#2#0#6'Height'#3#230#1#3'Top'#2'1'#5'Width'#3'9'#3#5'Align'
+#7#8'alClient'#10'ScrollBars'#7#6'ssBoth'#8'TabOrder'#2#1#0#0#11'TOpenDialog'
+#11'OpenDialog1'#4'left'#2'#'#3'top'#3#218#0#0#0#11'TSaveDialog'#11'SaveDial'
+'og1'#4'left'#2'd'#3'top'#3#217#0#0#0#11'TFontDialog'#11'FontDialog1'#11'Min'
+'FontSize'#2#0#11'MaxFontSize'#2#0#4'left'#3#208#0#3'top'#3#214#0#0#0#12'TPr'
+'intDialog'#12'PrintDialog1'#4'left'#3'('#1#3'top'#3#218#0#0#0#0
]);

View File

@ -0,0 +1,132 @@
unit OutPutUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
ExtCtrls, Buttons, StdCtrls, Printers, clipbrd, PrintersDlgs;
type
{ TOutputFrm }
TOutputFrm = class(TForm)
PrintDialog1: TPrintDialog;
RichEdit: TMemo;
ReturnBtn: TButton;
PrintBtn: TButton;
PasteBtn: TButton;
CopyBtn: TButton;
CutBtn: TButton;
FontBtn: TButton;
FontDialog1: TFontDialog;
OpenFileBtn: TButton;
SaveFileBtn: TButton;
OpenDialog1: TOpenDialog;
Panel1: TPanel;
SaveDialog1: TSaveDialog;
procedure CopyBtnClick(Sender: TObject);
procedure CutBtnClick(Sender: TObject);
procedure FontBtnClick(Sender: TObject);
procedure OpenFileBtnClick(Sender: TObject);
procedure PasteBtnClick(Sender: TObject);
procedure PrintBtnClick(Sender: TObject);
procedure SaveFileBtnClick(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
OutputFrm: TOutputFrm;
implementation
{ TOutputFrm }
procedure TOutputFrm.PrintBtnClick(Sender: TObject);
VAR
aline : string;
NoLines, i, X, Y, txthi : integer;
begin
Printer.Orientation := poPortrait;
NoLines := OutPutFrm.RichEdit.Lines.Count;
X := 5; // left margin
Y := 5; // top margin
PrintDialog1.MinPage := 1;
PrintDialog1.MaxPage := 1;
PrintDialog1.ToPage := 1;
PrintDialog1.Options := [poPageNums];
Printer.Copies := PrintDialog1.Copies;
if FontDialog1.Execute then
begin
Printer.Canvas.Font := FontDialog1.Font;
Printer.Canvas.Font.Height := FontDialog1.Font.Height;
end;
if PrintDialog1.Execute then
begin
// Printer.Canvas.Font.Height := 50;
Printer.Canvas.Font.Height := Printer.PageHeight div 80;
txthi := Printer.Canvas.Font.Height;
Printer.BeginDoc;
for i := 0 to NoLines-1 do
begin
aline := OutPutFrm.RichEdit.Lines[i];
Printer.Canvas.TextOut(X,Y,aline);
// txthi := Printer.Canvas.Font.Height;
Y := Y + abs(txthi);
if Y >= Printer.PageHeight - 10 then
begin
Printer.NewPage;
Y := 5;
end;
end;
Printer.EndDoc;
end;
end;
procedure TOutputFrm.OpenFileBtnClick(Sender: TObject);
begin
OpenDialog1.Filter := 'LazStats text files (*.txt)|*.TXT|All files (*.*)|*.*';
OpenDialog1.FilterIndex := 1; {text file}
if OpenDialog1.Execute then RichEdit.Lines.LoadFromFile(OpenDialog1.FileName);
end;
procedure TOutputFrm.PasteBtnClick(Sender: TObject);
begin
RichEdit.PasteFromClipboard;
end;
procedure TOutputFrm.CutBtnClick(Sender: TObject);
begin
RichEdit.CutToClipboard;
end;
procedure TOutputFrm.FontBtnClick(Sender: TObject);
begin
FontDialog1.Execute;
RichEdit.Font := FontDialog1.Font;
// RichEdit.SelAttributes.Assign(FontDialog1.Font);
end;
procedure TOutputFrm.CopyBtnClick(Sender: TObject);
begin
RichEdit.CopyToClipboard;
end;
procedure TOutputFrm.SaveFileBtnClick(Sender: TObject);
begin
SaveDialog1.Filter := 'LazStats text files (*.txt|*.TXT|All files (*.*)|*.*';
SaveDialog1.FilterIndex := 1; {text file}
SaveDialog1.Title := 'Print to File: ';
if SaveDialog1.Execute then RichEdit.Lines.SaveToFile(SaveDialog1.FileName);
end;
initialization
{$I outputunit.lrs}
end.

View File

@ -0,0 +1,392 @@
object PartialsFrm: TPartialsFrm
Left = 190
Height = 401
Top = 104
Width = 381
Caption = 'Partial Correlation'
ClientHeight = 401
ClientWidth = 381
OnShow = FormShow
LCLVersion = '0.9.28.2'
object Label1: TLabel
Left = 7
Height = 14
Top = 8
Width = 94
Caption = 'Available Variables:'
ParentColor = False
end
object Label2: TLabel
Left = 224
Height = 14
Top = 8
Width = 143
Caption = 'Selected Dependent Variable:'
ParentColor = False
end
object Label3: TLabel
Left = 223
Height = 14
Top = 120
Width = 134
Caption = 'Selected Predictor Variables'
ParentColor = False
end
object Label4: TLabel
Left = 32
Height = 14
Top = 280
Width = 114
Caption = 'Variables Partialed Out:'
ParentColor = False
end
object VarList: TListBox
Left = 8
Height = 209
Top = 24
Width = 154
ItemHeight = 0
MultiSelect = True
TabOrder = 0
end
object DepInBtn: TBitBtn
Left = 174
Height = 31
Top = 24
Width = 37
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE
6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580
3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3
71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7
74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7
74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = DepInBtnClick
TabOrder = 1
end
object DepOutBtn: TBitBtn
Left = 174
Height = 31
Top = 56
Width = 37
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = DepOutBtnClick
TabOrder = 2
end
object PredInBtn: TBitBtn
Left = 174
Height = 31
Top = 136
Width = 37
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE
6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580
3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3
71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7
74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7
74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = PredInBtnClick
TabOrder = 3
end
object PredOutBtn: TBitBtn
Left = 174
Height = 31
Top = 168
Width = 37
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = PredOutBtnClick
TabOrder = 4
end
object PartInBtn: TBitBtn
Left = 48
Height = 31
Top = 240
Width = 37
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00256929C4216425C9FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF002D7533CF488F4DFF458C4AFF2265
26D1FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF003C8A430638833ED9519957FF79C07EFF76BF7CFF468D
4BFF236627DB20622306FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF0042924AB83D8C45F765AD6CFF7DC282FF7AC180FF4B92
50FF276D2CF7246828BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF0043944B384E9A55FF81C587FF7EC385FF317A
36FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0045954CFF85C78CFF82C689FF3682
3DFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A9E53FF8ACA91FF87C98EFF3C8A
43FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0050A659FF8ECC95FF8BCB93FF4292
4AFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0056AD5FFF93CF9AFF90CE98FF489A
50FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF005BB465FF96D29FFF94D09CFF4EA2
57FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF005FBB6AFF9AD4A3FF98D3A1FF53AA
5DFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0063C06FFF9ED6A7FF9CD4A5FF59B2
63FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0066C572FFA2D8ABFFA0D7A9FF5DB8
68FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0068C774FF67C673FF65C270FF62BE
6DFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = PartInBtnClick
TabOrder = 5
end
object PartOutBtn: TBitBtn
Left = 88
Height = 31
Top = 240
Width = 37
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00286E2DFF256929FF216425FF1E60
22FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF002D7533FF74BD7AFF72BD78FF2265
26FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00337D39FF79C07EFF76BF7CFF266B
2BFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0039853FFF7DC282FF7AC180FF2B72
30FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF003F8D46FF81C587FF7EC385FF317A
36FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0045954CFF85C78CFF82C689FF3682
3DFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A9E53FF8ACA91FF87C98EFF3C8A
43FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0050A659FF8ECC95FF8BCB93FF4292
4AFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0056AD5FFF93CF9AFF90CE98FF489A
50FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF005BB465FF96D29FFF94D09CFF5DAC
65FF499C5238FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF0065C371BB62BF6EF779C683FF9AD4A3FF98D3A1FF7DC3
86FF4FA458F74A9E53B8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF0068C7740666C472DB7CCA87FF9ED6A7FF9CD4A5FF73C0
7DFF55AC5ED950A65906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0066C572D17ECA88FF7BC885FF5DB8
68CFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0067C673C965C270C4FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = PartOutBtnClick
TabOrder = 6
end
object DepVar: TEdit
Left = 224
Height = 21
Top = 40
Width = 142
TabOrder = 7
Text = 'DepVar'
end
object PredList: TListBox
Left = 224
Height = 108
Top = 136
Width = 144
ItemHeight = 0
TabOrder = 8
end
object PartList: TListBox
Left = 8
Height = 92
Top = 296
Width = 155
ItemHeight = 0
TabOrder = 9
end
object ResetBtn: TButton
Left = 288
Height = 29
Top = 280
Width = 77
Caption = 'Reset'
OnClick = ResetBtnClick
TabOrder = 10
end
object CancelBtn: TButton
Left = 178
Height = 29
Top = 320
Width = 77
Caption = 'Cancel'
ModalResult = 2
TabOrder = 11
end
object ComputeBtn: TButton
Left = 288
Height = 29
Top = 320
Width = 77
Caption = 'Compute'
OnClick = ComputeBtnClick
TabOrder = 12
end
object ReturnBtn: TButton
Left = 232
Height = 29
Top = 359
Width = 77
Caption = 'Return'
ModalResult = 1
TabOrder = 13
end
object HelpBtn: TButton
Tag = 136
Left = 174
Height = 28
Top = 280
Width = 81
Caption = 'Help'
OnClick = HelpBtnClick
TabOrder = 14
end
end

View File

@ -0,0 +1,341 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TPartialsFrm','FORMDATA',[
'TPF0'#12'TPartialsFrm'#11'PartialsFrm'#4'Left'#3#190#0#6'Height'#3#145#1#3'T'
+'op'#2'h'#5'Width'#3'}'#1#7'Caption'#6#19'Partial Correlation'#12'ClientHeig'
+'ht'#3#145#1#11'ClientWidth'#3'}'#1#6'OnShow'#7#8'FormShow'#10'LCLVersion'#6
+#8'0.9.28.2'#0#6'TLabel'#6'Label1'#4'Left'#2#7#6'Height'#2#14#3'Top'#2#8#5'W'
+'idth'#2'^'#7'Caption'#6#20'Available Variables:'#11'ParentColor'#8#0#0#6'TL'
+'abel'#6'Label2'#4'Left'#3#224#0#6'Height'#2#14#3'Top'#2#8#5'Width'#3#143#0#7
+'Caption'#6#28'Selected Dependent Variable:'#11'ParentColor'#8#0#0#6'TLabel'
+#6'Label3'#4'Left'#3#223#0#6'Height'#2#14#3'Top'#2'x'#5'Width'#3#134#0#7'Cap'
+'tion'#6#28'Selected Predictor Variables'#11'ParentColor'#8#0#0#6'TLabel'#6
+'Label4'#4'Left'#2' '#6'Height'#2#14#3'Top'#3#24#1#5'Width'#2'r'#7'Caption'#6
+#24'Variables Partialed Out:'#11'ParentColor'#8#0#0#8'TListBox'#7'VarList'#4
+'Left'#2#8#6'Height'#3#209#0#3'Top'#2#24#5'Width'#3#154#0#10'ItemHeight'#2#0
+#11'MultiSelect'#9#8'TabOrder'#2#0#0#0#7'TBitBtn'#8'DepInBtn'#4'Left'#3#174#0
+#6'Height'#2#31#3'Top'#2#24#5'Width'#2'%'#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0
+'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4
+#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0'!c$'#184#29'^ '#6#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0'*p/8%i)'#247'!c$'#217#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'
+#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'?'
+#136'E'#255'Y'#161'^'#255'D'#139'I'#255'!c$'#207#255#255#255#0#255#255#255#0
+#255#255#255#0'e'#195'q'#255#160#215#169#255#156#213#165#255#152#211#161#255
+#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142#255#130#198#137
+#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'E'#140'J'#255'!c$'#196#255
+#255#255#0#255#255#255#0'h'#199't'#255#165#218#174#255#162#216#171#255#158
+#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255#142#204#149#255
+#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130#255'J'#145'P'#255
+'%i)'#201#255#255#255#0#255#255#255#0'h'#199't'#255'h'#199't'#255'e'#195'q'
+#255'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'
+#153'O'#255'A'#145'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'#209#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0'A'#145'I'#247';'#136'B'#219#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0'G'#153'O'#187'A'#145'I'#6#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#13'DepInBtnClick'#8'TabOrder'#2
,#1#0#0#7'TBitBtn'#9'DepOutBtn'#4'Left'#3#174#0#6'Height'#2#31#3'Top'#2'8'#5
+'Width'#2'%'#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0
+'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0
+#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'M'#161'V'#6'G'#153'O'
+#184#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'S'#169'\'#217'M'#161'V'
+#247'G'#153'O8'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131#255
+'['#170'd'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'
+#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255#255#255#255#0#255#255#255#0'e'#195
+'q'#196'{'#200#134#255#156#213#165#255#152#211#161#255#148#208#157#255#144
+#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255
+'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!c$'#255#255#255#255#0#255#255
+#255#0'h'#199't'#201#127#204#138#255#162#216#171#255#158#214#167#255#154#212
+#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255#133
+#199#139#255#129#197#135#255'}'#194#130#255'x'#192'~'#255'%i)'#255#255#255
+#255#0#255#255#255#0#255#255#255#0'h'#199't'#209#128#205#139#255'|'#201#135
+#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'
+#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#219'e'#195'q'#247#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#6'h'#199't'#187#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyp'
+'hs'#2#0#7'OnClick'#7#14'DepOutBtnClick'#8'TabOrder'#2#2#0#0#7'TBitBtn'#9'Pr'
+'edInBtn'#4'Left'#3#174#0#6'Height'#2#31#3'Top'#3#136#0#5'Width'#2'%'#10'Gly'
+'ph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0
+#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
,#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'!c$'
+#184#29'^ '#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0'*p/8%i)'#247'!c$'#217#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0'a'#190'm'#255']'#184'h'#255'X'
+#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'
+#255'5'#128';'#255'?'#136'E'#255'Y'#161'^'#255'D'#139'I'#255'!c$'#207#255#255
+#255#0#255#255#255#0#255#255#255#0'e'#195'q'#255#160#215#169#255#156#213#165
+#255#152#211#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135#201
+#142#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'E'#140
+'J'#255'!c$'#196#255#255#255#0#255#255#255#0'h'#199't'#255#165#218#174#255
+#162#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207#154
+#255#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'#194
+#130#255'J'#145'P'#255'%i)'#201#255#255#255#0#255#255#255#0'h'#199't'#255'h'
+#199't'#255'e'#195'q'#255'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'
+#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255'Z'#163'b'#255'U'#157'\'#255'/'
+'x5'#209#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'A'#145'I'#247';'#136'B'#219#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'G'#153'O'#187'A'#145'I'#6#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#14'PredInBtnClick'
+#8'TabOrder'#2#3#0#0#7'TBitBtn'#10'PredOutBtn'#4'Left'#3#174#0#6'Height'#2#31
+#3'Top'#3#168#0#5'Width'#2'%'#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0
+#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0
+#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'M'#161'V'
+#6'G'#153'O'#184#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'S'#169'\'#217
+'M'#161'V'#247'G'#153'O8'#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0']'#184'h'#207'q'#190'{'#255'z'#193
+#131#255'['#170'd'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'
+#255'/x5'#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255#255#255#255#0#255#255#255
+#0'e'#195'q'#196'{'#200#134#255#156#213#165#255#152#211#161#255#148#208#157
,#255#144#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195
+#132#255'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!c$'#255#255#255#255#0
+#255#255#255#0'h'#199't'#201#127#204#138#255#162#216#171#255#158#214#167#255
+#154#212#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144
+#255#133#199#139#255#129#197#135#255'}'#194#130#255'x'#192'~'#255'%i)'#255
+#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#209#128#205#139#255'|'
+#201#135#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153
+'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#219'e'#195'q'#247
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#6'h'#199't'#187
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#15'PredOutBtnClick'#8'TabOrder'#2#4#0#0
+#7'TBitBtn'#9'PartInBtn'#4'Left'#2'0'#6'Height'#2#31#3'Top'#3#240#0#5'Width'
+#2'%'#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0
+#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0'%i)'#196'!d%'#201#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+'-u3'#207'H'#143'M'#255'E'#140'J'#255'"e&'#209#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'<'#138'C'#6'8'#131'>'#217'Q'#153'W'
+#255'y'#192'~'#255'v'#191'|'#255'F'#141'K'#255'#f'''#219' b#'#6#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0'B'#146'J'#184'='#140'E'#247'e'#173'l'#255'}'#194#130
+#255'z'#193#128#255'K'#146'P'#255'''m,'#247'$h('#187#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0'C'#148'K8N'#154'U'#255#129#197#135#255'~'#195
+#133#255'1z6'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0'E'#149'L'#255#133#199#140#255#130#198#137
+#255'6'#130'='#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'J'#158'S'#255#138#202#145#255#135#201
+#142#255'<'#138'C'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'P'#166'Y'#255#142#204#149#255#139#203
+#147#255'B'#146'J'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'V'#173'_'#255#147#207#154#255#144#206
+#152#255'H'#154'P'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'['#180'e'#255#150#210#159#255#148#208
+#156#255'N'#162'W'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'_'#187'j'#255#154#212#163#255#152#211
,#161#255'S'#170']'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'c'#192'o'#255#158#214#167#255#156#212
+#165#255'Y'#178'c'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'f'#197'r'#255#162#216#171#255#160#215
+#169#255']'#184'h'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#255'g'#198's'#255'e'#194'p'
+#255'b'#190'm'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#14'PartInBtnClick'
+#8'TabOrder'#2#5#0#0#7'TBitBtn'#10'PartOutBtn'#4'Left'#2'X'#6'Height'#2#31#3
+'Top'#3#240#0#5'Width'#2'%'#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0
+#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0
+'d'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0'(n-'#255'%i)'#255'!d%'#255#30'`"'#255#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0'-u3'#255't'#189'z'#255'r'#189'x'#255'"e&'#255#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0'3}9'#255'y'#192'~'#255'v'#191'|'#255'&k+'#255#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'9'#133
+'?'#255'}'#194#130#255'z'#193#128#255'+r0'#255#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'?'#141'F'
+#255#129#197#135#255'~'#195#133#255'1z6'#255#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'E'#149'L'#255
+#133#199#140#255#130#198#137#255'6'#130'='#255#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'J'#158'S'
+#255#138#202#145#255#135#201#142#255'<'#138'C'#255#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'P'#166'Y'
+#255#142#204#149#255#139#203#147#255'B'#146'J'#255#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'V'#173'_'
+#255#147#207#154#255#144#206#152#255'H'#154'P'#255#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'['#180'e'
+#255#150#210#159#255#148#208#156#255']'#172'e'#255'I'#156'R8'#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'e'#195'q'#187'b'#191'n'#247'y'#198#131
+#255#154#212#163#255#152#211#161#255'}'#195#134#255'O'#164'X'#247'J'#158'S'
+#184#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#6'f'#196'r'#219'|'#202
+#135#255#158#214#167#255#156#212#165#255's'#192'}'#255'U'#172'^'#217'P'#166
+'Y'#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'f'#197
+'r'#209'~'#202#136#255'{'#200#133#255']'#184'h'#207#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0'g'#198's'#201'e'#194'p'#196#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
,#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7
+'OnClick'#7#15'PartOutBtnClick'#8'TabOrder'#2#6#0#0#5'TEdit'#6'DepVar'#4'Lef'
+'t'#3#224#0#6'Height'#2#21#3'Top'#2'('#5'Width'#3#142#0#8'TabOrder'#2#7#4'Te'
+'xt'#6#6'DepVar'#0#0#8'TListBox'#8'PredList'#4'Left'#3#224#0#6'Height'#2'l'#3
+'Top'#3#136#0#5'Width'#3#144#0#10'ItemHeight'#2#0#8'TabOrder'#2#8#0#0#8'TLis'
+'tBox'#8'PartList'#4'Left'#2#8#6'Height'#2'\'#3'Top'#3'('#1#5'Width'#3#155#0
+#10'ItemHeight'#2#0#8'TabOrder'#2#9#0#0#7'TButton'#8'ResetBtn'#4'Left'#3' '#1
+#6'Height'#2#29#3'Top'#3#24#1#5'Width'#2'M'#7'Caption'#6#5'Reset'#7'OnClick'
+#7#13'ResetBtnClick'#8'TabOrder'#2#10#0#0#7'TButton'#9'CancelBtn'#4'Left'#3
+#178#0#6'Height'#2#29#3'Top'#3'@'#1#5'Width'#2'M'#7'Caption'#6#6'Cancel'#11
+'ModalResult'#2#2#8'TabOrder'#2#11#0#0#7'TButton'#10'ComputeBtn'#4'Left'#3' '
+#1#6'Height'#2#29#3'Top'#3'@'#1#5'Width'#2'M'#7'Caption'#6#7'Compute'#7'OnCl'
+'ick'#7#15'ComputeBtnClick'#8'TabOrder'#2#12#0#0#7'TButton'#9'ReturnBtn'#4'L'
+'eft'#3#232#0#6'Height'#2#29#3'Top'#3'g'#1#5'Width'#2'M'#7'Caption'#6#6'Retu'
+'rn'#11'ModalResult'#2#1#8'TabOrder'#2#13#0#0#7'TButton'#7'HelpBtn'#3'Tag'#3
+#136#0#4'Left'#3#174#0#6'Height'#2#28#3'Top'#3#24#1#5'Width'#2'Q'#7'Caption'
+#6#4'Help'#7'OnClick'#7#12'HelpBtnClick'#8'TabOrder'#2#14#0#0#0
]);

View File

@ -0,0 +1,374 @@
unit PartialsUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, Buttons, MainUnit, MatrixLib, FunctionsLib, OutPutUnit, Globals,
contexthelpunit;
type
{ TPartialsFrm }
TPartialsFrm = class(TForm)
DepInBtn: TBitBtn;
DepOutBtn: TBitBtn;
HelpBtn: TButton;
PredInBtn: TBitBtn;
PredOutBtn: TBitBtn;
PartInBtn: TBitBtn;
PartOutBtn: TBitBtn;
ResetBtn: TButton;
CancelBtn: TButton;
ComputeBtn: TButton;
ReturnBtn: TButton;
DepVar: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
PartList: TListBox;
PredList: TListBox;
VarList: TListBox;
procedure ComputeBtnClick(Sender: TObject);
procedure DepInBtnClick(Sender: TObject);
procedure DepOutBtnClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure HelpBtnClick(Sender: TObject);
procedure PartInBtnClick(Sender: TObject);
procedure PartOutBtnClick(Sender: TObject);
procedure PredInBtnClick(Sender: TObject);
procedure PredOutBtnClick(Sender: TObject);
procedure ResetBtnClick(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
PartialsFrm: TPartialsFrm;
implementation
{ TPartialsFrm }
procedure TPartialsFrm.ResetBtnClick(Sender: TObject);
VAR i : integer;
begin
DepVar.Text := '';
VarList.Clear;
PartList.Clear;
PredList.Clear;
DepInBtn.Visible := true;
DepOutBtn.Visible := false;
PredInBtn.Visible := true;
PredOutBtn.Visible := false;
PartInBtn.Visible := true;
PartOutBtn.Visible := false;
for i := 1 to OS3MainFrm.DataGrid.ColCount - 1 do
VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]);
end;
procedure TPartialsFrm.FormShow(Sender: TObject);
begin
ResetBtnClick(self);
end;
procedure TPartialsFrm.HelpBtnClick(Sender: TObject);
begin
ContextHelpForm.HelpMessage((Sender as TButton).tag);
end;
procedure TPartialsFrm.PartInBtnClick(Sender: TObject);
VAR i, index : integer;
begin
index := VarList.Items.Count;
i := 0;
while i < index do
begin
if (VarList.Selected[i]) then
begin
PartList.Items.Add(VarList.Items.Strings[i]);
VarList.Items.Delete(i);
index := index - 1;
i := 0;
end
else i := i + 1;
end;
PartOutBtn.Visible := true;
end;
procedure TPartialsFrm.PartOutBtnClick(Sender: TObject);
VAR index : integer;
begin
index := PartList.ItemIndex;
VarList.Items.Add(PartList.Items.Strings[index]);
PartList.Items.Delete(index);
if PartList.Items.Count = 0 then PartOutBtn.Visible := false;
end;
procedure TPartialsFrm.PredInBtnClick(Sender: TObject);
VAR i, index : integer;
begin
index := VarList.Items.Count;
i := 0;
while i < index do
begin
if (VarList.Selected[i]) then
begin
PredList.Items.Add(VarList.Items.Strings[i]);
VarList.Items.Delete(i);
index := index - 1;
i := 0;
end
else i := i + 1;
end;
PredOutBtn.Visible:= true;
end;
procedure TPartialsFrm.PredOutBtnClick(Sender: TObject);
VAR index : integer;
begin
index := PredList.ItemIndex;
VarList.Items.Add(PredList.Items.Strings[index]);
PredList.Items.Delete(index);
if PredList.Items.Count = 0 then PredOutBtn.Visible := false;
end;
procedure TPartialsFrm.DepInBtnClick(Sender: TObject);
VAR index : integer;
begin
index := VarList.ItemIndex;
if index < 0 then exit;
DepVar.Text := VarList.Items.Strings[index];
VarList.Items.Delete(index);
DepOutBtn.Visible := true;
DepInBtn.Visible := false;
end;
procedure TPartialsFrm.ComputeBtnClick(Sender: TObject);
var
rmatrix, workmat : DblDyneMat;
Means, Variances, StdDevs, W, Betas : DblDyneVec;
R2Full, R2Cntrl, SemiPart, Partial, df1, df2, F, Prob : double;
NoPredVars, NoCntrlVars, DepVarNo, TotNoVars, pcnt, ccnt, count : integer;
PredVars, CntrlVars : IntDyneVec;
MatVars : IntDyneVec;
outline, varstring : string;
i, j, K, L, NCases : integer;
errorcode : boolean;
vtimesw, W1, v : DblDyneMat;
begin
DepVarNo := 1;
errorcode := false;
// Get no. of predictor and control variables
NoPredVars := PredList.Items.Count;
NoCntrlVars := PartList.Items.Count;
if (NoPredVars = 0) or (NoCntrlVars = 0) then
begin
ShowMessage('You must select at least one predictor and one control variable!');
exit;
end;
TotNoVars := NoPredVars + NoCntrlVars + 1;
count := NoCases;
NCases := NoCases;
// Allocate space required
SetLength(vtimesw,NoVariables,NoVariables);
SetLength(v,NoVariables,NoVariables);
SetLength(W1,NoVariables,NoVariables);
SetLength(rmatrix,NoVariables+1,NoVariables+1); // augmented
SetLength(workmat,NoVariables+1,NoVariables+1); // augmented
SetLength(PredVars,NoVariables);
SetLength(CntrlVars,NoVariables);
SetLength(Means,NoVariables);
SetLength(Variances,NoVariables);
SetLength(StdDevs,NoVariables);
SetLength(W,NoVariables);
SetLength(Betas,NoVariables);
SetLength(MatVars,NoVariables);
OutPutFrm.RichEdit.Clear;
OutPutFrm.RichEdit.Lines.Add('Partial and Semi-Partial Correlation Analysis');
OutPutFrm.RichEdit.Lines.Add('');
// Get column numbers of dependent, predictor and control variables
pcnt := 1;
for i := 0 to NoPredVars - 1 do
begin
varstring := PredList.Items.Strings[i];
for j := 1 to NoVariables do
begin
if varstring = OS3MainFrm.DataGrid.Cells[j,0] then
begin
PredVars[pcnt-1] := j;
pcnt := pcnt + 1;
end;
end;
end;
ccnt := 1;
for i := 0 to NoCntrlVars - 1 do
begin
varstring := PartList.Items.Strings[i];
for j := 1 to NoVariables do
begin
if varstring = OS3MainFrm.DataGrid.Cells[j,0] then
begin
CntrlVars[ccnt-1] := j;
ccnt := ccnt + 1;
end;
end;
end;
varstring := DepVar.Text;
for i := 1 to NoVariables do
if varstring = OS3MainFrm.DataGrid.Cells[i,0] then DepVarNo := i;
outline := format('Dependent variable = %s',[OS3MainFrm.DataGrid.Cells[DepVarNo,0]]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('Predictor Variables:');
for i := 1 to NoPredVars do
begin
outline := format('Variable %d = %s',[i+1,OS3MainFrm.DataGrid.Cells[PredVars[i-1],0]]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('Control Variables:');
for i := 1 to NoCntrlVars do
begin
outline := format('Variable %d = %s',[i+1,OS3MainFrm.DataGrid.Cells[CntrlVars[i-1],0]]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
OutPutFrm.RichEdit.Lines.Add('');
if NoPredVars > 1 then
begin
outline := format('Higher order partialling at level = %d',[NoPredVars]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add('');
end;
if NoCntrlVars > 1 then
begin
outline := format('Multiple partialling with %d variables.',[NoCntrlVars]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add('');
end;
// Now, build the correlation matrix
MatVars[0] := DepVarNo;
for i := 1 to NoPredVars do MatVars[i] := PredVars[i-1];
for i := 1 to NoCntrlVars do MatVars[i + NoPredVars] := CntrlVars[i-1];
Correlations(TotNoVars, MatVars, rmatrix, Means, Variances, StdDevs, errorcode, count);
// Now do Multiple regression models required
// Full model first
for i := 2 to TotNoVars do
for j := 2 to TotNoVars do
workmat[i-2,j-2] := rmatrix[i-1,j-1];
matinv(workmat, vtimesw, v, W1, TotNoVars-1);
R2Full := 0.0;
for i := 1 to TotNoVars-1 do // rows
begin
W[i-1] := 0.0;
for j := 1 to TotNoVars - 1 do W[i-1] := W[i-1] + (workmat[i-1,j-1] * rmatrix[0,j]);
R2Full := R2Full + W[i-1] * rmatrix[0,i];
end;
outline := format('Squared Multiple Correlation with all variables = %6.3f',[R2Full]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('Standardized Regression Coefficients:');
for i := 1 to TotNoVars - 1 do
begin
outline := format('%10s = %6.3f',[OS3MainFrm.DataGrid.Cells[MatVars[i],0],W[i-1]]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
OutPutFrm.RichEdit.Lines.Add('');
// Now do model for Partial and Semi-partial
for i := 1 to NoCntrlVars do
begin
K := i + 1 + NoPredVars;
for j := 1 to NoCntrlVars do
begin
L := j + 1 + NoPredVars;
workmat[i-1,j-1] := rmatrix[K-1,L-1];
end;
end;
matinv(workmat, vtimesw, v, W1, NoCntrlVars);
R2Cntrl := 0.0;
for i := 1 to NoCntrlVars do
begin
L := i + 1 + NoPredVars;
W[i-1] := 0.0;
for j := 1 to NoCntrlVars do
begin
K := j + 1 + NoPredVars;
W[i-1] := W[i-1] + (workmat[i-1,j-1] * rmatrix[0,K-1]);
end;
R2Cntrl := R2Cntrl + W[i-1] * rmatrix[0,L-1];
end;
outline := format('Squared Multiple Correlation with control variables = %6.3f',[R2Cntrl]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('Standardized Regression Coefficients:');
for i := 1 to NoCntrlVars do
begin
outline := format('%10s = %6.3f',[OS3MainFrm.DataGrid.Cells[MatVars[i+NoPredVars],0],W[i-1]]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
OutPutFrm.RichEdit.Lines.Add('');
SemiPart := R2Full - R2Cntrl;
Partial := SemiPart / (1.0 - R2Cntrl);
df1 := TotNoVars - 1 - NoCntrlVars;
df2 := count - TotNoVars;
F := (SemiPart / (1.0 - R2Full)) * (df2 / df1);
Prob := probf(F,df1,df2);
// Report results
OutPutFrm.RichEdit.Lines.Add('');
outline := format('Partial Correlation = %6.3f',[sqrt(Partial)]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add('');
outline := format('Semi-Partial Correlation = %6.3f',[sqrt(SemiPart)]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add('');
outline := format('F = %8.3f with probability = %6.4f, D.F.1 = %3.0f and D.F.2 = %3.0f',[F,Prob,df1,df2]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.ShowModal;
// clean up the heap
MatVars := nil;
Betas := nil;
W := nil;
Variances := nil;
StdDevs := nil;
Means := nil;
CntrlVars := nil;
PredVars := nil;
workmat := nil;
rmatrix := nil;
v := nil;
W1 := nil;
vtimesw := nil;
end;
procedure TPartialsFrm.DepOutBtnClick(Sender: TObject);
begin
VarList.Items.Add(DepVar.Text);
DepVar.Text := '';
DepInBtn.Visible := true;
DepOutBtn.Visible := false;
end;
initialization
{$I partialsunit.lrs}
end.

View File

@ -0,0 +1,461 @@
object PathFrm: TPathFrm
Left = 135
Height = 388
Top = 96
Width = 601
Caption = 'Path Analysis'
ClientHeight = 388
ClientWidth = 601
OnShow = FormShow
LCLVersion = '0.9.26.2'
object Label1: TLabel
Left = 8
Height = 14
Top = 2
Width = 90
Caption = 'Available Variables'
ParentColor = False
end
object Label2: TLabel
Left = 218
Height = 14
Top = 2
Width = 88
Caption = 'Selected Variables'
ParentColor = False
end
object Label3: TLabel
Left = 440
Height = 14
Top = 13
Width = 73
Caption = 'Model Number:'
ParentColor = False
end
object Label4: TLabel
Left = 438
Height = 14
Top = 77
Width = 86
Caption = '"Caused" Variable'
ParentColor = False
end
object Label5: TLabel
Left = 438
Height = 14
Top = 145
Width = 93
Caption = '"Causing" Variables'
ParentColor = False
end
object ListBox1: TListBox
Left = 6
Height = 256
Top = 15
Width = 156
MultiSelect = True
TabOrder = 0
end
object InBtn: TBitBtn
Left = 174
Height = 29
Top = 18
Width = 35
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE
6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580
3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3
71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7
74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7
74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = InBtnClick
TabOrder = 1
end
object OutBtn: TBitBtn
Left = 174
Height = 29
Top = 56
Width = 35
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = OutBtnClick
TabOrder = 2
end
object VarList: TListBox
Left = 222
Height = 252
Top = 17
Width = 160
MultiSelect = True
TabOrder = 3
end
object ModelNo: TEdit
Left = 552
Height = 19
Top = 8
Width = 37
TabOrder = 4
Text = 'ModelNo'
end
object ScrollBar: TScrollBar
Left = 440
Height = 22
Top = 39
Width = 151
TabOrder = 5
OnChange = ScrollBarChange
end
object CausedEdit: TEdit
Left = 437
Height = 20
Top = 95
Width = 156
TabOrder = 6
Text = 'CausedEdit'
end
object CausingList: TListBox
Left = 437
Height = 106
Top = 161
Width = 152
TabOrder = 7
end
object CausedInBtn: TBitBtn
Left = 392
Height = 29
Top = 78
Width = 34
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE
6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580
3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3
71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7
74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7
74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = CausedInBtnClick
TabOrder = 8
end
object CausedOutBtn: TBitBtn
Left = 392
Height = 29
Top = 112
Width = 34
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = CausedOutBtnClick
TabOrder = 9
end
object CausingInBtn: TBitBtn
Left = 392
Height = 29
Top = 168
Width = 34
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE
6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580
3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3
71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7
74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7
74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = CausingInBtnClick
TabOrder = 10
end
object CausingOutBtn: TBitBtn
Left = 392
Height = 29
Top = 200
Width = 34
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = CausingOutBtnClick
TabOrder = 11
end
object ResetModelBtn: TButton
Left = 438
Height = 21
Top = 280
Width = 148
Caption = 'Reset Current Model'
OnClick = ResetModelBtnClick
TabOrder = 12
end
object GroupBox1: TGroupBox
Left = 5
Height = 96
Top = 280
Width = 210
Caption = 'Options'
ClientHeight = 78
ClientWidth = 206
TabOrder = 13
object StatsChk: TCheckBox
Left = 9
Height = 17
Top = 6
Width = 118
Caption = 'Descriptive Statistics'
TabOrder = 0
end
object ModelChk: TCheckBox
Left = 9
Height = 17
Top = 24
Width = 161
Caption = 'Each Model Correlation Matrix'
TabOrder = 1
end
object Reprochk: TCheckBox
Left = 9
Height = 17
Top = 40
Width = 163
Caption = 'Reproduced Correlation Matrix'
TabOrder = 2
end
object SaveChk: TCheckBox
Left = 9
Height = 17
Top = 56
Width = 129
Caption = 'Save Correlation Matrix'
TabOrder = 3
end
end
object ResetBtn: TButton
Left = 224
Height = 27
Top = 321
Width = 69
Caption = 'Reset'
OnClick = ResetBtnClick
TabOrder = 14
end
object CancelBtn: TButton
Left = 320
Height = 27
Top = 321
Width = 69
Caption = 'Cancel'
ModalResult = 2
OnClick = CancelBtnClick
TabOrder = 15
end
object ComputeBtn: TButton
Left = 416
Height = 27
Top = 321
Width = 69
Caption = 'Compute'
OnClick = ComputeBtnClick
TabOrder = 16
end
object ReturnBtn: TButton
Left = 518
Height = 27
Top = 321
Width = 69
Caption = 'Return'
ModalResult = 1
OnClick = ReturnBtnClick
TabOrder = 17
end
object SaveDialog1: TSaveDialog
left = 230
top = 286
end
end

View File

@ -0,0 +1,358 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TPathFrm','FORMDATA',[
'TPF0'#8'TPathFrm'#7'PathFrm'#4'Left'#3#135#0#6'Height'#3#132#1#3'Top'#2'`'#5
+'Width'#3'Y'#2#7'Caption'#6#13'Path Analysis'#12'ClientHeight'#3#132#1#11'Cl'
+'ientWidth'#3'Y'#2#6'OnShow'#7#8'FormShow'#10'LCLVersion'#6#8'0.9.26.2'#0#6
+'TLabel'#6'Label1'#4'Left'#2#8#6'Height'#2#14#3'Top'#2#2#5'Width'#2'Z'#7'Cap'
+'tion'#6#19'Available Variables'#11'ParentColor'#8#0#0#6'TLabel'#6'Label2'#4
+'Left'#3#218#0#6'Height'#2#14#3'Top'#2#2#5'Width'#2'X'#7'Caption'#6#18'Selec'
+'ted Variables'#11'ParentColor'#8#0#0#6'TLabel'#6'Label3'#4'Left'#3#184#1#6
+'Height'#2#14#3'Top'#2#13#5'Width'#2'I'#7'Caption'#6#13'Model Number:'#11'Pa'
+'rentColor'#8#0#0#6'TLabel'#6'Label4'#4'Left'#3#182#1#6'Height'#2#14#3'Top'#2
+'M'#5'Width'#2'V'#7'Caption'#6#17'"Caused" Variable'#11'ParentColor'#8#0#0#6
+'TLabel'#6'Label5'#4'Left'#3#182#1#6'Height'#2#14#3'Top'#3#145#0#5'Width'#2
+']'#7'Caption'#6#19'"Causing" Variables'#11'ParentColor'#8#0#0#8'TListBox'#8
+'ListBox1'#4'Left'#2#6#6'Height'#3#0#1#3'Top'#2#15#5'Width'#3#156#0#11'Multi'
+'Select'#9#8'TabOrder'#2#0#0#0#7'TBitBtn'#5'InBtn'#4'Left'#3#174#0#6'Height'
+#2#29#3'Top'#2#18#5'Width'#2'#'#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0
+#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0
+#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0'!c$'#184#29'^ '#6#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0'*p/8%i)'#247'!c$'#217#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161
+'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'?'#136'E'#255
+'Y'#161'^'#255'D'#139'I'#255'!c$'#207#255#255#255#0#255#255#255#0#255#255#255
+#0'e'#195'q'#255#160#215#169#255#156#213#165#255#152#211#161#255#148#208#157
+#255#144#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195
+#132#255'z'#193#128#255'v'#190'|'#255'E'#140'J'#255'!c$'#196#255#255#255#0
+#255#255#255#0'h'#199't'#255#165#218#174#255#162#216#171#255#158#214#167#255
+#154#212#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144
+#255#133#199#139#255#129#197#135#255'}'#194#130#255'J'#145'P'#255'%i)'#201
+#255#255#255#0#255#255#255#0'h'#199't'#255'h'#199't'#255'e'#195'q'#255'a'#190
+'m'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255
+'A'#145'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'#209#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0'A'#145'I'#247';'#136'B'#219#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0'G'#153'O'#187'A'#145'I'#6#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
,#9'NumGlyphs'#2#0#7'OnClick'#7#10'InBtnClick'#8'TabOrder'#2#1#0#0#7'TBitBtn'
+#6'OutBtn'#4'Left'#3#174#0#6'Height'#2#29#3'Top'#2'8'#5'Width'#2'#'#10'Glyph'
+'.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16
+#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0'M'#161'V'#6'G'#153'O'#184#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0'S'#169'\'#217'M'#161'V'#247'G'#153'O8'#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131#255'['#170'd'#255'G'#153'O'#255
+'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255'%i)'#255'!c$'
+#255#29'^ '#255#255#255#255#0#255#255#255#0'e'#195'q'#196'{'#200#134#255#156
+#213#165#255#152#211#161#255#148#208#157#255#144#206#152#255#139#203#147#255
+#135#201#142#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255
+'r'#189'x'#255'!c$'#255#255#255#255#0#255#255#255#0'h'#199't'#201''#204#138
+#255#162#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207
+#154#255#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'
+#194#130#255'x'#192'~'#255'%i)'#255#255#255#255#0#255#255#255#0#255#255#255#0
+'h'#199't'#209#128#205#139#255'|'#201#135#255']'#184'h'#255'X'#177'b'#255'S'
+#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'
+#255'/x5'#255'*p/'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0'h'#199't'#219'e'#195'q'#247#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+'h'#199't'#6'h'#199't'#187#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#11'OutBtnClick'#8
+'TabOrder'#2#2#0#0#8'TListBox'#7'VarList'#4'Left'#3#222#0#6'Height'#3#252#0#3
+'Top'#2#17#5'Width'#3#160#0#11'MultiSelect'#9#8'TabOrder'#2#3#0#0#5'TEdit'#7
+'ModelNo'#4'Left'#3'('#2#6'Height'#2#19#3'Top'#2#8#5'Width'#2'%'#8'TabOrder'
+#2#4#4'Text'#6#7'ModelNo'#0#0#10'TScrollBar'#9'ScrollBar'#4'Left'#3#184#1#6
+'Height'#2#22#3'Top'#2''''#5'Width'#3#151#0#8'TabOrder'#2#5#8'OnChange'#7#15
+'ScrollBarChange'#0#0#5'TEdit'#10'CausedEdit'#4'Left'#3#181#1#6'Height'#2#20
+#3'Top'#2'_'#5'Width'#3#156#0#8'TabOrder'#2#6#4'Text'#6#10'CausedEdit'#0#0#8
+'TListBox'#11'CausingList'#4'Left'#3#181#1#6'Height'#2'j'#3'Top'#3#161#0#5'W'
+'idth'#3#152#0#8'TabOrder'#2#7#0#0#7'TBitBtn'#11'CausedInBtn'#4'Left'#3#136#1
+#6'Height'#2#29#3'Top'#2'N'#5'Width'#2'"'#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0
+'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4
+#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255
,#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0'!c$'#184#29'^ '#6#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0'*p/8%i)'#247'!c$'#217#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'
+#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'?'
+#136'E'#255'Y'#161'^'#255'D'#139'I'#255'!c$'#207#255#255#255#0#255#255#255#0
+#255#255#255#0'e'#195'q'#255#160#215#169#255#156#213#165#255#152#211#161#255
+#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142#255#130#198#137
+#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'E'#140'J'#255'!c$'#196#255
+#255#255#0#255#255#255#0'h'#199't'#255#165#218#174#255#162#216#171#255#158
+#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255#142#204#149#255
+#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130#255'J'#145'P'#255
+'%i)'#201#255#255#255#0#255#255#255#0'h'#199't'#255'h'#199't'#255'e'#195'q'
+#255'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'
+#153'O'#255'A'#145'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'#209#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0'A'#145'I'#247';'#136'B'#219#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0'G'#153'O'#187'A'#145'I'#6#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#16'CausedInBtnClick'#8'TabOrder'
+#2#8#0#0#7'TBitBtn'#12'CausedOutBtn'#4'Left'#3#136#1#6'Height'#2#29#3'Top'#2
+'p'#5'Width'#2'"'#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0
+#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0
+#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'M'#161'V'#6'G'#153
,'O'#184#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'S'#169'\'#217'M'#161'V'
+#247'G'#153'O8'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131#255
+'['#170'd'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'
+#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255#255#255#255#0#255#255#255#0'e'#195
+'q'#196'{'#200#134#255#156#213#165#255#152#211#161#255#148#208#157#255#144
+#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255
+'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!c$'#255#255#255#255#0#255#255
+#255#0'h'#199't'#201''#204#138#255#162#216#171#255#158#214#167#255#154#212
+#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255#133
+#199#139#255#129#197#135#255'}'#194#130#255'x'#192'~'#255'%i)'#255#255#255
+#255#0#255#255#255#0#255#255#255#0'h'#199't'#209#128#205#139#255'|'#201#135
+#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'
+#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#219'e'#195'q'#247#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#6'h'#199't'#187#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyp'
+'hs'#2#0#7'OnClick'#7#17'CausedOutBtnClick'#8'TabOrder'#2#9#0#0#7'TBitBtn'#12
+'CausingInBtn'#4'Left'#3#136#1#6'Height'#2#29#3'Top'#3#168#0#5'Width'#2'"'#10
+'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0
+#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+'!c$'#184#29'^ '#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'*p/8%i)'#247'!c$'#217
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'a'#190'm'#255']'#184
+'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255
+';'#136'B'#255'5'#128';'#255'?'#136'E'#255'Y'#161'^'#255'D'#139'I'#255'!c$'
+#207#255#255#255#0#255#255#255#0#255#255#255#0'e'#195'q'#255#160#215#169#255
+#156#213#165#255#152#211#161#255#148#208#157#255#144#206#152#255#139#203#147
+#255#135#201#142#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'
+#255'E'#140'J'#255'!c$'#196#255#255#255#0#255#255#255#0'h'#199't'#255#165#218
+#174#255#162#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255#147
,#207#154#255#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135#255
+'}'#194#130#255'J'#145'P'#255'%i)'#201#255#255#255#0#255#255#255#0'h'#199't'
+#255'h'#199't'#255'e'#195'q'#255'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'
+#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255'Z'#163'b'#255'U'#157'\'
+#255'/x5'#209#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0'A'#145'I'#247';'#136'B'#219#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0'G'#153'O'#187'A'#145'I'#6#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#17'CausingI'
+'nBtnClick'#8'TabOrder'#2#10#0#0#7'TBitBtn'#13'CausingOutBtn'#4'Left'#3#136#1
+#6'Height'#2#29#3'Top'#3#200#0#5'Width'#2'"'#10'Glyph.Data'#10':'#4#0#0'6'#4
+#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0
+#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0'M'#161'V'#6'G'#153'O'#184#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0'S'#169'\'#217'M'#161'V'#247'G'#153'O8'#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0']'#184'h'#207
+'q'#190'{'#255'z'#193#131#255'['#170'd'#255'G'#153'O'#255'A'#145'I'#255';'
+#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255#255
+#255#255#0#255#255#255#0'e'#195'q'#196'{'#200#134#255#156#213#165#255#152#211
+#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142#255#130
+#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!c$'
+#255#255#255#255#0#255#255#255#0'h'#199't'#201''#204#138#255#162#216#171#255
+#158#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255#142#204#149
+#255#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130#255'x'#192'~'
+#255'%i)'#255#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#209#128#205
+#139#255'|'#201#135#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'
+#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'
+#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#219'e'
+#195'q'#247#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#6'h'#199
+'t'#187#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
,#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#18'CausingOutBtnClick'#8'TabOrder'#2
+#11#0#0#7'TButton'#13'ResetModelBtn'#4'Left'#3#182#1#6'Height'#2#21#3'Top'#3
+#24#1#5'Width'#3#148#0#7'Caption'#6#19'Reset Current Model'#7'OnClick'#7#18
+'ResetModelBtnClick'#8'TabOrder'#2#12#0#0#9'TGroupBox'#9'GroupBox1'#4'Left'#2
+#5#6'Height'#2'`'#3'Top'#3#24#1#5'Width'#3#210#0#7'Caption'#6#7'Options'#12
+'ClientHeight'#2'N'#11'ClientWidth'#3#206#0#8'TabOrder'#2#13#0#9'TCheckBox'#8
+'StatsChk'#4'Left'#2#9#6'Height'#2#17#3'Top'#2#6#5'Width'#2'v'#7'Caption'#6
+#22'Descriptive Statistics'#8'TabOrder'#2#0#0#0#9'TCheckBox'#8'ModelChk'#4'L'
+'eft'#2#9#6'Height'#2#17#3'Top'#2#24#5'Width'#3#161#0#7'Caption'#6#29'Each M'
+'odel Correlation Matrix'#8'TabOrder'#2#1#0#0#9'TCheckBox'#8'Reprochk'#4'Lef'
+'t'#2#9#6'Height'#2#17#3'Top'#2'('#5'Width'#3#163#0#7'Caption'#6#29'Reproduc'
+'ed Correlation Matrix'#8'TabOrder'#2#2#0#0#9'TCheckBox'#7'SaveChk'#4'Left'#2
+#9#6'Height'#2#17#3'Top'#2'8'#5'Width'#3#129#0#7'Caption'#6#23'Save Correlat'
+'ion Matrix'#8'TabOrder'#2#3#0#0#0#7'TButton'#8'ResetBtn'#4'Left'#3#224#0#6
+'Height'#2#27#3'Top'#3'A'#1#5'Width'#2'E'#7'Caption'#6#5'Reset'#7'OnClick'#7
+#13'ResetBtnClick'#8'TabOrder'#2#14#0#0#7'TButton'#9'CancelBtn'#4'Left'#3'@'
+#1#6'Height'#2#27#3'Top'#3'A'#1#5'Width'#2'E'#7'Caption'#6#6'Cancel'#11'Moda'
+'lResult'#2#2#7'OnClick'#7#14'CancelBtnClick'#8'TabOrder'#2#15#0#0#7'TButton'
+#10'ComputeBtn'#4'Left'#3#160#1#6'Height'#2#27#3'Top'#3'A'#1#5'Width'#2'E'#7
+'Caption'#6#7'Compute'#7'OnClick'#7#15'ComputeBtnClick'#8'TabOrder'#2#16#0#0
+#7'TButton'#9'ReturnBtn'#4'Left'#3#6#2#6'Height'#2#27#3'Top'#3'A'#1#5'Width'
+#2'E'#7'Caption'#6#6'Return'#11'ModalResult'#2#1#7'OnClick'#7#14'ReturnBtnCl'
+'ick'#8'TabOrder'#2#17#0#0#11'TSaveDialog'#11'SaveDialog1'#4'left'#3#230#0#3
+'top'#3#30#1#0#0#0
]);

View File

@ -0,0 +1,777 @@
unit PathUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, Buttons, MainUnit, OutPutUnit, FunctionsLib,
GraphLib, Globals, MatrixLib, DataProcs, Math;
type
{ TPathFrm }
TPathFrm = class(TForm)
ResetBtn: TButton;
CancelBtn: TButton;
ComputeBtn: TButton;
ReturnBtn: TButton;
SaveDialog1: TSaveDialog;
StatsChk: TCheckBox;
ModelChk: TCheckBox;
Reprochk: TCheckBox;
SaveChk: TCheckBox;
GroupBox1: TGroupBox;
ResetModelBtn: TButton;
CausedInBtn: TBitBtn;
CausedOutBtn: TBitBtn;
CausingInBtn: TBitBtn;
CausingOutBtn: TBitBtn;
CausedEdit: TEdit;
Label4: TLabel;
Label5: TLabel;
CausingList: TListBox;
ModelNo: TEdit;
InBtn: TBitBtn;
Label3: TLabel;
OutBtn: TBitBtn;
Label1: TLabel;
Label2: TLabel;
VarList: TListBox;
ScrollBar: TScrollBar;
ListBox1: TListBox;
procedure CancelBtnClick(Sender: TObject);
procedure CausedInBtnClick(Sender: TObject);
procedure CausedOutBtnClick(Sender: TObject);
procedure CausingInBtnClick(Sender: TObject);
procedure CausingOutBtnClick(Sender: TObject);
procedure ComputeBtnClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure InBtnClick(Sender: TObject);
procedure OutBtnClick(Sender: TObject);
procedure ResetBtnClick(Sender: TObject);
procedure ResetModelBtnClick(Sender: TObject);
procedure ReturnBtnClick(Sender: TObject);
procedure ScrollBarChange(Sender: TObject);
private
{ private declarations }
Model : integer;
ModelDefined : BoolDyneVec;
causedseq : IntDyneVec;
nocausing : IntDyneVec;
causingseq : IntDyneMat;
NoModels : integer;
public
{ public declarations }
end;
var
PathFrm: TPathFrm;
implementation
{ TPathFrm }
procedure TPathFrm.ResetBtnClick(Sender: TObject);
VAR i : integer;
begin
if causingseq = nil then SetLength(causingseq,NoVariables,NoVariables);
if ModelDefined = nil then SetLength(ModelDefined,NoVariables);
if nocausing = nil then SetLength(nocausing,NoVariables);
if causedseq = nil then SetLength(causedseq,NoVariables);
ListBox1.Clear;
CausingList.Clear;
VarList.Clear;
OutBtn.Visible := false;
InBtn.Visible := true;
CausedOutBtn.Visible := false;
CausedInBtn.Visible := true;
CausingInBtn.Visible := true;
CausingOutBtn.Visible := false;
ModelNo.Text := '1';
ScrollBar.Position := 1;
CausedEdit.Text := '';
StatsChk.Checked := true;
ModelChk.Checked := true;
ReproChk.Checked := true;
SaveChk.Checked := false;
NoModels := 0;
for i := 1 to NoVariables do
ListBox1.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]);
for i := 1 to NoVariables do ModelDefined[i-1] := false;
end;
procedure TPathFrm.ResetModelBtnClick(Sender: TObject);
VAR i : integer;
begin
Model := ScrollBar.Position;
if CausedEdit.Text <> '' then CausedOutBtnClick(self);
if CausingList.Items.Count > 0 then CausingList.Clear;
causedseq[Model-1] := 0;
nocausing[Model-1] := 0;
for i := 1 to nocausing[Model-1] do causingseq[Model-1,i-1] := 0;
ModelDefined[Model-1] := false;
end;
procedure TPathFrm.ReturnBtnClick(Sender: TObject);
begin
causedseq := nil;
nocausing := nil;
causingseq := nil;
ModelDefined := nil;
PathFrm.Hide;
end;
procedure TPathFrm.ScrollBarChange(Sender: TObject);
var
i, j, col : integer;
cellstring : string;
begin
ScrollBar.Max := NoVariables + 1;
if ScrollBar.Position > NoVariables then
begin
ScrollBar.Position := NoVariables;
exit;
end;
if ScrollBar.Position > NoModels then
begin
if (CausedEdit.Text <> '') and (CausingList.Items.Count > 0) then
begin // save model information
Model := ScrollBar.Position - 1;
ModelDefined[Model-1] := true;
nocausing[Model-1] := CausingList.Items.Count;
NoModels := NoModels + 1;
for i := 1 to NoVariables do
begin
cellstring := OS3MainFrm.DataGrid.Cells[i,0];
if cellstring = CausedEdit.Text then causedseq[Model-1] := i;
for j := 0 to CausingList.Items.Count - 1 do
begin
if cellstring = CausingList.Items.Strings[j] then
causingseq[Model-1,j] := i;
end;
end;
CausingList.Clear;
CausedEdit.Text := '';
CausedInBtn.Visible := true;
CausedOutBtn.Visible := false;
CausingInBtn.Visible := true;
CausingOutBtn.Visible := false;
end;
end;
if ScrollBar.Position <> Model then
begin
CausingList.Clear;
ModelNo.Text := IntToStr(ScrollBar.Position);
Model := ScrollBar.Position;
CausedEdit.Text := '';
if ModelDefined[Model-1] then // model exists - reload data
begin
col := causedseq[Model-1];
if col <> 0 then
begin
CausedEdit.Text := OS3MainFrm.DataGrid.Cells[col,0];
CausingList.Clear;
end
else
begin
CausedEdit.Text := '';
CausingList.Clear;
exit;
end;
for i := 1 to nocausing[Model-1] do
begin
col := causingseq[Model-1,i-1];
cellstring := OS3MainFrm.DataGrid.Cells[col,0];
CausingList.Items.Add(cellstring);
end;
end;
end;
end;
procedure TPathFrm.FormShow(Sender: TObject);
begin
causedseq := nil;
nocausing := nil;
causingseq := nil;
ModelDefined := nil;
ResetBtnClick(self);
end;
procedure TPathFrm.InBtnClick(Sender: TObject);
VAR i, index : integer;
begin
index := ListBox1.Items.Count;
i := 0;
while i < index do
begin
if (ListBox1.Selected[i]) then
begin
VarList.Items.Add(ListBox1.Items.Strings[i]);
ListBox1.Items.Delete(i);
index := index - 1;
i := 0;
end
else i := i + 1;
end;
OutBtn.Visible := true;
end;
procedure TPathFrm.OutBtnClick(Sender: TObject);
VAR index : integer;
begin
index := VarList.ItemIndex;
if index < 0 then
begin
OutBtn.Visible := false;
exit;
end;
VarList.Items.Delete(index);
end;
procedure TPathFrm.CancelBtnClick(Sender: TObject);
begin
causedseq := nil;
nocausing := nil;
causingseq := nil;
ModelDefined := nil;
PathFrm.Hide;
end;
procedure TPathFrm.CausedInBtnClick(Sender: TObject);
VAR index : integer;
begin
index := VarList.ItemIndex;
CausedEdit.Text := VarList.Items.Strings[index];
CausedOutBtn.Visible := true;
CausedInBtn.Visible := false;
end;
procedure TPathFrm.CausedOutBtnClick(Sender: TObject);
begin
CausedEdit.Text := '';
CausedOutBtn.Visible := false;
CausedInBtn.Visible := true;
end;
procedure TPathFrm.CausingInBtnClick(Sender: TObject);
VAR i, index : integer;
begin
index := VarList.Items.Count;
for i := 0 to index-1 do
begin
if (VarList.Selected[i]) then
CausingList.Items.Add(VarList.Items.Strings[i]);
end;
CausingOutBtn.Visible := true;
end;
procedure TPathFrm.CausingOutBtnClick(Sender: TObject);
VAR index : integer;
begin
index := CausingList.ItemIndex;
if index < 0 then
begin
CausingOutBtn.Visible := false;
exit;
end;
CausingList.Items.Delete(index);
end;
procedure TPathFrm.ComputeBtnClick(Sender: TObject);
var
i, j, k, col, row, NoVars, nocaused, NoSelected, NoIndepVars : integer;
count, IER, NoIndep, dep, indep, noexogenous, t, L, L2 : integer;
constant, StdErrEst, ProbOut, R2, Temp, d2, sum, absdiff : double;
cellstring, outline : string;
ColNoSelected, selected : IntDyneVec;
IndepIndex : IntDyneVec;
rmat, WorkMat, PathCoef, IndMatrix, InvMatrix, e, W : DblDyneMat;
means, variances, stddevs, beta, p : DblDyneVec;
zvals : DblDyneMat; // z scores for path model
genedz : IntDyneVec; // list of z's created for path models
causal : IntDyneMat;
exogenous : IntDyneVec;
RowLabels, ColLabels, Labels: StrDyneVec;
title : string;
matched : boolean;
prtopt : boolean;
errorcode : boolean;
done : boolean;
zscore : double;
begin
if NoModels < ScrollBar.Position then
begin
Model := ScrollBar.Position;
ModelDefined[Model-1] := true;
nocausing[Model-1] := CausingList.Items.Count;
NoModels := NoModels + 1;
for i := 1 to NoVariables do
begin
cellstring := OS3MainFrm.DataGrid.Cells[i,0];
if cellstring = CausedEdit.Text then causedseq[Model-1] := i;
for j := 0 to CausingList.Items.Count - 1 do
begin
if cellstring = CausingList.Items.Strings[j] then
causingseq[Model-1,j] := i;
end;
end;
CausingList.Clear;
CausedEdit.Text := '';
CausedInBtn.Visible := true;
CausedOutBtn.Visible := false;
CausingInBtn.Visible := true;
CausingOutBtn.Visible := false;
end;
nocaused := NoModels;
SetLength(rmat,NoVariables+1,NoVariables+1);
SetLength(WorkMat,NoVariables+1,NoVariables+1);
SetLength(PathCoef,NoVariables,NoVariables);
SetLength(IndMatrix,NoVariables,NoVariables);
SetLength(InvMatrix,NoVariables,NoVariables);
SetLength(e,NoVariables,NoVariables);
SetLength(W,NoVariables,NoVariables);
SetLength(means,NoVariables);
SetLength(variances,NoVariables);
SetLength(stddevs,NoVariables);
SetLength(beta,NoVariables);
SetLength(p,NoVariables*NoVariables);
SetLength(Causal,2,NoVariables*NoVariables);
SetLength(RowLabels,NoCases);
SetLength(ColLabels,NoVariables);
SetLength(Labels,NoVariables);
SetLength(IndepIndex,NoVariables);
SetLength(exogenous,NoVariables);
SetLength(ColNoSelected,NoVariables);
SetLength(selected,NoVariables);
SetLength(zvals,NoCases,NoVariables);
SetLength(genedz,NoVariables);
// get and show model parameters
OutPutFrm.RichEdit.Clear;
OutPutFrm.RichEdit.Lines.Add('PATH ANALYSIS RESULTS');
OutPutFrm.RichEdit.Lines.Add('');
for i := 1 to nocaused do
begin
col := causedseq[i-1];
outline := 'CAUSED VARIABLE: ';
outline := outline + OS3MainFrm.DataGrid.Cells[col,0];
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add(' Causing Variables:');
for j := 1 to nocausing[i-1] do
begin
col := causingseq[i-1,j-1];
outline := ' ';
outline := outline + OS3MainFrm.DataGrid.Cells[col,0];
OutPutFrm.RichEdit.Lines.Add(outline);
end;
end;
OutPutFrm.ShowModal;
OutPutFrm.RichEdit.Clear;
// get correlations among all variables selected for the analysis
NoSelected := VarList.Items.Count;
for j := 1 to NoVariables do
begin
cellstring := OS3MainFrm.DataGrid.Cells[j,0];
for i := 1 to NoSelected do
begin
if cellstring = VarList.Items.Strings[i-1] then
begin
ColNoSelected[i-1] := j;
RowLabels[i-1] := cellstring;
end;
end;
end;
count := NoCases;
Correlations(NoSelected,ColNoSelected,rmat,means,variances,stddevs,
errorcode,count);
if SaveChk.Checked then
begin
SaveDialog1.Filter := 'Matrix files (*.MAT)|*.MAT|All files (*.*)|*.*';
SaveDialog1.FilterIndex := 1;
SaveDialog1.Execute;
MATSAVE(rmat,NoSelected,NoSelected,means,stddevs,count,RowLabels,
RowLabels,SaveDialog1.FileName);
end;
if StatsChk.Checked then
begin
title := 'Correlation Matrix';
MAT_PRINT(rmat,NoSelected,NoSelected,title,RowLabels,RowLabels,count);
title := 'MEANS';
DynVectorPrint(means,NoSelected,title,RowLabels,count);
title := 'VARIANCES';
DynVectorPrint(variances,NoSelected,title,RowLabels,count);
title := 'STANDARD DEVIATIONS';
DynVectorPrint(stddevs,NoSelected,title,RowLabels,count);
OutPutFrm.ShowModal;
OutPutFrm.RichEdit.Clear;
end;
// initialize reconstruction matrix, weights matrix and path coefficients
for i := 0 to NoSelected-1 do
begin
for j := 0 to NoSelected-1 do
begin
e[i,j] := 0.0;
W[i,j] := 0.0;
PathCoef[i,j] := 0.0;
end;
end;
//Now, do the regression analysis for each model
for i := 1 to nocaused do
begin
NoVars := nocausing[i-1] + 1;
for j := 1 to nocausing[i-1] do
begin
col := causingseq[i-1,j-1];
IndepIndex[j-1] := j; // independents
selected[j-1] := col;
Labels[j-1] := OS3MainFrm.DataGrid.Cells[col,0];
end;
row := causedseq[i-1]; //sequence no. of caused variable
IndepIndex[NoVars-1] := row; // dependent
selected[NoVars-1] := row;
Labels[NoVars-1] := OS3MainFrm.DataGrid.Cells[row,0];
// get correlation matrix for this model
Correlations(NoVars,selected,WorkMat,means,variances,stddevs,
errorcode,count);
if ModelChk.Checked then
begin
OutPutFrm.RichEdit.Lines.Add('');
outline := format('Dependent Variable = %s',[OS3MainFrm.DataGrid.Cells[row,0]]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add('');
title := 'Correlation Matrix';
MAT_PRINT(WorkMat,NoVars,NoVars,title,Labels,Labels,count);
title := 'MEANS';
DynVectorPrint(means,NoVars,title,Labels,count);
title := 'VARIANCES';
DynVectorPrint(variances,NoVars,title,Labels,count);
title := 'STANDARD DEVIATIONS';
DynVectorPrint(stddevs,NoVars,title,Labels,count);
OutPutFrm.ShowModal;
OutPutFrm.RichEdit.Clear;
end;
// Get regression analysis for this model
ProbOut := 0.999;
NoIndepVars := NoVars - 1;
if StatsChk.Checked then
begin
OutPutFrm.RichEdit.Lines.Add('');
outline := format('Dependent Variable = %s',[OS3MainFrm.DataGrid.Cells[row,0]]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add('');
end;
if StatsChk.Checked then prtopt := true else prtopt := false;
MReg2(count,NoVars,NoIndepVars,IndepIndex,WorkMat,IndMatrix,
Labels,R2,beta,means,variances,IER,StdErrEst,constant,
ProbOut,prtopt,false,false);
if prtopt then
begin
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.ShowModal;
OutPutFrm.RichEdit.Clear;
end;
for j := 1 to nocausing[i-1] do
begin
col := causingseq[i-1,j-1];
PathCoef[row-1,col-1] := beta[j-1];
end;
end; // next i (caused regressions)
//Now, reconstruct the correlation matrix from path coefficients
//First, obtain list of exogenous variables
noexogenous := 0;
for i := 1 to NoSelected do
begin
matched := false;
col := ColNoSelected[i-1];
for j := 1 to nocaused do
if (causedseq[j-1] = col) then matched := true;
if ( not matched) then
begin
exogenous[noexogenous] := col;
noexogenous := noexogenous + 1;
end;
end;
// transform raw scores to z scores for exogenous variables
Correlations(NoSelected,ColNoSelected,rmat,means,variances,stddevs,
errorcode,count);
for i := 1 to noselected do genedz[i-1] := 0; // initialize
for k := 1 to noexogenous do
begin
col := exogenous[k-1];
for j := 1 to noselected do
begin // find position of corresponding mean and std.dev.
if ColNoSelected[j-1] = col then row := j;
end;
for i := 1 to NoCases do
begin
zvals[i-1,col-1] := StrToFloat(OS3MainFrm.DataGrid.Cells[col,i]);
zvals[i-1,col-1] := (zvals[i-1,col-1] - means[row-1]) / stddevs[row-1];
RowLabels[i-1] := format('Subject %d',[i]);
end;
genedz[col-1] := 1; // mark as generated
end;
{
// print matrix of path z scores for exogenous variables
title := 'Data Array of Subject exogenous z Scores';
MAT_PRINT(zvals,NoCases,NoSelected,title,RowLabels,ColLabels,NoCases);
OutPutFrm.ShowModal;
OutPutFrm.RichEdit.Clear;
}
for i := 1 to NoVariables do
begin
cellstring := OS3MainFrm.DataGrid.Cells[i,0];
for j := 1 to NoSelected do
begin
if cellstring = VarList.Items.Strings[j-1] then
begin
RowLabels[i-1] := cellstring;
ColLabels[i-1] := cellstring;
end;
end;
end;
//Build matrix of path coefficients
for i := 1 to nocaused do
begin
row := causedseq[i-1];
for j := 1 to nocausing[i-1] do
begin
col := causingseq[i-1,j-1];
W[row-1,col-1] := PathCoef[row-1,col-1];
end;
end;
//Print results
if StatsChk.Checked then
begin
title := 'Matrix of Path Coefficients in Rows';
MAT_PRINT(W,NoSelected,NoSelected,title,ColLabels,ColLabels,count);
OutPutFrm.ShowModal;
OutPutFrm.RichEdit.Clear;
end;
//Build models vectors
k := 0;
for i := 1 to nocaused do
begin
for j := 1 to nocausing[i-1] do
begin
k := k + 1;
causal[0,k-1] := causedseq[i-1];
causal[1,k-1] := causingseq[i-1,j-1];
row := causedseq[i-1];
col := causingseq[i-1,j-1];
p[k-1] := PathCoef[row-1,col-1];
end;
end;
NoModels := k;
//Sort on resultant then causing variables
for i := 1 to NoModels - 1 do
begin
for j := i + 1 to NoModels do
begin
if (causal[0,i-1] > causal[0,j-1]) then // swap
begin
t := causal[0,i-1];
causal[0,i-1] := causal[0,j-1];
causal[0,j-1] := t;
t := causal[1,i-1];
causal[1,i-1] := causal[1,j-1];
causal[1,j-1] := t;
Temp := p[i-1];
p[i-1] := p[j-1];
p[j-1] := Temp;
end;
end;
end;
for i := 1 to NoModels - 1 do
begin
for j := i + 1 to NoModels do
begin
if ((causal[0,i-1] = causal[0,j-1]) and (causal[1,i-1] > causal[1,j-1])) then
begin
t := causal[0,i-1];
causal[0,i-1] := causal[0,j-1];
causal[0,j-1] := t;
t := causal[1,i-1];
causal[1,i-1] := causal[1,j-1];
causal[1,j-1] := t;
Temp := p[i-1];
p[i-1] := p[j-1];
p[j-1] := Temp;
end;
end;
end;
OutPutFrm.RichEdit.Lines.Add('SUMMARY OF CAUSAL MODELS');
OutPutFrm.RichEdit.Lines.Add('Var. Caused Causing Var. Path Coefficient');
for i := 1 to NoModels do
begin
outline := format('%12s %12s %6.3f',
[OS3MainFrm.DataGrid.Cells[causal[0,i-1],0],
OS3MainFrm.DataGrid.Cells[causal[1,i-1],0],
p[i-1]]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.ShowModal;
OutPutFrm.RichEdit.Clear;
//Get reproduced correlation matrix in e
done := false;
while not done do
begin
for i := 1 to nocaused do // check each caused for use of existing z values
begin
for j := 1 to nocausing[i-1] do
begin
count := 0;
for L := 1 to noselected do
begin
if genedz[L-1] = 1 then count := count + 1;
end;
end;
if count >= nocausing[i-1] then // calculate path z
begin
row := causedseq[i-1]; // generation z column & row of path coef.
for j := 1 to nocausing[i-1] do
begin // sum of Path coefficients times corresponding z's
col := causingseq[i-1,j-1]; // column of path coefficient
for k := 1 to NoCases do
begin
zscore := zvals[k-1,col-1]; // causing z score
zvals[k-1,row-1] := zvals[k-1,row-1] + zscore * PathCoef[row-1,col-1];
end;
end;
genedz[row-1] := 1; // mark as generated
end; // if count equals no. of causing variables
count := 0; // check for completion of all z's
for j := 1 to noselected do
if genedz[j-1] = 1 then count := count + 1;
if count = noselected then done := true;
end; // next i caused variable
end; // while not done
// print matrix of path z scores
for i := 1 to NoCases do RowLabels[i-1] := format('Subject %d',[i]);
title := 'Data Array of Subject Path z Scores';
MAT_PRINT(zvals,NoCases,NoSelected,title,RowLabels,ColLabels,NoCases);
OutPutFrm.ShowModal;
OutPutFrm.RichEdit.Clear;
// now calculate the correlation among the generated z values
for i := 1 to noselected do
begin // initialize arrays
for j := 1 to noselected do
begin
e[i-1,j-1] := 0.0;
end;
means[i-1] := 0.0;
stddevs[i-1] := 0.0;
end;
for k := 1 to NoCases do
begin
for i := 1 to noselected do
begin
for j := 1 to noselected do
begin
e[i-1,j-1] := e[i-1,j-1] + zvals[k-1,i-1] * zvals[k-1,j-1];
end;
means[i-1] := means[i-1] + zvals[k-1,i-1];
stddevs[i-1] := stddevs[i-1] + (zvals[k-1,i-1] * zvals[k-1,i-1]);
end;
end;
for i := 1 to noselected do
begin
stddevs[i-1] := stddevs[i-1] - (means[i-1] * means[i-1] / NoCases);
stddevs[i-1] := stddevs[i-1] / (NoCases - 1);
stddevs[i-1] := sqrt(stddevs[i-1]);
for j := 1 to noselected do
begin // covariances
e[i-1,j-1] := e[i-1,j-1] - (means[i-1] * means[j-1] / NoCases);
e[i-1,j-1] := e[i-1,j-1] / (NoCases - 1);
end;
means[i-1] := means[i-1] / NoCases;
end;
for i := 1 to noselected do
begin
for j := 1 to noselected do
begin
e[i-1,j-1] := e[i-1,j-1] / (stddevs[i-1]*stddevs[j-1]);
end;
end;
if (ReproChk.Checked) then
begin
title := 'Reproduced Correlation Matrix';
MAT_PRINT(e,NoSelected,NoSelected,title,ColLabels,ColLabels,count);
end;
//Examine discrepencies
d2 := 0.0;
sum := 0.0;
for i := 1 to NoSelected do
begin
for j := 1 to NoSelected do
begin
absdiff := abs(rmat[i-1,j-1] - e[i-1,j-1]);
sum := sum + absdiff;
if (absdiff > d2) then d2 := absdiff;
end;
end;
OutPutFrm.RichEdit.Lines.Add('Average absolute difference between observed and reproduced');
outline := format('coefficients := %5.3f',[sum / (NoSelected * NoSelected)]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Maximum difference found := %5.3f',[d2]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.ShowModal;
// clean up heap (delete last allocated first)
genedz := nil;
zvals := nil;
selected := nil;
ColNoSelected := nil;
exogenous := nil;
IndepIndex := nil;
Labels := nil;
ColLabels := nil;
RowLabels := nil;
Causal := nil;
p := nil;
beta := nil;
stddevs := nil;
variances := nil;
means := nil;
W := nil;
e := nil;
InvMatrix := nil;
IndMatrix := nil;
PathCoef := nil;
WorkMat := nil;
rmat := nil;
end;
initialization
{$I pathunit.lrs}
end.

View File

@ -0,0 +1,155 @@
object pChartFrm: TpChartFrm
Left = 143
Height = 264
Top = 120
Width = 512
Caption = 'p Control Chart'
ClientHeight = 264
ClientWidth = 512
OnShow = FormShow
LCLVersion = '0.9.28.2'
object Label1: TLabel
Left = 10
Height = 14
Top = 8
Width = 90
Caption = 'Selection Variables'
ParentColor = False
end
object Label2: TLabel
Left = 183
Height = 14
Top = 8
Width = 107
Caption = 'Measurement Variable'
ParentColor = False
end
object Label3: TLabel
Left = 186
Height = 14
Top = 72
Width = 106
Caption = 'No. of Parts Sampled:'
ParentColor = False
end
object Label4: TLabel
Left = 184
Height = 14
Top = 103
Width = 156
Caption = 'Expected Proportion of Defects:'
ParentColor = False
end
object VarList: TListBox
Left = 10
Height = 221
Top = 24
Width = 162
ItemHeight = 0
OnClick = VarListClick
TabOrder = 0
end
object MeasEdit: TEdit
Left = 183
Height = 21
Top = 32
Width = 152
TabOrder = 1
Text = 'MeasEdit'
end
object NEdit: TEdit
Left = 344
Height = 21
Top = 65
Width = 42
TabOrder = 2
Text = 'NEdit'
end
object PEdit: TEdit
Left = 344
Height = 21
Top = 96
Width = 42
TabOrder = 3
Text = 'Edit1'
end
object SigmaOpts: TRadioGroup
Left = 184
Height = 122
Top = 128
Width = 202
AutoFill = True
Caption = 'No. Of Sigma Units for UCL and LCL'
ChildSizing.LeftRightSpacing = 6
ChildSizing.TopBottomSpacing = 6
ChildSizing.EnlargeHorizontal = crsHomogenousChildResize
ChildSizing.EnlargeVertical = crsHomogenousChildResize
ChildSizing.ShrinkHorizontal = crsScaleChilds
ChildSizing.ShrinkVertical = crsScaleChilds
ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 1
ClientHeight = 104
ClientWidth = 198
Items.Strings = (
'3 Sigma (Default)'
'2 Sigma'
'1 Sigma'
'X Sigma where X = '
)
TabOrder = 4
end
object ResetBtn: TButton
Left = 417
Height = 29
Top = 72
Width = 75
Caption = 'Reset'
OnClick = ResetBtnClick
TabOrder = 5
end
object CancelBtn: TButton
Left = 417
Height = 29
Top = 120
Width = 75
Caption = 'Cancel'
ModalResult = 2
TabOrder = 6
end
object ComputeBtn: TButton
Left = 416
Height = 29
Top = 168
Width = 75
Caption = 'Compute'
OnClick = ComputeBtnClick
TabOrder = 7
end
object Return: TButton
Left = 416
Height = 29
Top = 216
Width = 75
Caption = 'Return'
ModalResult = 1
TabOrder = 8
end
object XSigmaEdit: TEdit
Left = 320
Height = 21
Top = 216
Width = 41
TabOrder = 9
Text = 'XSigmaEdit'
end
object HelpBtn: TButton
Tag = 137
Left = 416
Height = 28
Top = 24
Width = 76
Caption = 'Help'
OnClick = HelpBtnClick
TabOrder = 10
end
end

View File

@ -0,0 +1,43 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TpChartFrm','FORMDATA',[
'TPF0'#10'TpChartFrm'#9'pChartFrm'#4'Left'#3#143#0#6'Height'#3#8#1#3'Top'#2'x'
+#5'Width'#3#0#2#7'Caption'#6#15'p Control Chart'#12'ClientHeight'#3#8#1#11'C'
+'lientWidth'#3#0#2#6'OnShow'#7#8'FormShow'#10'LCLVersion'#6#8'0.9.28.2'#0#6
+'TLabel'#6'Label1'#4'Left'#2#10#6'Height'#2#14#3'Top'#2#8#5'Width'#2'Z'#7'Ca'
+'ption'#6#19'Selection Variables'#11'ParentColor'#8#0#0#6'TLabel'#6'Label2'#4
+'Left'#3#183#0#6'Height'#2#14#3'Top'#2#8#5'Width'#2'k'#7'Caption'#6#20'Measu'
+'rement Variable'#11'ParentColor'#8#0#0#6'TLabel'#6'Label3'#4'Left'#3#186#0#6
+'Height'#2#14#3'Top'#2'H'#5'Width'#2'j'#7'Caption'#6#21'No. of Parts Sampled'
+':'#11'ParentColor'#8#0#0#6'TLabel'#6'Label4'#4'Left'#3#184#0#6'Height'#2#14
+#3'Top'#2'g'#5'Width'#3#156#0#7'Caption'#6#31'Expected Proportion of Defects'
+':'#11'ParentColor'#8#0#0#8'TListBox'#7'VarList'#4'Left'#2#10#6'Height'#3#221
+#0#3'Top'#2#24#5'Width'#3#162#0#10'ItemHeight'#2#0#7'OnClick'#7#12'VarListCl'
+'ick'#8'TabOrder'#2#0#0#0#5'TEdit'#8'MeasEdit'#4'Left'#3#183#0#6'Height'#2#21
+#3'Top'#2' '#5'Width'#3#152#0#8'TabOrder'#2#1#4'Text'#6#8'MeasEdit'#0#0#5'TE'
+'dit'#5'NEdit'#4'Left'#3'X'#1#6'Height'#2#21#3'Top'#2'A'#5'Width'#2'*'#8'Tab'
+'Order'#2#2#4'Text'#6#5'NEdit'#0#0#5'TEdit'#5'PEdit'#4'Left'#3'X'#1#6'Height'
+#2#21#3'Top'#2'`'#5'Width'#2'*'#8'TabOrder'#2#3#4'Text'#6#5'Edit1'#0#0#11'TR'
+'adioGroup'#9'SigmaOpts'#4'Left'#3#184#0#6'Height'#2'z'#3'Top'#3#128#0#5'Wid'
+'th'#3#202#0#8'AutoFill'#9#7'Caption'#6'"No. Of Sigma Units for UCL and LCL'
+#28'ChildSizing.LeftRightSpacing'#2#6#28'ChildSizing.TopBottomSpacing'#2#6#29
+'ChildSizing.EnlargeHorizontal'#7#24'crsHomogenousChildResize'#27'ChildSizin'
+'g.EnlargeVertical'#7#24'crsHomogenousChildResize'#28'ChildSizing.ShrinkHori'
+'zontal'#7#14'crsScaleChilds'#26'ChildSizing.ShrinkVertical'#7#14'crsScaleCh'
+'ilds'#18'ChildSizing.Layout'#7#29'cclLeftToRightThenTopToBottom'#27'ChildSi'
+'zing.ControlsPerLine'#2#1#12'ClientHeight'#2'h'#11'ClientWidth'#3#198#0#13
+'Items.Strings'#1#6#17'3 Sigma (Default)'#6#7'2 Sigma'#6#7'1 Sigma'#6#18'X S'
+'igma where X = '#0#8'TabOrder'#2#4#0#0#7'TButton'#8'ResetBtn'#4'Left'#3#161
+#1#6'Height'#2#29#3'Top'#2'H'#5'Width'#2'K'#7'Caption'#6#5'Reset'#7'OnClick'
+#7#13'ResetBtnClick'#8'TabOrder'#2#5#0#0#7'TButton'#9'CancelBtn'#4'Left'#3
+#161#1#6'Height'#2#29#3'Top'#2'x'#5'Width'#2'K'#7'Caption'#6#6'Cancel'#11'Mo'
+'dalResult'#2#2#8'TabOrder'#2#6#0#0#7'TButton'#10'ComputeBtn'#4'Left'#3#160#1
+#6'Height'#2#29#3'Top'#3#168#0#5'Width'#2'K'#7'Caption'#6#7'Compute'#7'OnCli'
+'ck'#7#15'ComputeBtnClick'#8'TabOrder'#2#7#0#0#7'TButton'#6'Return'#4'Left'#3
+#160#1#6'Height'#2#29#3'Top'#3#216#0#5'Width'#2'K'#7'Caption'#6#6'Return'#11
+'ModalResult'#2#1#8'TabOrder'#2#8#0#0#5'TEdit'#10'XSigmaEdit'#4'Left'#3'@'#1
+#6'Height'#2#21#3'Top'#3#216#0#5'Width'#2')'#8'TabOrder'#2#9#4'Text'#6#10'XS'
+'igmaEdit'#0#0#7'TButton'#7'HelpBtn'#3'Tag'#3#137#0#4'Left'#3#160#1#6'Height'
+#2#28#3'Top'#2#24#5'Width'#2'L'#7'Caption'#6#4'Help'#7'OnClick'#7#12'HelpBtn'
+'Click'#8'TabOrder'#2#10#0#0#0
]);

View File

@ -0,0 +1,291 @@
unit PCHARTUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, ExtCtrls, MainUnit, Globals, Math, OutPutUnit, Buttons, DataProcs,
FunctionsLib, BlankFrmUnit, contexthelpunit;
type
{ TpChartFrm }
TpChartFrm = class(TForm)
HelpBtn: TButton;
XSigmaEdit: TEdit;
ResetBtn: TButton;
CancelBtn: TButton;
ComputeBtn: TButton;
Return: TButton;
NEdit: TEdit;
PEdit: TEdit;
Label3: TLabel;
Label4: TLabel;
MeasEdit: TEdit;
Label1: TLabel;
Label2: TLabel;
SigmaOpts: TRadioGroup;
VarList: TListBox;
procedure ComputeBtnClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure HelpBtnClick(Sender: TObject);
procedure ResetBtnClick(Sender: TObject);
procedure VarListClick(Sender: TObject);
private
{ private declarations }
procedure PlotMeans(VAR means : DblDyneVec;
NoGrps : integer;
UCL, LCL, GrandMean, Target : double;
Sender: TObject);
public
{ public declarations }
end;
var
pChartFrm: TpChartFrm;
implementation
{ TpChartFrm }
procedure TpChartFrm.ResetBtnClick(Sender: TObject);
VAR i : integer;
begin
VarList.Clear;
MeasEdit.Text := '';
NEdit.Text := '';
PEdit.Text := '';
XSigmaEdit.Text := '';
SigmaOpts.ItemIndex := 0;
for i := 1 to NoVariables do
VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]);
end;
procedure TpChartFrm.VarListClick(Sender: TObject);
VAR index : integer;
begin
index := VarList.ItemIndex;
MeasEdit.Text := VarList.Items.Strings[index];
end;
procedure TpChartFrm.FormShow(Sender: TObject);
begin
ResetBtnClick(self);
end;
procedure TpChartFrm.HelpBtnClick(Sender: TObject);
begin
ContextHelpForm.HelpMessage((Sender as TButton).tag);
end;
procedure TpChartFrm.ComputeBtnClick(Sender: TObject);
var
P, N, variance, stddev, UCL, LCL, X, Sigma : double;
AVG : double;
i, measvar : integer;
cellstring, outline : string;
Obsp : DblDyneVec;
begin
AVG := 0.0;
measvar := 1;
Sigma := 3;
N := StrToFloat(NEdit.Text);
P := StrToFloat(PEdit.Text);
if SigmaOpts.ItemIndex = 3 then
Sigma := StrToFloat(XSigmaEdit.Text);
if SigmaOpts.ItemIndex = 0 then Sigma := 3.0;
if SigmaOpts.ItemIndex = 1 then Sigma := 2.0;
if SigmaOpts.ItemIndex = 2 then Sigma := 1.0;
for i := 1 to NoVariables do
begin
cellstring := OS3MainFrm.DataGrid.Cells[i,0];
if cellstring = MeasEdit.Text then measvar := i;
end;
variance := P * (1.0 - P) / N;
stddev := sqrt(variance);
SetLength(obsp,NoCases + 1);
for i := 1 to NoCases do
begin
X := StrToFloat(Trim(OS3MainFrm.DataGrid.Cells[measvar,i]));
X := X / N;
obsp[i] := X;
AVG := AVG + X;
end;
AVG := AVG / NoCases;
UCL := P + Sigma * stddev;
LCL := P - Sigma * stddev;
// output results
OutPutFrm.RichEdit.Lines.Add('Defects p Control Chart Results');
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('Sample No. Proportion');
OutPutFrm.RichEdit.Lines.Add('__________ __________');
for i := 1 to NoCases do
begin
outline := format(' %5d %6.3f',[i,obsp[i]]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
OutPutFrm.RichEdit.Lines.Add('');
outline := format('Target proportion = %6.4f',[P]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Sample size for each observation = %6.0f',[N]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Average proportion observed = %6.4f',[AVG]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.ShowModal;
// Now create plot
PlotMeans(obsp,NoCases,UCL,LCL, Avg, P,self);
obsp := nil;
end;
procedure TpChartFrm.PlotMeans(var means: DblDyneVec; NoGrps: integer; UCL,
LCL, GrandMean, Target: double; Sender: TObject);
var
i, xpos, ypos, hleft, hright, vtop, vbottom, imagewide : integer;
vhi, hwide, offset, strhi, oldxpos : integer;
imagehi, maxval, minval, valincr, Yvalue : double;
Title : string;
begin
maxval := -10000.0;
minval := 10000.0;
for i := 1 to NoGrps do
begin
if means[i] > maxval then maxval := means[i];
if means[i] < minval then minval := means[i];
end;
if UCL > maxval then maxval := UCL;
if LCL < minval then minval := LCL;
BlankFrm.Image1.Canvas.Clear;
BlankFrm.Show;
Title := 'p CONTROL CHART FOR : ' + OS3MainFrm.FileNameEdit.Text;
BlankFrm.Caption := Title;
imagewide := BlankFrm.Image1.Width;
imagehi := BlankFrm.Image1.Height;
vtop := 20;
vbottom := round(imagehi) - 80;
vhi := vbottom - vtop;
hleft := 100;
hright := imagewide - 80;
hwide := hright - hleft;
BlankFrm.Image1.Canvas.Pen.Color := clBlack;
BlankFrm.Image1.Canvas.Brush.Color := clWhite;
// Draw chart border
BlankFrm.Image1.Canvas.Rectangle(hleft,vtop-10,hleft+hwide,vtop+vhi+10);
// draw Grand Mean
ypos := round(vhi * ( (maxval - GrandMean) / (maxval - minval)));
ypos := ypos + vtop;
xpos := hleft;
BlankFrm.Image1.Canvas.MoveTo(xpos,ypos);
xpos := hright;
BlankFrm.Image1.Canvas.Pen.Color := clBlue;
BlankFrm.Image1.Canvas.LineTo(xpos,ypos);
Title := 'MEAN';
strhi := BlankFrm.Image1.Canvas.TextHeight(Title);
ypos := ypos - strhi div 2;
BlankFrm.Image1.Canvas.Brush.Color := clLtGray;
BlankFrm.Image1.Canvas.TextOut(xpos,ypos,Title);
// draw target
ypos := round(vhi * ( (maxval - Target) / (maxval - minval)));
ypos := ypos + vtop;
xpos := hleft;
BlankFrm.Image1.Canvas.MoveTo(xpos,ypos);
xpos := hright;
BlankFrm.Image1.Canvas.Pen.Color := clRed;
BlankFrm.Image1.Canvas.LineTo(xpos,ypos);
Title := 'TARGET';
strhi := BlankFrm.Image1.Canvas.TextHeight(Title);
ypos := ypos - strhi div 2;
BlankFrm.Image1.Canvas.Brush.Color := clLtGray;
BlankFrm.Image1.Canvas.TextOut(xpos,ypos,Title);
// draw horizontal axis
BlankFrm.Image1.Canvas.MoveTo(hleft,vbottom + 20);
BlankFrm.Image1.Canvas.LineTo(hright,vbottom + 20);
oldxpos := 0;
for i := 1 to NoGrps do
begin
ypos := vbottom + 10;
xpos := round((hwide / NoGrps)* i + hleft);
BlankFrm.Image1.Canvas.MoveTo(xpos,ypos);
ypos := ypos + 10;
BlankFrm.Image1.Canvas.LineTo(xpos,ypos);
Title := format('%d',[i]);
offset := BlankFrm.Image1.Canvas.TextWidth(Title) div 2;
strhi := BlankFrm.Image1.Canvas.TextHeight(Title);
xpos := xpos - offset;
ypos := ypos + strhi;
BlankFrm.Image1.Canvas.Pen.Color := clBlack;
if xpos > oldxpos then
begin
BlankFrm.Image1.Canvas.TextOut(xpos,ypos,Title);
oldxpos := xpos + (offset * 2);
end;
xpos := 10;
BlankFrm.Image1.Canvas.TextOut(xpos,ypos,'GROUPS:');
end;
// Draw vertical axis
valincr := (maxval - minval) / 10.0;
for i := 1 to 11 do
begin
Title := format('%8.2f',[maxval - ((i-1)*valincr)]);
strhi := BlankFrm.Image1.Canvas.TextHeight(Title);
xpos := 10;
Yvalue := maxval - (valincr * (i-1));
ypos := round(vhi * ( (maxval - Yvalue) / (maxval - minval)));
ypos := ypos + vtop - strhi div 2;
BlankFrm.Image1.Canvas.TextOut(xpos,ypos,Title);
end;
// draw lines for means of the groups
ypos := round(vhi * ( (maxval - means[1]) / (maxval - minval)));
ypos := ypos + vtop;
xpos := round((hwide / NoGrps) + hleft);
BlankFrm.Image1.Canvas.MoveTo(xpos,ypos);
BlankFrm.Image1.Canvas.Pen.Color := clBlack;
for i := 2 to NoGrps do
begin
ypos := round(vhi * ( (maxval - means[i]) / (maxval - minval)));
ypos := ypos + vtop;
xpos := round((hwide / NoGrps)* i + hleft);
BlankFrm.Image1.Canvas.LineTo(xpos,ypos);
end;
// Draw upper and lower confidence intervals
ypos := round(vhi * ( (maxval - UCL) / (maxval - minval)));
ypos := ypos + vtop;
xpos := hleft;
BlankFrm.Image1.Canvas.MoveTo(xpos,ypos);
xpos := hright;
BlankFrm.Image1.Canvas.Pen.Color := clRed;
BlankFrm.Image1.Canvas.LineTo(xpos,ypos);
Title := 'UCL';
strhi := BlankFrm.Image1.Canvas.TextHeight(Title);
ypos := ypos - strhi div 2;
BlankFrm.Image1.Canvas.TextOut(xpos,ypos,Title);
ypos := round(vhi * ( (maxval - LCL) / (maxval - minval)));
ypos := ypos + vtop;
xpos := hleft;
BlankFrm.Image1.Canvas.MoveTo(xpos,ypos);
xpos := hright;
BlankFrm.Image1.Canvas.Pen.Color := clRed;
BlankFrm.Image1.Canvas.LineTo(xpos,ypos);
Title := 'LCL';
strhi := BlankFrm.Image1.Canvas.TextHeight(Title);
ypos := ypos - strhi div 2;
BlankFrm.Image1.Canvas.TextOut(xpos,ypos,Title);
end;
initialization
{$I pchartunit.lrs}
end.

View File

@ -0,0 +1,153 @@
object PCurvesFrm: TPCurvesFrm
Left = 177
Height = 300
Top = 88
Width = 361
Caption = 'Power Analysis for a z Test'
ClientHeight = 300
ClientWidth = 361
OnShow = FormShow
LCLVersion = '0.9.28.2'
object Label1: TLabel
Left = 10
Height = 14
Top = 15
Width = 135
Caption = 'Mean of the Null Hypothesis'
ParentColor = False
end
object Label2: TLabel
Left = 8
Height = 14
Top = 48
Width = 182
Caption = 'Standard Deviation of the Distribution'
ParentColor = False
end
object Label3: TLabel
Left = 9
Height = 14
Top = 80
Width = 57
Caption = 'Sample Size'
ParentColor = False
end
object NullEdit: TEdit
Left = 200
Height = 21
Top = 8
Width = 43
TabOrder = 0
Text = 'NullEdit'
end
object SDEdit: TEdit
Left = 200
Height = 21
Top = 40
Width = 43
TabOrder = 1
Text = 'Edit1'
end
object NEdit: TEdit
Left = 200
Height = 21
Top = 73
Width = 43
TabOrder = 2
Text = 'Edit1'
end
object GroupBox1: TGroupBox
Left = 10
Height = 172
Top = 112
Width = 235
Caption = 'Probability of a Type I Error:'
ClientHeight = 154
ClientWidth = 231
TabOrder = 3
object Prob01: TCheckBox
Left = 9
Height = 17
Top = 0
Width = 42
Caption = '0.01'
TabOrder = 0
end
object Prob025: TCheckBox
Left = 9
Height = 17
Top = 24
Width = 48
Caption = '0.025'
TabOrder = 1
end
object Prob05: TCheckBox
Left = 9
Height = 17
Top = 48
Width = 42
Caption = '0.05'
TabOrder = 2
end
object Prob075: TCheckBox
Left = 9
Height = 17
Top = 72
Width = 48
Caption = '0.075'
TabOrder = 3
end
object Prob10: TCheckBox
Left = 9
Height = 17
Top = 96
Width = 42
Caption = '0.10'
TabOrder = 4
end
object Prob20: TCheckBox
Left = 9
Height = 17
Top = 120
Width = 42
Caption = '0.20'
TabOrder = 5
end
end
object ResetBtn: TButton
Left = 272
Height = 28
Top = 33
Width = 69
Caption = 'Reset'
OnClick = ResetBtnClick
TabOrder = 4
end
object CancelBtn: TButton
Left = 272
Height = 28
Top = 88
Width = 69
Caption = 'Cancel'
ModalResult = 2
TabOrder = 5
end
object ComputeBtn: TButton
Left = 272
Height = 28
Top = 144
Width = 69
Caption = 'Compute'
OnClick = ComputeBtnClick
TabOrder = 6
end
object ReturnBtn: TButton
Left = 272
Height = 28
Top = 200
Width = 69
Caption = 'Return'
ModalResult = 1
TabOrder = 7
end
end

View File

@ -0,0 +1,38 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TPCurvesFrm','FORMDATA',[
'TPF0'#11'TPCurvesFrm'#10'PCurvesFrm'#4'Left'#3#177#0#6'Height'#3','#1#3'Top'
+#2'X'#5'Width'#3'i'#1#7'Caption'#6#27'Power Analysis for a z Test'#12'Client'
+'Height'#3','#1#11'ClientWidth'#3'i'#1#6'OnShow'#7#8'FormShow'#10'LCLVersion'
+#6#8'0.9.28.2'#0#6'TLabel'#6'Label1'#4'Left'#2#10#6'Height'#2#14#3'Top'#2#15
+#5'Width'#3#135#0#7'Caption'#6#27'Mean of the Null Hypothesis'#11'ParentColo'
+'r'#8#0#0#6'TLabel'#6'Label2'#4'Left'#2#8#6'Height'#2#14#3'Top'#2'0'#5'Width'
+#3#182#0#7'Caption'#6'&Standard Deviation of the Distribution'#11'ParentColo'
+'r'#8#0#0#6'TLabel'#6'Label3'#4'Left'#2#9#6'Height'#2#14#3'Top'#2'P'#5'Width'
+#2'9'#7'Caption'#6#11'Sample Size'#11'ParentColor'#8#0#0#5'TEdit'#8'NullEdit'
+#4'Left'#3#200#0#6'Height'#2#21#3'Top'#2#8#5'Width'#2'+'#8'TabOrder'#2#0#4'T'
+'ext'#6#8'NullEdit'#0#0#5'TEdit'#6'SDEdit'#4'Left'#3#200#0#6'Height'#2#21#3
+'Top'#2'('#5'Width'#2'+'#8'TabOrder'#2#1#4'Text'#6#5'Edit1'#0#0#5'TEdit'#5'N'
+'Edit'#4'Left'#3#200#0#6'Height'#2#21#3'Top'#2'I'#5'Width'#2'+'#8'TabOrder'#2
+#2#4'Text'#6#5'Edit1'#0#0#9'TGroupBox'#9'GroupBox1'#4'Left'#2#10#6'Height'#3
+#172#0#3'Top'#2'p'#5'Width'#3#235#0#7'Caption'#6#30'Probability of a Type I '
+'Error:'#12'ClientHeight'#3#154#0#11'ClientWidth'#3#231#0#8'TabOrder'#2#3#0#9
+'TCheckBox'#6'Prob01'#4'Left'#2#9#6'Height'#2#17#3'Top'#2#0#5'Width'#2'*'#7
+'Caption'#6#4'0.01'#8'TabOrder'#2#0#0#0#9'TCheckBox'#7'Prob025'#4'Left'#2#9#6
+'Height'#2#17#3'Top'#2#24#5'Width'#2'0'#7'Caption'#6#5'0.025'#8'TabOrder'#2#1
+#0#0#9'TCheckBox'#6'Prob05'#4'Left'#2#9#6'Height'#2#17#3'Top'#2'0'#5'Width'#2
+'*'#7'Caption'#6#4'0.05'#8'TabOrder'#2#2#0#0#9'TCheckBox'#7'Prob075'#4'Left'
+#2#9#6'Height'#2#17#3'Top'#2'H'#5'Width'#2'0'#7'Caption'#6#5'0.075'#8'TabOrd'
+'er'#2#3#0#0#9'TCheckBox'#6'Prob10'#4'Left'#2#9#6'Height'#2#17#3'Top'#2'`'#5
+'Width'#2'*'#7'Caption'#6#4'0.10'#8'TabOrder'#2#4#0#0#9'TCheckBox'#6'Prob20'
+#4'Left'#2#9#6'Height'#2#17#3'Top'#2'x'#5'Width'#2'*'#7'Caption'#6#4'0.20'#8
+'TabOrder'#2#5#0#0#0#7'TButton'#8'ResetBtn'#4'Left'#3#16#1#6'Height'#2#28#3
+'Top'#2'!'#5'Width'#2'E'#7'Caption'#6#5'Reset'#7'OnClick'#7#13'ResetBtnClick'
+#8'TabOrder'#2#4#0#0#7'TButton'#9'CancelBtn'#4'Left'#3#16#1#6'Height'#2#28#3
+'Top'#2'X'#5'Width'#2'E'#7'Caption'#6#6'Cancel'#11'ModalResult'#2#2#8'TabOrd'
+'er'#2#5#0#0#7'TButton'#10'ComputeBtn'#4'Left'#3#16#1#6'Height'#2#28#3'Top'#3
+#144#0#5'Width'#2'E'#7'Caption'#6#7'Compute'#7'OnClick'#7#15'ComputeBtnClick'
+#8'TabOrder'#2#6#0#0#7'TButton'#9'ReturnBtn'#4'Left'#3#16#1#6'Height'#2#28#3
+'Top'#3#200#0#5'Width'#2'E'#7'Caption'#6#6'Return'#11'ModalResult'#2#1#8'Tab'
+'Order'#2#7#0#0#0
]);

View File

@ -0,0 +1,225 @@
unit PCurvesUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, GraphLib, OutPutUnit, FunctionsLib, Globals;
type
{ TPCurvesFrm }
TPCurvesFrm = class(TForm)
ResetBtn: TButton;
CancelBtn: TButton;
ComputeBtn: TButton;
ReturnBtn: TButton;
Prob01: TCheckBox;
Prob025: TCheckBox;
Prob05: TCheckBox;
Prob075: TCheckBox;
Prob10: TCheckBox;
Prob20: TCheckBox;
NullEdit: TEdit;
SDEdit: TEdit;
NEdit: TEdit;
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
procedure ComputeBtnClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure ResetBtnClick(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
PCurvesFrm: TPCurvesFrm;
implementation
{ TPCurvesFrm }
procedure TPCurvesFrm.ResetBtnClick(Sender: TObject);
begin
Prob01.Checked := false;
Prob025.Checked := false;
Prob05.Checked := false;
Prob075.Checked := false;
Prob10.Checked := false;
Prob20.Checked := false;
NullEdit.Text := '';
SDEdit.Text := '';
NEdit.Text := '';
NullEdit.SetFocus;
end;
procedure TPCurvesFrm.FormShow(Sender: TObject);
begin
ResetBtnClick(self);
end;
procedure TPCurvesFrm.ComputeBtnClick(Sender: TObject);
var
mean, stddev, N, increment, althyp, power, zbeta, beta, StdErr : double;
XMax, offset : double;
ii : integer;
j, NoPlots, SetNo : integer;
alphas : array[1..6] of double;
zalphas : array[1..6] of double;
xalphas : array[1..6] of double;
XPlotPts : DblDyneMat;
YPlotPts : DblDyneMat;
LabelStr, outline, xTitle, yTitle : string;
oldCursor : TCursor;
begin
SetLength(YPlotPts,6,80);
SetLength(XPlotPts,1,80);
XMax := 0.0;
mean := StrToFloat(NullEdit.Text);
stddev := StrToFloat(SDEdit.Text);
N := StrToFloat(NEdit.Text);
StdErr := stddev / sqrt(N); // standard error of mean;
increment := 4.0 * StdErr / 80.0; //scale for 80 points
// Initialize alternative type I error arrays
for ii := 1 to 6 do
begin
alphas[ii] := 0.0;
zalphas[ii] := 0.0;
xalphas[ii] := 0.0;
end;
// Get the desired alpha (Beta) curve options
if (Prob01.Checked) then alphas[1] := 0.01;
if (Prob025.Checked) then alphas[2] := 0.025;
if (Prob05.Checked) then alphas[3] := 0.05;
if (Prob075.Checked) then alphas[4] := 0.075;
if (Prob10.Checked) then alphas[5] := 0.10;
if (Prob20.Checked) then alphas[6] := 0.20;
oldCursor := Screen.Cursor;
Screen.Cursor := TCursor(crHourGlass);
// For curves selected, obtain corresponding z and x values
for ii := 1 to 6 do
begin
if (alphas[ii] <> 0.0) then
begin
zalphas[ii] := inversez(1.0 - alphas[ii]);
xalphas[ii] := (zalphas[ii] * StdErr) + mean;
if (xalphas[ii] > XMax) then XMax := xalphas[ii];
end;
end;
// For each curve, obtain and plot 80 alternative hypotheses and
// their corresponding probabilities
NoPlots := 1;
for ii := 1 to 6 do // possible curves
begin
if (alphas[ii] <> 0.0) then // curve selected?
begin
Offset := 0.0;
for j := 1 to 80 do //get points to plot
begin
althyp := mean + Offset;
zbeta := (xalphas[ii] - althyp ) / StdErr;
if ( abs(zbeta) < 5.0) then beta := probz(zbeta)
else beta := 0.0;
power := 1.0 - beta;
XPlotPts[0,j-1] := althyp;
YPlotPts[NoPlots-1,j-1] := power;
Offset := offset + increment;
end;
NoPlots := NoPlots + 1;
end; // if alphas[i] <> 0
end; // next curve i
// Plot the points
GraphFrm.BackColor := clWhite;
GraphFrm.ShowLeftWall := true;
GraphFrm.ShowRightWall := true;
GraphFrm.ShowBottomWall := true;
GraphFrm.ShowBackWall := true;
GraphFrm.BackColor := clYellow;
GraphFrm.WallColor := clBlue;
GraphFrm.FloorColor := clBlue;
outline := format('z-Test Power. Pop. Mean := %6.2f, Sigma := %6.2f, N := %2.0f',[mean,stddev,N]);
GraphFrm.Heading := outline;
xTitle := format('%6.2f x INCREMENT ABOVE HYPOTHESIZED MEAN',[increment]);
GraphFrm.XTitle := xTitle;
yTitle := 'PROBABILITIES';
GraphFrm.YTitle := yTitle;
GraphFrm.nosets := NoPlots-1;
GraphFrm.nbars := 80;
GraphFrm.barwideprop := 0.5;
GraphFrm.miny := 0.0;
GraphFrm.maxy := 1.0;
GraphFrm.AutoScale := false;
GraphFrm.GraphType := 5; // 2d line charts
GraphFrm.PtLabels := false;
SetNo := 1;
for ii := 1 to 6 do
begin
if (alphas[ii] <> 0.0) then
begin
LabelStr := format('%4.2f',[alphas[ii]]);
GraphFrm.SetLabels[SetNo] := LabelStr;
SetNo := SetNo + 1;
end;
end;
GraphFrm.Ypoints := YPlotPts;
GraphFrm.Xpoints := XPlotPts;
Screen.Cursor := oldCursor;
GraphFrm.ShowModal;
OutPutFrm.RichEdit.Clear;
OutPutFrm.RichEdit.Lines.Add('Power of the z-test for Alternate Hypotheses');
OutPutFrm.RichEdit.Lines.Add('');
outline := 'Alpha Levels: ';
for ii := 1 to 6 do
begin
if (alphas[ii] <> 0.0) then
begin
LabelStr := format(' %4.2f ',[alphas[ii]]);
outline := outline + LabelStr;
end;
end;
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add('');
outline := '';
for ii := 1 to 80 do
begin
outline := format('X := %6.2f ',[XPlotPts[0,ii-1]]);
SetNo := 1;
for j := 1 to 6 do
begin
if (alphas[j] <> 0.0) then
begin
LabelStr := format('%4.3f ',[YPlotPts[SetNo-1,ii-1]]);
outline := outline + LabelStr;
SetNo := SetNo + 1;
end;
end;
OutPutFrm.RichEdit.Lines.Add(outline);
end;
OutPutFrm.ShowModal;
// clean up the heap
XPlotPts := nil;
YPlotPts := nil;
end;
initialization
{$I pcurvesunit.lrs}
end.

View File

@ -0,0 +1,343 @@
object PlotXYFrm: TPlotXYFrm
Left = 94
Height = 300
Top = 112
Width = 605
Caption = 'Plot X versus Y'
ClientHeight = 300
ClientWidth = 605
OnShow = FormShow
LCLVersion = '0.9.30'
object Label1: TLabel
Left = 9
Height = 16
Top = 8
Width = 48
Caption = 'Variables'
ParentColor = False
end
object Label2: TLabel
Left = 249
Height = 16
Top = 26
Width = 77
Caption = 'X Axis Variable'
ParentColor = False
end
object Label3: TLabel
Left = 250
Height = 16
Top = 165
Width = 77
Caption = 'Y Axis Variable'
ParentColor = False
end
object VarList: TListBox
Left = 6
Height = 259
Top = 29
Width = 183
ItemHeight = 0
TabOrder = 0
end
object XinBtn: TBitBtn
Left = 200
Height = 32
Top = 29
Width = 39
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE
6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580
3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3
71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7
74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7
74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = XinBtnClick
TabOrder = 1
end
object XOutBtn: TBitBtn
Left = 200
Height = 32
Top = 64
Width = 39
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = XOutBtnClick
TabOrder = 2
end
object YInBtn: TBitBtn
Left = 200
Height = 32
Top = 168
Width = 39
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE
6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580
3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3
71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7
74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7
74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = YInBtnClick
TabOrder = 3
end
object YOutBtn: TBitBtn
Left = 200
Height = 32
Top = 208
Width = 39
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = YOutBtnClick
TabOrder = 4
end
object XEdit: TEdit
Left = 247
Height = 23
Top = 48
Width = 106
TabOrder = 5
Text = 'XEdit'
end
object YEdit: TEdit
Left = 248
Height = 23
Top = 183
Width = 102
TabOrder = 6
Text = 'YEdit'
end
object GroupBox1: TGroupBox
Left = 360
Height = 185
Top = 16
Width = 216
Caption = 'Options'
ClientHeight = 167
ClientWidth = 212
TabOrder = 7
object Label4: TLabel
Left = 27
Height = 16
Top = 105
Width = 75
Caption = '% Confidence'
ParentColor = False
end
object DescChk: TCheckBox
Left = 8
Height = 19
Top = 8
Width = 155
Caption = 'Print Descriptive Statistics'
TabOrder = 0
end
object ConfEdit: TEdit
Left = 107
Height = 23
Top = 100
Width = 57
TabOrder = 1
Text = '95.0'
end
end
object ResetBtn: TButton
Left = 384
Height = 24
Top = 224
Width = 81
Caption = 'Reset'
OnClick = ResetBtnClick
TabOrder = 8
end
object CancelBtn: TButton
Left = 496
Height = 24
Top = 224
Width = 81
Caption = 'Cancel'
ModalResult = 2
OnClick = CancelBtnClick
TabOrder = 9
end
object ComputeBtn: TButton
Left = 384
Height = 24
Top = 264
Width = 81
Caption = 'Compute'
OnClick = ComputeBtnClick
TabOrder = 10
end
object ReturnBtn: TButton
Left = 496
Height = 24
Top = 264
Width = 81
Caption = 'Return'
ModalResult = 1
OnClick = ReturnBtnClick
TabOrder = 11
end
object LineChk: TCheckBox
Left = 376
Height = 19
Top = 64
Width = 146
Caption = 'Plot the Regression Line'
TabOrder = 12
end
object MeansChk: TCheckBox
Left = 376
Height = 19
Top = 88
Width = 99
Caption = 'Plot the Means'
TabOrder = 13
end
object ConfChk: TCheckBox
Left = 376
Height = 19
Top = 112
Width = 155
Caption = 'Plot the Confidence Band'
TabOrder = 14
end
object PrintChk: TCheckBox
Left = 376
Height = 19
Top = 165
Width = 144
Caption = 'Print Plot on the Printer'
TabOrder = 15
end
end

View File

@ -0,0 +1,247 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TPlotXYFrm','FORMDATA',[
'TPF0'#10'TPlotXYFrm'#9'PlotXYFrm'#4'Left'#2'^'#6'Height'#3','#1#3'Top'#2'p'#5
+'Width'#3']'#2#7'Caption'#6#15'Plot X versus Y'#12'ClientHeight'#3','#1#11'C'
+'lientWidth'#3']'#2#6'OnShow'#7#8'FormShow'#10'LCLVersion'#6#6'0.9.30'#0#6'T'
+'Label'#6'Label1'#4'Left'#2#9#6'Height'#2#16#3'Top'#2#8#5'Width'#2'0'#7'Capt'
+'ion'#6#9'Variables'#11'ParentColor'#8#0#0#6'TLabel'#6'Label2'#4'Left'#3#249
+#0#6'Height'#2#16#3'Top'#2#26#5'Width'#2'M'#7'Caption'#6#15'X Axis Variable'
+#11'ParentColor'#8#0#0#6'TLabel'#6'Label3'#4'Left'#3#250#0#6'Height'#2#16#3
+'Top'#3#165#0#5'Width'#2'M'#7'Caption'#6#15'Y Axis Variable'#11'ParentColor'
+#8#0#0#8'TListBox'#7'VarList'#4'Left'#2#6#6'Height'#3#3#1#3'Top'#2#29#5'Widt'
+'h'#3#183#0#10'ItemHeight'#2#0#8'TabOrder'#2#0#0#0#7'TBitBtn'#6'XinBtn'#4'Le'
+'ft'#3#200#0#6'Height'#2' '#3'Top'#2#29#5'Width'#2''''#10'Glyph.Data'#10':'#4
+#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0
+#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'!c$'#184#29'^ '#6#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0'*p/8%i)'#247'!c$'#217#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'
+#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'
+#255'?'#136'E'#255'Y'#161'^'#255'D'#139'I'#255'!c$'#207#255#255#255#0#255#255
+#255#0#255#255#255#0'e'#195'q'#255#160#215#169#255#156#213#165#255#152#211
+#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142#255#130
+#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'E'#140'J'#255'!c$'
+#196#255#255#255#0#255#255#255#0'h'#199't'#255#165#218#174#255#162#216#171
+#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255#142#204
+#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130#255'J'
+#145'P'#255'%i)'#201#255#255#255#0#255#255#255#0'h'#199't'#255'h'#199't'#255
+'e'#195'q'#255'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161
+'V'#255'G'#153'O'#255'A'#145'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'#209#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0'A'#145'I'#247';'#136'B'#219#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0'G'#153'O'#187'A'#145'I'#6#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#11'XinBtnClick'#8'TabOrde'
+'r'#2#1#0#0#7'TBitBtn'#7'XOutBtn'#4'Left'#3#200#0#6'Height'#2' '#3'Top'#2'@'
+#5'Width'#2''''#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0
+#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0
,#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'M'#161'V'#6'G'#153'O'
+#184#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'S'#169'\'#217'M'#161'V'
+#247'G'#153'O8'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131#255
+'['#170'd'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'
+#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255#255#255#255#0#255#255#255#0'e'#195
+'q'#196'{'#200#134#255#156#213#165#255#152#211#161#255#148#208#157#255#144
+#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255
+'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!c$'#255#255#255#255#0#255#255
+#255#0'h'#199't'#201#127#204#138#255#162#216#171#255#158#214#167#255#154#212
+#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255#133
+#199#139#255#129#197#135#255'}'#194#130#255'x'#192'~'#255'%i)'#255#255#255
+#255#0#255#255#255#0#255#255#255#0'h'#199't'#209#128#205#139#255'|'#201#135
+#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'
+#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#219'e'#195'q'#247#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#6'h'#199't'#187#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyp'
+'hs'#2#0#7'OnClick'#7#12'XOutBtnClick'#8'TabOrder'#2#2#0#0#7'TBitBtn'#6'YInB'
+'tn'#4'Left'#3#200#0#6'Height'#2' '#3'Top'#3#168#0#5'Width'#2''''#10'Glyph.D'
+'ata'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0
+#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
,#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'!c$'#184
+#29'^ '#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'*p/8%i)'#247'!c$'#217#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0'a'#190'm'#255']'#184'h'#255'X'#177
+'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255
+'5'#128';'#255'?'#136'E'#255'Y'#161'^'#255'D'#139'I'#255'!c$'#207#255#255#255
+#0#255#255#255#0#255#255#255#0'e'#195'q'#255#160#215#169#255#156#213#165#255
+#152#211#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142
+#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'E'#140'J'
+#255'!c$'#196#255#255#255#0#255#255#255#0'h'#199't'#255#165#218#174#255#162
+#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255
+#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130
+#255'J'#145'P'#255'%i)'#201#255#255#255#0#255#255#255#0'h'#199't'#255'h'#199
+'t'#255'e'#195'q'#255'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255
+'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'
+#209#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'A'#145'I'#247';'#136'B'#219#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'G'#153'O'#187'A'#145'I'#6#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#11'YInBtnClick'#8
+'TabOrder'#2#3#0#0#7'TBitBtn'#7'YOutBtn'#4'Left'#3#200#0#6'Height'#2' '#3'To'
+'p'#3#208#0#5'Width'#2''''#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0
+#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'
+#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'M'#161'V'#6'G'
+#153'O'#184#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'S'#169'\'#217'M'#161
+'V'#247'G'#153'O8'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131
+#255'['#170'd'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/'
+'x5'#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255#255#255#255#0#255#255#255#0'e'
+#195'q'#196'{'#200#134#255#156#213#165#255#152#211#161#255#148#208#157#255
+#144#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132
+#255'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!c$'#255#255#255#255#0#255
+#255#255#0'h'#199't'#201#127#204#138#255#162#216#171#255#158#214#167#255#154
,#212#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255
+#133#199#139#255#129#197#135#255'}'#194#130#255'x'#192'~'#255'%i)'#255#255
+#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#209#128#205#139#255'|'#201
+#135#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'
+#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#219'e'#195'q'#247#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#6'h'#199't'#187#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'Num'
+'Glyphs'#2#0#7'OnClick'#7#12'YOutBtnClick'#8'TabOrder'#2#4#0#0#5'TEdit'#5'XE'
+'dit'#4'Left'#3#247#0#6'Height'#2#23#3'Top'#2'0'#5'Width'#2'j'#8'TabOrder'#2
+#5#4'Text'#6#5'XEdit'#0#0#5'TEdit'#5'YEdit'#4'Left'#3#248#0#6'Height'#2#23#3
+'Top'#3#183#0#5'Width'#2'f'#8'TabOrder'#2#6#4'Text'#6#5'YEdit'#0#0#9'TGroupB'
+'ox'#9'GroupBox1'#4'Left'#3'h'#1#6'Height'#3#185#0#3'Top'#2#16#5'Width'#3#216
+#0#7'Caption'#6#7'Options'#12'ClientHeight'#3#167#0#11'ClientWidth'#3#212#0#8
+'TabOrder'#2#7#0#6'TLabel'#6'Label4'#4'Left'#2#27#6'Height'#2#16#3'Top'#2'i'
+#5'Width'#2'K'#7'Caption'#6#12'% Confidence'#11'ParentColor'#8#0#0#9'TCheckB'
+'ox'#7'DescChk'#4'Left'#2#8#6'Height'#2#19#3'Top'#2#8#5'Width'#3#155#0#7'Cap'
+'tion'#6#28'Print Descriptive Statistics'#8'TabOrder'#2#0#0#0#5'TEdit'#8'Con'
+'fEdit'#4'Left'#2'k'#6'Height'#2#23#3'Top'#2'd'#5'Width'#2'9'#8'TabOrder'#2#1
+#4'Text'#6#4'95.0'#0#0#0#7'TButton'#8'ResetBtn'#4'Left'#3#128#1#6'Height'#2
+#24#3'Top'#3#224#0#5'Width'#2'Q'#7'Caption'#6#5'Reset'#7'OnClick'#7#13'Reset'
+'BtnClick'#8'TabOrder'#2#8#0#0#7'TButton'#9'CancelBtn'#4'Left'#3#240#1#6'Hei'
+'ght'#2#24#3'Top'#3#224#0#5'Width'#2'Q'#7'Caption'#6#6'Cancel'#11'ModalResul'
+'t'#2#2#7'OnClick'#7#14'CancelBtnClick'#8'TabOrder'#2#9#0#0#7'TButton'#10'Co'
+'mputeBtn'#4'Left'#3#128#1#6'Height'#2#24#3'Top'#3#8#1#5'Width'#2'Q'#7'Capti'
+'on'#6#7'Compute'#7'OnClick'#7#15'ComputeBtnClick'#8'TabOrder'#2#10#0#0#7'TB'
+'utton'#9'ReturnBtn'#4'Left'#3#240#1#6'Height'#2#24#3'Top'#3#8#1#5'Width'#2
+'Q'#7'Caption'#6#6'Return'#11'ModalResult'#2#1#7'OnClick'#7#14'ReturnBtnClic'
+'k'#8'TabOrder'#2#11#0#0#9'TCheckBox'#7'LineChk'#4'Left'#3'x'#1#6'Height'#2
+#19#3'Top'#2'@'#5'Width'#3#146#0#7'Caption'#6#24'Plot the Regression Line'#8
+'TabOrder'#2#12#0#0#9'TCheckBox'#8'MeansChk'#4'Left'#3'x'#1#6'Height'#2#19#3
+'Top'#2'X'#5'Width'#2'c'#7'Caption'#6#14'Plot the Means'#8'TabOrder'#2#13#0#0
+#9'TCheckBox'#7'ConfChk'#4'Left'#3'x'#1#6'Height'#2#19#3'Top'#2'p'#5'Width'#3
+#155#0#7'Caption'#6#24'Plot the Confidence Band'#8'TabOrder'#2#14#0#0#9'TChe'
+'ckBox'#8'PrintChk'#4'Left'#3'x'#1#6'Height'#2#19#3'Top'#3#165#0#5'Width'#3
+#144#0#7'Caption'#6#25'Print Plot on the Printer'#8'TabOrder'#2#15#0#0#0
]);

View File

@ -0,0 +1,692 @@
unit PlotXYUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, Buttons, MainUnit, Globals, Math, OutPutUnit,
FunctionsLib, DataProcs, BlankFrmUnit, Printers;
type
{ TPlotXYFrm }
TPlotXYFrm = class(TForm)
ConfEdit: TEdit;
Label4: TLabel;
ResetBtn: TButton;
CancelBtn: TButton;
ComputeBtn: TButton;
ReturnBtn: TButton;
DescChk: TCheckBox;
LineChk: TCheckBox;
MeansChk: TCheckBox;
ConfChk: TCheckBox;
PrintChk: TCheckBox;
GroupBox1: TGroupBox;
YEdit: TEdit;
Label3: TLabel;
XEdit: TEdit;
Label2: TLabel;
XinBtn: TBitBtn;
XOutBtn: TBitBtn;
YInBtn: TBitBtn;
YOutBtn: TBitBtn;
Label1: TLabel;
VarList: TListBox;
procedure CancelBtnClick(Sender: TObject);
procedure ComputeBtnClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure ResetBtnClick(Sender: TObject);
procedure ReturnBtnClick(Sender: TObject);
procedure XinBtnClick(Sender: TObject);
procedure XOutBtnClick(Sender: TObject);
procedure YInBtnClick(Sender: TObject);
procedure YOutBtnClick(Sender: TObject);
private
{ private declarations }
procedure plotxy(VAR Xpoints : DblDyneVec;
VAR Ypoints : DblDyneVec;
VAR UpConf : DblDyneVec;
VAR LowConf : DblDyneVec;
ConfBand : double;
Xmean, Ymean , R : double;
Slope, Intercept : double;
Xmax, Xmin, Ymax, Ymin : double;
N : integer);
procedure pplotxy(VAR Xpoints : DblDyneVec;
VAR Ypoints : DblDyneVec;
VAR UpConf : DblDyneVec;
VAR LowConf : DblDyneVec;
ConfBand : double;
Xmean, Ymean , R : double;
Slope, Intercept : double;
Xmax, Xmin, Ymax, Ymin : double;
N : integer);
public
{ public declarations }
end;
var
PlotXYFrm: TPlotXYFrm;
implementation
{ TPlotXYFrm }
procedure TPlotXYFrm.ResetBtnClick(Sender: TObject);
var i : integer;
begin
XEdit.Text := '';
YEdit.Text := '';
ConfEdit.Text := '95.0';
DescChk.Checked := false;
LineChk.Checked := false;
MeansChk.Checked := false;
ConfChk.Checked := false;
PrintChk.Checked := false;
XInBtn.Visible := true;
XOutBtn.Visible := false;
YInBtn.Visible := true;
YOutBtn.Visible := false;
VarList.Items.Clear;
for i := 1 to NoVariables do
VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]);
end;
procedure TPlotXYFrm.ReturnBtnClick(Sender: TObject);
begin
PlotXYFrm.Hide;
end;
procedure TPlotXYFrm.XinBtnClick(Sender: TObject);
var index : integer;
begin
index := VarList.ItemIndex;
XEdit.Text := VarList.Items.Strings[index];
VarList.Items.Delete(index);
XInBtn.Visible := false;
XOutBtn.Visible := true;
end;
procedure TPlotXYFrm.XOutBtnClick(Sender: TObject);
begin
VarList.Items.Add(XEdit.Text);
XEdit.Text := '';
XInBtn.Visible := true;
XOutBtn.Visible := false;
end;
procedure TPlotXYFrm.YInBtnClick(Sender: TObject);
var index : integer;
begin
index := VarList.ItemIndex;
YEdit.Text := VarList.Items.Strings[index];
VarList.Items.Delete(index);
YInBtn.Visible := false;
YOutBtn.Visible := true;
end;
procedure TPlotXYFrm.YOutBtnClick(Sender: TObject);
begin
VarList.Items.Add(YEdit.Text);
YEdit.Text := '';
YInBtn.Visible := true;
YOutBtn.Visible := false;
end;
procedure TPlotXYFrm.FormShow(Sender: TObject);
begin
ResetBtnClick(self);
end;
procedure TPlotXYFrm.CancelBtnClick(Sender: TObject);
begin
PlotXYFrm.Hide;
end;
procedure TPlotXYFrm.ComputeBtnClick(Sender: TObject);
var
Xmin, Xmax, Ymin, Ymax, SSx, t, DF : double;
Xmean, Ymean, Xvariance, Yvariance, Xstddev, Ystddev, ConfBand : double;
X, Y, R, temp, SEPred, Slope, Intercept, predicted, sedata : double;
i, j : integer;
Xcol, Ycol, N, NoSelected : integer;
Xpoints : DblDyneVec;
Ypoints : DblDyneVec;
UpConf : DblDyneVec;
lowConf : DblDyneVec;
cellstring, outline : string;
ColNoSelected : IntDyneVec;
begin
SetLength(Xpoints,NoCases + 1);
SetLength(Ypoints,NoCases + 1);
SetLength(UpConf,NoCases + 1);
SetLength(lowConf,NoCases + 1);
SetLength(ColNoSelected,NoVariables);
Xcol := 0;
Ycol := 0;
for i := 1 to Novariables do
begin
cellstring := OS3MainFrm.DataGrid.Cells[i,0];
if cellstring = XEdit.Text then Xcol := i;
if cellstring = YEdit.Text then Ycol := i;
end;
NoSelected := 2;
ColNoSelected[0] := Xcol;
ColNoSelected[1] := Ycol;
N := 0;
Xmax := -1.0e20;
Xmin := 1.0e20;
Ymax := -1.0e20;
Ymin := 1.0e20;
Xmean := 0.0;
Ymean := 0.0;
Xvariance := 0.0;
Yvariance := 0.0;
R := 0.0;
for i := 1 to NoCases do
begin
if Not GoodRecord(i,NoSelected,ColNoSelected) then continue;
N := N + 1;
X := StrToFloat(OS3MainFrm.DataGrid.Cells[Xcol,i]);
Y := StrToFloat(OS3MainFrm.DataGrid.Cells[Ycol,i]);
Xpoints[N] := X;
Ypoints[N] := Y;
if X > Xmax then Xmax := X;
if X < Xmin then Xmin := X;
if Y > Ymax then Ymax := Y;
if Y < Ymin then Ymin := Y;
Xmean := Xmean + X;
Ymean := Ymean + Y;
Xvariance := Xvariance + (X * X);
Yvariance := Yvariance + (Y * Y);
R := R + (X * Y);
end;
// sort on X
for i := 1 to N - 1 do
begin
for j := i + 1 to N do
begin
if Xpoints[i] > Xpoints[j] then //swap
begin
temp := Xpoints[i];
Xpoints[i] := Xpoints[j];
Xpoints[j] := temp;
temp := Ypoints[i];
Ypoints[i] := Ypoints[j];
Ypoints[j] := temp;
end;
end;
end;
// calculate statistics
Xvariance := Xvariance - (Xmean * Xmean / N);
SSx := Xvariance;
Xvariance := Xvariance / (N - 1);
Xstddev := sqrt(Xvariance);
Yvariance := Yvariance - (Ymean * Ymean / N);
Yvariance := Yvariance / (N - 1);
Ystddev := sqrt(Yvariance);
R := R - (Xmean * Ymean / N);
R := R / (N - 1);
R := R / (Xstddev * Ystddev);
SEPred := sqrt(1.0 - (R * R)) * Ystddev;
SEPred := SEPred * sqrt((N - 1) / (N - 2));
Xmean := Xmean / N;
Ymean := Ymean / N;
Slope := R * Ystddev / Xstddev;
Intercept := Ymean - Slope * Xmean;
// Now, print the descriptive statistics if requested
if DescChk.Checked then
begin
OutPutFrm.RichEdit.Lines.Add('X versus Y Plot');
OutPutFrm.RichEdit.Lines.Add('');
outline := format('X = %s, Y = %s from file: %s',[Xedit.Text,
YEdit.Text,OS3MainFrm.FileNameEdit.Text]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('Variable Mean Variance Std.Dev.');
outline := format('%-10s%8.2f %8.2f %8.2f',
[XEdit.Text,Xmean,Xvariance,Xstddev]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('%-10s%8.2f %8.2f %8.2f',
[YEdit.Text,Ymean,Yvariance,Ystddev]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Correlation = %6.4f, Slope = %8.2f, Intercept = %8.2f',
[R, Slope, Intercept]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Standard Error of Estimate = %8.2f',[SEPred]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Number of good cases = %d',[N]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.ShowModal;
end;
// get upper and lower confidence points for each X value
if ConfChk.Checked then
begin
ConfBand := StrToFloat(ConfEdit.Text) / 100.0;
DF := N - 2;
t := inverset(ConfBand,DF);
for i := 1 to N do
begin
X := Xpoints[i];
predicted := slope * X + intercept;
sedata := SEPred * sqrt(1.0 + (1.0 / N) + (sqr(X - Xmean) / SSx));
UpConf[i] := predicted + (t * sedata);
lowConf[i] := predicted - (t * sedata);
if UpConf[i] > Ymax then Ymax := UpConf[i];
if lowConf[i] < Ymin then Ymin := lowConf[i];
end;
end
else ConfBand := 0.0;
// plot the values (and optional line and confidence band if elected)
plotxy(Xpoints, Ypoints, UpConf, LowConf, ConfBand, Xmean, Ymean, R,
Slope, Intercept, Xmax, Xmin, Ymax, Ymin, N);
// print the same if elected
if PrintChk.Checked then
pplotxy(Xpoints, Ypoints, UpConf, LowConf, ConfBand, Xmean, Ymean,
R, Slope, Intercept, Xmax, Xmin, Ymax, Ymin, N);
// cleanup
ColNoSelected := nil;
lowConf := nil;
UpConf := nil;
Ypoints := nil;
Xpoints := nil;
end;
procedure TPlotXYFrm.plotxy(VAR Xpoints : DblDyneVec;
VAR Ypoints : DblDyneVec;
VAR UpConf : DblDyneVec;
VAR LowConf : DblDyneVec;
ConfBand : double;
Xmean, Ymean , R : double;
Slope, Intercept : double;
Xmax, Xmin, Ymax, Ymin : double;
N : integer);
var
i, xpos, ypos, hleft, hright, vtop, vbottom, imagewide : integer;
vhi, hwide, offset, strhi, imagehi : integer;
maxval, minval, valincr, Yvalue, Xvalue : double;
Title : string;
begin
BlankFrm.Image1.Canvas.Clear;
BlankFrm.Show;
Title := 'X versus Y PLOT Using File: ' + OS3MainFrm.FileNameEdit.Text;
BlankFrm.Caption := Title;
imagewide := BlankFrm.Image1.Width;
imagehi := BlankFrm.Image1.Height;
vtop := 20;
vbottom := round(imagehi) - 80;
vhi := vbottom - vtop;
hleft := 100;
hright := imagewide - 80;
hwide := hright - hleft;
BlankFrm.Image1.Canvas.Pen.Color := clBlack;
BlankFrm.Image1.Canvas.Brush.Color := clWhite;
// Draw chart border
BlankFrm.Image1.Canvas.Rectangle(0,0,imagewide,imagehi);
// draw Means
if MeansChk.Checked then
begin
ypos := round(vhi * ( (Ymax - Ymean) / (Ymax - Ymin)));
ypos := ypos + vtop;
xpos := hleft;
BlankFrm.Image1.Canvas.MoveTo(xpos,ypos);
xpos := hright;
BlankFrm.Image1.Canvas.Pen.Color := clGreen;
BlankFrm.Image1.Canvas.LineTo(xpos,ypos);
Title := 'MEAN ';
Title := Title + YEdit.Text;
strhi := BlankFrm.Image1.Canvas.TextHeight(Title);
ypos := ypos - strhi div 2;
BlankFrm.Image1.Canvas.Brush.Color := clWhite;
BlankFrm.Image1.Canvas.TextOut(xpos,ypos,Title);
xpos := round(hwide * ( (Xmean - Xmin) / (Xmax - Xmin)));
xpos := xpos + hleft;
ypos := vtop;
BlankFrm.Image1.Canvas.MoveTo(xpos,ypos);
ypos := vbottom;
BlankFrm.Image1.Canvas.Pen.Color := clGreen;
BlankFrm.Image1.Canvas.LineTo(xpos,ypos);
Title := 'MEAN ';
Title := Title + XEdit.Text;
strhi := BlankFrm.Image1.Canvas.TextWidth(Title);
xpos := xpos - strhi div 2;
ypos := vtop - BlankFrm.Image1.Canvas.TextHeight(Title);
BlankFrm.Image1.Canvas.Brush.Color := clWhite;
BlankFrm.Image1.Canvas.TextOut(xpos,ypos,Title);
end;
// draw slope line
if LineChk.Checked then
begin
BlankFrm.Image1.Canvas.Pen.Color := clBlack;
Yvalue := (Xpoints[1] * slope) + intercept; // predicted score
ypos := round(vhi * ( (Ymax - Yvalue) / (Ymax - Ymin)));
ypos := ypos + vtop;
xpos := round(hwide * ( (Xpoints[1]- Xmin) / (Xmax - Xmin)));
xpos := xpos + hleft;
BlankFrm.Image1.Canvas.MoveTo(xpos,ypos);
Yvalue := (Xpoints[N] * slope) + intercept; // predicted score
ypos := round(vhi * ( (Ymax - Yvalue) / (Ymax - Ymin)));
ypos := ypos + vtop;
xpos := round(hwide * ( (Xpoints[N] - Xmin) / (Xmax - Xmin)));
xpos := xpos + hleft;
BlankFrm.Image1.Canvas.LineTo(xpos,ypos);
end;
// draw horizontal axis
BlankFrm.Image1.Canvas.Pen.Color := clBlack;
BlankFrm.Image1.Canvas.MoveTo(hleft,vbottom);
BlankFrm.Image1.Canvas.LineTo(hright,vbottom);
valincr := (Xmax - Xmin) / 10.0;
for i := 1 to 11 do
begin
ypos := vbottom;
Xvalue := Xmin + valincr * (i - 1);
xpos := round(hwide * ((Xvalue - Xmin) / (Xmax - Xmin)));
xpos := xpos + hleft;
BlankFrm.Image1.Canvas.MoveTo(xpos,ypos);
ypos := ypos + 10;
BlankFrm.Image1.Canvas.LineTo(xpos,ypos);
Title := format('%6.2f',[Xvalue]);
offset := BlankFrm.Image1.Canvas.TextWidth(Title) div 2;
xpos := xpos - offset;
BlankFrm.Image1.Canvas.Pen.Color := clBlack;
BlankFrm.Image1.Canvas.TextOut(xpos,ypos,Title);
end;
xpos := hleft + (hwide div 2) - (BlankFrm.Image1.Canvas.TextWidth(XEdit.Text) div 2);
ypos := vbottom + 20;
BlankFrm.Image1.Canvas.TextOut(xpos,ypos,XEdit.Text);
Title := format('R(X,Y) = %5.3f, Slope = %6.2f, Intercept = %6.2f',
[R,Slope,Intercept]);
xpos := hleft + (hwide div 2) - (BlankFrm.Image1.Canvas.TextWidth(Title) div 2);
ypos := ypos + 15;
BlankFrm.Image1.Canvas.TextOut(xpos,ypos,Title);
// Draw vertical axis
Title := YEdit.Text;
xpos := hleft - BlankFrm.Image1.Canvas.TextWidth(Title) div 2;
ypos := vtop - BlankFrm.Image1.Canvas.TextHeight(Title);
BlankFrm.Image1.Canvas.TextOut(xpos,ypos,YEdit.Text);
xpos := hleft;
ypos := vtop;
BlankFrm.Image1.Canvas.MoveTo(xpos,ypos);
ypos := vbottom;
BlankFrm.Image1.Canvas.LineTo(xpos,ypos);
valincr := (Ymax - Ymin) / 10.0;
for i := 1 to 11 do
begin
Title := format('%8.2f',[Ymax - ((i-1)*valincr)]);
strhi := BlankFrm.Image1.Canvas.TextHeight(Title);
xpos := 10;
Yvalue := Ymax - (valincr * (i-1));
ypos := round(vhi * ( (Ymax - Yvalue) / (Ymax - Ymin)));
ypos := ypos + vtop - strhi div 2;
BlankFrm.Image1.Canvas.TextOut(xpos,ypos,Title);
xpos := hleft;
ypos := ypos + strhi div 2;
BlankFrm.Image1.Canvas.MoveTo(xpos,ypos);
xpos := hleft - 10;
BlankFrm.Image1.Canvas.LineTo(xpos,ypos);
end;
// draw points for x and y pairs
for i := 1 to N do
begin
ypos := round(vhi * ( (Ymax - Ypoints[i]) / (Ymax - Ymin)));
ypos := ypos + vtop;
xpos := round(hwide * ( (Xpoints[i] - Xmin) / (Xmax - Xmin)));
xpos := xpos + hleft;
BlankFrm.Image1.Canvas.Brush.Color := clNavy;
BlankFrm.Image1.Canvas.Brush.Style := bsSolid;
BlankFrm.Image1.Canvas.Pen.Color := clNavy;
BlankFrm.Image1.Canvas.Ellipse(xpos,ypos,xpos+5,ypos+5);
end;
// draw confidence bands if requested
if ConfBand <> 0.0 then
begin
BlankFrm.Image1.Canvas.Pen.Color := clRed;
ypos := round(vhi * ((Ymax - UpConf[1]) / (Ymax - Ymin)));
ypos := ypos + vtop;
xpos := round(hwide * ( (Xpoints[1] - Xmin) / (Xmax - Xmin)));
xpos := xpos + hleft;
BlankFrm.Image1.Canvas.MoveTo(xpos,ypos);
for i := 2 to N do
begin
ypos := round(vhi * ((Ymax - UpConf[i]) / (Ymax - Ymin)));
ypos := ypos + vtop;
xpos := round(hwide * ( (Xpoints[i] - Xmin) / (Xmax - Xmin)));
xpos := xpos + hleft;
BlankFrm.Image1.Canvas.LineTo(xpos,ypos);
end;
ypos := round(vhi * ((Ymax - lowConf[1]) / (Ymax - Ymin)));
ypos := ypos + vtop;
xpos := round(hwide * ( (Xpoints[1] - Xmin) / (Xmax - Xmin)));
xpos := xpos + hleft;
BlankFrm.Image1.Canvas.MoveTo(xpos,ypos);
for i := 2 to N do
begin
ypos := round(vhi * ((Ymax - lowConf[i]) / (Ymax - Ymin)));
ypos := ypos + vtop;
xpos := round(hwide * ( (Xpoints[i] - Xmin) / (Xmax - Xmin)));
xpos := xpos + hleft;
BlankFrm.Image1.Canvas.LineTo(xpos,ypos);
end;
end;
end;
//-------------------------------------------------------------------
procedure TPlotXYFrm.pplotxy(VAR Xpoints : DblDyneVec;
VAR Ypoints : DblDyneVec;
VAR UpConf : DblDyneVec;
VAR LowConf : DblDyneVec;
ConfBand : double;
Xmean, Ymean , R : double;
Slope, Intercept : double;
Xmax, Xmin, Ymax, Ymin : double;
N : integer);
var
i, xpos, ypos, hleft, hright, vtop, vbottom, imagewide : integer;
vhi, hwide, offset, strhi : integer;
imagehi, maxval, minval, valincr, Yvalue, Xvalue : double;
Title : string;
begin
Printer.Orientation := poLandscape;
Printer.BeginDoc;
Title := 'X versus Y PLOT Using File: ' + OS3MainFrm.FileNameEdit.Text;
strhi := Printer.Canvas.TextWidth(Title) div 2;
Printer.Canvas.TextOut(strhi,5,Title);
imagewide := Printer.PageWidth - 100;
imagehi := Printer.PageHeight - 100;
vtop := 120;
vbottom := round(imagehi) - 100;
vhi := vbottom - vtop;
hleft := 300;
hright := imagewide - 200;
hwide := hright - hleft;
Printer.Canvas.Pen.Color := clBlack;
Printer.Canvas.Brush.Color := clWhite;
// draw Means
if MeansChk.Checked then
begin
ypos := round(vhi * ( (Ymax - Ymean) / (Ymax - Ymin)));
ypos := ypos + vtop;
xpos := hleft;
Printer.Canvas.MoveTo(xpos,ypos);
xpos := hright;
Printer.Canvas.Pen.Color := clGreen;
Printer.Canvas.LineTo(xpos,ypos);
Title := 'MEAN ';
Title := Title + YEdit.Text;
strhi := Printer.Canvas.TextHeight(Title);
ypos := ypos - strhi div 2;
Printer.Canvas.Brush.Color := clWhite;
Printer.Canvas.TextOut(xpos,ypos,Title);
xpos := round(hwide * ( (Xmean - Xmin) / (Xmax - Xmin)));
xpos := xpos + hleft;
ypos := vtop;
Printer.Canvas.MoveTo(xpos,ypos);
ypos := vbottom;
Printer.Canvas.Pen.Color := clGreen;
Printer.Canvas.LineTo(xpos,ypos);
Title := 'MEAN ';
Title := Title + XEdit.Text;
strhi := Printer.Canvas.TextWidth(Title);
xpos := xpos - strhi div 2;
ypos := vtop - Printer.Canvas.TextHeight(Title);
Printer.Canvas.Brush.Color := clWhite;
Printer.Canvas.TextOut(xpos,ypos,Title);
end;
// draw slope line
if LineChk.Checked then
begin
Printer.Canvas.Pen.Color := clBlack;
Yvalue := (Xpoints[1] * slope) + intercept; // predicted score
ypos := round(vhi * ( (Ymax - Yvalue) / (Ymax - Ymin)));
ypos := ypos + vtop;
xpos := round(hwide * ( (Xpoints[1]- Xmin) / (Xmax - Xmin)));
xpos := xpos + hleft;
Printer.Canvas.MoveTo(xpos,ypos);
Yvalue := (Xpoints[N] * slope) + intercept; // predicted score
ypos := round(vhi * ( (Ymax - Yvalue) / (Ymax - Ymin)));
ypos := ypos + vtop;
xpos := round(hwide * ( (Xpoints[N] - Xmin) / (Xmax - Xmin)));
xpos := xpos + hleft;
Printer.Canvas.LineTo(xpos,ypos);
end;
// draw horizontal axis
Printer.Canvas.Pen.Color := clBlack;
Printer.Canvas.MoveTo(hleft,vbottom);
Printer.Canvas.LineTo(hright,vbottom);
valincr := (Xmax - Xmin) / 10.0;
for i := 1 to 11 do
begin
ypos := vbottom;
Xvalue := Xmin + valincr * (i - 1);
xpos := round(hwide * ((Xvalue - Xmin) / (Xmax - Xmin)));
xpos := xpos + hleft;
Printer.Canvas.MoveTo(xpos,ypos);
ypos := ypos + 10;
Printer.Canvas.LineTo(xpos,ypos);
Title := format('%6.2f',[Xvalue]);
offset := Printer.Canvas.TextWidth(Title) div 2;
xpos := xpos - offset;
Printer.Canvas.Pen.Color := clBlack;
Printer.Canvas.TextOut(xpos,ypos,Title);
end;
xpos := hleft + (hwide div 2) - (Printer.Canvas.TextWidth(XEdit.Text) div 2);
ypos := vbottom + 40;
Printer.Canvas.TextOut(xpos,ypos,XEdit.Text);
Title := format('R(X,Y) = %5.3f, Slope = %6.2f, Intercept = %6.2f',
[R,Slope,Intercept]);
xpos := hleft + (hwide div 2) - (Printer.Canvas.TextWidth(Title) div 2);
ypos := ypos + 40;
Printer.Canvas.TextOut(xpos,ypos,Title);
// Draw vertical axis
Title := YEdit.Text;
xpos := hleft - Printer.Canvas.TextWidth(Title) div 2;
ypos := vtop - Printer.Canvas.TextHeight(Title);
Printer.Canvas.TextOut(xpos,ypos,YEdit.Text);
xpos := hleft;
ypos := vtop;
Printer.Canvas.MoveTo(xpos,ypos);
ypos := vbottom;
Printer.Canvas.LineTo(xpos,ypos);
valincr := (Ymax - Ymin) / 10.0;
for i := 1 to 11 do
begin
Title := format('%8.2f',[Ymax - ((i-1)*valincr)]);
strhi := Printer.Canvas.TextHeight(Title);
xpos := 10;
Yvalue := Ymax - (valincr * (i-1));
ypos := round(vhi * ( (Ymax - Yvalue) / (Ymax - Ymin)));
ypos := ypos + vtop - strhi div 2;
Printer.Canvas.TextOut(xpos,ypos,Title);
xpos := hleft;
ypos := ypos + strhi div 2;
Printer.Canvas.MoveTo(xpos,ypos);
xpos := hleft - 10;
Printer.Canvas.LineTo(xpos,ypos);
end;
// draw points for x and y pairs
for i := 1 to N do
begin
ypos := round(vhi * ( (Ymax - Ypoints[i]) / (Ymax - Ymin)));
ypos := ypos + vtop;
xpos := round(hwide * ( (Xpoints[i] - Xmin) / (Xmax - Xmin)));
xpos := xpos + hleft;
Printer.Canvas.Pen.Color := clBlack;
Printer.Canvas.Ellipse(xpos,ypos,xpos+15,ypos+15);
end;
// draw confidence bands if requested
if ConfBand <> 0.0 then
begin
Printer.Canvas.Pen.Color := clRed;
ypos := round(vhi * ((Ymax - UpConf[1]) / (Ymax - Ymin)));
ypos := ypos + vtop;
xpos := round(hwide * ( (Xpoints[1] - Xmin) / (Xmax - Xmin)));
xpos := xpos + hleft;
Printer.Canvas.MoveTo(xpos,ypos);
for i := 2 to N do
begin
ypos := round(vhi * ((Ymax - UpConf[i]) / (Ymax - Ymin)));
ypos := ypos + vtop;
xpos := round(hwide * ( (Xpoints[i] - Xmin) / (Xmax - Xmin)));
xpos := xpos + hleft;
Printer.Canvas.LineTo(xpos,ypos);
end;
ypos := round(vhi * ((Ymax - lowConf[1]) / (Ymax - Ymin)));
ypos := ypos + vtop;
xpos := round(hwide * ( (Xpoints[1] - Xmin) / (Xmax - Xmin)));
xpos := xpos + hleft;
Printer.Canvas.MoveTo(xpos,ypos);
for i := 2 to N do
begin
ypos := round(vhi * ((Ymax - lowConf[i]) / (Ymax - Ymin)));
ypos := ypos + vtop;
xpos := round(hwide * ( (Xpoints[i] - Xmin) / (Xmax - Xmin)));
xpos := xpos + hleft;
Printer.Canvas.LineTo(xpos,ypos);
end;
end;
Printer.EndDoc;
Printer.Orientation := poPortrait;
end;
//-------------------------------------------------------------------
initialization
{$I plotxyunit.lrs}
end.

View File

@ -0,0 +1,56 @@
object PointsFrm: TPointsFrm
Left = 7
Height = 470
Top = 144
Width = 736
Caption = 'Points Form'
ClientHeight = 470
ClientWidth = 736
OnShow = FormShow
LCLVersion = '0.9.30'
object Image1: TImage
Left = 0
Height = 422
Top = 0
Width = 736
Align = alClient
end
object Panel1: TPanel
Left = 0
Height = 48
Top = 422
Width = 736
Align = alBottom
BorderStyle = bsSingle
ClientHeight = 44
ClientWidth = 732
TabOrder = 0
object MsgEdit: TEdit
Left = 17
Height = 23
Top = 14
Width = 335
TabOrder = 0
Text = 'MsgEdit'
end
object PrintBtn: TButton
Left = 457
Height = 25
Top = 14
Width = 74
Caption = 'Print'
OnClick = PrintBtnClick
TabOrder = 1
end
object ReturnBtn: TButton
Left = 561
Height = 24
Top = 14
Width = 74
Caption = 'Return'
ModalResult = 1
OnClick = ReturnBtnClick
TabOrder = 2
end
end
end

View File

@ -0,0 +1,17 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TPointsFrm','FORMDATA',[
'TPF0'#10'TPointsFrm'#9'PointsFrm'#4'Left'#2#7#6'Height'#3#214#1#3'Top'#3#144
+#0#5'Width'#3#224#2#7'Caption'#6#11'Points Form'#12'ClientHeight'#3#214#1#11
+'ClientWidth'#3#224#2#6'OnShow'#7#8'FormShow'#10'LCLVersion'#6#6'0.9.30'#0#6
+'TImage'#6'Image1'#4'Left'#2#0#6'Height'#3#166#1#3'Top'#2#0#5'Width'#3#224#2
+#5'Align'#7#8'alClient'#0#0#6'TPanel'#6'Panel1'#4'Left'#2#0#6'Height'#2'0'#3
+'Top'#3#166#1#5'Width'#3#224#2#5'Align'#7#8'alBottom'#11'BorderStyle'#7#8'bs'
+'Single'#12'ClientHeight'#2','#11'ClientWidth'#3#220#2#8'TabOrder'#2#0#0#5'T'
+'Edit'#7'MsgEdit'#4'Left'#2#17#6'Height'#2#23#3'Top'#2#14#5'Width'#3'O'#1#8
+'TabOrder'#2#0#4'Text'#6#7'MsgEdit'#0#0#7'TButton'#8'PrintBtn'#4'Left'#3#201
+#1#6'Height'#2#25#3'Top'#2#14#5'Width'#2'J'#7'Caption'#6#5'Print'#7'OnClick'
+#7#13'PrintBtnClick'#8'TabOrder'#2#1#0#0#7'TButton'#9'ReturnBtn'#4'Left'#3'1'
+#2#6'Height'#2#24#3'Top'#2#14#5'Width'#2'J'#7'Caption'#6#6'Return'#11'ModalR'
+'esult'#2#1#7'OnClick'#7#14'ReturnBtnClick'#8'TabOrder'#2#2#0#0#0#0
]);

View File

@ -0,0 +1,211 @@
unit PointsUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
ExtCtrls, StdCtrls, Printers, Globals;
type
{ TPointsFrm }
TPointsFrm = class(TForm)
Image1: TImage;
PrintBtn: TButton;
ReturnBtn: TButton;
MsgEdit: TEdit;
Panel1: TPanel;
// procedure FormPaint(Sender: TObject);
// procedure FormResize(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure PrintBtnClick(Sender: TObject);
procedure PtsPlot(Sender: TObject);
procedure ReturnBtnClick(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
pts : DblDyneVec;
avg : DblDyneVec;
LabelOne : string;
LabelTwo : string;
NoCases : integer;
Title : string;
// Caption : string;
end;
var
PointsFrm: TPointsFrm;
implementation
{ TPointsFrm }
procedure TPointsFrm.FormShow(Sender: TObject);
begin
Image1.Canvas.Clear;
PtsPlot(self);
end;
procedure TPointsFrm.PrintBtnClick(Sender: TObject);
var
r : Trect;
begin
with Printer do
begin
Printer.Orientation := poPortrait;
r := Rect(20,20,printer.pagewidth-20,printer.pageheight div 2 + 20);
BeginDoc;
Canvas.StretchDraw(r,Image1.Picture.BitMap);
EndDoc;
end;
end;
procedure TPointsFrm.PtsPlot(Sender: TObject);
var
topmarg, botmarg, leftmarg, rightmarg, verthi, horizlong : integer;
X, Y, yincrement, labelheight, i , j : integer;
labelstring, labelstr : string;
Xstep, Ystep, yprop, scaley, xprop, scalex, Min, Max : double;
begin
height := PointsFrm.Image1.Canvas.Height;
width := PointsFrm.Image1.Canvas.Width;
topmarg := height div 10;
verthi := height - (2 * topmarg);
botmarg := topmarg + verthi;
botmarg := height;
leftmarg := width div 10;
horizlong := width - 2 * leftmarg;
rightmarg := leftmarg + horizlong;
// get max and min of values to plot
Max := -1000.0;
Min := 1000.0;
for i := 0 to NoCases - 1 do
begin
if (pts[i] > Max) then Max := pts[i];
if (avg[i] > Max) then Max := avg[i];
if (pts[i] < Min) then Min := pts[i];
if (avg[i] < Min) then Min := avg[i];
end;
yincrement := verthi div 20;
PointsFrm.Image1.Canvas.Pen.Color := clBlack;
// print title at top, centered
labelstring := 'Plot of Original and ';
labelstring := labelstring + Title;
// labelstring := labelstring + DepVarEdit.Text;
X := (leftmarg + horizlong div 2) - (PointsFrm.Image1.Canvas.TextWidth(labelstring) div 2);
Y := 1;
PointsFrm.Image1.Canvas.TextOut(X,Y,labelstring);
// draw left axis
X := leftmarg;
Y := botmarg;
PointsFrm.Image1.Canvas.MoveTo(X,Y);
Y := topmarg;
PointsFrm.Image1.Canvas.LineTo(X,Y);
// scale to left of vertical axis
Ystep := (Max - Min) / 20;
for i := 0 to 20 do
begin
Y := topmarg + (i * yincrement);
labelstr := format('%4.2f -',[Max - (Ystep * i)]);
labelstring := labelstr;
X := leftmarg - PointsFrm.Image1.Canvas.TextWidth(labelstring);
PointsFrm.Image1.Canvas.TextOut(X,Y,labelstring);
end;
// Make legend axis on bottom
X := leftmarg;
Y := botmarg;
Xstep := horizlong / 20;
xprop := NoCases / 20;
PointsFrm.Image1.Canvas.MoveTo(X,Y);
X := rightmarg;
PointsFrm.Image1.Canvas.LineTo(X,Y);
for i := 0 to 20 do
begin
X := leftmarg + round(Xstep * i);
labelstring := '|';
PointsFrm.Image1.Canvas.TextOut(X,Y,labelstring);
labelstring := IntToStr(round((xprop * i) + 1));
Y := Y + 5;
PointsFrm.Image1.Canvas.TextOut(X,Y,labelstring);
Y := botmarg;
end;
labelstring := 'CASES';
X := (leftmarg + horizlong div 2) - (PointsFrm.Canvas.TextWidth(labelstring) div 2);
Y := botmarg + PointsFrm.Image1.Canvas.TextHeight(labelstring);
PointsFrm.Image1.Canvas.TextOut(X,Y,labelstring);
// Plot lines from point to point
PointsFrm.Image1.Canvas.Pen.Color := clRed;
for i := 0 to NoCases - 1 do
begin
yprop := (Max - pts[i]) / (Max - Min);
scaley := yprop * verthi;
xprop := i / NoCases;
scalex := xprop * horizlong;
X := leftmarg + round(scalex);
Y := topmarg + round(scaley);
if (i = 0) then PointsFrm.Image1.Canvas.MoveTo(X,Y)
else PointsFrm.Image1.Canvas.LineTo(X,Y);
PointsFrm.Image1.Canvas.Ellipse(X-3,Y-3,X+3,Y+3);
end;
// Plot average points
PointsFrm.Image1.Canvas.Pen.Color := clBlue;
for i := 0 to NoCases - 1 do
begin
yprop := (Max - avg[i]) / (Max - Min);
scaley := yprop * verthi;
xprop := i / NoCases;
scalex := xprop * horizlong;
X := leftmarg + round(scalex);
Y := topmarg + round(scaley);
if (i = 0) then PointsFrm.Image1.Canvas.MoveTo(X,Y)
else PointsFrm.Image1.Canvas.LineTo(X,Y);
PointsFrm.Image1.Canvas.Ellipse(X-3,Y-3,X+3,Y+3);
end;
// Show legend at right
X := rightmarg;
labelstring := LabelOne;
labelheight := PointsFrm.Image1.Canvas.TextHeight(labelstring);
Y := 5 * labelheight;
PointsFrm.Image1.Canvas.Font.Color := clRed;
PointsFrm.Image1.Canvas.TextOut(X,Y,labelstring);
labelstring := LabelTwo;
Y := 6 * labelheight;
PointsFrm.Image1.Canvas.Font.Color := clBlue;
PointsFrm.Image1.Canvas.TextOut(X,Y,labelstring);
end;
procedure TPointsFrm.ReturnBtnClick(Sender: TObject);
begin
PointsFrm.Hide;
end;
{
procedure TPointsFrm.FormPaint(Sender: TObject);
begin
PtsPlot;
end;
procedure TPointsFrm.FormResize(Sender: TObject);
begin
PtsPlot;
end;
}
initialization
{$I pointsunit.lrs}
end.

View File

@ -0,0 +1,482 @@
object PolyDIFFrm: TPolyDIFFrm
Left = 122
Height = 401
Top = 100
Width = 565
Caption = 'Polytomous Item DIF'
ClientHeight = 401
ClientWidth = 565
OnShow = FormShow
LCLVersion = '0.9.28.2'
object Label1: TLabel
Left = 9
Height = 14
Top = 8
Width = 90
Caption = 'Available Variables'
ParentColor = False
end
object Label2: TLabel
Left = 224
Height = 14
Top = 8
Width = 72
Caption = 'Items Selected'
ParentColor = False
end
object Label3: TLabel
Left = 220
Height = 14
Top = 216
Width = 85
Caption = 'Grouping Variable'
ParentColor = False
end
object Label4: TLabel
Left = 384
Height = 14
Top = 8
Width = 114
Caption = 'No. of Grouping Levels:'
ParentColor = False
end
object Label5: TLabel
Left = 384
Height = 14
Top = 40
Width = 112
Caption = 'Enter bounds for levels'
ParentColor = False
end
object Label6: TLabel
Left = 384
Height = 14
Top = 64
Width = 28
Caption = 'Down'
ParentColor = False
end
object Label7: TLabel
Left = 480
Height = 14
Top = 64
Width = 14
Caption = 'Up'
ParentColor = False
end
object Label8: TLabel
Left = 512
Height = 14
Top = 64
Width = 26
Caption = 'Level'
ParentColor = False
end
object Label9: TLabel
Left = 431
Height = 14
Top = 128
Width = 63
Caption = 'Lower Bound'
ParentColor = False
end
object Label10: TLabel
Left = 431
Height = 14
Top = 160
Width = 63
Caption = 'Upper Bound'
ParentColor = False
end
object Label11: TLabel
Left = 11
Height = 14
Top = 296
Width = 94
Caption = 'Lowest Item Score:'
ParentColor = False
end
object Label12: TLabel
Left = 9
Height = 14
Top = 328
Width = 96
Caption = 'Highest Item Score:'
ParentColor = False
end
object Label13: TLabel
Left = 215
Height = 14
Top = 289
Width = 115
Caption = 'Reference Group Code:'
ParentColor = False
end
object Label14: TLabel
Left = 216
Height = 14
Top = 328
Width = 90
Caption = 'Focal Group Code:'
ParentColor = False
end
object VarList: TListBox
Left = 8
Height = 253
Top = 24
Width = 157
ItemHeight = 0
MultiSelect = True
TabOrder = 0
end
object ItemInBtn: TBitBtn
Left = 176
Height = 30
Top = 24
Width = 33
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE
6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580
3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3
71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7
74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7
74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = ItemInBtnClick
TabOrder = 1
end
object ItemOutBtn: TBitBtn
Left = 176
Height = 30
Top = 56
Width = 33
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = ItemOutBtnClick
TabOrder = 2
end
object AllBtn: TBitBtn
Left = 176
Height = 30
Top = 112
Width = 33
Caption = 'ALL'
NumGlyphs = 0
OnClick = AllBtnClick
TabOrder = 3
end
object GrpInBtn: TBitBtn
Left = 176
Height = 30
Top = 208
Width = 33
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE
6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580
3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3
71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7
74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7
74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = GrpInBtnClick
TabOrder = 4
end
object GrpOutBtn: TBitBtn
Left = 176
Height = 30
Top = 240
Width = 33
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = GrpOutBtnClick
TabOrder = 5
end
object ItemsList: TListBox
Left = 220
Height = 183
Top = 24
Width = 148
ItemHeight = 0
TabOrder = 6
end
object GroupVarEdit: TEdit
Left = 220
Height = 21
Top = 232
Width = 147
TabOrder = 7
Text = 'GroupVarEdit'
end
object LevelsEdit: TEdit
Left = 506
Height = 21
Top = 1
Width = 40
OnExit = LevelsEditExit
TabOrder = 8
end
object LevelScroll: TScrollBar
Left = 384
Height = 18
Top = 80
Width = 111
Min = 1
PageSize = 0
Position = 1
TabOrder = 9
OnScroll = LevelScrollScroll
end
object LevelNoEdit: TEdit
Left = 512
Height = 21
Top = 80
Width = 39
TabOrder = 10
Text = 'LevelNoEdit'
end
object LowBoundEdit: TEdit
Left = 512
Height = 21
Top = 121
Width = 40
OnExit = LowBoundEditExit
TabOrder = 11
Text = 'LowBoundEdit'
end
object UpBoundEdit: TEdit
Left = 511
Height = 21
Top = 153
Width = 40
OnExit = UpBoundEditExit
TabOrder = 12
Text = 'Edit1'
end
object GroupBox1: TGroupBox
Left = 381
Height = 50
Top = 188
Width = 170
Caption = 'Option:'
ClientHeight = 32
ClientWidth = 166
TabOrder = 13
object GraphChk: TCheckBox
Left = 7
Height = 17
Top = 5
Width = 124
Caption = 'Graph of Level Means'
Checked = True
State = cbChecked
TabOrder = 0
end
end
object LowScoreEdit: TEdit
Left = 122
Height = 21
Top = 289
Width = 43
TabOrder = 14
end
object HiScoreEdit: TEdit
Left = 122
Height = 21
Top = 321
Width = 43
TabOrder = 15
Text = 'Edit1'
end
object RefGrpEdit: TEdit
Left = 336
Height = 21
Top = 280
Width = 43
TabOrder = 16
Text = 'Edit1'
end
object TrgtGrpEdit: TEdit
Left = 336
Height = 21
Top = 321
Width = 43
TabOrder = 17
Text = 'Edit1'
end
object ResetBtn: TButton
Left = 104
Height = 28
Top = 360
Width = 71
Caption = 'Reset'
OnClick = ResetBtnClick
TabOrder = 18
end
object CancelBtn: TButton
Left = 200
Height = 28
Top = 360
Width = 72
Caption = 'Cancel'
ModalResult = 2
OnClick = CancelBtnClick
TabOrder = 19
end
object ComputeBtn: TButton
Left = 296
Height = 28
Top = 360
Width = 71
Caption = 'Compute'
OnClick = ComputeBtnClick
TabOrder = 20
end
object ReturnBtn: TButton
Left = 384
Height = 28
Top = 360
Width = 76
Caption = 'Return'
ModalResult = 1
OnClick = ReturnBtnClick
TabOrder = 21
end
object HelpBtn: TButton
Tag = 138
Left = 11
Height = 28
Top = 360
Width = 76
Caption = 'Help'
OnClick = HelpBtnClick
TabOrder = 22
end
end

View File

@ -0,0 +1,278 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TPolyDIFFrm','FORMDATA',[
'TPF0'#11'TPolyDIFFrm'#10'PolyDIFFrm'#4'Left'#2'z'#6'Height'#3#145#1#3'Top'#2
+'d'#5'Width'#3'5'#2#7'Caption'#6#19'Polytomous Item DIF'#12'ClientHeight'#3
+#145#1#11'ClientWidth'#3'5'#2#6'OnShow'#7#8'FormShow'#10'LCLVersion'#6#8'0.9'
+'.28.2'#0#6'TLabel'#6'Label1'#4'Left'#2#9#6'Height'#2#14#3'Top'#2#8#5'Width'
+#2'Z'#7'Caption'#6#19'Available Variables'#11'ParentColor'#8#0#0#6'TLabel'#6
+'Label2'#4'Left'#3#224#0#6'Height'#2#14#3'Top'#2#8#5'Width'#2'H'#7'Caption'#6
+#14'Items Selected'#11'ParentColor'#8#0#0#6'TLabel'#6'Label3'#4'Left'#3#220#0
+#6'Height'#2#14#3'Top'#3#216#0#5'Width'#2'U'#7'Caption'#6#17'Grouping Variab'
+'le'#11'ParentColor'#8#0#0#6'TLabel'#6'Label4'#4'Left'#3#128#1#6'Height'#2#14
+#3'Top'#2#8#5'Width'#2'r'#7'Caption'#6#23'No. of Grouping Levels:'#11'Parent'
+'Color'#8#0#0#6'TLabel'#6'Label5'#4'Left'#3#128#1#6'Height'#2#14#3'Top'#2'('
+#5'Width'#2'p'#7'Caption'#6#23'Enter bounds for levels'#11'ParentColor'#8#0#0
+#6'TLabel'#6'Label6'#4'Left'#3#128#1#6'Height'#2#14#3'Top'#2'@'#5'Width'#2#28
+#7'Caption'#6#4'Down'#11'ParentColor'#8#0#0#6'TLabel'#6'Label7'#4'Left'#3#224
+#1#6'Height'#2#14#3'Top'#2'@'#5'Width'#2#14#7'Caption'#6#2'Up'#11'ParentColo'
+'r'#8#0#0#6'TLabel'#6'Label8'#4'Left'#3#0#2#6'Height'#2#14#3'Top'#2'@'#5'Wid'
+'th'#2#26#7'Caption'#6#5'Level'#11'ParentColor'#8#0#0#6'TLabel'#6'Label9'#4
+'Left'#3#175#1#6'Height'#2#14#3'Top'#3#128#0#5'Width'#2'?'#7'Caption'#6#11'L'
+'ower Bound'#11'ParentColor'#8#0#0#6'TLabel'#7'Label10'#4'Left'#3#175#1#6'He'
+'ight'#2#14#3'Top'#3#160#0#5'Width'#2'?'#7'Caption'#6#11'Upper Bound'#11'Par'
+'entColor'#8#0#0#6'TLabel'#7'Label11'#4'Left'#2#11#6'Height'#2#14#3'Top'#3'('
+#1#5'Width'#2'^'#7'Caption'#6#18'Lowest Item Score:'#11'ParentColor'#8#0#0#6
+'TLabel'#7'Label12'#4'Left'#2#9#6'Height'#2#14#3'Top'#3'H'#1#5'Width'#2'`'#7
+'Caption'#6#19'Highest Item Score:'#11'ParentColor'#8#0#0#6'TLabel'#7'Label1'
+'3'#4'Left'#3#215#0#6'Height'#2#14#3'Top'#3'!'#1#5'Width'#2's'#7'Caption'#6
+#21'Reference Group Code:'#11'ParentColor'#8#0#0#6'TLabel'#7'Label14'#4'Left'
+#3#216#0#6'Height'#2#14#3'Top'#3'H'#1#5'Width'#2'Z'#7'Caption'#6#17'Focal Gr'
+'oup Code:'#11'ParentColor'#8#0#0#8'TListBox'#7'VarList'#4'Left'#2#8#6'Heigh'
+'t'#3#253#0#3'Top'#2#24#5'Width'#3#157#0#10'ItemHeight'#2#0#11'MultiSelect'#9
+#8'TabOrder'#2#0#0#0#7'TBitBtn'#9'ItemInBtn'#4'Left'#3#176#0#6'Height'#2#30#3
+'Top'#2#24#5'Width'#2'!'#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0
+#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0
+#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0'!c$'#184#29'^ '#6#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+'*p/8%i)'#247'!c$'#217#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'
+#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'?'#136'E'#255'Y'#161'^'
+#255'D'#139'I'#255'!c$'#207#255#255#255#0#255#255#255#0#255#255#255#0'e'#195
+'q'#255#160#215#169#255#156#213#165#255#152#211#161#255#148#208#157#255#144
+#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255
+'z'#193#128#255'v'#190'|'#255'E'#140'J'#255'!c$'#196#255#255#255#0#255#255
+#255#0'h'#199't'#255#165#218#174#255#162#216#171#255#158#214#167#255#154#212
+#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255#133
+#199#139#255#129#197#135#255'}'#194#130#255'J'#145'P'#255'%i)'#201#255#255
+#255#0#255#255#255#0'h'#199't'#255'h'#199't'#255'e'#195'q'#255'a'#190'm'#255
+']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145
+'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'#209#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
,'A'#145'I'#247';'#136'B'#219#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+'G'#153'O'#187'A'#145'I'#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyp'
+'hs'#2#0#7'OnClick'#7#14'ItemInBtnClick'#8'TabOrder'#2#1#0#0#7'TBitBtn'#10'I'
+'temOutBtn'#4'Left'#3#176#0#6'Height'#2#30#3'Top'#2'8'#5'Width'#2'!'#10'Glyp'
+'h.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0
+#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0'M'#161'V'#6'G'#153'O'#184#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0'S'#169'\'#217'M'#161'V'#247'G'#153'O8'#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131#255'['#170'd'#255'G'
+#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255'%i)'
+#255'!c$'#255#29'^ '#255#255#255#255#0#255#255#255#0'e'#195'q'#196'{'#200#134
+#255#156#213#165#255#152#211#161#255#148#208#157#255#144#206#152#255#139#203
+#147#255#135#201#142#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190
+'|'#255'r'#189'x'#255'!c$'#255#255#255#255#0#255#255#255#0'h'#199't'#201#127
+#204#138#255#162#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255
+#147#207#154#255#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135
+#255'}'#194#130#255'x'#192'~'#255'%i)'#255#255#255#255#0#255#255#255#0#255
+#255#255#0'h'#199't'#209#128#205#139#255'|'#201#135#255']'#184'h'#255'X'#177
+'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255
+'5'#128';'#255'/x5'#255'*p/'#255#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0'h'#199't'#219'e'#195'q'#247#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0'h'#199't'#6'h'#199't'#187#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
,#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#15
+'ItemOutBtnClick'#8'TabOrder'#2#2#0#0#7'TBitBtn'#6'AllBtn'#4'Left'#3#176#0#6
+'Height'#2#30#3'Top'#2'p'#5'Width'#2'!'#7'Caption'#6#3'ALL'#9'NumGlyphs'#2#0
+#7'OnClick'#7#11'AllBtnClick'#8'TabOrder'#2#3#0#0#7'TBitBtn'#8'GrpInBtn'#4'L'
+'eft'#3#176#0#6'Height'#2#30#3'Top'#3#208#0#5'Width'#2'!'#10'Glyph.Data'#10
+':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0
+' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'!c$'#184#29'^ '#6
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0'*p/8%i)'#247'!c$'#217#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'a'#190'm'#255']'#184'h'#255'X'#177'b'
+#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'
+#128';'#255'?'#136'E'#255'Y'#161'^'#255'D'#139'I'#255'!c$'#207#255#255#255#0
+#255#255#255#0#255#255#255#0'e'#195'q'#255#160#215#169#255#156#213#165#255
+#152#211#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142
+#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'E'#140'J'
+#255'!c$'#196#255#255#255#0#255#255#255#0'h'#199't'#255#165#218#174#255#162
+#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255
+#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130
+#255'J'#145'P'#255'%i)'#201#255#255#255#0#255#255#255#0'h'#199't'#255'h'#199
+'t'#255'e'#195'q'#255'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255
+'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'
+#209#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'A'#145'I'#247';'#136'B'#219#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'G'#153'O'#187'A'#145'I'#6#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#13'GrpInBtnClick'
+#8'TabOrder'#2#4#0#0#7'TBitBtn'#9'GrpOutBtn'#4'Left'#3#176#0#6'Height'#2#30#3
+'Top'#3#240#0#5'Width'#2'!'#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0
+#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0
+'d'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
,#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'M'#161'V'
+#6'G'#153'O'#184#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'S'#169'\'#217
+'M'#161'V'#247'G'#153'O8'#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0']'#184'h'#207'q'#190'{'#255'z'#193
+#131#255'['#170'd'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'
+#255'/x5'#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255#255#255#255#0#255#255#255
+#0'e'#195'q'#196'{'#200#134#255#156#213#165#255#152#211#161#255#148#208#157
+#255#144#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195
+#132#255'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!c$'#255#255#255#255#0
+#255#255#255#0'h'#199't'#201#127#204#138#255#162#216#171#255#158#214#167#255
+#154#212#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144
+#255#133#199#139#255#129#197#135#255'}'#194#130#255'x'#192'~'#255'%i)'#255
+#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#209#128#205#139#255'|'
+#201#135#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153
+'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#219'e'#195'q'#247
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#6'h'#199't'#187
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#14'GrpOutBtnClick'#8'TabOrder'#2#5#0#0#8
+'TListBox'#9'ItemsList'#4'Left'#3#220#0#6'Height'#3#183#0#3'Top'#2#24#5'Widt'
+'h'#3#148#0#10'ItemHeight'#2#0#8'TabOrder'#2#6#0#0#5'TEdit'#12'GroupVarEdit'
+#4'Left'#3#220#0#6'Height'#2#21#3'Top'#3#232#0#5'Width'#3#147#0#8'TabOrder'#2
+#7#4'Text'#6#12'GroupVarEdit'#0#0#5'TEdit'#10'LevelsEdit'#4'Left'#3#250#1#6
+'Height'#2#21#3'Top'#2#1#5'Width'#2'('#6'OnExit'#7#14'LevelsEditExit'#8'TabO'
+'rder'#2#8#0#0#10'TScrollBar'#11'LevelScroll'#4'Left'#3#128#1#6'Height'#2#18
+#3'Top'#2'P'#5'Width'#2'o'#3'Min'#2#1#8'PageSize'#2#0#8'Position'#2#1#8'TabO'
+'rder'#2#9#8'OnScroll'#7#17'LevelScrollScroll'#0#0#5'TEdit'#11'LevelNoEdit'#4
+'Left'#3#0#2#6'Height'#2#21#3'Top'#2'P'#5'Width'#2''''#8'TabOrder'#2#10#4'Te'
+'xt'#6#11'LevelNoEdit'#0#0#5'TEdit'#12'LowBoundEdit'#4'Left'#3#0#2#6'Height'
+#2#21#3'Top'#2'y'#5'Width'#2'('#6'OnExit'#7#16'LowBoundEditExit'#8'TabOrder'
+#2#11#4'Text'#6#12'LowBoundEdit'#0#0#5'TEdit'#11'UpBoundEdit'#4'Left'#3#255#1
+#6'Height'#2#21#3'Top'#3#153#0#5'Width'#2'('#6'OnExit'#7#15'UpBoundEditExit'
+#8'TabOrder'#2#12#4'Text'#6#5'Edit1'#0#0#9'TGroupBox'#9'GroupBox1'#4'Left'#3
+'}'#1#6'Height'#2'2'#3'Top'#3#188#0#5'Width'#3#170#0#7'Caption'#6#7'Option:'
+#12'ClientHeight'#2' '#11'ClientWidth'#3#166#0#8'TabOrder'#2#13#0#9'TCheckBo'
+'x'#8'GraphChk'#4'Left'#2#7#6'Height'#2#17#3'Top'#2#5#5'Width'#2'|'#7'Captio'
+'n'#6#20'Graph of Level Means'#7'Checked'#9#5'State'#7#9'cbChecked'#8'TabOrd'
,'er'#2#0#0#0#0#5'TEdit'#12'LowScoreEdit'#4'Left'#2'z'#6'Height'#2#21#3'Top'#3
+'!'#1#5'Width'#2'+'#8'TabOrder'#2#14#0#0#5'TEdit'#11'HiScoreEdit'#4'Left'#2
+'z'#6'Height'#2#21#3'Top'#3'A'#1#5'Width'#2'+'#8'TabOrder'#2#15#4'Text'#6#5
+'Edit1'#0#0#5'TEdit'#10'RefGrpEdit'#4'Left'#3'P'#1#6'Height'#2#21#3'Top'#3#24
+#1#5'Width'#2'+'#8'TabOrder'#2#16#4'Text'#6#5'Edit1'#0#0#5'TEdit'#11'TrgtGrp'
+'Edit'#4'Left'#3'P'#1#6'Height'#2#21#3'Top'#3'A'#1#5'Width'#2'+'#8'TabOrder'
+#2#17#4'Text'#6#5'Edit1'#0#0#7'TButton'#8'ResetBtn'#4'Left'#2'h'#6'Height'#2
+#28#3'Top'#3'h'#1#5'Width'#2'G'#7'Caption'#6#5'Reset'#7'OnClick'#7#13'ResetB'
+'tnClick'#8'TabOrder'#2#18#0#0#7'TButton'#9'CancelBtn'#4'Left'#3#200#0#6'Hei'
+'ght'#2#28#3'Top'#3'h'#1#5'Width'#2'H'#7'Caption'#6#6'Cancel'#11'ModalResult'
+#2#2#7'OnClick'#7#14'CancelBtnClick'#8'TabOrder'#2#19#0#0#7'TButton'#10'Comp'
+'uteBtn'#4'Left'#3'('#1#6'Height'#2#28#3'Top'#3'h'#1#5'Width'#2'G'#7'Caption'
+#6#7'Compute'#7'OnClick'#7#15'ComputeBtnClick'#8'TabOrder'#2#20#0#0#7'TButto'
+'n'#9'ReturnBtn'#4'Left'#3#128#1#6'Height'#2#28#3'Top'#3'h'#1#5'Width'#2'L'#7
+'Caption'#6#6'Return'#11'ModalResult'#2#1#7'OnClick'#7#14'ReturnBtnClick'#8
+'TabOrder'#2#21#0#0#7'TButton'#7'HelpBtn'#3'Tag'#3#138#0#4'Left'#2#11#6'Heig'
+'ht'#2#28#3'Top'#3'h'#1#5'Width'#2'L'#7'Caption'#6#4'Help'#7'OnClick'#7#12'H'
+'elpBtnClick'#8'TabOrder'#2#22#0#0#0
]);

View File

@ -0,0 +1,584 @@
unit PolyDIFUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, Buttons, MainUnit, Globals, Math, OutPutUnit, MatrixLib,
DataProcs, FunctionsLib, GraphLib, ExtCtrls, contexthelpunit;
type
{ TPolyDIFFrm }
TPolyDIFFrm = class(TForm)
HelpBtn: TButton;
ResetBtn: TButton;
CancelBtn: TButton;
ComputeBtn: TButton;
ReturnBtn: TButton;
LowScoreEdit: TEdit;
HiScoreEdit: TEdit;
RefGrpEdit: TEdit;
TrgtGrpEdit: TEdit;
GraphChk: TCheckBox;
GroupBox1: TGroupBox;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
LowBoundEdit: TEdit;
UpBoundEdit: TEdit;
Label10: TLabel;
Label9: TLabel;
LevelNoEdit: TEdit;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
LevelsEdit: TEdit;
ItemInBtn: TBitBtn;
ItemOutBtn: TBitBtn;
AllBtn: TBitBtn;
GrpInBtn: TBitBtn;
GrpOutBtn: TBitBtn;
GroupVarEdit: TEdit;
Label1: TLabel;
Label2: TLabel;
ItemsList: TListBox;
Label3: TLabel;
Label4: TLabel;
LevelScroll: TScrollBar;
VarList: TListBox;
procedure AllBtnClick(Sender: TObject);
procedure CancelBtnClick(Sender: TObject);
procedure ComputeBtnClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure GrpInBtnClick(Sender: TObject);
procedure GrpOutBtnClick(Sender: TObject);
procedure HelpBtnClick(Sender: TObject);
procedure ItemInBtnClick(Sender: TObject);
procedure ItemOutBtnClick(Sender: TObject);
procedure LevelScrollScroll(Sender: TObject; ScrollCode: TScrollCode;
var ScrollPos: Integer);
procedure LevelsEditExit(Sender: TObject);
procedure LowBoundEditExit(Sender: TObject);
procedure ResetBtnClick(Sender: TObject);
procedure ReturnBtnClick(Sender: TObject);
procedure UpBoundEditExit(Sender: TObject);
private
{ private declarations }
NoItems : integer;
nocats : integer;
ColNoSelected : IntDyneVec;
ColLabels, RowLabels : StrDyneVec;
Ubounds : IntDyneVec; // upper and lower bounds of score groups
Lbounds : IntdyneVec;
public
{ public declarations }
end;
var
PolyDIFFrm: TPolyDIFFrm;
implementation
{ TPolyDIFFrm }
procedure TPolyDIFFrm.ResetBtnClick(Sender: TObject);
VAR i : integer;
begin
VarList.Clear;
ItemsList.Clear;
GroupVarEdit.Text := '';
ItemInBtn.Visible := true;
ItemOutBtn.Visible := false;
AllBtn.Visible := true;
GrpInBtn.Visible := true;
GrpOutBtn.Visible := false;
// MHChk.Checked := true;
RefGrpEdit.Text := '';
TrgtGrpEdit.Text := '';
LowScoreEdit.Text := '';
HiScoreEdit.Text := '';
LevelsEdit.Text := '';
for i := 1 to NoVariables do
VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]);
if NoVariables > 0 then LevelScroll.Max := NoVariables;
LevelNoEdit.Text := '1';
LowBoundEdit.Text := '0';
UpBoundEdit.Text := '2';
LevelScroll.Min := 1;
LevelScroll.Position := 1;
//allocate space on heap
SetLength(ColLabels,NoVariables+1);
SetLength(RowLabels,NoVariables+1);
SetLength(ColNoSelected,NoVariables);
SetLength(Lbounds,NoVariables * 10);
SetLength(Ubounds,NoVariables * 10);
end;
procedure TPolyDIFFrm.ReturnBtnClick(Sender: TObject);
begin
Ubounds := nil;
Lbounds := nil;
ColNoSelected := nil;
RowLabels := nil;
ColLabels := nil;
PolyDIFfrm.Hide;
end;
procedure TPolyDIFFrm.UpBoundEditExit(Sender: TObject);
VAR i : integer;
begin
i := StrToInt(LevelNoEdit.Text);
Ubounds[i-1] := StrToInt(UpBoundEdit.Text);
if i = StrToInt(LevelsEdit.Text) then
begin
ComputeBtn.SetFocus;
exit;
end;
LowBoundEdit.Text := IntToStr(Ubounds[i-1] + 1);
LowBoundEdit.SetFocus;
end;
procedure TPolyDIFFrm.FormShow(Sender: TObject);
begin
ResetBtnClick(Self);
end;
procedure TPolyDIFFrm.GrpInBtnClick(Sender: TObject);
VAR index : integer;
begin
if VarList.ItemIndex < 0 then
begin
GrpInBtn.Visible := false;
exit;
end;
index := VarList.ItemIndex;
GroupVarEdit.Text := VarList.Items.Strings[index];
VarList.Items.Delete(index);
GrpInBtn.Visible := false;
GrpOutBtn.Visible := true;
end;
procedure TPolyDIFFrm.GrpOutBtnClick(Sender: TObject);
begin
VarList.Items.Add(GroupVarEdit.Text);
GroupVarEdit.Text := '';
GrpOutBtn.Visible := false;
GrpInBtn.Visible := true;
end;
procedure TPolyDIFFrm.HelpBtnClick(Sender: TObject);
begin
ContextHelpForm.HelpMessage((Sender as TButton).tag);
end;
procedure TPolyDIFFrm.ItemInBtnClick(Sender: TObject);
VAR i, index : integer;
begin
if VarList.ItemIndex < 0 then
begin
ItemInBtn.Visible := false;
exit;
end;
index := VarList.Items.Count;
i := 0;
while i < index do
begin
if (VarList.Selected[i]) then
begin
ItemsList.Items.Add(VarList.Items.Strings[i]);
VarList.Items.Delete(i);
index := index - 1;
i := 0;
end
else i := i + 1;
end;
ItemOutBtn.Visible := true;
end;
procedure TPolyDIFFrm.ItemOutBtnClick(Sender: TObject);
VAR index : integer;
begin
index := ItemsList.ItemIndex;
if index < 0 then
begin
ItemOutBtn.Visible := false;
exit;
end;
VarList.Items.Add(ItemsList.Items.Strings[index]);
ItemsList.Items.Delete(index);
ItemInBtn.Visible := true;
end;
procedure TPolyDIFFrm.LevelScrollScroll(Sender: TObject;
ScrollCode: TScrollCode; var ScrollPos: Integer);
var
scrlpos : integer;
level : integer;
begin
level := StrToInt(LevelNoEdit.Text);
scrlpos := LevelScroll.Position;
if ((scrlpos > level) and (level <= StrToInt(LevelsEdit.Text))) then
begin
LevelNoEdit.Text := IntToStr(scrlpos);
LowBoundEdit.SetFocus;
exit;
end;
if scrlpos < level then
begin
level := scrlpos;
if level > 0 then
begin
LevelNoEdit.Text := IntToStr(level);
LowBoundEdit.Text := IntToStr(Lbounds[level-1]);
UpBoundEdit.Text := IntToStr(Ubounds[level-1]);
end;
LowBoundEdit.SetFocus;
end;
end;
procedure TPolyDIFFrm.LevelsEditExit(Sender: TObject);
begin
LevelScroll.Max := StrToInt(LevelsEdit.Text);
LowBoundEdit.SetFocus;
end;
procedure TPolyDIFFrm.LowBoundEditExit(Sender: TObject);
VAR i : integer;
begin
i := StrToInt(LevelNoEdit.Text);
Lbounds[i-1] := StrToInt(LowBoundEdit.Text);
UpBoundEdit.SetFocus;
end;
procedure TPolyDIFFrm.CancelBtnClick(Sender: TObject);
begin
Ubounds := nil;
Lbounds := nil;
ColNoSelected := nil;
RowLabels := nil;
ColLabels := nil;
PolyDIFfrm.Hide;
end;
procedure TPolyDIFFrm.AllBtnClick(Sender: TObject);
VAR i : integer;
begin
if VarList.Items.Count < 1 then exit;
for i := 0 to VarList.Items.Count - 1 do
ItemsList.Items.Add(VarList.Items.Strings[i]);
VarList.Clear;
ItemInBtn.Visible := false;
ItemOutBtn.Visible := true;
end;
procedure TPolyDIFFrm.ComputeBtnClick(Sender: TObject);
Label first;
var
i, j, k : integer;
itm, nolevels, level : integer;
grpvar : integer;
subjgrp : integer;
subjtot : integer;
value : integer;
cellstring : string;
title : string;
nsize : array [1..2] of integer;
FData : IntDyneCube; //no. of category values within item for focal group
RData : IntDyneCube; //no. of category values within item for reference group
TotData : IntDyneCube; // sum of the above two
t, Mf, Mb, Sf, Sb, Nb, Nf, df, d, Sd : DblDyneVec;
Zc, Vart, Probt, g, BigJ, SumE, SumV, Term1, MY, prob : double;
X, BigDnum, BigDden, BigD, BigDS, Zd, M2, E, VarE, Ti, dftot : double;
m : integer;
loscore, hiscore : integer;
begin
OutPutFrm.RichEdit.Clear;
OutPutFrm.RichEdit.Lines.Add('Polytomous Item DIF Analysis adapted by Bill Miller from');
OutPutFrm.RichEdit.Lines.Add('Procedures for extending item bias detection techniques');
OutPutFrm.RichEdit.Lines.Add('by Catherine Welch and H.D. Hoover, 1993');
OutPutFrm.RichEdit.Lines.Add('Applied Measurement in Education 6(1), pages 1-19.');
OutPutFrm.RichEdit.Lines.Add('');
NoItems := ItemsList.Items.Count;
loscore := StrToInt(LowScoreEdit.Text);
hiscore := StrToInt(HiScoreEdit.Text);
nocats := hiscore - loscore + 1; // 0 to highest score
nolevels := StrToInt(LevelsEdit.Text);
SetLength(FData,NoItems,hiscore+10,nolevels+10);
SetLength(RData,NoItems,hiscore+10,nolevels+10);
SetLength(TotData,NoItems,hiscore+10,nolevels+10);
SetLength(t,nolevels);
SetLength(Mf,nolevels);
SetLength(Mb,nolevels);
SetLength(Sf,nolevels);
SetLength(Sb,nolevels);
SetLength(Nb,nolevels);
SetLength(Nf,nolevels);
SetLength(df,nolevels);
SetLength(d,nolevels);
SetLength(Sd,nolevels);
for k := 1 to 2 do nsize[k] := 0;
// get items to analyze and their labels
for i := 1 to NoItems do // items to analyze
begin
for j := 1 to NoVariables do // variables in grid
begin
cellstring := OS3MainFrm.DataGrid.Cells[j,0];
if cellstring = ItemsList.Items.Strings[i-1] then
begin // matched - save info
ColNoSelected[i-1] := j;
ColLabels[i-1] := cellstring;
RowLabels[i-1] := cellstring;
end; // end match
end; // next j
end; // next i
ColLabels[NoItems] := 'TOTAL';
RowLabels[NoItems] := 'TOTAL';
// get the variable number of the grouping code
grpvar := 0;
for i := 1 to NoVariables do
begin
cellstring := OS3MainFrm.DataGrid.Cells[i,0];
if cellstring = GroupVarEdit.Text then grpvar := i;
end;
if grpvar = 0 then
begin
ShowMessage('Error - No group variable found.');
exit;
end;
// read data (score group and items)
for i := 1 to NoCases do
begin
subjtot := 0;
// Get group (reference or target)
value := round(StrToFloat(Trim(OS3MainFrm.DataGrid.Cells[grpvar,i])));
subjgrp := 0;
if value = StrToInt(RefGrpEdit.Text) then subjgrp := 1; // reference grp
if value = StrToInt(TrgtGrpEdit.Text) then subjgrp := 2; // target group
if subjgrp = 0 then
begin
ShowMessage('Error - Bad group code for a subject.');
exit;
end;
nsize[subjgrp] := nsize[subjgrp] + 1;
for j := 1 to NoItems do // get item score and subject total
begin
itm := ColNoSelected[j-1];
value := Round(StrToFloat(Trim(OS3MainFrm.DataGrid.Cells[itm,i])));
subjtot := subjtot + value;
end;
level := 0;
for k := 0 to NoLevels-1 do // get score level category
begin
if ((subjtot >= Lbounds[k]) and (subjtot <= Ubounds[k])) then
level := k;
end;
for j := 1 to NoItems do // add to data
begin
itm := ColNoSelected[j-1];
value := Round(StrToFloat(Trim(OS3MainFrm.DataGrid.Cells[itm,i])));
value := value - loscore;
if subjgrp = 1 then
RData[j-1,value,level] := RData[j-1,value,level] + 1
else FData[j-1,value,level] := FData[j-1,value,level] + 1;
TotData[j-1,value,level] := TotData[j-1,value,level] + 1;
end;
end; // next case i
// Show upper and lower bounds for score group bins
OutPutFrm.RichEdit.Lines.Add('Conditioning Levels');
OutPutFrm.RichEdit.Lines.Add('Lower Upper');
for i := 0 to nolevels-1 do
begin
cellstring := format('%5d %5d',[Lbounds[i],Ubounds[i]]);
OutPutFrm.RichEdit.Lines.Add(cellstring);
end;
OutPutFrm.RichEdit.Lines.Add('');
// obtain statistics and print frequency in categories for each item
for i := 1 to NoItems do
begin
OutPutFrm.RichEdit.Lines.Add('Observed Category Frequencies');
OutPutFrm.RichEdit.Lines.Add('Item Group Level Category Number');
Title := ' ';
for j := 0 to nocats-1 do Title := Title + format('%10d',[j+loscore]);
OutPutFrm.RichEdit.Lines.Add(Title);
Zc := 0.0;
dftot := 0.0;
BigDnum := 0.0;
BigDden := 0.0;
M2 := 0.0;
SumE := 0.0; // second term of M2 numerator
SumV := 0.0; // denominator of M2
Term1 := 0.0; // first term of M2 numerator
for k := 0 to nolevels-1 do
begin
Mf[k] := 0.0;
Mb[k] := 0.0;
Sf[k] := 0.0;
Sb[k] := 0.0;
t[k] := 0.0;
Nb[k] := 0.0;
Nf[k] := 0.0;
df[k] := 0.0;
d[k] := 0.0;
Sd[k] := 0.0;
VarE := 0.0;
E := 0.0;
Ti := 0.0;
MY := 0.0;
Title := format('%3d Ref. %3d',[i,k+1]);
for j := 0 to nocats-1 do
begin
Title := Title + format('%10d',[RData[i-1,j,k]]);
X := RData[i-1,j,k] * (j+loscore);
Mb[k] := Mb[k] + X;
Sb[k] := Sb[k] + (X * X);
Nb[k] := Nb[k] + RData[i-1,j,k];
end;
OutPutFrm.RichEdit.Lines.Add(Title);
Title := format('%3d Focal %3d',[i,k+1]);
for j := 0 to nocats-1 do
begin
Title := Title + format('%10d',[FData[i-1,j,k]]);
X := FData[i-1,j,k] * (j + loscore);
Mf[k] := Mf[k] + X;
Sf[k] := Sf[k] + (X * X);
Nf[k] := Nf[k] + FData[i-1,j,k];
end;
OutPutFrm.RichEdit.Lines.Add(Title);
Title := format('%3d Total %3d',[i,k+1]);
for j := 0 to nocats-1 do
Title := Title + format('%10d',[TotData[i-1,j,k]]);
OutPutFrm.RichEdit.Lines.Add(Title);
OutPutFrm.RichEdit.Lines.Add('');
for j := 0 to nocats-1 do
begin
Term1 := Term1 + FData[i-1,j,k] * (j+loscore);
X := TotData[i-1,j,k] * (j+loscore);
E := E + X;
Ti := Ti + TotData[i-1,j,k];
MY := MY + TotData[i-1,j,k] * (j + loscore);
VarE := VarE + TotData[i-1,j,k] * (j + loscore)*(j + loscore);
end;
E := E / Ti;
E := Nf[k] * E;
SumE := SumE + E; // second term of num. of m2
VarE := (Ti * VarE) - (MY * MY);
VarE := ((Nf[k] * Nb[k]) / (Ti * Ti * (Ti - 1.0))) * VarE;
SumV := SumV + VarE; // den. of M2
if (Nf[k] + Nb[k]) < 5 then continue;
Sf[k] := Sf[k] - (Mf[k] * Mf[k] / Nf[k]);
Sf[k] := Sf[k] / (Nf[k] - 1.0);
Sb[k] := Sb[k] - (Mb[k] * Mb[k] / Nb[k]);
Sb[k] := Sb[k] / (Nb[k] - 1.0);
Mf[k] := Mf[k] / Nf[k];
Mb[k] := Mb[k] / Nb[k];
t[k] := Mf[k] - Mb[k];
df[k] := Nb[k] + Nf[k] - 2.0;
Vart := ((Sf[k] * Nf[k]) + (Sb[k] * Nb[k])) / df[k];
Vart := sqrt(Vart * ((1.0 / Nf[k]) + (1.0 / Nb[k])));
t[k] := t[k] / Vart;
Zc := Zc + t[k];
dftot := dftot + (df[k] / (df[k] - 2.0));
BigJ := 1.0 - (3.0 / (4.0 * df[k] - 1.0));
d[k] := BigJ * sqrt((Nb[k] * Nf[k]) / (Nb[k] * Nf[k]));
d[k] := d[k] * t[k];
Sd[k] := (BigJ * BigJ) * (df[k] / (df[k] - 2.0));
Sd[k] := Sd[k] * (Nb[k] + Nf[k]) / (Nb[k] * Nf[k]);
Sd[k] := Sd[k] + (d[k] * d[k]) * ((BigJ * BigJ * df[k])/(df[k]-2.0) - 1.0);
BigDnum := BigDnum + d[k] / Sd[k];
BigDden := BigDden + 1.0 / Sd[k];
end; // next level k
M2 := (Term1 - SumE) * (Term1 - SumE) / SumV;
Title := 't-test values for Reference and Focus Means for each level';
OutPutFrm.RichEdit.Lines.Add(Title);
for k := 0 to nolevels-1 do
begin
Title := format('Mean Reference = %10.3f SD = %10.3f N = %5.0f',[Mb[k],sqrt(Sb[k]),Nb[k]]);
OutPutFrm.RichEdit.Lines.Add(Title);
Title := format('Mean Focal = %10.3f SD = %10.3f N = %5.0f',[Mf[k],sqrt(Sf[k]),Nf[k]]);
OutPutFrm.RichEdit.Lines.Add(Title);
Title := format('Level %3d t = %8.3f with deg. freedom = %5.0f',[k+1,t[k],df[k]]);
OutPutFrm.RichEdit.Lines.Add(Title);
end;
Zc := Zc / dftot; // HW1 statistic
prob := 1.0 - probz(Zc);
Title := format('Composite z statistic = %6.3f. Prob. > |z| = %6.3f',[Zc, prob]);
OutPutFrm.RichEdit.Lines.Add(Title);
BigD := BigDnum / BigDden;
BigDS := 1.0 / sqrt(BigDden);
Zd := BigD / BigDS; // HW3 statistic
prob := 1.0 - probz(Zd);
Title := format('Weighted Composite z statistic = %6.3f. Prob. > |z| = %6.3f',[Zd, prob]);
OutPutFrm.RichEdit.Lines.Add(Title);
prob := 1.0 - chisquaredprob(M2,1);
Title := format('Generalized Mantel-Haenszel = %10.3f with D.F. = 1 and Prob. > Chi-Sqr. = %6.3f',[M2, prob]);
OutPutFrm.RichEdit.Lines.Add(Title);
OutPutFrm.ShowModal;
OutPutFrm.RichEdit.Clear;
if GraphChk.Checked then
begin
GraphFrm.nosets := 2;
GraphFrm.nbars := nolevels;
GraphFrm.Heading := 'Level Means';
GraphFrm.XTitle := 'Level';
GraphFrm.YTitle := 'Mean';
SetLength(GraphFrm.Ypoints,2,nolevels+1);
SetLength(GraphFrm.Xpoints,1,nolevels+1);
for k := 0 to nolevels-1 do
begin
GraphFrm.Ypoints[0,k] := Mb[k];
GraphFrm.Xpoints[0,k] := k+1;
GraphFrm.Ypoints[1,k] := Mf[k];
end;
GraphFrm.barwideprop := 0.5;
GraphFrm.AutoScale := true;
GraphFrm.GraphType := 2; // 3d Vertical Bar Chart
GraphFrm.ShowLeftWall := true;
GraphFrm.ShowRightWall := true;
GraphFrm.ShowBottomWall := true;
GraphFrm.ShowBackWall := true;
GraphFrm.BackColor := clYellow;
GraphFrm.WallColor := clBlack;
GraphFrm.ShowModal;
end;
end; // next item
// clean up the heap
GraphFrm.Xpoints := nil;
GraphFrm.Ypoints := nil;
FData := nil;
RData := nil;
TotData := nil;
t := nil;
Mf := nil;
Mb := nil;
Sf := nil;
Sb := nil;
Nb := nil;
Nf := nil;
df := nil;
d := nil;
Sd:= nil;
end;
initialization
{$I polydifunit.lrs}
end.

View File

@ -0,0 +1,55 @@
object PolynomialFrm: TPolynomialFrm
Left = 335
Height = 137
Top = 138
Width = 218
Caption = 'Polynomial Regression Smoothing'
ClientHeight = 137
ClientWidth = 218
OnShow = FormShow
LCLVersion = '0.9.28.2'
object Label1: TLabel
Left = 8
Height = 14
Top = 16
Width = 87
Caption = 'Polynomial order :'
ParentColor = False
end
object PolyEdit: TEdit
Left = 104
Height = 21
Top = 9
Width = 47
TabOrder = 0
Text = 'PolyEdit'
end
object CancelBtn: TButton
Left = 120
Height = 29
Top = 56
Width = 70
Caption = 'Cancel'
ModalResult = 2
TabOrder = 1
end
object OKBtn: TButton
Left = 56
Height = 29
Top = 96
Width = 80
Caption = 'OK'
ModalResult = 1
TabOrder = 2
end
object HelpBtn: TButton
Tag = 139
Left = 8
Height = 28
Top = 56
Width = 76
Caption = 'Help'
OnClick = HelpBtnClick
TabOrder = 3
end
end

View File

@ -0,0 +1,17 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TPolynomialFrm','FORMDATA',[
'TPF0'#14'TPolynomialFrm'#13'PolynomialFrm'#4'Left'#3'O'#1#6'Height'#3#137#0#3
+'Top'#3#138#0#5'Width'#3#218#0#7'Caption'#6#31'Polynomial Regression Smoothi'
+'ng'#12'ClientHeight'#3#137#0#11'ClientWidth'#3#218#0#6'OnShow'#7#8'FormShow'
+#10'LCLVersion'#6#8'0.9.28.2'#0#6'TLabel'#6'Label1'#4'Left'#2#8#6'Height'#2
+#14#3'Top'#2#16#5'Width'#2'W'#7'Caption'#6#18'Polynomial order :'#11'ParentC'
+'olor'#8#0#0#5'TEdit'#8'PolyEdit'#4'Left'#2'h'#6'Height'#2#21#3'Top'#2#9#5'W'
+'idth'#2'/'#8'TabOrder'#2#0#4'Text'#6#8'PolyEdit'#0#0#7'TButton'#9'CancelBtn'
+#4'Left'#2'x'#6'Height'#2#29#3'Top'#2'8'#5'Width'#2'F'#7'Caption'#6#6'Cancel'
+#11'ModalResult'#2#2#8'TabOrder'#2#1#0#0#7'TButton'#5'OKBtn'#4'Left'#2'8'#6
+'Height'#2#29#3'Top'#2'`'#5'Width'#2'P'#7'Caption'#6#2'OK'#11'ModalResult'#2
+#1#8'TabOrder'#2#2#0#0#7'TButton'#7'HelpBtn'#3'Tag'#3#139#0#4'Left'#2#8#6'He'
+'ight'#2#28#3'Top'#2'8'#5'Width'#2'L'#7'Caption'#6#4'Help'#7'OnClick'#7#12'H'
+'elpBtnClick'#8'TabOrder'#2#3#0#0#0
]);

View File

@ -0,0 +1,50 @@
unit PolynomialUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, contexthelpunit;
type
{ TPolynomialFrm }
TPolynomialFrm = class(TForm)
CancelBtn: TButton;
HelpBtn: TButton;
OKBtn: TButton;
PolyEdit: TEdit;
Label1: TLabel;
procedure FormShow(Sender: TObject);
procedure HelpBtnClick(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
PolynomialFrm: TPolynomialFrm;
implementation
{ TPolynomialFrm }
procedure TPolynomialFrm.FormShow(Sender: TObject);
begin
PolyEdit.Text := '1';
end;
procedure TPolynomialFrm.HelpBtnClick(Sender: TObject);
begin
ContextHelpForm.HelpMessage((Sender as TButton).tag);
end;
initialization
{$I polynomialunit.lrs}
end.

View File

@ -0,0 +1,167 @@
object PresentValueFrm: TPresentValueFrm
Left = 163
Height = 480
Top = 111
Width = 336
Caption = 'Present Value'
ClientHeight = 480
ClientWidth = 336
OnShow = FormShow
LCLVersion = '0.9.28.2'
object Label1: TLabel
Left = 7
Height = 14
Top = 288
Width = 62
Caption = 'Future Value'
ParentColor = False
end
object Label2: TLabel
Left = 8
Height = 14
Top = 321
Width = 43
Caption = 'Payment'
ParentColor = False
end
object Label3: TLabel
Left = 8
Height = 14
Top = 354
Width = 89
Caption = 'Number of Periods'
ParentColor = False
end
object Label4: TLabel
Left = 8
Height = 14
Top = 392
Width = 76
Caption = 'Rate Per Period'
ParentColor = False
end
object Label5: TLabel
Left = 8
Height = 14
Top = 431
Width = 67
Caption = 'Present Value'
ParentColor = False
end
object Memo1: TMemo
Left = 6
Height = 240
Top = 8
Width = 318
Lines.Strings = (
'Description:'
''
'This procedure calculates the Present Value of an investment'
'where Payment is received for N periods and is discounted at'
'the rate of Rate per period. Future Value is the value the'
'investment may reach at some point. Payment Time indicates'
'whether the cash flow occurs at the beginning or end of the'
'period.'
'EXAMPLE: What was the amount borrowed in a 7.5% APR'
'(Annual Percentage Rate) four year auto loan when the'
'payment is $500.00?'
'Rate per Period = 0.075 / 12 = 0.00625'
'Number of periods = 4 years * 12 months = 48'
'Payment = -$500.00'
'Future Value = 0'
'Payment Time = End of Period'
'ANSWER: about $20679.19'
)
TabOrder = 0
end
object FutureEdit: TEdit
Left = 104
Height = 21
Top = 281
Width = 68
TabOrder = 1
Text = 'FutureEdit'
end
object PaymentEdit: TEdit
Left = 104
Height = 21
Top = 314
Width = 68
TabOrder = 2
Text = 'Edit1'
end
object NPeriodsEdit: TEdit
Left = 104
Height = 21
Top = 347
Width = 68
TabOrder = 3
Text = 'Edit1'
end
object RateEdit: TEdit
Left = 104
Height = 21
Top = 384
Width = 68
TabOrder = 4
Text = 'Edit1'
end
object PresentEdit: TEdit
Left = 104
Height = 21
Top = 424
Width = 68
TabOrder = 5
Text = 'Edit1'
end
object PayTimeGrp: TRadioGroup
Left = 191
Height = 62
Top = 272
Width = 131
AutoFill = True
Caption = 'Payment Time:'
ChildSizing.LeftRightSpacing = 6
ChildSizing.TopBottomSpacing = 6
ChildSizing.EnlargeHorizontal = crsHomogenousChildResize
ChildSizing.EnlargeVertical = crsHomogenousChildResize
ChildSizing.ShrinkHorizontal = crsScaleChilds
ChildSizing.ShrinkVertical = crsScaleChilds
ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 1
ClientHeight = 44
ClientWidth = 127
Items.Strings = (
'Start of Period'
'End of Period'
)
TabOrder = 6
end
object ResetBtn: TButton
Left = 208
Height = 34
Top = 344
Width = 85
Caption = 'Reset'
OnClick = ResetBtnClick
TabOrder = 7
end
object ComputeBtn: TButton
Left = 208
Height = 34
Top = 392
Width = 85
Caption = 'Compute'
OnClick = ComputeBtnClick
TabOrder = 8
end
object ReturnBtn: TButton
Left = 208
Height = 34
Top = 440
Width = 85
Caption = 'Return'
ModalResult = 1
TabOrder = 9
end
end

View File

@ -0,0 +1,50 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TPresentValueFrm','FORMDATA',[
'TPF0'#16'TPresentValueFrm'#15'PresentValueFrm'#4'Left'#3#163#0#6'Height'#3
+#224#1#3'Top'#2'o'#5'Width'#3'P'#1#7'Caption'#6#13'Present Value'#12'ClientH'
+'eight'#3#224#1#11'ClientWidth'#3'P'#1#6'OnShow'#7#8'FormShow'#10'LCLVersion'
+#6#8'0.9.28.2'#0#6'TLabel'#6'Label1'#4'Left'#2#7#6'Height'#2#14#3'Top'#3' '#1
+#5'Width'#2'>'#7'Caption'#6#12'Future Value'#11'ParentColor'#8#0#0#6'TLabel'
+#6'Label2'#4'Left'#2#8#6'Height'#2#14#3'Top'#3'A'#1#5'Width'#2'+'#7'Caption'
+#6#7'Payment'#11'ParentColor'#8#0#0#6'TLabel'#6'Label3'#4'Left'#2#8#6'Height'
+#2#14#3'Top'#3'b'#1#5'Width'#2'Y'#7'Caption'#6#17'Number of Periods'#11'Pare'
+'ntColor'#8#0#0#6'TLabel'#6'Label4'#4'Left'#2#8#6'Height'#2#14#3'Top'#3#136#1
+#5'Width'#2'L'#7'Caption'#6#15'Rate Per Period'#11'ParentColor'#8#0#0#6'TLab'
+'el'#6'Label5'#4'Left'#2#8#6'Height'#2#14#3'Top'#3#175#1#5'Width'#2'C'#7'Cap'
+'tion'#6#13'Present Value'#11'ParentColor'#8#0#0#5'TMemo'#5'Memo1'#4'Left'#2
+#6#6'Height'#3#240#0#3'Top'#2#8#5'Width'#3'>'#1#13'Lines.Strings'#1#6#12'Des'
+'cription:'#6#0#6'<This procedure calculates the Present Value of an investm'
+'ent'#6'<where Payment is received for N periods and is discounted at'#6';th'
+'e rate of Rate per period. Future Value is the value the'#6';investment ma'
+'y reach at some point. Payment Time indicates'#6';whether the cash flow oc'
+'curs at the beginning or end of the'#6#7'period.'#6'4EXAMPLE: What was the'
+' amount borrowed in a 7.5% APR'#6'5(Annual Percentage Rate) four year auto '
+'loan when the'#6#19'payment is $500.00?'#6'&Rate per Period = 0.075 / 12 = '
+'0.00625'#6',Number of periods = 4 years * 12 months = 48'#6#18'Payment = -$'
+'500.00'#6#16'Future Value = 0'#6#28'Payment Time = End of Period'#6#23'ANSW'
+'ER: about $20679.19'#0#8'TabOrder'#2#0#0#0#5'TEdit'#10'FutureEdit'#4'Left'#2
+'h'#6'Height'#2#21#3'Top'#3#25#1#5'Width'#2'D'#8'TabOrder'#2#1#4'Text'#6#10
+'FutureEdit'#0#0#5'TEdit'#11'PaymentEdit'#4'Left'#2'h'#6'Height'#2#21#3'Top'
+#3':'#1#5'Width'#2'D'#8'TabOrder'#2#2#4'Text'#6#5'Edit1'#0#0#5'TEdit'#12'NPe'
+'riodsEdit'#4'Left'#2'h'#6'Height'#2#21#3'Top'#3'['#1#5'Width'#2'D'#8'TabOrd'
+'er'#2#3#4'Text'#6#5'Edit1'#0#0#5'TEdit'#8'RateEdit'#4'Left'#2'h'#6'Height'#2
+#21#3'Top'#3#128#1#5'Width'#2'D'#8'TabOrder'#2#4#4'Text'#6#5'Edit1'#0#0#5'TE'
+'dit'#11'PresentEdit'#4'Left'#2'h'#6'Height'#2#21#3'Top'#3#168#1#5'Width'#2
+'D'#8'TabOrder'#2#5#4'Text'#6#5'Edit1'#0#0#11'TRadioGroup'#10'PayTimeGrp'#4
+'Left'#3#191#0#6'Height'#2'>'#3'Top'#3#16#1#5'Width'#3#131#0#8'AutoFill'#9#7
+'Caption'#6#13'Payment Time:'#28'ChildSizing.LeftRightSpacing'#2#6#28'ChildS'
+'izing.TopBottomSpacing'#2#6#29'ChildSizing.EnlargeHorizontal'#7#24'crsHomog'
+'enousChildResize'#27'ChildSizing.EnlargeVertical'#7#24'crsHomogenousChildRe'
+'size'#28'ChildSizing.ShrinkHorizontal'#7#14'crsScaleChilds'#26'ChildSizing.'
+'ShrinkVertical'#7#14'crsScaleChilds'#18'ChildSizing.Layout'#7#29'cclLeftToR'
+'ightThenTopToBottom'#27'ChildSizing.ControlsPerLine'#2#1#12'ClientHeight'#2
+','#11'ClientWidth'#2#127#13'Items.Strings'#1#6#15'Start of Period'#6#13'End'
+' of Period'#0#8'TabOrder'#2#6#0#0#7'TButton'#8'ResetBtn'#4'Left'#3#208#0#6
+'Height'#2'"'#3'Top'#3'X'#1#5'Width'#2'U'#7'Caption'#6#5'Reset'#7'OnClick'#7
+#13'ResetBtnClick'#8'TabOrder'#2#7#0#0#7'TButton'#10'ComputeBtn'#4'Left'#3
+#208#0#6'Height'#2'"'#3'Top'#3#136#1#5'Width'#2'U'#7'Caption'#6#7'Compute'#7
+'OnClick'#7#15'ComputeBtnClick'#8'TabOrder'#2#8#0#0#7'TButton'#9'ReturnBtn'#4
+'Left'#3#208#0#6'Height'#2'"'#3'Top'#3#184#1#5'Width'#2'U'#7'Caption'#6#6'Re'
+'turn'#11'ModalResult'#2#1#8'TabOrder'#2#9#0#0#0
]);

View File

@ -0,0 +1,99 @@
unit PresentValueUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, ExtCtrls;
type
{ TPresentValueFrm }
TPresentValueFrm = class(TForm)
ResetBtn: TButton;
ComputeBtn: TButton;
ReturnBtn: TButton;
FutureEdit: TEdit;
PaymentEdit: TEdit;
NPeriodsEdit: TEdit;
RateEdit: TEdit;
PresentEdit: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Memo1: TMemo;
PayTimeGrp: TRadioGroup;
procedure ComputeBtnClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure ResetBtnClick(Sender: TObject);
function PresentValue(Rate: Extended; NPeriods: Integer; Payment, FutureValue:
Extended; PaymentTime: TPaymentTime): Extended;
private
{ private declarations }
public
{ public declarations }
end;
var
PresentValueFrm: TPresentValueFrm;
implementation
{ TPresentValueFrm }
procedure TPresentValueFrm.ResetBtnClick(Sender: TObject);
begin
FutureEdit.Text := '';
PaymentEdit.Text := '';
NPeriodsEdit.Text := '';
RateEdit.Text := '';
PresentEdit.Text := '';
end;
procedure TPresentValueFrm.FormShow(Sender: TObject);
begin
ResetBtnClick(self);
end;
procedure TPresentValueFrm.ComputeBtnClick(Sender: TObject);
VAR
Rate, Payment, PresentVal, FutureVal, Interest : Extended;
NPeriods, When : integer;
Time : TPaymentTime;
begin
If PayTimeGrp.ItemIndex = 0 then Time := ptStartofPeriod else
Time := ptEndofPeriod;
FutureVal := StrToFloat(FutureEdit.Text);
Rate := StrToFloat(RateEdit.Text);
NPeriods := StrToInt(NPeriodsEdit.Text);
Payment := StrToFloat(PaymentEdit.Text);
PresentVal := PresentValue(Rate, NPeriods, Payment, FutureVal, Time);
PresentEdit.Text := FloatToStr(PresentVal);
end;
function TPresentValueFrm.PresentValue(Rate: Extended; NPeriods: Integer; Payment, FutureValue:
Extended; PaymentTime: TPaymentTime): Extended;
var
Annuity, CompoundRN: Extended;
begin
if Rate <= -1.0 then ShowMessage('ERROR! PresentValue Rate <= -1.-');
Annuity := Annuity2(Rate, NPeriods, PaymentTime, CompoundRN);
if CompoundRN > 1.0E16 then
PresentValue := -(Payment / Rate * Integer(PaymentTime) * Payment)
else
PresentValue := (-Payment * Annuity - FutureValue) / CompoundRN
end;
initialization
{$I presentvalueunit.lrs}
end.

View File

@ -0,0 +1,96 @@
object ChiSqrProbForm: TChiSqrProbForm
Left = 288
Height = 146
Top = 161
Width = 389
Caption = 'Probability of a chisquared value'
ClientHeight = 146
ClientWidth = 389
OnShow = ResetBtnClick
LCLVersion = '0.9.30'
object Label1: TLabel
Left = 9
Height = 16
Top = 14
Width = 106
Caption = 'Chisquared value = '
ParentColor = False
end
object ChiSqrEdit: TEdit
Left = 123
Height = 23
Top = 7
Width = 62
TabOrder = 0
Text = 'ChiSqrEdit'
end
object Label2: TLabel
Left = 195
Height = 16
Top = 14
Width = 112
Caption = 'with deg. freedom = '
ParentColor = False
end
object DFEdit: TEdit
Left = 311
Height = 23
Top = 7
Width = 50
TabOrder = 1
Text = 'DFEdit'
end
object Label3: TLabel
Left = 8
Height = 16
Top = 47
Width = 136
Caption = 'Probability larger value = '
ParentColor = False
end
object ProbEdit: TEdit
Left = 145
Height = 23
Top = 39
Width = 74
TabOrder = 2
Text = 'ProbEdit'
end
object CancelBtn: TButton
Left = 8
Height = 33
Top = 80
Width = 82
Cancel = True
Caption = 'Cancel'
ModalResult = 2
TabOrder = 3
end
object ResetBtn: TButton
Left = 104
Height = 33
Top = 80
Width = 82
Caption = 'Reset'
OnClick = ResetBtnClick
TabOrder = 4
end
object ComputeBtn: TButton
Left = 200
Height = 33
Top = 80
Width = 82
Caption = 'Compute'
OnClick = ComputeBtnClick
TabOrder = 5
end
object ReturnBtn: TButton
Left = 296
Height = 33
Top = 80
Width = 77
Caption = 'Return'
ModalResult = 1
TabOrder = 6
end
end

View File

@ -0,0 +1,26 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TChiSqrProbForm','FORMDATA',[
'TPF0'#15'TChiSqrProbForm'#14'ChiSqrProbForm'#4'Left'#3' '#1#6'Height'#3#146#0
+#3'Top'#3#161#0#5'Width'#3#133#1#7'Caption'#6'!Probability of a chisquared v'
+'alue'#12'ClientHeight'#3#146#0#11'ClientWidth'#3#133#1#6'OnShow'#7#13'Reset'
+'BtnClick'#10'LCLVersion'#6#6'0.9.30'#0#6'TLabel'#6'Label1'#4'Left'#2#9#6'He'
+'ight'#2#16#3'Top'#2#14#5'Width'#2'j'#7'Caption'#6#19'Chisquared value = '#11
+'ParentColor'#8#0#0#5'TEdit'#10'ChiSqrEdit'#4'Left'#2'{'#6'Height'#2#23#3'To'
+'p'#2#7#5'Width'#2'>'#8'TabOrder'#2#0#4'Text'#6#10'ChiSqrEdit'#0#0#6'TLabel'
+#6'Label2'#4'Left'#3#195#0#6'Height'#2#16#3'Top'#2#14#5'Width'#2'p'#7'Captio'
+'n'#6#20'with deg. freedom = '#11'ParentColor'#8#0#0#5'TEdit'#6'DFEdit'#4'Le'
+'ft'#3'7'#1#6'Height'#2#23#3'Top'#2#7#5'Width'#2'2'#8'TabOrder'#2#1#4'Text'#6
+#6'DFEdit'#0#0#6'TLabel'#6'Label3'#4'Left'#2#8#6'Height'#2#16#3'Top'#2'/'#5
+'Width'#3#136#0#7'Caption'#6#27'Probability larger value = '#11'ParentColor'
+#8#0#0#5'TEdit'#8'ProbEdit'#4'Left'#3#145#0#6'Height'#2#23#3'Top'#2''''#5'Wi'
+'dth'#2'J'#8'TabOrder'#2#2#4'Text'#6#8'ProbEdit'#0#0#7'TButton'#9'CancelBtn'
+#4'Left'#2#8#6'Height'#2'!'#3'Top'#2'P'#5'Width'#2'R'#6'Cancel'#9#7'Caption'
+#6#6'Cancel'#11'ModalResult'#2#2#8'TabOrder'#2#3#0#0#7'TButton'#8'ResetBtn'#4
+'Left'#2'h'#6'Height'#2'!'#3'Top'#2'P'#5'Width'#2'R'#7'Caption'#6#5'Reset'#7
+'OnClick'#7#13'ResetBtnClick'#8'TabOrder'#2#4#0#0#7'TButton'#10'ComputeBtn'#4
+'Left'#3#200#0#6'Height'#2'!'#3'Top'#2'P'#5'Width'#2'R'#7'Caption'#6#7'Compu'
+'te'#7'OnClick'#7#15'ComputeBtnClick'#8'TabOrder'#2#5#0#0#7'TButton'#9'Retur'
+'nBtn'#4'Left'#3'('#1#6'Height'#2'!'#3'Top'#2'P'#5'Width'#2'M'#7'Caption'#6#6
+'Return'#11'ModalResult'#2#1#8'TabOrder'#2#6#0#0#0
]);

View File

@ -0,0 +1,65 @@
unit ProbChiSqrUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, functionslib;
type
{ TChiSqrProbForm }
TChiSqrProbForm = class(TForm)
CancelBtn: TButton;
ChiSqrEdit: TEdit;
ComputeBtn: TButton;
DFEdit: TEdit;
ProbEdit: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
ResetBtn: TButton;
ReturnBtn: TButton;
procedure ComputeBtnClick(Sender: TObject);
procedure ResetBtnClick(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
ChiSqrProbForm: TChiSqrProbForm;
implementation
{ TChiSqrProbForm }
procedure TChiSqrProbForm.ResetBtnClick(Sender: TObject);
begin
ChiSqrEdit.Text := '';
DFEdit.Text := '';
ProbEdit.Text := '';
end;
procedure TChiSqrProbForm.ComputeBtnClick(Sender: TObject);
VAR
ChiSqr, Prob : double;
DF : integer;
outvalue : string;
begin
ChiSqr := StrToFloat(ChiSqrEdit.Text);
DF := StrToInt(DFEdit.Text);
Prob := 1.0 - chisquaredprob(ChiSqr,DF);
outvalue := format('%6.4f',[Prob]);
ProbEdit.Text := outvalue;
end;
initialization
{$I probchisqrunit.lrs}
end.

View File

@ -0,0 +1,80 @@
object ProbSmallerzForm: TProbSmallerzForm
Left = 288
Height = 194
Top = 161
Width = 320
Caption = 'Probability of a smaller z score'
ClientHeight = 194
ClientWidth = 320
OnShow = ResetBtnClick
LCLVersion = '0.9.30'
object Label1: TLabel
Left = 9
Height = 16
Top = 16
Width = 104
Caption = 'Observed z score = '
ParentColor = False
end
object zEdit: TEdit
Left = 113
Height = 23
Top = 9
Width = 83
TabOrder = 0
Text = 'zEdit'
end
object Label2: TLabel
Left = 9
Height = 16
Top = 46
Width = 91
Caption = 'Probability < z = '
ParentColor = False
end
object ProbzEdit: TEdit
Left = 113
Height = 23
Top = 40
Width = 80
TabOrder = 1
Text = 'ProbzEdit'
end
object CancelBtn: TButton
Left = 8
Height = 33
Top = 80
Width = 82
Cancel = True
Caption = 'Cancel'
ModalResult = 2
TabOrder = 2
end
object ResetBtn: TButton
Left = 113
Height = 33
Top = 80
Width = 82
Caption = 'Reset'
OnClick = ResetBtnClick
TabOrder = 3
end
object ComputeBtn: TButton
Left = 216
Height = 33
Top = 80
Width = 82
Caption = 'Compute'
OnClick = ComputeBtnClick
TabOrder = 4
end
object ReturnBtn: TButton
Left = 115
Height = 33
Top = 130
Width = 77
Caption = 'Return'
ModalResult = 1
TabOrder = 5
end
end

View File

@ -0,0 +1,22 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TProbSmallerzForm','FORMDATA',[
'TPF0'#17'TProbSmallerzForm'#16'ProbSmallerzForm'#4'Left'#3' '#1#6'Height'#3
+#194#0#3'Top'#3#161#0#5'Width'#3'@'#1#7'Caption'#6' Probability of a smaller'
+' z score'#12'ClientHeight'#3#194#0#11'ClientWidth'#3'@'#1#6'OnShow'#7#13'Re'
+'setBtnClick'#10'LCLVersion'#6#6'0.9.30'#0#6'TLabel'#6'Label1'#4'Left'#2#9#6
+'Height'#2#16#3'Top'#2#16#5'Width'#2'h'#7'Caption'#6#19'Observed z score = '
+#11'ParentColor'#8#0#0#5'TEdit'#5'zEdit'#4'Left'#2'q'#6'Height'#2#23#3'Top'#2
+#9#5'Width'#2'S'#8'TabOrder'#2#0#4'Text'#6#5'zEdit'#0#0#6'TLabel'#6'Label2'#4
+'Left'#2#9#6'Height'#2#16#3'Top'#2'.'#5'Width'#2'['#7'Caption'#6#18'Probabil'
+'ity < z = '#11'ParentColor'#8#0#0#5'TEdit'#9'ProbzEdit'#4'Left'#2'q'#6'Heig'
+'ht'#2#23#3'Top'#2'('#5'Width'#2'P'#8'TabOrder'#2#1#4'Text'#6#9'ProbzEdit'#0
+#0#7'TButton'#9'CancelBtn'#4'Left'#2#8#6'Height'#2'!'#3'Top'#2'P'#5'Width'#2
+'R'#6'Cancel'#9#7'Caption'#6#6'Cancel'#11'ModalResult'#2#2#8'TabOrder'#2#2#0
+#0#7'TButton'#8'ResetBtn'#4'Left'#2'q'#6'Height'#2'!'#3'Top'#2'P'#5'Width'#2
+'R'#7'Caption'#6#5'Reset'#7'OnClick'#7#13'ResetBtnClick'#8'TabOrder'#2#3#0#0
+#7'TButton'#10'ComputeBtn'#4'Left'#3#216#0#6'Height'#2'!'#3'Top'#2'P'#5'Widt'
+'h'#2'R'#7'Caption'#6#7'Compute'#7'OnClick'#7#15'ComputeBtnClick'#8'TabOrder'
+#2#4#0#0#7'TButton'#9'ReturnBtn'#4'Left'#2's'#6'Height'#2'!'#3'Top'#3#130#0#5
+'Width'#2'M'#7'Caption'#6#6'Return'#11'ModalResult'#2#1#8'TabOrder'#2#5#0#0#0
]);

View File

@ -0,0 +1,60 @@
unit ProbSmallerzUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, functionslib;
type
{ TProbSmallerzForm }
TProbSmallerzForm = class(TForm)
CancelBtn: TButton;
ComputeBtn: TButton;
Label1: TLabel;
Label2: TLabel;
ProbzEdit: TEdit;
ResetBtn: TButton;
ReturnBtn: TButton;
zEdit: TEdit;
procedure ComputeBtnClick(Sender: TObject);
procedure ResetBtnClick(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
ProbSmallerzForm: TProbSmallerzForm;
implementation
{ TProbSmallerzForm }
procedure TProbSmallerzForm.ResetBtnClick(Sender: TObject);
begin
zEdit.Text := '';
ProbzEdit.Text := '';
end;
procedure TProbSmallerzForm.ComputeBtnClick(Sender: TObject);
VAR
zprob, z : double;
outvalue : string;
begin
z := StrToFloat(zEdit.Text);
zprob := probz(z);
outvalue := format('%6.4f',[zprob]);
ProbzEdit.Text := outvalue;
end;
initialization
{$I probsmallerzunit.lrs}
end.

View File

@ -0,0 +1,80 @@
object ProbzForm: TProbzForm
Left = 238
Height = 190
Top = 161
Width = 320
Caption = 'Probability of a larger z score'
ClientHeight = 190
ClientWidth = 320
OnShow = ResetBtnClick
LCLVersion = '0.9.30'
object Label1: TLabel
Left = 9
Height = 16
Top = 16
Width = 104
Caption = 'Observed z score = '
ParentColor = False
end
object zEdit: TEdit
Left = 113
Height = 23
Top = 9
Width = 83
TabOrder = 0
Text = 'zEdit'
end
object Label2: TLabel
Left = 9
Height = 16
Top = 46
Width = 91
Caption = 'Probability > z = '
ParentColor = False
end
object ProbzEdit: TEdit
Left = 113
Height = 23
Top = 40
Width = 80
TabOrder = 1
Text = 'ProbzEdit'
end
object CancelBtn: TButton
Left = 8
Height = 33
Top = 80
Width = 82
Cancel = True
Caption = 'Cancel'
ModalResult = 2
TabOrder = 2
end
object ResetBtn: TButton
Left = 113
Height = 33
Top = 80
Width = 82
Caption = 'Reset'
OnClick = ResetBtnClick
TabOrder = 3
end
object ComputeBtn: TButton
Left = 216
Height = 33
Top = 80
Width = 82
Caption = 'Compute'
OnClick = ComputeBtnClick
TabOrder = 4
end
object ReturnBtn: TButton
Left = 115
Height = 33
Top = 130
Width = 77
Caption = 'Return'
ModalResult = 1
TabOrder = 5
end
end

View File

@ -0,0 +1,22 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TProbzForm','FORMDATA',[
'TPF0'#10'TProbzForm'#9'ProbzForm'#4'Left'#3#238#0#6'Height'#3#190#0#3'Top'#3
+#161#0#5'Width'#3'@'#1#7'Caption'#6#31'Probability of a larger z score'#12'C'
+'lientHeight'#3#190#0#11'ClientWidth'#3'@'#1#6'OnShow'#7#13'ResetBtnClick'#10
+'LCLVersion'#6#6'0.9.30'#0#6'TLabel'#6'Label1'#4'Left'#2#9#6'Height'#2#16#3
+'Top'#2#16#5'Width'#2'h'#7'Caption'#6#19'Observed z score = '#11'ParentColor'
+#8#0#0#5'TEdit'#5'zEdit'#4'Left'#2'q'#6'Height'#2#23#3'Top'#2#9#5'Width'#2'S'
+#8'TabOrder'#2#0#4'Text'#6#5'zEdit'#0#0#6'TLabel'#6'Label2'#4'Left'#2#9#6'He'
+'ight'#2#16#3'Top'#2'.'#5'Width'#2'['#7'Caption'#6#18'Probability > z = '#11
+'ParentColor'#8#0#0#5'TEdit'#9'ProbzEdit'#4'Left'#2'q'#6'Height'#2#23#3'Top'
+#2'('#5'Width'#2'P'#8'TabOrder'#2#1#4'Text'#6#9'ProbzEdit'#0#0#7'TButton'#9
+'CancelBtn'#4'Left'#2#8#6'Height'#2'!'#3'Top'#2'P'#5'Width'#2'R'#6'Cancel'#9
+#7'Caption'#6#6'Cancel'#11'ModalResult'#2#2#8'TabOrder'#2#2#0#0#7'TButton'#8
+'ResetBtn'#4'Left'#2'q'#6'Height'#2'!'#3'Top'#2'P'#5'Width'#2'R'#7'Caption'#6
+#5'Reset'#7'OnClick'#7#13'ResetBtnClick'#8'TabOrder'#2#3#0#0#7'TButton'#10'C'
+'omputeBtn'#4'Left'#3#216#0#6'Height'#2'!'#3'Top'#2'P'#5'Width'#2'R'#7'Capti'
+'on'#6#7'Compute'#7'OnClick'#7#15'ComputeBtnClick'#8'TabOrder'#2#4#0#0#7'TBu'
+'tton'#9'ReturnBtn'#4'Left'#2's'#6'Height'#2'!'#3'Top'#3#130#0#5'Width'#2'M'
+#7'Caption'#6#6'Return'#11'ModalResult'#2#1#8'TabOrder'#2#5#0#0#0
]);

View File

@ -0,0 +1,60 @@
unit ProbzUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, functionslib;
type
{ TProbzForm }
TProbzForm = class(TForm)
ReturnBtn: TButton;
CancelBtn: TButton;
ResetBtn: TButton;
ComputeBtn: TButton;
ProbzEdit: TEdit;
Label2: TLabel;
zEdit: TEdit;
Label1: TLabel;
procedure ComputeBtnClick(Sender: TObject);
procedure ResetBtnClick(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
ProbzForm: TProbzForm;
implementation
{ TProbzForm }
procedure TProbzForm.ResetBtnClick(Sender: TObject);
begin
zEdit.Text := '';
ProbzEdit.Text := '';
end;
procedure TProbzForm.ComputeBtnClick(Sender: TObject);
VAR
zprob, z : double;
outvalue : string;
begin
z := StrToFloat(zEdit.Text);
zprob := 1.0 - probz(z);
outvalue := format('%6.4f',[zprob]);
ProbzEdit.Text := outvalue;
end;
initialization
{$I probzunit.lrs}
end.

File diff suppressed because it is too large Load Diff