You've already forked lazarus-ccr
LazStats: Refactor RChartUnit and XBarUnit to inherit from SPC template form.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@7654 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@@ -744,682 +744,682 @@
|
|||||||
<UnitName Value="KaplanMeierUnit"/>
|
<UnitName Value="KaplanMeierUnit"/>
|
||||||
</Unit88>
|
</Unit88>
|
||||||
<Unit89>
|
<Unit89>
|
||||||
<Filename Value="forms\analysis\statistical_process_control\xbarunit.pas"/>
|
|
||||||
<IsPartOfProject Value="True"/>
|
|
||||||
<ComponentName Value="XBarFrm"/>
|
|
||||||
<HasResources Value="True"/>
|
|
||||||
<ResourceBaseClass Value="Form"/>
|
|
||||||
<UnitName Value="XBarUnit"/>
|
|
||||||
</Unit89>
|
|
||||||
<Unit90>
|
|
||||||
<Filename Value="forms\analysis\statistical_process_control\rchartunit.pas"/>
|
|
||||||
<IsPartOfProject Value="True"/>
|
|
||||||
<ComponentName Value="RChartFrm"/>
|
|
||||||
<HasResources Value="True"/>
|
|
||||||
<ResourceBaseClass Value="Form"/>
|
|
||||||
<UnitName Value="RChartUnit"/>
|
|
||||||
</Unit90>
|
|
||||||
<Unit91>
|
|
||||||
<Filename Value="forms\analysis\statistical_process_control\cumsumunit.pas"/>
|
<Filename Value="forms\analysis\statistical_process_control\cumsumunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="CUMSUMFrm"/>
|
<ComponentName Value="CUMSUMFrm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="CUMSUMUnit"/>
|
<UnitName Value="CUMSUMUnit"/>
|
||||||
</Unit91>
|
</Unit89>
|
||||||
<Unit92>
|
<Unit90>
|
||||||
<Filename Value="forms\analysis\statistical_process_control\cchartunit.pas"/>
|
<Filename Value="forms\analysis\statistical_process_control\cchartunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="cChartFrm"/>
|
<ComponentName Value="cChartFrm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="CChartUnit"/>
|
<UnitName Value="CChartUnit"/>
|
||||||
</Unit92>
|
</Unit90>
|
||||||
<Unit93>
|
<Unit91>
|
||||||
<Filename Value="forms\analysis\statistical_process_control\pchartunit.pas"/>
|
<Filename Value="forms\analysis\statistical_process_control\pchartunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="pChartFrm"/>
|
<ComponentName Value="pChartFrm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="PChartUnit"/>
|
<UnitName Value="PChartUnit"/>
|
||||||
</Unit93>
|
</Unit91>
|
||||||
<Unit94>
|
<Unit92>
|
||||||
<Filename Value="forms\analysis\statistical_process_control\uchartunit.pas"/>
|
<Filename Value="forms\analysis\statistical_process_control\uchartunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="UChartFrm"/>
|
<ComponentName Value="UChartFrm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="UChartUnit"/>
|
<UnitName Value="UChartUnit"/>
|
||||||
</Unit94>
|
</Unit92>
|
||||||
<Unit95>
|
<Unit93>
|
||||||
<Filename Value="forms\simulations\corsimunit.pas"/>
|
<Filename Value="forms\simulations\corsimunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="CorSimFrm"/>
|
<ComponentName Value="CorSimFrm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="CorSimUnit"/>
|
<UnitName Value="CorSimUnit"/>
|
||||||
</Unit95>
|
</Unit93>
|
||||||
<Unit96>
|
<Unit94>
|
||||||
<Filename Value="forms\simulations\multgenunit.pas"/>
|
<Filename Value="forms\simulations\multgenunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="MultGenFrm"/>
|
<ComponentName Value="MultGenFrm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="MultGenUnit"/>
|
<UnitName Value="MultGenUnit"/>
|
||||||
</Unit96>
|
</Unit94>
|
||||||
<Unit97>
|
<Unit95>
|
||||||
<Filename Value="forms\simulations\errorcurvesunit.pas"/>
|
<Filename Value="forms\simulations\errorcurvesunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="ErrorCurvesFrm"/>
|
<ComponentName Value="ErrorCurvesFrm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="ErrorCurvesUnit"/>
|
<UnitName Value="ErrorCurvesUnit"/>
|
||||||
</Unit97>
|
</Unit95>
|
||||||
<Unit98>
|
<Unit96>
|
||||||
<Filename Value="forms\simulations\pcurvesunit.pas"/>
|
<Filename Value="forms\simulations\pcurvesunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="PCurvesFrm"/>
|
<ComponentName Value="PCurvesFrm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="PCurvesUnit"/>
|
<UnitName Value="PCurvesUnit"/>
|
||||||
</Unit98>
|
</Unit96>
|
||||||
<Unit99>
|
<Unit97>
|
||||||
<Filename Value="forms\simulations\distribunit.pas"/>
|
<Filename Value="forms\simulations\distribunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="DistribFrm"/>
|
<ComponentName Value="DistribFrm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="DistribUnit"/>
|
<UnitName Value="DistribUnit"/>
|
||||||
</Unit99>
|
</Unit97>
|
||||||
<Unit100>
|
<Unit98>
|
||||||
<Filename Value="forms\simulations\gensequnit.pas"/>
|
<Filename Value="forms\simulations\gensequnit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="GenSeqFrm"/>
|
<ComponentName Value="GenSeqFrm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="GenSeqUnit"/>
|
<UnitName Value="GenSeqUnit"/>
|
||||||
</Unit100>
|
</Unit98>
|
||||||
<Unit101>
|
<Unit99>
|
||||||
<Filename Value="forms\simulations\genrndvalsunit.pas"/>
|
<Filename Value="forms\simulations\genrndvalsunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="GenRndValsFrm"/>
|
<ComponentName Value="GenRndValsFrm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="GenRndValsUnit"/>
|
<UnitName Value="GenRndValsUnit"/>
|
||||||
</Unit101>
|
</Unit99>
|
||||||
<Unit102>
|
<Unit100>
|
||||||
<Filename Value="forms\analysis\financial\loanitunit.pas"/>
|
<Filename Value="forms\analysis\financial\loanitunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="LoanItFrm"/>
|
<ComponentName Value="LoanItFrm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="LoanItUnit"/>
|
<UnitName Value="LoanItUnit"/>
|
||||||
</Unit102>
|
</Unit100>
|
||||||
<Unit103>
|
<Unit101>
|
||||||
<Filename Value="forms\analysis\financial\sumyrsdepunit.pas"/>
|
<Filename Value="forms\analysis\financial\sumyrsdepunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="SumYrsDepFrm"/>
|
<ComponentName Value="SumYrsDepFrm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="SumYrsDepUnit"/>
|
<UnitName Value="SumYrsDepUnit"/>
|
||||||
</Unit103>
|
</Unit101>
|
||||||
<Unit104>
|
<Unit102>
|
||||||
<Filename Value="forms\analysis\financial\sldunit.pas"/>
|
<Filename Value="forms\analysis\financial\sldunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="SLDepFrm"/>
|
<ComponentName Value="SLDepFrm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="SLDUnit"/>
|
<UnitName Value="SLDUnit"/>
|
||||||
</Unit104>
|
</Unit102>
|
||||||
<Unit105>
|
<Unit103>
|
||||||
<Filename Value="forms\analysis\financial\dbldeclineunit.pas"/>
|
<Filename Value="forms\analysis\financial\dbldeclineunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="DblDeclineFrm"/>
|
<ComponentName Value="DblDeclineFrm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="DblDeclineUnit"/>
|
<UnitName Value="DblDeclineUnit"/>
|
||||||
</Unit105>
|
</Unit103>
|
||||||
<Unit106>
|
<Unit104>
|
||||||
<Filename Value="forms\analysis\nonparametric\riditunit.pas"/>
|
<Filename Value="forms\analysis\nonparametric\riditunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="RIDITFrm"/>
|
<ComponentName Value="RIDITFrm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="RIDITUnit"/>
|
<UnitName Value="RIDITUnit"/>
|
||||||
</Unit106>
|
</Unit104>
|
||||||
<Unit107>
|
<Unit105>
|
||||||
<Filename Value="forms\analysis\multiple_regression\twoslsunit.pas"/>
|
<Filename Value="forms\analysis\multiple_regression\twoslsunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="TwoSLSFrm"/>
|
<ComponentName Value="TwoSLSFrm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="TwoSLSUnit"/>
|
<UnitName Value="TwoSLSUnit"/>
|
||||||
</Unit107>
|
</Unit105>
|
||||||
<Unit108>
|
<Unit106>
|
||||||
<Filename Value="forms\analysis\multiple_regression\wlsunit.pas"/>
|
<Filename Value="forms\analysis\multiple_regression\wlsunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="WLSFrm"/>
|
<ComponentName Value="WLSFrm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="WLSUnit"/>
|
<UnitName Value="WLSUnit"/>
|
||||||
</Unit108>
|
</Unit106>
|
||||||
<Unit109>
|
<Unit107>
|
||||||
<Filename Value="forms\analysis\multivariate\avglinkunit.pas"/>
|
<Filename Value="forms\analysis\multivariate\avglinkunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="AvgLinkFrm"/>
|
<ComponentName Value="AvgLinkFrm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="AvgLinkUnit"/>
|
<UnitName Value="AvgLinkUnit"/>
|
||||||
</Unit109>
|
</Unit107>
|
||||||
<Unit110>
|
<Unit108>
|
||||||
<Filename Value="forms\tools\sortcasesunit.pas"/>
|
<Filename Value="forms\tools\sortcasesunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="SortCasesFrm"/>
|
<ComponentName Value="SortCasesFrm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="SortCasesUnit"/>
|
<UnitName Value="SortCasesUnit"/>
|
||||||
</Unit110>
|
</Unit108>
|
||||||
<Unit111>
|
<Unit109>
|
||||||
<Filename Value="forms\tools\selectcasesunit.pas"/>
|
<Filename Value="forms\tools\selectcasesunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="SelectFrm"/>
|
<ComponentName Value="SelectFrm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="SelectCasesUnit"/>
|
<UnitName Value="SelectCasesUnit"/>
|
||||||
</Unit111>
|
</Unit109>
|
||||||
<Unit112>
|
<Unit110>
|
||||||
<Filename Value="forms\tools\selectifunit.pas"/>
|
<Filename Value="forms\tools\selectifunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="SelectIfFrm"/>
|
<ComponentName Value="SelectIfFrm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="SelectIfUnit"/>
|
<UnitName Value="SelectIfUnit"/>
|
||||||
</Unit112>
|
</Unit110>
|
||||||
<Unit113>
|
<Unit111>
|
||||||
<Filename Value="forms\tools\randomsampunit.pas"/>
|
<Filename Value="forms\tools\randomsampunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="RandomSampFrm"/>
|
<ComponentName Value="RandomSampFrm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="RandomSampUnit"/>
|
<UnitName Value="RandomSampUnit"/>
|
||||||
</Unit113>
|
</Unit111>
|
||||||
<Unit114>
|
<Unit112>
|
||||||
<Filename Value="forms\tools\rangeselectunit.pas"/>
|
<Filename Value="forms\tools\rangeselectunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="RangeSelectFrm"/>
|
<ComponentName Value="RangeSelectFrm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="RangeSelectUnit"/>
|
<UnitName Value="RangeSelectUnit"/>
|
||||||
</Unit114>
|
</Unit112>
|
||||||
<Unit115>
|
<Unit113>
|
||||||
<Filename Value="forms\help\gridhelpunit.pas"/>
|
<Filename Value="forms\help\gridhelpunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="GridHelpFrm"/>
|
<ComponentName Value="GridHelpFrm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="GridHelpUnit"/>
|
<UnitName Value="GridHelpUnit"/>
|
||||||
</Unit115>
|
</Unit113>
|
||||||
<Unit116>
|
<Unit114>
|
||||||
<Filename Value="forms\variables\recodeunit.pas"/>
|
<Filename Value="forms\variables\recodeunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="RecodeFrm"/>
|
<ComponentName Value="RecodeFrm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="RecodeUnit"/>
|
<UnitName Value="RecodeUnit"/>
|
||||||
</Unit116>
|
</Unit114>
|
||||||
<Unit117>
|
<Unit115>
|
||||||
<Filename Value="forms\analysis\nonparametric\kappaunit.pas"/>
|
<Filename Value="forms\analysis\nonparametric\kappaunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="WeightedKappaFrm"/>
|
<ComponentName Value="WeightedKappaFrm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="KappaUnit"/>
|
<UnitName Value="KappaUnit"/>
|
||||||
</Unit117>
|
</Unit115>
|
||||||
<Unit118>
|
<Unit116>
|
||||||
<Filename Value="forms\analysis\multivariate\kmeansunit.pas"/>
|
<Filename Value="forms\analysis\multivariate\kmeansunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="KMeansFrm"/>
|
<ComponentName Value="KMeansFrm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="KMeansUnit"/>
|
<UnitName Value="KMeansUnit"/>
|
||||||
</Unit118>
|
</Unit116>
|
||||||
<Unit119>
|
<Unit117>
|
||||||
<Filename Value="forms\analysis\multivariate\singlelinkunit.pas"/>
|
<Filename Value="forms\analysis\multivariate\singlelinkunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="SingleLinkFrm"/>
|
<ComponentName Value="SingleLinkFrm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="SingleLinkUnit"/>
|
<UnitName Value="SingleLinkUnit"/>
|
||||||
</Unit119>
|
</Unit117>
|
||||||
<Unit120>
|
<Unit118>
|
||||||
<Filename Value="forms\analysis\nonparametric\genkappaunit.pas"/>
|
<Filename Value="forms\analysis\nonparametric\genkappaunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="GenKappaFrm"/>
|
<ComponentName Value="GenKappaFrm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="GenKappaUnit"/>
|
<UnitName Value="GenKappaUnit"/>
|
||||||
</Unit120>
|
</Unit118>
|
||||||
<Unit121>
|
<Unit119>
|
||||||
<Filename Value="forms\analysis\matrix_manipulation\matmanunit.pas"/>
|
<Filename Value="forms\analysis\matrix_manipulation\matmanunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="MatManFrm"/>
|
<ComponentName Value="MatManFrm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="MatManUnit"/>
|
<UnitName Value="MatManUnit"/>
|
||||||
</Unit121>
|
</Unit119>
|
||||||
<Unit122>
|
<Unit120>
|
||||||
<Filename Value="forms\analysis\matrix_manipulation\scripteditorunit.pas"/>
|
<Filename Value="forms\analysis\matrix_manipulation\scripteditorunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="ScriptEditorFrm"/>
|
<ComponentName Value="ScriptEditorFrm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="ScriptEditorUnit"/>
|
<UnitName Value="ScriptEditorUnit"/>
|
||||||
</Unit122>
|
</Unit120>
|
||||||
<Unit123>
|
<Unit121>
|
||||||
<Filename Value="forms\analysis\matrix_manipulation\rootmethodunit.pas"/>
|
<Filename Value="forms\analysis\matrix_manipulation\rootmethodunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="RootMethodFrm"/>
|
<ComponentName Value="RootMethodFrm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="RootMethodUnit"/>
|
<UnitName Value="RootMethodUnit"/>
|
||||||
</Unit123>
|
</Unit121>
|
||||||
<Unit124>
|
<Unit122>
|
||||||
<Filename Value="forms\analysis\matrix_manipulation\scriptoptsunit.pas"/>
|
<Filename Value="forms\analysis\matrix_manipulation\scriptoptsunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="ScriptOptsFrm"/>
|
<ComponentName Value="ScriptOptsFrm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="ScriptOptsUnit"/>
|
<UnitName Value="ScriptOptsUnit"/>
|
||||||
</Unit124>
|
</Unit122>
|
||||||
<Unit125>
|
<Unit123>
|
||||||
<Filename Value="forms\analysis\matrix_manipulation\colinsertunit.pas"/>
|
<Filename Value="forms\analysis\matrix_manipulation\colinsertunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="ColInsertFrm"/>
|
<ComponentName Value="ColInsertFrm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="ColInsertUnit"/>
|
<UnitName Value="ColInsertUnit"/>
|
||||||
</Unit125>
|
</Unit123>
|
||||||
<Unit126>
|
<Unit124>
|
||||||
<Filename Value="forms\analysis\matrix_manipulation\rowinsertunit.pas"/>
|
<Filename Value="forms\analysis\matrix_manipulation\rowinsertunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="RowInsertFrm"/>
|
<ComponentName Value="RowInsertFrm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="RowInsertUnit"/>
|
<UnitName Value="RowInsertUnit"/>
|
||||||
</Unit126>
|
</Unit124>
|
||||||
<Unit127>
|
<Unit125>
|
||||||
<Filename Value="forms\analysis\measurement_programs\gradebookunit.pas"/>
|
<Filename Value="forms\analysis\measurement_programs\gradebookunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="GradebookFrm"/>
|
<ComponentName Value="GradebookFrm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="GradeBookUnit"/>
|
<UnitName Value="GradeBookUnit"/>
|
||||||
</Unit127>
|
</Unit125>
|
||||||
<Unit128>
|
<Unit126>
|
||||||
<Filename Value="forms\analysis\measurement_programs\gradingunit.pas"/>
|
<Filename Value="forms\analysis\measurement_programs\gradingunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="GradingFrm"/>
|
<ComponentName Value="GradingFrm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="GradingUnit"/>
|
<UnitName Value="GradingUnit"/>
|
||||||
</Unit128>
|
</Unit126>
|
||||||
<Unit129>
|
<Unit127>
|
||||||
<Filename Value="forms\simulations\probzunit.pas"/>
|
<Filename Value="forms\simulations\probzunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="ProbzForm"/>
|
<ComponentName Value="ProbzForm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="ProbZUnit"/>
|
<UnitName Value="ProbZUnit"/>
|
||||||
</Unit129>
|
</Unit127>
|
||||||
<Unit130>
|
<Unit128>
|
||||||
<Filename Value="forms\simulations\probsmallerzunit.pas"/>
|
<Filename Value="forms\simulations\probsmallerzunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="ProbSmallerzForm"/>
|
<ComponentName Value="ProbSmallerzForm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="ProbSmallerZUnit"/>
|
<UnitName Value="ProbSmallerZUnit"/>
|
||||||
</Unit130>
|
</Unit128>
|
||||||
<Unit131>
|
<Unit129>
|
||||||
<Filename Value="forms\simulations\twozprobunit.pas"/>
|
<Filename Value="forms\simulations\twozprobunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="TwozProbForm"/>
|
<ComponentName Value="TwozProbForm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="TwoZProbUnit"/>
|
<UnitName Value="TwoZProbUnit"/>
|
||||||
</Unit131>
|
</Unit129>
|
||||||
<Unit132>
|
<Unit130>
|
||||||
<Filename Value="forms\simulations\inversezunit.pas"/>
|
<Filename Value="forms\simulations\inversezunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="InversezForm"/>
|
<ComponentName Value="InversezForm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="InverseZUnit"/>
|
<UnitName Value="InverseZUnit"/>
|
||||||
</Unit132>
|
</Unit130>
|
||||||
<Unit133>
|
<Unit131>
|
||||||
<Filename Value="forms\simulations\probchisqrunit.pas"/>
|
<Filename Value="forms\simulations\probchisqrunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="ChiSqrProbForm"/>
|
<ComponentName Value="ChiSqrProbForm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="ProbChiSqrUnit"/>
|
<UnitName Value="ProbChiSqrUnit"/>
|
||||||
</Unit133>
|
</Unit131>
|
||||||
<Unit134>
|
<Unit132>
|
||||||
<Filename Value="forms\simulations\tprobunit.pas"/>
|
<Filename Value="forms\simulations\tprobunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="TprobForm"/>
|
<ComponentName Value="TprobForm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="tProbUnit"/>
|
<UnitName Value="tProbUnit"/>
|
||||||
</Unit134>
|
</Unit132>
|
||||||
<Unit135>
|
<Unit133>
|
||||||
<Filename Value="forms\simulations\fprobunit.pas"/>
|
<Filename Value="forms\simulations\fprobunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="FForm"/>
|
<ComponentName Value="FForm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="FProbUnit"/>
|
<UnitName Value="FProbUnit"/>
|
||||||
</Unit135>
|
</Unit133>
|
||||||
<Unit136>
|
<Unit134>
|
||||||
<Filename Value="forms\simulations\hypergeounit.pas"/>
|
<Filename Value="forms\simulations\hypergeounit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="HyperGeoForm"/>
|
<ComponentName Value="HyperGeoForm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="HyperGeoUnit"/>
|
<UnitName Value="HyperGeoUnit"/>
|
||||||
</Unit136>
|
</Unit134>
|
||||||
<Unit137>
|
<Unit135>
|
||||||
<Filename Value="forms\analysis\comparisons\bnestaunit.pas"/>
|
<Filename Value="forms\analysis\comparisons\bnestaunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="BNestedAForm"/>
|
<ComponentName Value="BNestedAForm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="BNestAUnit"/>
|
<UnitName Value="BNestAUnit"/>
|
||||||
</Unit137>
|
</Unit135>
|
||||||
<Unit138>
|
<Unit136>
|
||||||
<Filename Value="forms\analysis\comparisons\abcnestedunit.pas"/>
|
<Filename Value="forms\analysis\comparisons\abcnestedunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="ABCNestedForm"/>
|
<ComponentName Value="ABCNestedForm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="ABCNestedUnit"/>
|
<UnitName Value="ABCNestedUnit"/>
|
||||||
</Unit138>
|
</Unit136>
|
||||||
<Unit139>
|
<Unit137>
|
||||||
<Filename Value="forms\analysis\multivariate\bartletttestunit.pas"/>
|
<Filename Value="forms\analysis\multivariate\bartletttestunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="BartlettTestForm"/>
|
<ComponentName Value="BartlettTestForm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="BartlettTestUnit"/>
|
<UnitName Value="BartlettTestUnit"/>
|
||||||
</Unit139>
|
</Unit137>
|
||||||
<Unit140>
|
<Unit138>
|
||||||
<Filename Value="forms\tools\datasmoothunit.pas"/>
|
<Filename Value="forms\tools\datasmoothunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="SmoothDataForm"/>
|
<ComponentName Value="SmoothDataForm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="DataSmoothUnit"/>
|
<UnitName Value="DataSmoothUnit"/>
|
||||||
</Unit140>
|
</Unit138>
|
||||||
<Unit141>
|
<Unit139>
|
||||||
<Filename Value="forms\analysis\descriptive\groupfrequnit.pas"/>
|
<Filename Value="forms\analysis\descriptive\groupfrequnit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="GroupFreqForm"/>
|
<ComponentName Value="GroupFreqForm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="GroupFreqUnit"/>
|
<UnitName Value="GroupFreqUnit"/>
|
||||||
</Unit141>
|
</Unit139>
|
||||||
<Unit142>
|
<Unit140>
|
||||||
<Filename Value="forms\analysis\nonparametric\runstestunit.pas"/>
|
<Filename Value="forms\analysis\nonparametric\runstestunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="runstestform"/>
|
<ComponentName Value="runstestform"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="RunsTestUnit"/>
|
<UnitName Value="RunsTestUnit"/>
|
||||||
</Unit142>
|
</Unit140>
|
||||||
<Unit143>
|
<Unit141>
|
||||||
<Filename Value="forms\analysis\descriptive\xvsmultyunit.pas"/>
|
<Filename Value="forms\analysis\descriptive\xvsmultyunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="XvsMultYForm"/>
|
<ComponentName Value="XvsMultYForm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="XvsMultYUnit"/>
|
<UnitName Value="XvsMultYUnit"/>
|
||||||
</Unit143>
|
</Unit141>
|
||||||
<Unit144>
|
<Unit142>
|
||||||
<Filename Value="forms\analysis\nonparametric\sensunit.pas"/>
|
<Filename Value="forms\analysis\nonparametric\sensunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="SensForm"/>
|
<ComponentName Value="SensForm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="SensUnit"/>
|
<UnitName Value="SensUnit"/>
|
||||||
</Unit144>
|
</Unit142>
|
||||||
<Unit145>
|
<Unit143>
|
||||||
<Filename Value="forms\analysis\multivariate\correspondenceunit.pas"/>
|
<Filename Value="forms\analysis\multivariate\correspondenceunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="CorrespondenceForm"/>
|
<ComponentName Value="CorrespondenceForm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="CorrespondenceUnit"/>
|
<UnitName Value="CorrespondenceUnit"/>
|
||||||
</Unit145>
|
</Unit143>
|
||||||
<Unit146>
|
<Unit144>
|
||||||
<Filename Value="forms\analysis\descriptive\comparedistunit.pas"/>
|
<Filename Value="forms\analysis\descriptive\comparedistunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="CompareDistFrm"/>
|
<ComponentName Value="CompareDistFrm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="CompareDistUnit"/>
|
<UnitName Value="CompareDistUnit"/>
|
||||||
</Unit146>
|
</Unit144>
|
||||||
<Unit147>
|
<Unit145>
|
||||||
<Filename Value="forms\variables\equationunit.pas"/>
|
<Filename Value="forms\variables\equationunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="EquationForm"/>
|
<ComponentName Value="EquationForm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="EquationUnit"/>
|
<UnitName Value="EquationUnit"/>
|
||||||
</Unit147>
|
</Unit145>
|
||||||
<Unit148>
|
<Unit146>
|
||||||
<Filename Value="forms\misc\contexthelpunit.pas"/>
|
<Filename Value="forms\misc\contexthelpunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="ContextHelpForm"/>
|
<ComponentName Value="ContextHelpForm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="ContextHelpUnit"/>
|
<UnitName Value="ContextHelpUnit"/>
|
||||||
</Unit148>
|
</Unit146>
|
||||||
<Unit149>
|
<Unit147>
|
||||||
<Filename Value="forms\tools\calculatorunit.pas"/>
|
<Filename Value="forms\tools\calculatorunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="CalculatorForm"/>
|
<ComponentName Value="CalculatorForm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="CalculatorUnit"/>
|
<UnitName Value="CalculatorUnit"/>
|
||||||
</Unit149>
|
</Unit147>
|
||||||
<Unit150>
|
<Unit148>
|
||||||
<Filename Value="forms\tools\jpegunit.pas"/>
|
<Filename Value="forms\tools\jpegunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="JPEGform"/>
|
<ComponentName Value="JPEGform"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="JpegUnit"/>
|
<UnitName Value="JpegUnit"/>
|
||||||
</Unit150>
|
</Unit148>
|
||||||
<Unit151>
|
<Unit149>
|
||||||
<Filename Value="forms\analysis\descriptive\resistancelineunit.pas"/>
|
<Filename Value="forms\analysis\descriptive\resistancelineunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="ResistanceLineForm"/>
|
<ComponentName Value="ResistanceLineForm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="ResistanceLineUnit"/>
|
<UnitName Value="ResistanceLineUnit"/>
|
||||||
</Unit151>
|
</Unit149>
|
||||||
<Unit152>
|
<Unit150>
|
||||||
<Filename Value="forms\analysis\multivariate\medianpolishunit.pas"/>
|
<Filename Value="forms\analysis\multivariate\medianpolishunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="MedianPolishForm"/>
|
<ComponentName Value="MedianPolishForm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="MedianPolishUnit"/>
|
<UnitName Value="MedianPolishUnit"/>
|
||||||
</Unit152>
|
</Unit150>
|
||||||
<Unit153>
|
<Unit151>
|
||||||
<Filename Value="forms\analysis\comparisons\onecaseanovaunit.pas"/>
|
<Filename Value="forms\analysis\comparisons\onecaseanovaunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="OneCaseAnovaForm"/>
|
<ComponentName Value="OneCaseAnovaForm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="OneCaseANOVAUnit"/>
|
<UnitName Value="OneCaseANOVAUnit"/>
|
||||||
</Unit153>
|
</Unit151>
|
||||||
<Unit154>
|
<Unit152>
|
||||||
<Filename Value="forms\analysis\descriptive\smoothdataunit.pas"/>
|
<Filename Value="forms\analysis\descriptive\smoothdataunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="DataSmoothingForm"/>
|
<ComponentName Value="DataSmoothingForm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="SmoothDataUnit"/>
|
<UnitName Value="SmoothDataUnit"/>
|
||||||
</Unit154>
|
</Unit152>
|
||||||
<Unit155>
|
<Unit153>
|
||||||
<Filename Value="forms\analysis\nonparametric\srhtestunit.pas"/>
|
<Filename Value="forms\analysis\nonparametric\srhtestunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="SRHTest"/>
|
<ComponentName Value="SRHTest"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="SRHTestUnit"/>
|
<UnitName Value="SRHTestUnit"/>
|
||||||
</Unit155>
|
</Unit153>
|
||||||
<Unit156>
|
<Unit154>
|
||||||
<Filename Value="forms\help\aboutunit.pas"/>
|
<Filename Value="forms\help\aboutunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="AboutBox"/>
|
<ComponentName Value="AboutBox"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="AboutUnit"/>
|
<UnitName Value="AboutUnit"/>
|
||||||
</Unit156>
|
</Unit154>
|
||||||
<Unit157>
|
<Unit155>
|
||||||
<Filename Value="forms\analysis\measurement_programs\item_banking\itembankingunit.pas"/>
|
<Filename Value="forms\analysis\measurement_programs\item_banking\itembankingunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="ItemBankFrm"/>
|
<ComponentName Value="ItemBankFrm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="ItemBankingUnit"/>
|
<UnitName Value="ItemBankingUnit"/>
|
||||||
</Unit157>
|
</Unit155>
|
||||||
<Unit158>
|
<Unit156>
|
||||||
<Filename Value="forms\analysis\measurement_programs\item_banking\itemcodesunit.pas"/>
|
<Filename Value="forms\analysis\measurement_programs\item_banking\itemcodesunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="CodesForm"/>
|
<ComponentName Value="CodesForm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="ItemCodesUnit"/>
|
<UnitName Value="ItemCodesUnit"/>
|
||||||
</Unit158>
|
</Unit156>
|
||||||
<Unit159>
|
<Unit157>
|
||||||
<Filename Value="forms\analysis\measurement_programs\item_banking\tfitemunit.pas"/>
|
<Filename Value="forms\analysis\measurement_programs\item_banking\tfitemunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="TFItemForm"/>
|
<ComponentName Value="TFItemForm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="TFItemUnit"/>
|
<UnitName Value="TFItemUnit"/>
|
||||||
</Unit159>
|
</Unit157>
|
||||||
<Unit160>
|
<Unit158>
|
||||||
<Filename Value="forms\analysis\measurement_programs\item_banking\essayitemunit.pas"/>
|
<Filename Value="forms\analysis\measurement_programs\item_banking\essayitemunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="EssayItemForm"/>
|
<ComponentName Value="EssayItemForm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="EssayItemUnit"/>
|
<UnitName Value="EssayItemUnit"/>
|
||||||
</Unit160>
|
</Unit158>
|
||||||
<Unit161>
|
<Unit159>
|
||||||
<Filename Value="forms\analysis\measurement_programs\item_banking\mcitemunit.pas"/>
|
<Filename Value="forms\analysis\measurement_programs\item_banking\mcitemunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="MCItemForm"/>
|
<ComponentName Value="MCItemForm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="MCItemUnit"/>
|
<UnitName Value="MCItemUnit"/>
|
||||||
</Unit161>
|
</Unit159>
|
||||||
<Unit162>
|
<Unit160>
|
||||||
<Filename Value="forms\analysis\measurement_programs\item_banking\matchitemunit.pas"/>
|
<Filename Value="forms\analysis\measurement_programs\item_banking\matchitemunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="MatchItemForm"/>
|
<ComponentName Value="MatchItemForm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="MatchItemUnit"/>
|
<UnitName Value="MatchItemUnit"/>
|
||||||
</Unit162>
|
</Unit160>
|
||||||
<Unit163>
|
<Unit161>
|
||||||
<Filename Value="forms\analysis\measurement_programs\item_banking\testspecsunit.pas"/>
|
<Filename Value="forms\analysis\measurement_programs\item_banking\testspecsunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="TestSpecsForm"/>
|
<ComponentName Value="TestSpecsForm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="TestSpecsUnit"/>
|
<UnitName Value="TestSpecsUnit"/>
|
||||||
</Unit163>
|
</Unit161>
|
||||||
<Unit164>
|
<Unit162>
|
||||||
<Filename Value="forms\analysis\nonparametric\simplechisqrunit.pas"/>
|
<Filename Value="forms\analysis\nonparametric\simplechisqrunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="SimpleChiSqrForm"/>
|
<ComponentName Value="SimpleChiSqrForm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="SimpleChiSqrUnit"/>
|
<UnitName Value="SimpleChiSqrUnit"/>
|
||||||
</Unit164>
|
</Unit162>
|
||||||
<Unit165>
|
<Unit163>
|
||||||
<Filename Value="forms\analysis\nonparametric\lifetableunit.pas"/>
|
<Filename Value="forms\analysis\nonparametric\lifetableunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="LifeTableForm"/>
|
<ComponentName Value="LifeTableForm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="LifeTableUnit"/>
|
<UnitName Value="LifeTableUnit"/>
|
||||||
</Unit165>
|
</Unit163>
|
||||||
<Unit166>
|
<Unit164>
|
||||||
<Filename Value="forms\analysis\multiple_regression\lsmrunit.pas"/>
|
<Filename Value="forms\analysis\multiple_regression\lsmrunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="LSMregForm"/>
|
<ComponentName Value="LSMregForm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="LSMRUnit"/>
|
<UnitName Value="LSMRUnit"/>
|
||||||
</Unit166>
|
</Unit164>
|
||||||
<Unit167>
|
<Unit165>
|
||||||
<Filename Value="forms\maindm.pas"/>
|
<Filename Value="forms\maindm.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="MainDataModule"/>
|
<ComponentName Value="MainDataModule"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="DataModule"/>
|
<ResourceBaseClass Value="DataModule"/>
|
||||||
<UnitName Value="MainDM"/>
|
<UnitName Value="MainDM"/>
|
||||||
</Unit167>
|
</Unit165>
|
||||||
<Unit168>
|
<Unit166>
|
||||||
<Filename Value="units\utils.pas"/>
|
<Filename Value="units\utils.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<UnitName Value="Utils"/>
|
<UnitName Value="Utils"/>
|
||||||
</Unit168>
|
</Unit166>
|
||||||
<Unit169>
|
<Unit167>
|
||||||
<Filename Value="LazStats.inc"/>
|
<Filename Value="LazStats.inc"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
</Unit169>
|
</Unit167>
|
||||||
<Unit170>
|
<Unit168>
|
||||||
<Filename Value="forms\misc\chartunit.pas"/>
|
<Filename Value="forms\misc\chartunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="ChartForm"/>
|
<ComponentName Value="ChartForm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="ChartUnit"/>
|
<UnitName Value="ChartUnit"/>
|
||||||
</Unit170>
|
</Unit168>
|
||||||
<Unit171>
|
<Unit169>
|
||||||
<Filename Value="units\mathunit.pas"/>
|
<Filename Value="units\mathunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<UnitName Value="MathUnit"/>
|
<UnitName Value="MathUnit"/>
|
||||||
</Unit171>
|
</Unit169>
|
||||||
<Unit172>
|
<Unit170>
|
||||||
<Filename Value="frames\chartframeunit.pas"/>
|
<Filename Value="frames\chartframeunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="ChartFrame"/>
|
<ComponentName Value="ChartFrame"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Frame"/>
|
<ResourceBaseClass Value="Frame"/>
|
||||||
<UnitName Value="ChartFrameUnit"/>
|
<UnitName Value="ChartFrameUnit"/>
|
||||||
</Unit172>
|
</Unit170>
|
||||||
<Unit173>
|
<Unit171>
|
||||||
<Filename Value="forms\analysis\statistical_process_control\basicspcunit.pas"/>
|
<Filename Value="forms\analysis\statistical_process_control\basicspcunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="BasicSPCForm"/>
|
<ComponentName Value="BasicSPCForm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="BasicSPCUnit"/>
|
<UnitName Value="BasicSPCUnit"/>
|
||||||
</Unit173>
|
</Unit171>
|
||||||
<Unit174>
|
<Unit172>
|
||||||
<Filename Value="forms\analysis\statistical_process_control\schartunit.pas"/>
|
<Filename Value="forms\analysis\statistical_process_control\schartunit.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<ComponentName Value="SChartForm"/>
|
<ComponentName Value="SChartForm"/>
|
||||||
<HasResources Value="True"/>
|
<HasResources Value="True"/>
|
||||||
<ResourceBaseClass Value="Form"/>
|
<ResourceBaseClass Value="Form"/>
|
||||||
<UnitName Value="SChartUnit"/>
|
<UnitName Value="SChartUnit"/>
|
||||||
|
</Unit172>
|
||||||
|
<Unit173>
|
||||||
|
<Filename Value="forms\analysis\statistical_process_control\rchartunit.pas"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
<ComponentName Value="RChartForm"/>
|
||||||
|
<HasResources Value="True"/>
|
||||||
|
<ResourceBaseClass Value="Form"/>
|
||||||
|
<UnitName Value="RChartUnit"/>
|
||||||
|
</Unit173>
|
||||||
|
<Unit174>
|
||||||
|
<Filename Value="forms\analysis\statistical_process_control\xbarchartunit.pas"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
<ComponentName Value="XBarChartForm"/>
|
||||||
|
<HasResources Value="True"/>
|
||||||
|
<ResourceBaseClass Value="Form"/>
|
||||||
|
<UnitName Value="XBarChartUnit"/>
|
||||||
</Unit174>
|
</Unit174>
|
||||||
</Units>
|
</Units>
|
||||||
</ProjectOptions>
|
</ProjectOptions>
|
||||||
|
@@ -9,7 +9,7 @@ uses
|
|||||||
Interfaces, // this includes the LCL widgetset
|
Interfaces, // this includes the LCL widgetset
|
||||||
Forms, tachartlazaruspkg, tachartprint, lhelpcontrolpkg, Globals, LicenseUnit,
|
Forms, tachartlazaruspkg, tachartprint, lhelpcontrolpkg, Globals, LicenseUnit,
|
||||||
OptionsUnit, MainDM, MainUnit, MathUnit, BasicSPCUnit,
|
OptionsUnit, MainDM, MainUnit, MathUnit, BasicSPCUnit,
|
||||||
SChartUnit; //, utils, chartunit;
|
SChartUnit, rchartunit, XBarChartUnit; //, utils, chartunit;
|
||||||
|
|
||||||
{$R LazStats.res}
|
{$R LazStats.res}
|
||||||
|
|
||||||
@@ -29,6 +29,8 @@ begin
|
|||||||
end;
|
end;
|
||||||
Application.CreateForm(TMainDataModule, MainDataModule);
|
Application.CreateForm(TMainDataModule, MainDataModule);
|
||||||
Application.CreateForm(TOS3MainFrm, OS3MainFrm);
|
Application.CreateForm(TOS3MainFrm, OS3MainFrm);
|
||||||
|
Application.CreateForm(TRChartForm, RChartForm);
|
||||||
|
Application.CreateForm(TXBarChartForm, XBarChartForm);
|
||||||
Application.Run;
|
Application.Run;
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
@@ -211,44 +211,47 @@ object BasicSPCForm: TBasicSPCForm
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
object SpecsSplitter: TSplitter
|
object SpecsSplitter: TSplitter
|
||||||
Left = 357
|
Left = 361
|
||||||
Height = 438
|
Height = 438
|
||||||
Top = 0
|
Top = 0
|
||||||
Width = 5
|
Width = 5
|
||||||
ResizeStyle = rsPattern
|
ResizeStyle = rsPattern
|
||||||
end
|
end
|
||||||
object PageControl1: TPageControl
|
object PageControl1: TPageControl
|
||||||
Left = 368
|
Left = 370
|
||||||
Height = 426
|
Height = 426
|
||||||
Top = 6
|
Top = 6
|
||||||
Width = 553
|
Width = 551
|
||||||
ActivePage = ReportPage
|
ActivePage = ReportPage
|
||||||
Align = alClient
|
Align = alClient
|
||||||
BorderSpacing.Around = 6
|
BorderSpacing.Top = 6
|
||||||
|
BorderSpacing.Right = 6
|
||||||
|
BorderSpacing.Bottom = 6
|
||||||
TabIndex = 0
|
TabIndex = 0
|
||||||
TabOrder = 2
|
TabOrder = 2
|
||||||
object ReportPage: TTabSheet
|
object ReportPage: TTabSheet
|
||||||
Caption = 'Report'
|
Caption = 'Report'
|
||||||
ClientHeight = 398
|
ClientHeight = 398
|
||||||
ClientWidth = 545
|
ClientWidth = 543
|
||||||
object Panel1: TPanel
|
object Panel1: TPanel
|
||||||
Left = 6
|
Left = 6
|
||||||
Height = 386
|
Height = 386
|
||||||
Top = 6
|
Top = 6
|
||||||
Width = 533
|
Width = 531
|
||||||
Align = alClient
|
Align = alClient
|
||||||
BorderSpacing.Around = 6
|
BorderSpacing.Around = 6
|
||||||
BevelOuter = bvNone
|
BevelOuter = bvNone
|
||||||
BorderStyle = bsSingle
|
BorderStyle = bsSingle
|
||||||
ClientHeight = 382
|
ClientHeight = 382
|
||||||
ClientWidth = 529
|
ClientWidth = 527
|
||||||
TabOrder = 0
|
TabOrder = 0
|
||||||
object ReportMemo: TMemo
|
object ReportMemo: TMemo
|
||||||
Left = 0
|
Left = 4
|
||||||
Height = 382
|
Height = 374
|
||||||
Top = 0
|
Top = 4
|
||||||
Width = 529
|
Width = 519
|
||||||
Align = alClient
|
Align = alClient
|
||||||
|
BorderSpacing.Around = 4
|
||||||
BorderStyle = bsNone
|
BorderStyle = bsNone
|
||||||
Font.Height = -11
|
Font.Height = -11
|
||||||
Font.Name = 'Courier New'
|
Font.Name = 'Courier New'
|
||||||
|
@@ -55,7 +55,7 @@ type
|
|||||||
function GetGroups: StrDyneVec;
|
function GetGroups: StrDyneVec;
|
||||||
function GetFileName: String;
|
function GetFileName: String;
|
||||||
procedure PlotMeans(ATitle, AXTitle, AYTitle, ADataTitle, AGrandMeanTitle: String;
|
procedure PlotMeans(ATitle, AXTitle, AYTitle, ADataTitle, AGrandMeanTitle: String;
|
||||||
const Groups: StrDyneVec; const Means, StdDevs: DblDyneVec;
|
const Groups: StrDyneVec; const Means: DblDyneVec;
|
||||||
UCL, LCL, GrandMean, TargetSpec, LowerSpec, UpperSpec: double);
|
UCL, LCL, GrandMean, TargetSpec, LowerSpec, UpperSpec: double);
|
||||||
procedure Reset; virtual;
|
procedure Reset; virtual;
|
||||||
procedure Compute; virtual;
|
procedure Compute; virtual;
|
||||||
@@ -214,7 +214,7 @@ end;
|
|||||||
|
|
||||||
|
|
||||||
procedure TBasicSPCForm.PlotMeans(ATitle, AXTitle, AYTitle, ADataTitle, AGrandMeanTitle: String;
|
procedure TBasicSPCForm.PlotMeans(ATitle, AXTitle, AYTitle, ADataTitle, AGrandMeanTitle: String;
|
||||||
const Groups: StrDyneVec; const Means, StdDevs: DblDyneVec;
|
const Groups: StrDyneVec; const Means: DblDyneVec;
|
||||||
UCL, LCL, GrandMean, TargetSpec, LowerSpec, UpperSpec: double);
|
UCL, LCL, GrandMean, TargetSpec, LowerSpec, UpperSpec: double);
|
||||||
const
|
const
|
||||||
TARGET_COLOR = clBlue;
|
TARGET_COLOR = clBlue;
|
||||||
@@ -237,7 +237,7 @@ begin
|
|||||||
FChartFrame.SetXTitle(AXTitle);
|
FChartFrame.SetXTitle(AXTitle);
|
||||||
FChartFrame.SetYTitle(AYTitle);
|
FChartFrame.SetYTitle(AYTitle);
|
||||||
|
|
||||||
ser := FChartFrame.PlotXY(ptSymbols, nil, Means, Groups, StdDevs, ADataTitle, clBlack);
|
ser := FChartFrame.PlotXY(ptSymbols, nil, Means, Groups, nil, ADataTitle, clBlack);
|
||||||
FChartFrame.Chart.BottomAxis.Marks.Source := ser.Source;
|
FChartFrame.Chart.BottomAxis.Marks.Source := ser.Source;
|
||||||
FChartFrame.Chart.BottomAxis.Marks.style := smsLabel;
|
FChartFrame.Chart.BottomAxis.Marks.style := smsLabel;
|
||||||
|
|
||||||
@@ -272,7 +272,7 @@ begin
|
|||||||
else
|
else
|
||||||
s := 'Upper/Lower Spec';
|
s := 'Upper/Lower Spec';
|
||||||
constLine := FChartFrame.HorLine(LowerSpec, SPEC_COLOR, SPEC_STYLE, s);
|
constLine := FChartFrame.HorLine(LowerSpec, SPEC_COLOR, SPEC_STYLE, s);
|
||||||
constLine.Legend.Visible := not IsNaN(UpperSpec); //UpSpecChk.Checked;
|
constLine.Legend.Visible := IsNaN(UpperSpec);
|
||||||
rightLabels.Add(LowerSpec, LowerSpec, 'Lower Spec');
|
rightLabels.Add(LowerSpec, LowerSpec, 'Lower Spec');
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
@@ -1,293 +1,9 @@
|
|||||||
object RChartFrm: TRChartFrm
|
inherited RChartForm: TRChartForm
|
||||||
Left = 688
|
|
||||||
Height = 476
|
|
||||||
Top = 126
|
|
||||||
Width = 875
|
|
||||||
HelpType = htKeyword
|
HelpType = htKeyword
|
||||||
HelpKeyword = 'html/RangeChart.htm'
|
HelpKeyword = 'html/RangeChart.htm'
|
||||||
Caption = 'Range Chart'
|
Caption = 'Range Chart'
|
||||||
ChildSizing.ControlsPerLine = 1
|
inherited SpecsPanel: TPanel
|
||||||
ClientHeight = 476
|
HelpType = htKeyword
|
||||||
ClientWidth = 875
|
HelpKeyword = 'html/RangeChart.htm'
|
||||||
OnActivate = FormActivate
|
|
||||||
OnCreate = FormCreate
|
|
||||||
OnShow = FormShow
|
|
||||||
Position = poMainFormCenter
|
|
||||||
LCLVersion = '2.1.0.0'
|
|
||||||
object SpecsPanel: TPanel
|
|
||||||
Left = 0
|
|
||||||
Height = 476
|
|
||||||
Top = 0
|
|
||||||
Width = 378
|
|
||||||
Align = alLeft
|
|
||||||
BevelOuter = bvNone
|
|
||||||
ClientHeight = 476
|
|
||||||
ClientWidth = 378
|
|
||||||
TabOrder = 0
|
|
||||||
object GroupLabel: TLabel
|
|
||||||
AnchorSideLeft.Control = GroupEdit
|
|
||||||
AnchorSideTop.Control = SpecsPanel
|
|
||||||
Left = 222
|
|
||||||
Height = 15
|
|
||||||
Top = 8
|
|
||||||
Width = 77
|
|
||||||
BorderSpacing.Top = 8
|
|
||||||
Caption = 'Group Variable'
|
|
||||||
ParentColor = False
|
|
||||||
end
|
|
||||||
object MeasLabel: TLabel
|
|
||||||
AnchorSideLeft.Control = MeasEdit
|
|
||||||
AnchorSideTop.Control = GroupEdit
|
|
||||||
AnchorSideTop.Side = asrBottom
|
|
||||||
Left = 222
|
|
||||||
Height = 15
|
|
||||||
Top = 64
|
|
||||||
Width = 117
|
|
||||||
BorderSpacing.Top = 16
|
|
||||||
Caption = 'Measurement Variable'
|
|
||||||
ParentColor = False
|
|
||||||
end
|
|
||||||
object GroupEdit: TEdit
|
|
||||||
AnchorSideLeft.Control = CenterBevel
|
|
||||||
AnchorSideLeft.Side = asrBottom
|
|
||||||
AnchorSideTop.Control = GroupLabel
|
|
||||||
AnchorSideTop.Side = asrBottom
|
|
||||||
AnchorSideRight.Control = SpecsPanel
|
|
||||||
AnchorSideRight.Side = asrBottom
|
|
||||||
Left = 222
|
|
||||||
Height = 23
|
|
||||||
Top = 25
|
|
||||||
Width = 156
|
|
||||||
Anchors = [akTop, akLeft, akRight]
|
|
||||||
BorderSpacing.Left = 8
|
|
||||||
BorderSpacing.Top = 2
|
|
||||||
TabOrder = 1
|
|
||||||
Text = 'GroupEdit'
|
|
||||||
end
|
|
||||||
object MeasEdit: TEdit
|
|
||||||
AnchorSideLeft.Control = CenterBevel
|
|
||||||
AnchorSideLeft.Side = asrBottom
|
|
||||||
AnchorSideTop.Control = MeasLabel
|
|
||||||
AnchorSideTop.Side = asrBottom
|
|
||||||
AnchorSideRight.Control = SpecsPanel
|
|
||||||
AnchorSideRight.Side = asrBottom
|
|
||||||
Left = 222
|
|
||||||
Height = 23
|
|
||||||
Top = 81
|
|
||||||
Width = 156
|
|
||||||
Anchors = [akTop, akLeft, akRight]
|
|
||||||
BorderSpacing.Left = 8
|
|
||||||
BorderSpacing.Top = 2
|
|
||||||
TabOrder = 2
|
|
||||||
Text = 'MeasEdit'
|
|
||||||
end
|
|
||||||
object VarListLabel: TLabel
|
|
||||||
AnchorSideLeft.Control = SpecsPanel
|
|
||||||
AnchorSideTop.Control = SpecsPanel
|
|
||||||
Left = 8
|
|
||||||
Height = 15
|
|
||||||
Top = 8
|
|
||||||
Width = 97
|
|
||||||
BorderSpacing.Left = 8
|
|
||||||
BorderSpacing.Top = 8
|
|
||||||
Caption = 'Selection Variables'
|
|
||||||
ParentColor = False
|
|
||||||
end
|
|
||||||
object VarList: TListBox
|
|
||||||
AnchorSideLeft.Control = SpecsPanel
|
|
||||||
AnchorSideTop.Control = VarListLabel
|
|
||||||
AnchorSideTop.Side = asrBottom
|
|
||||||
AnchorSideRight.Control = CenterBevel
|
|
||||||
AnchorSideRight.Side = asrBottom
|
|
||||||
AnchorSideBottom.Control = ButtonBevel
|
|
||||||
Left = 8
|
|
||||||
Height = 402
|
|
||||||
Top = 25
|
|
||||||
Width = 206
|
|
||||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
|
||||||
BorderSpacing.Left = 8
|
|
||||||
BorderSpacing.Top = 2
|
|
||||||
ItemHeight = 0
|
|
||||||
OnClick = VarListClick
|
|
||||||
TabOrder = 0
|
|
||||||
end
|
|
||||||
object ButtonPanel: TPanel
|
|
||||||
AnchorSideLeft.Control = SpecsPanel
|
|
||||||
AnchorSideRight.Control = SpecsPanel
|
|
||||||
AnchorSideRight.Side = asrBottom
|
|
||||||
AnchorSideBottom.Control = SpecsPanel
|
|
||||||
Left = 0
|
|
||||||
Height = 25
|
|
||||||
Top = 443
|
|
||||||
Width = 378
|
|
||||||
Align = alBottom
|
|
||||||
AutoSize = True
|
|
||||||
BorderSpacing.Top = 8
|
|
||||||
BorderSpacing.Bottom = 8
|
|
||||||
BevelOuter = bvNone
|
|
||||||
ClientHeight = 25
|
|
||||||
ClientWidth = 378
|
|
||||||
TabOrder = 3
|
|
||||||
object ResetBtn: TButton
|
|
||||||
AnchorSideLeft.Control = ButtonPanel
|
|
||||||
AnchorSideTop.Control = ButtonPanel
|
|
||||||
AnchorSideRight.Control = ComputeBtn
|
|
||||||
Left = 177
|
|
||||||
Height = 25
|
|
||||||
Top = 0
|
|
||||||
Width = 54
|
|
||||||
Anchors = [akTop, akRight]
|
|
||||||
AutoSize = True
|
|
||||||
BorderSpacing.Right = 8
|
|
||||||
Caption = 'Reset'
|
|
||||||
OnClick = ResetBtnClick
|
|
||||||
TabOrder = 1
|
|
||||||
end
|
|
||||||
object ComputeBtn: TButton
|
|
||||||
AnchorSideLeft.Control = ButtonPanel
|
|
||||||
AnchorSideTop.Control = ButtonPanel
|
|
||||||
AnchorSideRight.Control = CloseBtn
|
|
||||||
Left = 239
|
|
||||||
Height = 25
|
|
||||||
Top = 0
|
|
||||||
Width = 76
|
|
||||||
Anchors = [akTop, akRight]
|
|
||||||
AutoSize = True
|
|
||||||
BorderSpacing.Right = 8
|
|
||||||
Caption = 'Compute'
|
|
||||||
OnClick = ComputeBtnClick
|
|
||||||
TabOrder = 2
|
|
||||||
end
|
|
||||||
object HelpBtn: TButton
|
|
||||||
Tag = 141
|
|
||||||
AnchorSideLeft.Control = ButtonPanel
|
|
||||||
AnchorSideTop.Control = ResetBtn
|
|
||||||
AnchorSideRight.Control = ResetBtn
|
|
||||||
Left = 118
|
|
||||||
Height = 25
|
|
||||||
Top = 0
|
|
||||||
Width = 51
|
|
||||||
Anchors = [akTop, akRight]
|
|
||||||
AutoSize = True
|
|
||||||
BorderSpacing.Left = 8
|
|
||||||
BorderSpacing.Right = 8
|
|
||||||
Caption = 'Help'
|
|
||||||
OnClick = HelpBtnClick
|
|
||||||
TabOrder = 0
|
|
||||||
end
|
|
||||||
object CloseBtn: TButton
|
|
||||||
AnchorSideLeft.Control = ButtonPanel
|
|
||||||
AnchorSideTop.Control = ButtonPanel
|
|
||||||
AnchorSideRight.Control = ButtonPanel
|
|
||||||
AnchorSideRight.Side = asrBottom
|
|
||||||
Left = 323
|
|
||||||
Height = 25
|
|
||||||
Top = 0
|
|
||||||
Width = 55
|
|
||||||
Anchors = [akTop, akRight]
|
|
||||||
AutoSize = True
|
|
||||||
Caption = 'Close'
|
|
||||||
ModalResult = 11
|
|
||||||
TabOrder = 3
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object ButtonBevel: TBevel
|
|
||||||
AnchorSideLeft.Control = SpecsPanel
|
|
||||||
AnchorSideTop.Control = ButtonPanel
|
|
||||||
AnchorSideRight.Control = SpecsPanel
|
|
||||||
AnchorSideRight.Side = asrBottom
|
|
||||||
AnchorSideBottom.Control = ButtonPanel
|
|
||||||
Left = 0
|
|
||||||
Height = 8
|
|
||||||
Top = 427
|
|
||||||
Width = 378
|
|
||||||
Anchors = [akLeft, akRight, akBottom]
|
|
||||||
Shape = bsBottomLine
|
|
||||||
end
|
|
||||||
object CenterBevel: TBevel
|
|
||||||
AnchorSideLeft.Control = SpecsPanel
|
|
||||||
AnchorSideLeft.Side = asrCenter
|
|
||||||
AnchorSideTop.Control = SpecsPanel
|
|
||||||
Left = 165
|
|
||||||
Height = 10
|
|
||||||
Top = 0
|
|
||||||
Width = 49
|
|
||||||
Shape = bsSpacer
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object Splitter1: TSplitter
|
|
||||||
Left = 378
|
|
||||||
Height = 476
|
|
||||||
Top = 0
|
|
||||||
Width = 5
|
|
||||||
ResizeStyle = rsPattern
|
|
||||||
end
|
|
||||||
object PageControl1: TPageControl
|
|
||||||
Left = 385
|
|
||||||
Height = 460
|
|
||||||
Top = 8
|
|
||||||
Width = 482
|
|
||||||
ActivePage = ChartPage
|
|
||||||
Align = alClient
|
|
||||||
BorderSpacing.Left = 2
|
|
||||||
BorderSpacing.Top = 8
|
|
||||||
BorderSpacing.Right = 8
|
|
||||||
BorderSpacing.Bottom = 8
|
|
||||||
TabIndex = 1
|
|
||||||
TabOrder = 2
|
|
||||||
object ReportPage: TTabSheet
|
|
||||||
Caption = 'Report'
|
|
||||||
ClientHeight = 432
|
|
||||||
ClientWidth = 474
|
|
||||||
object ReportMemo: TMemo
|
|
||||||
Left = 6
|
|
||||||
Height = 420
|
|
||||||
Top = 6
|
|
||||||
Width = 462
|
|
||||||
Align = alClient
|
|
||||||
BorderSpacing.Around = 6
|
|
||||||
Font.Height = -11
|
|
||||||
Font.Name = 'Courier New'
|
|
||||||
ParentFont = False
|
|
||||||
TabOrder = 0
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object ChartPage: TTabSheet
|
|
||||||
Caption = 'Chart'
|
|
||||||
ClientHeight = 432
|
|
||||||
ClientWidth = 474
|
|
||||||
object ToolBar1: TToolBar
|
|
||||||
Left = 444
|
|
||||||
Height = 420
|
|
||||||
Top = 6
|
|
||||||
Width = 24
|
|
||||||
Align = alRight
|
|
||||||
AutoSize = True
|
|
||||||
BorderSpacing.Top = 6
|
|
||||||
BorderSpacing.Right = 6
|
|
||||||
BorderSpacing.Bottom = 6
|
|
||||||
Caption = 'ToolBar1'
|
|
||||||
EdgeBorders = []
|
|
||||||
Images = MainDataModule.ImageList
|
|
||||||
TabOrder = 0
|
|
||||||
Transparent = True
|
|
||||||
object tbSave: TToolButton
|
|
||||||
Left = 1
|
|
||||||
Hint = 'Save chart to file'
|
|
||||||
Top = 0
|
|
||||||
Caption = 'tbSave'
|
|
||||||
ImageIndex = 4
|
|
||||||
OnClick = tbSaveClick
|
|
||||||
end
|
|
||||||
object tbPrint: TToolButton
|
|
||||||
Left = 1
|
|
||||||
Hint = 'Print chart'
|
|
||||||
Top = 22
|
|
||||||
Caption = 'tbPrint'
|
|
||||||
ImageIndex = 5
|
|
||||||
OnClick = tbPrintClick
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@@ -1,103 +1,31 @@
|
|||||||
// File for testing: "boltsize.laz"
|
|
||||||
// LotNo --> Group Variable
|
|
||||||
// BoltLngth --> Measurement Variable
|
|
||||||
|
|
||||||
unit RChartUnit;
|
unit RChartUnit;
|
||||||
|
|
||||||
{$mode objfpc}{$H+}
|
{$mode objfpc}{$H+}
|
||||||
{$include ../../../LazStats.inc}
|
|
||||||
|
|
||||||
interface
|
interface
|
||||||
|
|
||||||
uses
|
uses
|
||||||
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,
|
Classes, SysUtils, Forms, Controls, Graphics, Dialogs,
|
||||||
StdCtrls, Printers, ExtCtrls, Buttons, ComCtrls,
|
BasicSPCUnit;
|
||||||
MainUnit, Globals, GraphLib, ContextHelpUnit,
|
|
||||||
{$IFDEF USE_TACHART}
|
|
||||||
TAChartUtils, TASources, TACustomSeries, TASeries, TALegend, TAChartAxisUtils,
|
|
||||||
ChartFrameUnit;
|
|
||||||
{$ELSE}
|
|
||||||
OutputUnit, BlankFrmUnit;
|
|
||||||
{$ENDIF}
|
|
||||||
|
|
||||||
|
|
||||||
type
|
type
|
||||||
|
TRChartForm = class(TBasicSPCForm)
|
||||||
{ TRChartFrm }
|
protected
|
||||||
|
procedure Compute; override;
|
||||||
TRChartFrm = class(TForm)
|
end;
|
||||||
CenterBevel: TBevel;
|
|
||||||
ButtonBevel: TBevel;
|
|
||||||
HelpBtn: TButton;
|
|
||||||
ReportMemo: TMemo;
|
|
||||||
PageControl1: TPageControl;
|
|
||||||
ButtonPanel: TPanel;
|
|
||||||
SpecsPanel: TPanel;
|
|
||||||
ResetBtn: TButton;
|
|
||||||
ComputeBtn: TButton;
|
|
||||||
CloseBtn: TButton;
|
|
||||||
MeasEdit: TEdit;
|
|
||||||
GroupEdit: TEdit;
|
|
||||||
tbPrint: TToolButton;
|
|
||||||
tbSave: TToolButton;
|
|
||||||
ToolBar1: TToolBar;
|
|
||||||
VarListLabel: TLabel;
|
|
||||||
GroupLabel: TLabel;
|
|
||||||
MeasLabel: TLabel;
|
|
||||||
Splitter1: TSplitter;
|
|
||||||
ReportPage: TTabSheet;
|
|
||||||
ChartPage: TTabSheet;
|
|
||||||
VarList: TListBox;
|
|
||||||
procedure ComputeBtnClick(Sender: TObject);
|
|
||||||
procedure FormActivate(Sender: TObject);
|
|
||||||
procedure FormCreate(Sender: TObject);
|
|
||||||
procedure FormShow(Sender: TObject);
|
|
||||||
procedure HelpBtnClick(Sender: TObject);
|
|
||||||
procedure ResetBtnClick(Sender: TObject);
|
|
||||||
procedure tbPrintClick(Sender: TObject);
|
|
||||||
procedure tbSaveClick(Sender: TObject);
|
|
||||||
procedure VarListClick(Sender: TObject);
|
|
||||||
private
|
|
||||||
{ private declarations }
|
|
||||||
{$IFDEF USE_TACHART}
|
|
||||||
FChartFrame: TChartFrame;
|
|
||||||
{$ENDIF}
|
|
||||||
procedure PlotMeans(const Groups: StrDyneVec; const Means: DblDyneVec;
|
|
||||||
UCL, LCL, GrandMean: double);
|
|
||||||
public
|
|
||||||
{ public declarations }
|
|
||||||
end;
|
|
||||||
|
|
||||||
var
|
var
|
||||||
RChartFrm: TRChartFrm;
|
RChartForm: TRChartForm;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
{$R *.lfm}
|
{$R *.lfm}
|
||||||
|
|
||||||
uses
|
uses
|
||||||
Math, Utils;
|
Math,
|
||||||
|
Globals, Utils, MainUnit;
|
||||||
|
|
||||||
|
procedure TRChartForm.Compute;
|
||||||
{ TRChartFrm }
|
|
||||||
|
|
||||||
procedure TRChartFrm.ComputeBtnClick(Sender: TObject);
|
|
||||||
var
|
|
||||||
i, j, GrpVar, MeasVar, grpsize : integer;
|
|
||||||
oldgrpsize : integer;
|
|
||||||
X, UCL, LCL: double;
|
|
||||||
xmin, xmax, GrandMean, GrandSD, semean, D3Value, D4Value : double;
|
|
||||||
GrandRange : double;
|
|
||||||
grp: String;
|
|
||||||
grpIndex, numGrps: Integer;
|
|
||||||
groups: StrDyneVec = nil;
|
|
||||||
means: DblDyneVec = nil;
|
|
||||||
stddev: DblDyneVec = nil;
|
|
||||||
ranges: DblDyneVec = nil;
|
|
||||||
count: IntDyneVec;
|
|
||||||
cellstring: string;
|
|
||||||
sizeError: boolean;
|
|
||||||
lReport: TStrings;
|
|
||||||
const
|
const
|
||||||
D3: array[1..24] of double = (
|
D3: array[1..24] of double = (
|
||||||
0,0,0,0,0,0.076,0.136,0.184,0.223,0.256,0.283,0.307,0.328,
|
0,0,0,0,0,0.076,0.136,0.184,0.223,0.256,0.283,0.307,0.328,
|
||||||
@@ -109,51 +37,38 @@ const
|
|||||||
1.744, 1.717, 1.693, 1.672, 1.653, 1.637, 1.622, 1.608,1.597,
|
1.744, 1.717, 1.693, 1.672, 1.653, 1.637, 1.622, 1.608,1.597,
|
||||||
1.585, 1.575, 1.566, 1.557, 1.548, 1.541
|
1.585, 1.575, 1.566, 1.557, 1.548, 1.541
|
||||||
);
|
);
|
||||||
|
var
|
||||||
|
i, j: Integer;
|
||||||
|
grp: String;
|
||||||
|
grpIndex, grpSize, oldGrpSize, numGrps: Integer;
|
||||||
|
groups: StrDyneVec = nil;
|
||||||
|
means: DblDyneVec = nil;
|
||||||
|
stddev: DblDyneVec = nil;
|
||||||
|
ranges: DblDynevec = nil;
|
||||||
|
count: IntDyneVec = nil;
|
||||||
|
ColNoSelected: IntDyneVec = nil;
|
||||||
|
X, Xsq, xmin, xmax: Double;
|
||||||
|
seMean, grandMean, grandRange, grandSD, UCL, LCL: Double;
|
||||||
|
D3Value, D4Value: Double;
|
||||||
|
sizeError: boolean;
|
||||||
|
lReport: TStrings;
|
||||||
begin
|
begin
|
||||||
if (GroupEdit.Text = '') then
|
SetLength(ColNoSelected, 2);
|
||||||
begin
|
ColNoSelected[0] := GrpVar;
|
||||||
MessageDlg('Group variable is not specified.', mtError, [mbOk], 0);
|
ColNoSelected[1] := MeasVar;
|
||||||
exit;
|
|
||||||
end;
|
|
||||||
|
|
||||||
if (MeasEdit.Text = '') then
|
grpSize := 0;
|
||||||
begin
|
oldGrpSize := 0;
|
||||||
MessageDlg('Measurement variable is not specified.', mtError, [mbOK], 0);
|
groups := GetGroups;
|
||||||
exit;
|
numGrps := Length(groups);
|
||||||
end;
|
|
||||||
|
|
||||||
GrpVar := 1;
|
|
||||||
MeasVar := 2;
|
|
||||||
grpsize := 0;
|
|
||||||
oldgrpsize := 0;
|
|
||||||
|
|
||||||
for i := 1 to NoVariables do
|
|
||||||
begin
|
|
||||||
cellstring := OS3MainFrm.DataGrid.Cells[i,0];
|
|
||||||
if cellstring = GroupEdit.Text then GrpVar := i;
|
|
||||||
if cellstring = MeasEdit.Text then MeasVar := i;
|
|
||||||
end;
|
|
||||||
|
|
||||||
numGrps := 0;
|
|
||||||
SetLength(groups, NoCases);
|
|
||||||
for i := 1 to NoCases do
|
|
||||||
begin
|
|
||||||
grp := Trim(OS3MainFrm.DataGrid.Cells[GrpVar, i]);
|
|
||||||
if IndexOfString(groups, grp) = -1 then
|
|
||||||
begin
|
|
||||||
groups[numGrps] := grp;
|
|
||||||
inc(numGrps);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
SetLength(groups, numGrps);
|
|
||||||
SetLength(means, numGrps);
|
SetLength(means, numGrps);
|
||||||
SetLength(count, numGrps);
|
SetLength(count, numGrps);
|
||||||
SetLength(stddev, numGrps);
|
SetLength(stddev, numGrps);
|
||||||
SetLength(ranges, numGrps);
|
SetLength(ranges, numGrps);
|
||||||
semean := 0.0;
|
seMean := 0.0;
|
||||||
GrandMean := 0.0;
|
grandMean := 0.0;
|
||||||
GrandRange := 0.0;
|
grandRange := 0.0;
|
||||||
sizeError := false;
|
sizeError := false;
|
||||||
|
|
||||||
// calculate group ranges, grand mean, group sd's, semeans
|
// calculate group ranges, grand mean, group sd's, semeans
|
||||||
@@ -169,18 +84,19 @@ begin
|
|||||||
if grpIndex = j then
|
if grpIndex = j then
|
||||||
begin
|
begin
|
||||||
X := StrToFloat(Trim(OS3MainFrm.DataGrid.Cells[MeasVar, i]));
|
X := StrToFloat(Trim(OS3MainFrm.DataGrid.Cells[MeasVar, i]));
|
||||||
|
Xsq := X * X;
|
||||||
if X > xmax then xmax := X;
|
if X > xmax then xmax := X;
|
||||||
if X < xmin then xmin := X;
|
if X < xmin then xmin := X;
|
||||||
means[grpIndex] := means[grpIndex] + X;
|
means[grpIndex] := means[grpIndex] + X;
|
||||||
count[grpIndex] := count[grpIndex] + 1;
|
count[grpIndex] := count[grpIndex] + 1;
|
||||||
stddev[grpIndex] := stddev[grpIndex] + X*X;
|
stddev[grpIndex] := stddev[grpIndex] + Xsq;
|
||||||
seMean := seMean + X*X;
|
seMean := seMean + Xsq;
|
||||||
GrandMean := GrandMean + X;
|
grandMean := grandMean + X;
|
||||||
end;
|
end;
|
||||||
end; // next case
|
end; // next case
|
||||||
|
|
||||||
ranges[j] := xMax - xMin;
|
ranges[j] := xMax - xMin;
|
||||||
GrandRange := GrandRange + ranges[j];
|
grandRange := grandRange + ranges[j];
|
||||||
grpSize := count[j];
|
grpSize := count[j];
|
||||||
if j = 0 then oldGrpSize := grpSize;
|
if j = 0 then oldGrpSize := grpSize;
|
||||||
if oldGrpSize <> grpSize then sizeError := true;
|
if oldGrpSize <> grpSize then sizeError := true;
|
||||||
@@ -188,7 +104,7 @@ begin
|
|||||||
|
|
||||||
if (grpsize < 2) or (grpsize > 25) or sizeError then
|
if (grpsize < 2) or (grpsize > 25) or sizeError then
|
||||||
begin
|
begin
|
||||||
MessageDlg('Group sizes error.', mtError, [mbOk], 0);
|
ErrorMsg('Group size error.');
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -199,34 +115,27 @@ begin
|
|||||||
stddev[i] := sqrt(stddev[i]);
|
stddev[i] := sqrt(stddev[i]);
|
||||||
means[i] := means[i] / count[i];
|
means[i] := means[i] / count[i];
|
||||||
end;
|
end;
|
||||||
semean := semean - GrandMean * GrandMean / NoCases;
|
seMean := seMean - grandMean * grandMean / NoCases;
|
||||||
semean := semean / (NoCases - 1);
|
seMean := seMean / (NoCases - 1);
|
||||||
semean := sqrt(semean);
|
seMean := sqrt(seMean);
|
||||||
GrandSD := semean;
|
GrandSD := seMean;
|
||||||
semean := semean / sqrt(NoCases);
|
seMean := seMean / sqrt(NoCases);
|
||||||
GrandMean := GrandMean / NoCases;
|
grandMean := grandMean / NoCases;
|
||||||
GrandRange := GrandRange / numGrps;
|
grandRange := grandRange / numGrps;
|
||||||
D3Value := D3[grpsize-1];
|
D3Value := D3[grpSize-1];
|
||||||
D4Value := D4[grpsize-1];
|
D4Value := D4[grpSize-1];
|
||||||
{
|
UCL := D4Value * grandRange;
|
||||||
C4 = sqrt(2.0 / (double(grpsize)-1));
|
LCL := D3Value * grandRange;
|
||||||
double gamma = exp(gammln(double(grpsize)/2.0));
|
|
||||||
C4 *= gamma;
|
|
||||||
gamma = exp(gammln(double(grpsize-1)/2.0));
|
|
||||||
C4 /= gamma;
|
|
||||||
}
|
|
||||||
UCL := D4Value * GrandRange;
|
|
||||||
LCL := D3Value * GrandRange;
|
|
||||||
|
|
||||||
// print results
|
// print results
|
||||||
lReport := TStringList.Create;
|
lReport := TStringList.Create;
|
||||||
try
|
try
|
||||||
lReport.Add('Range Chart Results');
|
lReport.Add('Range Chart Results');
|
||||||
lReport.Add('');
|
lReport.Add('');
|
||||||
lReport.Add('Group Size Mean Ranges Std.Dev.');
|
lReport.Add(' Group Size Mean Std.Dev. Ranges ');
|
||||||
lReport.Add('----- ---- -------- -------- --------');
|
lReport.Add('------- ---- -------- -------- --------');
|
||||||
for i := 0 to numGrps-1 do
|
for i := 0 to numGrps-1 do
|
||||||
lReport.Add('%5d %4d %8.2f %8.2f %8.2f', [i+1, count[i], means[i], ranges[i], stddev[i]]);
|
lReport.Add('%7d %4d %8.2f %8.2f %8.2f', [i+1, count[i], means[i], stddev[i], ranges[i]]);
|
||||||
lReport.Add('');
|
lReport.Add('');
|
||||||
lReport.Add('Grand Mean: %8.3f', [GrandMean]);
|
lReport.Add('Grand Mean: %8.3f', [GrandMean]);
|
||||||
lReport.Add('Standard Deviation: %8.3f', [GrandSD]);
|
lReport.Add('Standard Deviation: %8.3f', [GrandSD]);
|
||||||
@@ -235,287 +144,23 @@ begin
|
|||||||
lReport.Add('Lower Control Limit: %8.3f', [LCL]);
|
lReport.Add('Lower Control Limit: %8.3f', [LCL]);
|
||||||
lReport.Add('Upper Control Limit: %8.3f', [UCL]);
|
lReport.Add('Upper Control Limit: %8.3f', [UCL]);
|
||||||
|
|
||||||
{$IFDEF USE_TACHART}
|
|
||||||
ReportMemo.Lines.Assign(lReport);
|
ReportMemo.Lines.Assign(lReport);
|
||||||
{$ELSE}
|
|
||||||
DisplayReport(lReport);
|
|
||||||
{$ENDIF}
|
|
||||||
finally
|
finally
|
||||||
lReport.Free;
|
lReport.Free;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// show graph
|
// show graph
|
||||||
PlotMeans(groups, ranges, UCL, LCL, GrandRange);
|
// show graph
|
||||||
|
PlotMeans(
|
||||||
// Clean up
|
Format('Range Chart for "%s"', [GetFileName]),
|
||||||
groups := nil;
|
GroupEdit.Text, Format('Range(%s)', [MeasEdit.Text]),
|
||||||
ranges := nil;
|
'Group ranges', 'Mean range',
|
||||||
stddev := nil;
|
groups, ranges,
|
||||||
count := nil;
|
UCL, LCL, grandRange,
|
||||||
means := nil;
|
NaN, NaN, NaN
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
procedure TRChartFrm.FormActivate(Sender: TObject);
|
|
||||||
var
|
|
||||||
w: Integer;
|
|
||||||
begin
|
|
||||||
w := MaxValue([HelpBtn.Width, ResetBtn.Width, ComputeBtn.Width, CloseBtn.Width]);
|
|
||||||
HelpBtn.Constraints.MinWidth := w;
|
|
||||||
ResetBtn.Constraints.MinWidth := w;
|
|
||||||
ComputeBtn.Constraints.MinWidth := w;
|
|
||||||
CloseBtn.Constraints.MinWidth := w;
|
|
||||||
|
|
||||||
SpecsPanel.Constraints.MinWidth := Max(
|
|
||||||
VarListLabel.Width + MeasLabel.Width,
|
|
||||||
CloseBtn.Left + CloseBtn.Width - HelpBtn.Left + HelpBtn.BorderSpacing.Left
|
|
||||||
);
|
);
|
||||||
|
|
||||||
Constraints.MinHeight := MeasEdit.Top + MeasEdit.Height + ButtonBevel.Height + ButtonPanel.Height + 2*ButtonPanel.BorderSpacing.Bottom;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure TRChartFrm.FormCreate(Sender: TObject);
|
|
||||||
begin
|
|
||||||
Assert(OS3MainFrm <> nil);
|
|
||||||
{$IFDEF USE_TACHART}
|
|
||||||
FChartFrame := TChartFrame.Create(self);
|
|
||||||
FChartFrame.Parent := ChartPage;
|
|
||||||
FChartFrame.Align := alClient;
|
|
||||||
FChartFrame.BorderSpacing.Around := Scale96ToFont(8);
|
|
||||||
FChartFrame.Chart.Legend.SymbolWidth := Scale96ToFont(30);
|
|
||||||
FChartFrame.Chart.Legend.Alignment := laBottomCenter;
|
|
||||||
FChartFrame.Chart.Legend.ColumnCount := 3;
|
|
||||||
with FChartFrame.Chart.AxisList.Add do
|
|
||||||
begin
|
|
||||||
Alignment := calRight;
|
|
||||||
Marks.Source := TListChartSource.Create(self);
|
|
||||||
Marks.Style := smsLabel;
|
|
||||||
end;
|
|
||||||
{$ELSE}
|
|
||||||
if BlankFrm = nil then
|
|
||||||
Application.CreateForm(TBlankFrm, BlankFrm);
|
|
||||||
{$ENDIF}
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
procedure TRChartFrm.FormShow(Sender: TObject);
|
|
||||||
begin
|
|
||||||
ResetBtnClick(self);
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
procedure TRChartFrm.HelpBtnClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
if ContextHelpForm = nil then
|
|
||||||
Application.CreateForm(TContextHelpForm, ContextHelpForm);
|
|
||||||
ContextHelpForm.HelpMessage((Sender as TButton).tag);
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
procedure TRChartFrm.PlotMeans(const Groups: StrDyneVec; const Means: DblDyneVec;
|
|
||||||
UCL, LCL, GrandMean: double);
|
|
||||||
const
|
|
||||||
CL_COLOR = clRed;
|
|
||||||
CL_STYLE = psDash;
|
|
||||||
var
|
|
||||||
fn: String;
|
|
||||||
{$IFDEF USE_TACHART}
|
|
||||||
rightLabels: TListChartSource;
|
|
||||||
ser: TChartSeries;
|
|
||||||
{$ELSE}
|
|
||||||
i, xpos, ypos, hleft, hright, vtop, vbottom, imagewide, NoGrps: integer;
|
|
||||||
vhi, hwide, offset, strhi: integer;
|
|
||||||
imagehi, maxval, minval, valincr, Yvalue: double;
|
|
||||||
Title: string;
|
|
||||||
{$ENDIF}
|
|
||||||
begin
|
|
||||||
fn := ExtractFileName(OS3MainFrm.FileNameEdit.Text);
|
|
||||||
{$IFDEF USE_TACHART}
|
|
||||||
rightLabels := FChartFrame.Chart.AxisList[2].Marks.Source as TListChartSource;
|
|
||||||
|
|
||||||
FChartFrame.Clear;
|
|
||||||
FChartFrame.SetTitle(Format('Range chart for "%s"', [fn]));
|
|
||||||
FChartFrame.SetXTitle(GroupEdit.Text);
|
|
||||||
FChartFrame.SetYTitle('Ranges of ' + MeasEdit.Text);
|
|
||||||
|
|
||||||
ser := FChartFrame.PlotXY(ptSymbols, nil, Means, Groups, nil, 'Group ranges', clBlack);
|
|
||||||
FChartFrame.Chart.BottomAxis.Marks.Source := ser.Source;
|
|
||||||
FChartFrame.Chart.BottomAxis.Marks.style := smsLabel;
|
|
||||||
|
|
||||||
FChartFrame.HorLine(GrandMean, clRed, psSolid, 'Mean range');
|
|
||||||
rightLabels.Add(GrandMean, GrandMean, 'Mean range');
|
|
||||||
|
|
||||||
FChartFrame.HorLine(UCL, CL_COLOR, CL_STYLE, 'UCL/LCL');
|
|
||||||
rightLabels.Add(UCL, UCL, 'UCL');
|
|
||||||
|
|
||||||
FChartFrame.HorLine(LCL, CL_COLOR, CL_STYLE, '');
|
|
||||||
rightLabels.Add(UCL, LCL, 'LCL');
|
|
||||||
{$ELSE}
|
|
||||||
NoGrps := Length(Groups);
|
|
||||||
maxval := -10000.0;
|
|
||||||
minval := 10000.0;
|
|
||||||
for i := 0 to NoGrps-1 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.Show;
|
|
||||||
BlankFrm.Caption := 'RANGE CHART FOR ' + fn;
|
|
||||||
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.Brush.Color := clLtGray;
|
|
||||||
BlankFrm.Image1.Canvas.FillRect(0, 0, BlankFrm.Image1.Width, BlankFrm.Image1.Height);
|
|
||||||
|
|
||||||
// Draw chart border
|
|
||||||
BlankFrm.Image1.Canvas.Pen.Color := clBlack;
|
|
||||||
BlankFrm.Image1.Canvas.Brush.Color := clWhite;
|
|
||||||
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 := clRed;
|
|
||||||
BlankFrm.Image1.Canvas.LineTo(xpos,ypos);
|
|
||||||
Title := 'MEAN';
|
|
||||||
strhi := BlankFrm.Image1.Canvas.TextHeight(Title);
|
|
||||||
ypos := ypos - strhi div 2;
|
|
||||||
BlankFrm.Image1.Canvas.Brush.Style := bsClear;
|
|
||||||
BlankFrm.Image1.Canvas.TextOut(xpos,ypos, Title);
|
|
||||||
|
|
||||||
// draw horizontal axis
|
|
||||||
BlankFrm.Image1.Canvas.MoveTo(hleft,vbottom + 20);
|
|
||||||
BlankFrm.Image1.Canvas.LineTo(hright,vbottom + 20);
|
|
||||||
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;
|
|
||||||
BlankFrm.Image1.Canvas.TextOut(xpos,ypos,Title);
|
|
||||||
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[0]) / (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-1]) / (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);
|
|
||||||
{$ENDIF}
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
procedure TRChartFrm.ResetBtnClick(Sender: TObject);
|
|
||||||
var
|
|
||||||
i: integer;
|
|
||||||
begin
|
|
||||||
VarList.Clear;
|
|
||||||
GroupEdit.Text := '';
|
|
||||||
MeasEdit.Text := '';
|
|
||||||
for i := 1 to NoVariables do
|
|
||||||
VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]);
|
|
||||||
{$IFDEF USE_TACHART}
|
|
||||||
FChartFrame.Clear;
|
|
||||||
{$ENDIF}
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
procedure TRChartFrm.tbPrintClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
{$IFDEF USE_TACHART}
|
|
||||||
FChartFrame.Print;
|
|
||||||
{$ENDIF}
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
procedure TRChartFrm.tbSaveClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
{$IFDEF USE_TACHART}
|
|
||||||
FChartFrame.Save;
|
|
||||||
{$ENDIF}
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
procedure TRChartFrm.VarListClick(Sender: TObject);
|
|
||||||
var
|
|
||||||
index: integer;
|
|
||||||
begin
|
|
||||||
index := VarList.ItemIndex;
|
|
||||||
if index > -1 then
|
|
||||||
begin
|
|
||||||
if GroupEdit.Text = '' then
|
|
||||||
GroupEdit.Text := VarList.Items[index]
|
|
||||||
else
|
|
||||||
MeasEdit.Text := VarList.Items[index];
|
|
||||||
VarList.Items.Delete(index);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
@@ -1,16 +1,5 @@
|
|||||||
inherited SChartForm: TSChartForm
|
inherited SChartForm: TSChartForm
|
||||||
|
HelpType = htKeyword
|
||||||
|
HelpKeyword = 'html/SControlChart.htm'
|
||||||
Caption = 'Sigma Chart'
|
Caption = 'Sigma Chart'
|
||||||
inherited PageControl1: TPageControl
|
|
||||||
inherited ReportPage: TTabSheet
|
|
||||||
inherited Panel1: TPanel
|
|
||||||
inherited ReportMemo: TMemo
|
|
||||||
Left = 4
|
|
||||||
Height = 374
|
|
||||||
Top = 4
|
|
||||||
Width = 521
|
|
||||||
BorderSpacing.Around = 4
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
@@ -13,13 +13,8 @@ type
|
|||||||
{ TSChartForm }
|
{ TSChartForm }
|
||||||
|
|
||||||
TSChartForm = class(TBasicSPCForm)
|
TSChartForm = class(TBasicSPCForm)
|
||||||
private
|
|
||||||
|
|
||||||
protected
|
protected
|
||||||
procedure Compute; override;
|
procedure Compute; override;
|
||||||
|
|
||||||
public
|
|
||||||
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
var
|
var
|
||||||
@@ -67,8 +62,8 @@ begin
|
|||||||
ColNoSelected[0] := GrpVar;
|
ColNoSelected[0] := GrpVar;
|
||||||
ColNoSelected[1] := MeasVar;
|
ColNoSelected[1] := MeasVar;
|
||||||
|
|
||||||
grpsize := 0;
|
grpSize := 0;
|
||||||
oldgrpsize := 0;
|
oldGrpSize := 0;
|
||||||
groups := GetGroups;
|
groups := GetGroups;
|
||||||
numGrps := Length(groups);
|
numGrps := Length(groups);
|
||||||
|
|
||||||
@@ -166,7 +161,7 @@ begin
|
|||||||
Format('Sigma Chart for "%s"', [GetFileName]),
|
Format('Sigma Chart for "%s"', [GetFileName]),
|
||||||
GroupEdit.Text, Format('StdDev(%s)', [MeasEdit.Text]),
|
GroupEdit.Text, Format('StdDev(%s)', [MeasEdit.Text]),
|
||||||
'Group Sigma', 'Mean',
|
'Group Sigma', 'Mean',
|
||||||
groups, stdDev, nil,
|
groups, stdDev,
|
||||||
UCL, LCL, grandSigma,
|
UCL, LCL, grandSigma,
|
||||||
NaN, NaN, NaN
|
NaN, NaN, NaN
|
||||||
);
|
);
|
||||||
|
@@ -0,0 +1,222 @@
|
|||||||
|
inherited XBarChartForm: TXBarChartForm
|
||||||
|
Left = 572
|
||||||
|
Top = 215
|
||||||
|
HelpType = htKeyword
|
||||||
|
HelpKeyword = 'html/XBarChart.htm'
|
||||||
|
Caption = 'X-Bar Chart'
|
||||||
|
OnActivate = FormActivate
|
||||||
|
inherited SpecsPanel: TPanel
|
||||||
|
Width = 475
|
||||||
|
BorderSpacing.Right = 3
|
||||||
|
ClientWidth = 475
|
||||||
|
inherited ButtonPanel: TPanel
|
||||||
|
Width = 475
|
||||||
|
ClientWidth = 475
|
||||||
|
inherited CloseBtn: TButton
|
||||||
|
Left = 420
|
||||||
|
end
|
||||||
|
inherited ComputeBtn: TButton
|
||||||
|
Left = 336
|
||||||
|
end
|
||||||
|
inherited ResetBtn: TButton
|
||||||
|
Left = 274
|
||||||
|
end
|
||||||
|
inherited HelpBtn: TButton
|
||||||
|
Left = 223
|
||||||
|
end
|
||||||
|
inherited Bevel1: TBevel
|
||||||
|
Width = 467
|
||||||
|
end
|
||||||
|
end
|
||||||
|
inherited VarList: TListBox
|
||||||
|
Width = 233
|
||||||
|
end
|
||||||
|
inherited GroupLabel: TLabel
|
||||||
|
Left = 249
|
||||||
|
end
|
||||||
|
inherited GroupEdit: TEdit
|
||||||
|
Left = 249
|
||||||
|
Width = 226
|
||||||
|
end
|
||||||
|
inherited MeasLabel: TLabel
|
||||||
|
Left = 249
|
||||||
|
end
|
||||||
|
inherited MeasEdit: TEdit
|
||||||
|
AnchorSideRight.Control = LevelOptns
|
||||||
|
Left = 249
|
||||||
|
Width = 226
|
||||||
|
end
|
||||||
|
inherited Bevel2: TBevel
|
||||||
|
Left = 226
|
||||||
|
end
|
||||||
|
object SigmaOpts: TRadioGroup[8]
|
||||||
|
AnchorSideLeft.Control = MeasEdit
|
||||||
|
AnchorSideTop.Control = MeasEdit
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = LevelOptns
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 249
|
||||||
|
Height = 128
|
||||||
|
Top = 108
|
||||||
|
Width = 226
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
|
AutoFill = True
|
||||||
|
BorderSpacing.Top = 12
|
||||||
|
Caption = 'No. of Sigma Units for UCL and LCL'
|
||||||
|
ChildSizing.LeftRightSpacing = 12
|
||||||
|
ChildSizing.TopBottomSpacing = 6
|
||||||
|
ChildSizing.EnlargeHorizontal = crsHomogenousChildResize
|
||||||
|
ChildSizing.EnlargeVertical = crsHomogenousChildResize
|
||||||
|
ChildSizing.ShrinkHorizontal = crsScaleChilds
|
||||||
|
ChildSizing.ShrinkVertical = crsScaleChilds
|
||||||
|
ChildSizing.Layout = cclLeftToRightThenTopToBottom
|
||||||
|
ChildSizing.ControlsPerLine = 1
|
||||||
|
ClientHeight = 108
|
||||||
|
ClientWidth = 222
|
||||||
|
ItemIndex = 0
|
||||||
|
Items.Strings = (
|
||||||
|
'3 Sigma (default)'
|
||||||
|
'2 Sigma'
|
||||||
|
'1 Sigma'
|
||||||
|
'x Sigmas with x = '
|
||||||
|
)
|
||||||
|
TabOrder = 4
|
||||||
|
object XSigmaEdit: TEdit
|
||||||
|
AnchorSideRight.Control = SigmaOpts
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
AnchorSideBottom.Side = asrBottom
|
||||||
|
Left = 128
|
||||||
|
Height = 23
|
||||||
|
Top = 80
|
||||||
|
Width = 82
|
||||||
|
Alignment = taRightJustify
|
||||||
|
Anchors = [akLeft, akRight, akBottom]
|
||||||
|
TabOrder = 0
|
||||||
|
Text = 'XSigmaEdit'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
object LevelOptns: TGroupBox[9]
|
||||||
|
AnchorSideLeft.Control = MeasEdit
|
||||||
|
AnchorSideTop.Control = SigmaOpts
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = MeasEdit
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 249
|
||||||
|
Height = 103
|
||||||
|
Top = 248
|
||||||
|
Width = 226
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
|
AutoSize = True
|
||||||
|
BorderSpacing.Top = 12
|
||||||
|
BorderSpacing.Bottom = 8
|
||||||
|
Caption = 'Show...'
|
||||||
|
ClientHeight = 83
|
||||||
|
ClientWidth = 222
|
||||||
|
TabOrder = 5
|
||||||
|
object UpperSpecChk: TCheckBox
|
||||||
|
AnchorSideLeft.Control = LevelOptns
|
||||||
|
AnchorSideTop.Control = UpperSpecEdit
|
||||||
|
AnchorSideTop.Side = asrCenter
|
||||||
|
Left = 12
|
||||||
|
Height = 19
|
||||||
|
Top = 2
|
||||||
|
Width = 116
|
||||||
|
BorderSpacing.Left = 12
|
||||||
|
Caption = 'Upper Spec. Level:'
|
||||||
|
TabOrder = 0
|
||||||
|
end
|
||||||
|
object LowerSpecChk: TCheckBox
|
||||||
|
AnchorSideLeft.Control = LevelOptns
|
||||||
|
AnchorSideTop.Control = LowerSpecEdit
|
||||||
|
AnchorSideTop.Side = asrCenter
|
||||||
|
Left = 12
|
||||||
|
Height = 19
|
||||||
|
Top = 29
|
||||||
|
Width = 113
|
||||||
|
BorderSpacing.Left = 12
|
||||||
|
Caption = 'Lower Spec. Level'
|
||||||
|
TabOrder = 2
|
||||||
|
end
|
||||||
|
object TargetChk: TCheckBox
|
||||||
|
AnchorSideLeft.Control = LevelOptns
|
||||||
|
AnchorSideTop.Control = TargetSpecEdit
|
||||||
|
AnchorSideTop.Side = asrCenter
|
||||||
|
Left = 12
|
||||||
|
Height = 19
|
||||||
|
Top = 56
|
||||||
|
Width = 124
|
||||||
|
BorderSpacing.Left = 12
|
||||||
|
BorderSpacing.Bottom = 8
|
||||||
|
Caption = 'Target Specification'
|
||||||
|
TabOrder = 4
|
||||||
|
end
|
||||||
|
object UpperSpecEdit: TEdit
|
||||||
|
AnchorSideLeft.Control = TargetSpecEdit
|
||||||
|
AnchorSideTop.Control = LevelOptns
|
||||||
|
AnchorSideRight.Control = TargetSpecEdit
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 144
|
||||||
|
Height = 23
|
||||||
|
Top = 0
|
||||||
|
Width = 63
|
||||||
|
Alignment = taRightJustify
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
|
TabOrder = 1
|
||||||
|
Text = 'UpperSpecEdit'
|
||||||
|
end
|
||||||
|
object LowerSpecEdit: TEdit
|
||||||
|
AnchorSideLeft.Control = TargetSpecEdit
|
||||||
|
AnchorSideTop.Control = UpperSpecEdit
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = TargetSpecEdit
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 144
|
||||||
|
Height = 23
|
||||||
|
Top = 27
|
||||||
|
Width = 63
|
||||||
|
Alignment = taRightJustify
|
||||||
|
Anchors = [akTop, akLeft, akRight]
|
||||||
|
BorderSpacing.Top = 4
|
||||||
|
TabOrder = 3
|
||||||
|
Text = 'LowerSpecEdit'
|
||||||
|
end
|
||||||
|
object TargetSpecEdit: TEdit
|
||||||
|
AnchorSideLeft.Control = TargetChk
|
||||||
|
AnchorSideLeft.Side = asrBottom
|
||||||
|
AnchorSideTop.Control = LowerSpecEdit
|
||||||
|
AnchorSideTop.Side = asrBottom
|
||||||
|
AnchorSideRight.Control = LevelOptns
|
||||||
|
AnchorSideRight.Side = asrBottom
|
||||||
|
Left = 144
|
||||||
|
Height = 23
|
||||||
|
Top = 54
|
||||||
|
Width = 63
|
||||||
|
Alignment = taRightJustify
|
||||||
|
BorderSpacing.Left = 8
|
||||||
|
BorderSpacing.Top = 4
|
||||||
|
BorderSpacing.Right = 8
|
||||||
|
BorderSpacing.Bottom = 4
|
||||||
|
TabOrder = 5
|
||||||
|
Text = 'TargetSpecEdit'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
inherited SpecsSplitter: TSplitter
|
||||||
|
Left = 478
|
||||||
|
end
|
||||||
|
inherited PageControl1: TPageControl
|
||||||
|
Left = 486
|
||||||
|
Width = 435
|
||||||
|
BorderSpacing.Left = 3
|
||||||
|
inherited ReportPage: TTabSheet
|
||||||
|
ClientWidth = 427
|
||||||
|
inherited Panel1: TPanel
|
||||||
|
Width = 415
|
||||||
|
ClientWidth = 411
|
||||||
|
inherited ReportMemo: TMemo
|
||||||
|
Width = 403
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
@@ -0,0 +1,289 @@
|
|||||||
|
unit XBarChartUnit;
|
||||||
|
|
||||||
|
{$mode objfpc}{$H+}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ComCtrls,
|
||||||
|
ExtCtrls, StdCtrls, BasicSPCUnit;
|
||||||
|
|
||||||
|
type
|
||||||
|
|
||||||
|
{ TXBarChartForm }
|
||||||
|
|
||||||
|
TXBarChartForm = class(TBasicSPCForm)
|
||||||
|
LevelOptns: TGroupBox;
|
||||||
|
LowerSpecChk: TCheckBox;
|
||||||
|
LowerSpecEdit: TEdit;
|
||||||
|
SigmaOpts: TRadioGroup;
|
||||||
|
TargetChk: TCheckBox;
|
||||||
|
TargetSpecEdit: TEdit;
|
||||||
|
UpperSpecChk: TCheckBox;
|
||||||
|
UpperSpecEdit: TEdit;
|
||||||
|
XSigmaEdit: TEdit;
|
||||||
|
procedure FormActivate(Sender: TObject);
|
||||||
|
protected
|
||||||
|
procedure Compute; override;
|
||||||
|
procedure Reset; override;
|
||||||
|
function Validate(out AMsg: String; out AControl: TWinControl): Boolean; override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
var
|
||||||
|
XBarChartForm: TXBarChartForm;
|
||||||
|
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
uses
|
||||||
|
Math,
|
||||||
|
Globals, Utils, MainUnit, DataProcs;
|
||||||
|
|
||||||
|
{$R *.lfm}
|
||||||
|
|
||||||
|
procedure TXBarChartForm.FormActivate(Sender: TObject);
|
||||||
|
var
|
||||||
|
w: Integer;
|
||||||
|
begin
|
||||||
|
w := MaxValue([HelpBtn.Width, ResetBtn.Width, ComputeBtn.Width, CloseBtn.Width]);
|
||||||
|
HelpBtn.Constraints.MinWidth := w;
|
||||||
|
ResetBtn.Constraints.MinWidth := w;
|
||||||
|
ComputeBtn.Constraints.MinWidth := w;
|
||||||
|
CloseBtn.Constraints.MinWidth := w;
|
||||||
|
|
||||||
|
DisableAutoSizing;
|
||||||
|
try
|
||||||
|
LevelOptns.AnchorSideRight.Control := nil;
|
||||||
|
VarList.Constraints.MinWidth := VarListLabel.Width;
|
||||||
|
SpecsPanel.Constraints.MinWidth := Max(
|
||||||
|
CloseBtn.Left + CloseBtn.Width - HelpBtn.Left + HelpBtn.BorderSpacing.Around,
|
||||||
|
LevelOptns.Width * 2 + VarList.BorderSpacing.Right + VarList.BorderSpacing.Left
|
||||||
|
);
|
||||||
|
Constraints.MinHeight := LevelOptns.Top + LevelOptns.Height + LevelOptns.BorderSpacing.Bottom + ButtonPanel.Height;
|
||||||
|
|
||||||
|
LevelOptns.AnchorSideRight.Control := MeasEdit;
|
||||||
|
LevelOptns.AnchorSideRight.Side := asrBottom;
|
||||||
|
finally
|
||||||
|
EnableAutoSizing;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
procedure TXBarChartForm.Compute;
|
||||||
|
var
|
||||||
|
i, j: Integer;
|
||||||
|
upperSpec, lowerSpec, targetSpec, sigma: Double;
|
||||||
|
ColNoSelected: IntDyneVec = nil;
|
||||||
|
groups: StrDyneVec = nil;
|
||||||
|
means: DblDyneVec = nil;
|
||||||
|
stdDev: DblDyneVec = nil;
|
||||||
|
count: IntDyneVec = nil;
|
||||||
|
numGrps: Integer;
|
||||||
|
grp: String;
|
||||||
|
grpIndex: Integer;
|
||||||
|
X, Xsq: Double;
|
||||||
|
UCL, LCL, grandMean, grandSD, seMean: Double;
|
||||||
|
lReport: TStrings;
|
||||||
|
begin
|
||||||
|
SetLength(ColNoSelected, 2);
|
||||||
|
ColNoSelected[0] := GrpVar;
|
||||||
|
ColNoSelected[1] := MeasVar;
|
||||||
|
|
||||||
|
if UpperSpecChk.Checked and (UpperSpecEdit.Text <> '') then
|
||||||
|
upperSpec := StrToFloat(UpperSpecEdit.Text)
|
||||||
|
else
|
||||||
|
upperSpec := NaN;
|
||||||
|
if LowerSpecChk.Checked and (LowerSpecEdit.Text <> '') then
|
||||||
|
lowerSpec := StrToFloat(LowerSpecEdit.Text)
|
||||||
|
else
|
||||||
|
lowerSpec := NaN;
|
||||||
|
if TargetChk.Checked and (TargetSpecEdit.Text <> '') then
|
||||||
|
targetSpec := StrToFloat(TargetSpecEdit.Text)
|
||||||
|
else
|
||||||
|
targetSpec := Nan;
|
||||||
|
|
||||||
|
case SigmaOpts.ItemIndex of
|
||||||
|
0: sigma := 3.0;
|
||||||
|
1: sigma := 2.0;
|
||||||
|
2: sigma := 1.0;
|
||||||
|
3: sigma := StrToFloat(XSigmaEdit.Text);
|
||||||
|
end;
|
||||||
|
|
||||||
|
groups := GetGroups;
|
||||||
|
numGrps := Length(groups);
|
||||||
|
|
||||||
|
SetLength(means, numGrps);
|
||||||
|
SetLength(count, numGrps);
|
||||||
|
SetLength(stddev, numGrps);
|
||||||
|
seMean := 0.0;
|
||||||
|
grandMean := 0.0;
|
||||||
|
|
||||||
|
// calculate group means, grand mean, group sd's, semeans
|
||||||
|
for i := 1 to NoCases do
|
||||||
|
begin
|
||||||
|
if not GoodRecord(i, Length(ColNoSelected), ColNoSelected) then continue;
|
||||||
|
grp := Trim(OS3MainFrm.DataGrid.Cells[GrpVar, i]);
|
||||||
|
grpIndex := IndexOfString(groups, grp);
|
||||||
|
X := StrToFloat(Trim(OS3MainFrm.DataGrid.Cells[MeasVar, i]));
|
||||||
|
Xsq := X*X;
|
||||||
|
inc(count[grpIndex]);
|
||||||
|
means[grpIndex] := means[grpIndex] + X;
|
||||||
|
stddev[grpIndex] := stddev[grpIndex] + Xsq;
|
||||||
|
seMean := seMean + Xsq;
|
||||||
|
grandMean := grandMean + X;
|
||||||
|
end;
|
||||||
|
|
||||||
|
for i := 0 to numGrps-1 do
|
||||||
|
begin
|
||||||
|
if count[i] = 0 then
|
||||||
|
begin
|
||||||
|
means[i] := NaN;
|
||||||
|
stddev[i] := NaN;
|
||||||
|
end else
|
||||||
|
begin
|
||||||
|
if count[i] = 1 then
|
||||||
|
stddev[i] := NaN
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
stddev[i] := stddev[i] - sqr(means[i]) / count[i];
|
||||||
|
stddev[i] := stddev[i] / (count[i] - 1);
|
||||||
|
stddev[i] := sqrt(stddev[i]);
|
||||||
|
end;
|
||||||
|
means[i] := means[i] / count[i];
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
seMean := seMean - sqr(grandMean) / NoCases;
|
||||||
|
seMean := sqrt(seMean / (NoCases - 1));
|
||||||
|
grandSD := seMean;
|
||||||
|
seMean := seMean / sqrt(NoCases);
|
||||||
|
grandMean := grandMean / NoCases;
|
||||||
|
UCL := grandMean + sigma * seMean;
|
||||||
|
LCL := grandMean - sigma * seMean;
|
||||||
|
|
||||||
|
// printed results
|
||||||
|
lReport := TStringList.Create;
|
||||||
|
try
|
||||||
|
lReport.Add('X BAR CHART RESULTS');
|
||||||
|
lReport.Add('');
|
||||||
|
lReport.Add(' Group Size Mean Std.Dev.');
|
||||||
|
lReport.Add('------- ---- -------- --------');
|
||||||
|
for i := 0 to numGrps-1 do
|
||||||
|
lReport.Add('%7s %4d %8.2f %8.2f', [groups[i], count[i], means[i], stddev[i]]);
|
||||||
|
lReport.Add('');
|
||||||
|
lReport.Add('Grand Mean: %8.3f', [grandMean]);
|
||||||
|
lReport.Add('Standard Deviation: %8.3f', [grandSD]);
|
||||||
|
lReport.Add('Standard Error of Mean: %8.3f', [seMean]);
|
||||||
|
lReport.Add('');
|
||||||
|
lReport.Add('Lower Control Limit: %8.3f', [LCL]);
|
||||||
|
lReport.Add('Upper Control Limit: %8.3f', [UCL]);
|
||||||
|
|
||||||
|
ReportMemo.Lines.Assign(lReport);
|
||||||
|
finally
|
||||||
|
lReport.Free;
|
||||||
|
end;
|
||||||
|
|
||||||
|
// show graph
|
||||||
|
PlotMeans(
|
||||||
|
Format('x̄ chart for "%s"', [GetFileName]),
|
||||||
|
GroupEdit.Text, MeasEdit.Text, 'Group means', 'Grand mean',
|
||||||
|
groups, means,
|
||||||
|
UCL, LCL, grandmean,
|
||||||
|
targetSpec, lowerSpec, upperSpec
|
||||||
|
);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TXBarChartForm.Reset;
|
||||||
|
begin
|
||||||
|
inherited;
|
||||||
|
UpperSpecEdit.Text := '';
|
||||||
|
LowerSpecEdit.Text := '';
|
||||||
|
TargetSpecEdit.Text := '';
|
||||||
|
XSigmaEdit.Text := '';
|
||||||
|
UpperSpecChk.Checked := false;
|
||||||
|
LowerSpecChk.Checked := false;
|
||||||
|
TargetChk.Checked := false;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TXBarChartForm.Validate(out AMsg: String; out AControl: TWinControl): Boolean;
|
||||||
|
var
|
||||||
|
x: Double;
|
||||||
|
begin
|
||||||
|
Result := inherited;
|
||||||
|
if not Result then
|
||||||
|
exit;
|
||||||
|
|
||||||
|
Result := false;
|
||||||
|
|
||||||
|
if SigmaOpts.ItemIndex = -1 then
|
||||||
|
begin
|
||||||
|
AMsg := 'Number of sigma units for UCL and LCL not specified.';
|
||||||
|
AControl := SigmaOpts;
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
|
||||||
|
if SigmaOpts.ItemIndex = 3 then
|
||||||
|
begin
|
||||||
|
if (XSigmaEdit.Text = '') then
|
||||||
|
begin
|
||||||
|
AMsg := 'User-defined sigma units missing.';
|
||||||
|
AControl := XSigmaEdit;
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
if not TryStrToFloat(XSigmaEdit.Text, x) then
|
||||||
|
begin
|
||||||
|
AMsg := 'No valid number given for sser-defined sigma units.';
|
||||||
|
AControl := XSigmaEdit;
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
if UpperSpecChk.Checked then begin
|
||||||
|
if UpperSpecEdit.Text = '' then
|
||||||
|
begin
|
||||||
|
AMsg := 'Upper Spec Level missing.';
|
||||||
|
AControl := UpperSpecEdit;
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
if not TryStrToFloat(UpperSpecEdit.Text, x) then
|
||||||
|
begin
|
||||||
|
AMsg := 'Upper Spec Level is not a valid number.';
|
||||||
|
AControl := UpperSpecEdit;
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
if LowerSpecChk.Checked then begin
|
||||||
|
if LowerSpecEdit.Text = '' then
|
||||||
|
begin
|
||||||
|
AMsg := 'Lower Spec Level missing.';
|
||||||
|
AControl := LowerSpecEdit;
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
if not TryStrToFloat(LowerSpecEdit.Text, x) then
|
||||||
|
begin
|
||||||
|
AMsg := 'Lower Spec Level is not a valid number.';
|
||||||
|
AControl := LowerSpecEdit;
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
if TargetChk.Checked then begin
|
||||||
|
if TargetSpecEdit.Text = '' then
|
||||||
|
begin
|
||||||
|
AMsg := 'Target Spec Level missing.';
|
||||||
|
AControl := TargetSpecEdit;
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
if not TryStrToFloat(TargetSpecEdit.Text, x) then
|
||||||
|
begin
|
||||||
|
AMsg := 'Target Spec Level is not a valid number.';
|
||||||
|
AControl := TargetSpecEdit;
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
Result := true;
|
||||||
|
end;
|
||||||
|
|
||||||
|
end.
|
||||||
|
|
@@ -1,449 +0,0 @@
|
|||||||
object XBarFrm: TXBarFrm
|
|
||||||
Left = 591
|
|
||||||
Height = 426
|
|
||||||
Top = 279
|
|
||||||
Width = 1000
|
|
||||||
HelpType = htKeyword
|
|
||||||
HelpKeyword = 'html/XBarChart.htm'
|
|
||||||
Caption = 'X Bar Chart'
|
|
||||||
ClientHeight = 426
|
|
||||||
ClientWidth = 1000
|
|
||||||
OnActivate = FormActivate
|
|
||||||
OnCreate = FormCreate
|
|
||||||
OnShow = FormShow
|
|
||||||
Position = poMainFormCenter
|
|
||||||
LCLVersion = '2.1.0.0'
|
|
||||||
object SpecsPanel: TPanel
|
|
||||||
Left = 0
|
|
||||||
Height = 426
|
|
||||||
Top = 0
|
|
||||||
Width = 433
|
|
||||||
Align = alLeft
|
|
||||||
BorderSpacing.Right = 2
|
|
||||||
BevelOuter = bvNone
|
|
||||||
ClientHeight = 426
|
|
||||||
ClientWidth = 433
|
|
||||||
TabOrder = 0
|
|
||||||
object VarListLabel: TLabel
|
|
||||||
AnchorSideLeft.Control = SpecsPanel
|
|
||||||
AnchorSideTop.Control = SpecsPanel
|
|
||||||
Left = 8
|
|
||||||
Height = 15
|
|
||||||
Top = 8
|
|
||||||
Width = 97
|
|
||||||
BorderSpacing.Left = 8
|
|
||||||
BorderSpacing.Top = 8
|
|
||||||
Caption = 'Selection Variables'
|
|
||||||
ParentColor = False
|
|
||||||
end
|
|
||||||
object VarList: TListBox
|
|
||||||
AnchorSideLeft.Control = SpecsPanel
|
|
||||||
AnchorSideTop.Control = VarListLabel
|
|
||||||
AnchorSideTop.Side = asrBottom
|
|
||||||
AnchorSideRight.Control = SigmaOpts
|
|
||||||
AnchorSideBottom.Control = Bevel1
|
|
||||||
Left = 8
|
|
||||||
Height = 352
|
|
||||||
Top = 25
|
|
||||||
Width = 198
|
|
||||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
|
||||||
BorderSpacing.Left = 8
|
|
||||||
BorderSpacing.Top = 2
|
|
||||||
BorderSpacing.Right = 8
|
|
||||||
ItemHeight = 0
|
|
||||||
OnClick = VarListClick
|
|
||||||
TabOrder = 0
|
|
||||||
end
|
|
||||||
object SigmaOpts: TRadioGroup
|
|
||||||
AnchorSideLeft.Control = GroupBox1
|
|
||||||
AnchorSideTop.Control = Panel1
|
|
||||||
AnchorSideTop.Side = asrBottom
|
|
||||||
AnchorSideRight.Control = GroupBox1
|
|
||||||
AnchorSideRight.Side = asrBottom
|
|
||||||
Left = 214
|
|
||||||
Height = 128
|
|
||||||
Top = 108
|
|
||||||
Width = 219
|
|
||||||
Anchors = [akTop, akLeft, akRight]
|
|
||||||
AutoFill = True
|
|
||||||
BorderSpacing.Top = 12
|
|
||||||
Caption = 'No. of Sigma Units for UCL and LCL:'
|
|
||||||
ChildSizing.LeftRightSpacing = 12
|
|
||||||
ChildSizing.TopBottomSpacing = 6
|
|
||||||
ChildSizing.EnlargeHorizontal = crsHomogenousChildResize
|
|
||||||
ChildSizing.EnlargeVertical = crsHomogenousChildResize
|
|
||||||
ChildSizing.ShrinkHorizontal = crsScaleChilds
|
|
||||||
ChildSizing.ShrinkVertical = crsScaleChilds
|
|
||||||
ChildSizing.Layout = cclLeftToRightThenTopToBottom
|
|
||||||
ChildSizing.ControlsPerLine = 1
|
|
||||||
ClientHeight = 108
|
|
||||||
ClientWidth = 215
|
|
||||||
ItemIndex = 0
|
|
||||||
Items.Strings = (
|
|
||||||
'3 Sigma (default)'
|
|
||||||
'2 Sigma'
|
|
||||||
'1 Sigma'
|
|
||||||
'x Sigmas with x = '
|
|
||||||
)
|
|
||||||
TabOrder = 1
|
|
||||||
object XSigmaEdit: TEdit
|
|
||||||
AnchorSideRight.Control = SigmaOpts
|
|
||||||
AnchorSideRight.Side = asrBottom
|
|
||||||
AnchorSideBottom.Side = asrBottom
|
|
||||||
Left = 144
|
|
||||||
Height = 23
|
|
||||||
Top = 80
|
|
||||||
Width = 59
|
|
||||||
Alignment = taRightJustify
|
|
||||||
Anchors = [akLeft, akRight, akBottom]
|
|
||||||
TabOrder = 0
|
|
||||||
Text = 'XSigmaEdit'
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object GroupBox1: TGroupBox
|
|
||||||
AnchorSideTop.Control = SigmaOpts
|
|
||||||
AnchorSideTop.Side = asrBottom
|
|
||||||
AnchorSideRight.Control = SpecsPanel
|
|
||||||
AnchorSideRight.Side = asrBottom
|
|
||||||
Left = 214
|
|
||||||
Height = 126
|
|
||||||
Top = 248
|
|
||||||
Width = 219
|
|
||||||
Anchors = [akTop, akRight]
|
|
||||||
AutoSize = True
|
|
||||||
BorderSpacing.Top = 12
|
|
||||||
Caption = 'Show...'
|
|
||||||
ClientHeight = 106
|
|
||||||
ClientWidth = 215
|
|
||||||
TabOrder = 2
|
|
||||||
object UpSpecChk: TCheckBox
|
|
||||||
AnchorSideLeft.Control = GroupBox1
|
|
||||||
AnchorSideTop.Control = UpSpecEdit
|
|
||||||
AnchorSideTop.Side = asrCenter
|
|
||||||
Left = 12
|
|
||||||
Height = 19
|
|
||||||
Top = 2
|
|
||||||
Width = 116
|
|
||||||
BorderSpacing.Left = 12
|
|
||||||
Caption = 'Upper Spec. Level:'
|
|
||||||
TabOrder = 0
|
|
||||||
end
|
|
||||||
object LowSpecChk: TCheckBox
|
|
||||||
AnchorSideLeft.Control = GroupBox1
|
|
||||||
AnchorSideTop.Control = LowSpecEdit
|
|
||||||
AnchorSideTop.Side = asrCenter
|
|
||||||
Left = 12
|
|
||||||
Height = 19
|
|
||||||
Top = 29
|
|
||||||
Width = 113
|
|
||||||
BorderSpacing.Left = 12
|
|
||||||
Caption = 'Lower Spec. Level'
|
|
||||||
TabOrder = 2
|
|
||||||
end
|
|
||||||
object TargetChk: TCheckBox
|
|
||||||
AnchorSideLeft.Control = GroupBox1
|
|
||||||
AnchorSideTop.Control = TargetSpecEdit
|
|
||||||
AnchorSideTop.Side = asrCenter
|
|
||||||
Left = 12
|
|
||||||
Height = 19
|
|
||||||
Top = 56
|
|
||||||
Width = 124
|
|
||||||
BorderSpacing.Left = 12
|
|
||||||
BorderSpacing.Bottom = 6
|
|
||||||
Caption = 'Target Specification'
|
|
||||||
TabOrder = 4
|
|
||||||
end
|
|
||||||
object UpSpecEdit: TEdit
|
|
||||||
AnchorSideLeft.Control = TargetSpecEdit
|
|
||||||
AnchorSideTop.Control = GroupBox1
|
|
||||||
AnchorSideRight.Control = TargetSpecEdit
|
|
||||||
AnchorSideRight.Side = asrBottom
|
|
||||||
Left = 144
|
|
||||||
Height = 23
|
|
||||||
Top = 0
|
|
||||||
Width = 63
|
|
||||||
Alignment = taRightJustify
|
|
||||||
Anchors = [akTop, akLeft, akRight]
|
|
||||||
TabOrder = 1
|
|
||||||
Text = 'UpSpecEdit'
|
|
||||||
end
|
|
||||||
object LowSpecEdit: TEdit
|
|
||||||
AnchorSideLeft.Control = TargetSpecEdit
|
|
||||||
AnchorSideTop.Control = UpSpecEdit
|
|
||||||
AnchorSideTop.Side = asrBottom
|
|
||||||
AnchorSideRight.Control = TargetSpecEdit
|
|
||||||
AnchorSideRight.Side = asrBottom
|
|
||||||
Left = 144
|
|
||||||
Height = 23
|
|
||||||
Top = 27
|
|
||||||
Width = 63
|
|
||||||
Alignment = taRightJustify
|
|
||||||
Anchors = [akTop, akLeft, akRight]
|
|
||||||
BorderSpacing.Top = 4
|
|
||||||
TabOrder = 3
|
|
||||||
Text = 'Edit1'
|
|
||||||
end
|
|
||||||
object TargetSpecEdit: TEdit
|
|
||||||
AnchorSideLeft.Control = TargetChk
|
|
||||||
AnchorSideLeft.Side = asrBottom
|
|
||||||
AnchorSideTop.Control = LowSpecEdit
|
|
||||||
AnchorSideTop.Side = asrBottom
|
|
||||||
AnchorSideRight.Control = GroupBox1
|
|
||||||
AnchorSideRight.Side = asrBottom
|
|
||||||
Left = 144
|
|
||||||
Height = 23
|
|
||||||
Top = 54
|
|
||||||
Width = 63
|
|
||||||
Alignment = taRightJustify
|
|
||||||
BorderSpacing.Left = 8
|
|
||||||
BorderSpacing.Top = 4
|
|
||||||
BorderSpacing.Right = 8
|
|
||||||
TabOrder = 5
|
|
||||||
Text = 'Edit1'
|
|
||||||
end
|
|
||||||
object ErrorBarsChk: TCheckBox
|
|
||||||
AnchorSideLeft.Control = GroupBox1
|
|
||||||
AnchorSideTop.Control = TargetSpecEdit
|
|
||||||
AnchorSideTop.Side = asrBottom
|
|
||||||
Left = 12
|
|
||||||
Height = 19
|
|
||||||
Top = 81
|
|
||||||
Width = 70
|
|
||||||
BorderSpacing.Left = 12
|
|
||||||
BorderSpacing.Top = 4
|
|
||||||
BorderSpacing.Bottom = 6
|
|
||||||
Caption = 'Error Bars'
|
|
||||||
TabOrder = 6
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object Panel1: TPanel
|
|
||||||
AnchorSideLeft.Control = GroupBox1
|
|
||||||
AnchorSideRight.Control = GroupBox1
|
|
||||||
AnchorSideRight.Side = asrBottom
|
|
||||||
Left = 214
|
|
||||||
Height = 88
|
|
||||||
Top = 8
|
|
||||||
Width = 219
|
|
||||||
Anchors = [akTop, akLeft, akRight]
|
|
||||||
AutoSize = True
|
|
||||||
BorderSpacing.Top = 8
|
|
||||||
BevelOuter = bvNone
|
|
||||||
ClientHeight = 88
|
|
||||||
ClientWidth = 219
|
|
||||||
TabOrder = 3
|
|
||||||
object Label2: TLabel
|
|
||||||
AnchorSideLeft.Control = Panel1
|
|
||||||
AnchorSideTop.Control = Panel1
|
|
||||||
Left = 0
|
|
||||||
Height = 15
|
|
||||||
Top = 0
|
|
||||||
Width = 105
|
|
||||||
BorderSpacing.Bottom = 2
|
|
||||||
Caption = 'Group (Lot) Variable'
|
|
||||||
ParentColor = False
|
|
||||||
end
|
|
||||||
object Label3: TLabel
|
|
||||||
AnchorSideLeft.Control = Panel1
|
|
||||||
AnchorSideTop.Control = GroupEdit
|
|
||||||
AnchorSideTop.Side = asrBottom
|
|
||||||
Left = 0
|
|
||||||
Height = 15
|
|
||||||
Top = 48
|
|
||||||
Width = 117
|
|
||||||
BorderSpacing.Bottom = 2
|
|
||||||
Caption = 'Measurement Variable'
|
|
||||||
ParentColor = False
|
|
||||||
end
|
|
||||||
object GroupEdit: TEdit
|
|
||||||
AnchorSideLeft.Control = Panel1
|
|
||||||
AnchorSideTop.Control = Label2
|
|
||||||
AnchorSideTop.Side = asrBottom
|
|
||||||
AnchorSideRight.Control = Panel1
|
|
||||||
AnchorSideRight.Side = asrBottom
|
|
||||||
Left = 0
|
|
||||||
Height = 23
|
|
||||||
Top = 17
|
|
||||||
Width = 219
|
|
||||||
Anchors = [akTop, akLeft, akRight]
|
|
||||||
BorderSpacing.Top = 2
|
|
||||||
BorderSpacing.Bottom = 8
|
|
||||||
ReadOnly = True
|
|
||||||
TabOrder = 0
|
|
||||||
Text = 'GroupEdit'
|
|
||||||
end
|
|
||||||
object MeasEdit: TEdit
|
|
||||||
AnchorSideLeft.Control = Panel1
|
|
||||||
AnchorSideTop.Control = Label3
|
|
||||||
AnchorSideTop.Side = asrBottom
|
|
||||||
AnchorSideRight.Control = Panel1
|
|
||||||
AnchorSideRight.Side = asrBottom
|
|
||||||
Left = 0
|
|
||||||
Height = 23
|
|
||||||
Top = 65
|
|
||||||
Width = 219
|
|
||||||
Anchors = [akTop, akLeft, akRight]
|
|
||||||
BorderSpacing.Top = 2
|
|
||||||
ReadOnly = True
|
|
||||||
TabOrder = 1
|
|
||||||
Text = 'MeasEdit'
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object Bevel1: TBevel
|
|
||||||
AnchorSideLeft.Control = SpecsPanel
|
|
||||||
AnchorSideRight.Control = SpecsPanel
|
|
||||||
AnchorSideRight.Side = asrBottom
|
|
||||||
AnchorSideBottom.Control = CloseBtn
|
|
||||||
Left = 0
|
|
||||||
Height = 8
|
|
||||||
Top = 377
|
|
||||||
Width = 433
|
|
||||||
Anchors = [akLeft, akRight, akBottom]
|
|
||||||
Shape = bsBottomLine
|
|
||||||
end
|
|
||||||
object ResetBtn: TButton
|
|
||||||
AnchorSideTop.Control = CloseBtn
|
|
||||||
AnchorSideRight.Control = ComputeBtn
|
|
||||||
AnchorSideBottom.Side = asrBottom
|
|
||||||
Left = 232
|
|
||||||
Height = 25
|
|
||||||
Top = 393
|
|
||||||
Width = 54
|
|
||||||
Anchors = [akTop, akRight]
|
|
||||||
AutoSize = True
|
|
||||||
BorderSpacing.Right = 8
|
|
||||||
BorderSpacing.Bottom = 8
|
|
||||||
Caption = 'Reset'
|
|
||||||
OnClick = ResetBtnClick
|
|
||||||
TabOrder = 4
|
|
||||||
end
|
|
||||||
object ComputeBtn: TButton
|
|
||||||
AnchorSideTop.Control = CloseBtn
|
|
||||||
AnchorSideRight.Control = CloseBtn
|
|
||||||
AnchorSideBottom.Side = asrBottom
|
|
||||||
Left = 294
|
|
||||||
Height = 25
|
|
||||||
Top = 393
|
|
||||||
Width = 76
|
|
||||||
Anchors = [akTop, akRight]
|
|
||||||
AutoSize = True
|
|
||||||
BorderSpacing.Right = 8
|
|
||||||
BorderSpacing.Bottom = 8
|
|
||||||
Caption = 'Compute'
|
|
||||||
OnClick = ComputeBtnClick
|
|
||||||
TabOrder = 5
|
|
||||||
end
|
|
||||||
object CloseBtn: TButton
|
|
||||||
AnchorSideRight.Control = SpecsPanel
|
|
||||||
AnchorSideRight.Side = asrBottom
|
|
||||||
AnchorSideBottom.Side = asrBottom
|
|
||||||
Left = 378
|
|
||||||
Height = 25
|
|
||||||
Top = 393
|
|
||||||
Width = 55
|
|
||||||
Anchors = [akRight, akBottom]
|
|
||||||
AutoSize = True
|
|
||||||
BorderSpacing.Left = 8
|
|
||||||
BorderSpacing.Top = 8
|
|
||||||
BorderSpacing.Bottom = 8
|
|
||||||
Caption = 'Close'
|
|
||||||
ModalResult = 11
|
|
||||||
TabOrder = 6
|
|
||||||
end
|
|
||||||
object HelpBtn: TButton
|
|
||||||
Tag = 159
|
|
||||||
AnchorSideTop.Control = CloseBtn
|
|
||||||
AnchorSideRight.Control = ResetBtn
|
|
||||||
AnchorSideBottom.Side = asrBottom
|
|
||||||
Left = 173
|
|
||||||
Height = 25
|
|
||||||
Top = 393
|
|
||||||
Width = 51
|
|
||||||
Anchors = [akTop, akRight]
|
|
||||||
AutoSize = True
|
|
||||||
BorderSpacing.Left = 8
|
|
||||||
BorderSpacing.Right = 8
|
|
||||||
BorderSpacing.Bottom = 8
|
|
||||||
Caption = 'Help'
|
|
||||||
OnClick = HelpBtnClick
|
|
||||||
TabOrder = 7
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object Splitter1: TSplitter
|
|
||||||
Left = 435
|
|
||||||
Height = 426
|
|
||||||
Top = 0
|
|
||||||
Width = 5
|
|
||||||
ResizeStyle = rsPattern
|
|
||||||
end
|
|
||||||
object PageControl: TPageControl
|
|
||||||
Left = 442
|
|
||||||
Height = 414
|
|
||||||
Top = 6
|
|
||||||
Width = 552
|
|
||||||
ActivePage = ChartPage
|
|
||||||
Align = alClient
|
|
||||||
BorderSpacing.Left = 2
|
|
||||||
BorderSpacing.Top = 6
|
|
||||||
BorderSpacing.Right = 6
|
|
||||||
BorderSpacing.Bottom = 6
|
|
||||||
TabIndex = 1
|
|
||||||
TabOrder = 2
|
|
||||||
object ReportPage: TTabSheet
|
|
||||||
Caption = 'Report'
|
|
||||||
ClientHeight = 386
|
|
||||||
ClientWidth = 544
|
|
||||||
object ReportMemo: TMemo
|
|
||||||
Left = 6
|
|
||||||
Height = 374
|
|
||||||
Top = 6
|
|
||||||
Width = 532
|
|
||||||
Align = alClient
|
|
||||||
BorderSpacing.Around = 6
|
|
||||||
Font.CharSet = ANSI_CHARSET
|
|
||||||
Font.Height = -11
|
|
||||||
Font.Name = 'Courier New'
|
|
||||||
Font.Pitch = fpFixed
|
|
||||||
Font.Quality = fqDraft
|
|
||||||
ParentFont = False
|
|
||||||
TabOrder = 0
|
|
||||||
end
|
|
||||||
end
|
|
||||||
object ChartPage: TTabSheet
|
|
||||||
Caption = 'Chart'
|
|
||||||
ClientHeight = 386
|
|
||||||
ClientWidth = 544
|
|
||||||
object ToolBar1: TToolBar
|
|
||||||
Left = 514
|
|
||||||
Height = 374
|
|
||||||
Top = 6
|
|
||||||
Width = 24
|
|
||||||
Align = alRight
|
|
||||||
AutoSize = True
|
|
||||||
BorderSpacing.Top = 6
|
|
||||||
BorderSpacing.Right = 6
|
|
||||||
BorderSpacing.Bottom = 6
|
|
||||||
Caption = 'ToolBar1'
|
|
||||||
EdgeBorders = []
|
|
||||||
Images = MainDataModule.ImageList
|
|
||||||
TabOrder = 0
|
|
||||||
Transparent = True
|
|
||||||
object tbSave: TToolButton
|
|
||||||
Left = 1
|
|
||||||
Hint = 'Save chart to file'
|
|
||||||
Top = 0
|
|
||||||
Caption = 'tbSave'
|
|
||||||
ImageIndex = 4
|
|
||||||
OnClick = tbSaveClick
|
|
||||||
end
|
|
||||||
object tbPrint: TToolButton
|
|
||||||
Left = 1
|
|
||||||
Hint = 'Print chart'
|
|
||||||
Top = 22
|
|
||||||
Caption = 'tbPrint'
|
|
||||||
ImageIndex = 5
|
|
||||||
OnClick = tbPrintClick
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
@@ -1,674 +0,0 @@
|
|||||||
// Use file "boltsize.laz" for testing
|
|
||||||
// Group Variable --> LotNo
|
|
||||||
// Selected Variable --> BoltLength
|
|
||||||
// Upper Spec Level --> 20.05
|
|
||||||
// Lower Spec Level --> 19.95
|
|
||||||
// Target Spec --> 20.00
|
|
||||||
|
|
||||||
unit XBarUnit;
|
|
||||||
|
|
||||||
{$mode objfpc}{$H+}
|
|
||||||
{$include ../../../LazStats.inc}
|
|
||||||
|
|
||||||
interface
|
|
||||||
|
|
||||||
uses
|
|
||||||
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
|
|
||||||
StdCtrls, ExtCtrls, Buttons, ComCtrls,
|
|
||||||
MainUnit, Globals, ContextHelpUnit, DataProcs, GraphLib,
|
|
||||||
{$IFDEF USE_TACHART}
|
|
||||||
TAChartUtils, TASources, TACustomSeries, TASeries, TALegend, TAChartAxisUtils,
|
|
||||||
ChartFrameUnit;
|
|
||||||
{$ELSE}
|
|
||||||
OutputUnit, BlankFrmUnit;
|
|
||||||
{$ENDIF}
|
|
||||||
|
|
||||||
type
|
|
||||||
|
|
||||||
{ TXBarFrm }
|
|
||||||
|
|
||||||
TXBarFrm = class(TForm)
|
|
||||||
Bevel1: TBevel;
|
|
||||||
ErrorBarsChk: TCheckBox;
|
|
||||||
HelpBtn: TButton;
|
|
||||||
ReportMemo: TMemo;
|
|
||||||
PageControl: TPageControl;
|
|
||||||
Panel1: TPanel;
|
|
||||||
SpecsPanel: TPanel;
|
|
||||||
ResetBtn: TButton;
|
|
||||||
ComputeBtn: TButton;
|
|
||||||
CloseBtn: TButton;
|
|
||||||
Splitter1: TSplitter;
|
|
||||||
ReportPage: TTabSheet;
|
|
||||||
ChartPage: TTabSheet;
|
|
||||||
tbPrint: TToolButton;
|
|
||||||
tbSave: TToolButton;
|
|
||||||
ToolBar1: TToolBar;
|
|
||||||
UpSpecEdit: TEdit;
|
|
||||||
LowSpecEdit: TEdit;
|
|
||||||
TargetSpecEdit: TEdit;
|
|
||||||
UpSpecChk: TCheckBox;
|
|
||||||
LowSpecChk: TCheckBox;
|
|
||||||
TargetChk: TCheckBox;
|
|
||||||
GroupBox1: TGroupBox;
|
|
||||||
XSigmaEdit: TEdit;
|
|
||||||
GroupEdit: TEdit;
|
|
||||||
MeasEdit: TEdit;
|
|
||||||
VarListLabel: TLabel;
|
|
||||||
Label2: TLabel;
|
|
||||||
Label3: TLabel;
|
|
||||||
SigmaOpts: TRadioGroup;
|
|
||||||
VarList: TListBox;
|
|
||||||
procedure ComputeBtnClick(Sender: TObject);
|
|
||||||
procedure FormActivate(Sender: TObject);
|
|
||||||
procedure FormCreate(Sender: TObject);
|
|
||||||
procedure FormShow(Sender: TObject);
|
|
||||||
procedure HelpBtnClick(Sender: TObject);
|
|
||||||
procedure ResetBtnClick(Sender: TObject);
|
|
||||||
procedure tbPrintClick(Sender: TObject);
|
|
||||||
procedure tbSaveClick(Sender: TObject);
|
|
||||||
procedure VarListClick(Sender: TObject);
|
|
||||||
private
|
|
||||||
{ private declarations }
|
|
||||||
{$IFDEF USE_TACHART}
|
|
||||||
FChartFrame: TChartFrame;
|
|
||||||
{$ENDIF}
|
|
||||||
// FAutoSized: Boolean;
|
|
||||||
procedure PlotMeans(const Groups: StrDyneVec; const Means, StdDevs: DblDyneVec;
|
|
||||||
UCL, LCL, GrandMean, TargetSpec, LowerSpec, UpperSpec: double);
|
|
||||||
function Validate(out AMsg: String; out AControl: TWinControl): Boolean;
|
|
||||||
public
|
|
||||||
{ public declarations }
|
|
||||||
end;
|
|
||||||
|
|
||||||
var
|
|
||||||
XBarFrm: TXBarFrm;
|
|
||||||
|
|
||||||
implementation
|
|
||||||
|
|
||||||
uses
|
|
||||||
Math,
|
|
||||||
Utils;
|
|
||||||
|
|
||||||
{ TXBarFrm }
|
|
||||||
|
|
||||||
procedure TXBarFrm.ResetBtnClick(Sender: TObject);
|
|
||||||
var
|
|
||||||
i : integer;
|
|
||||||
begin
|
|
||||||
VarList.Clear;
|
|
||||||
GroupEdit.Text := '';
|
|
||||||
MeasEdit.Text := '';
|
|
||||||
UpSpecEdit.Text := '';
|
|
||||||
LowSpecEdit.Text := '';
|
|
||||||
TargetSpecEdit.Text := '';
|
|
||||||
XSigmaEdit.Text := '';
|
|
||||||
UpSpecChk.Checked := false;
|
|
||||||
LowSpecChk.Checked := false;
|
|
||||||
TargetChk.Checked := false;
|
|
||||||
for i := 1 to NoVariables do
|
|
||||||
VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]);
|
|
||||||
{$IFDEF USE_TACHART}
|
|
||||||
FChartFrame.Clear;
|
|
||||||
{$ENDIF}
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TXBarFrm.tbPrintClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
FChartFrame.Print;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TXBarFrm.tbSaveClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
FChartFrame.Save;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TXBarFrm.VarListClick(Sender: TObject);
|
|
||||||
var
|
|
||||||
index: integer;
|
|
||||||
begin
|
|
||||||
index := VarList.ItemIndex;
|
|
||||||
if index > -1 then
|
|
||||||
begin
|
|
||||||
if GroupEdit.Text = '' then
|
|
||||||
GroupEdit.Text := VarList.Items[index]
|
|
||||||
else
|
|
||||||
MeasEdit.Text := VarList.Items[index];
|
|
||||||
VarList.Items.Delete(index);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TXBarFrm.HelpBtnClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
if ContextHelpForm = nil then
|
|
||||||
Application.CreateForm(TContextHelpForm, ContextHelpForm);
|
|
||||||
ContextHelpForm.HelpMessage((Sender as TButton).tag);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TXBarFrm.ComputeBtnClick(Sender: TObject);
|
|
||||||
var
|
|
||||||
i, GrpVar, MeasVar, grpIndex: integer;
|
|
||||||
X, UCL, LCL, Sigma, UpperSpec, LowerSpec, TargetSpec: double;
|
|
||||||
GrandMean, GrandSD, semean: double;
|
|
||||||
grp: String;
|
|
||||||
numGrps: Integer;
|
|
||||||
groups: StrDyneVec = nil;
|
|
||||||
means: DblDyneVec = nil;
|
|
||||||
stddev: DblDyneVec = nil;
|
|
||||||
count: IntDyneVec = nil;
|
|
||||||
cellstring: string;
|
|
||||||
ColNoSelected: IntDyneVec = nil;
|
|
||||||
NoSelected: integer;
|
|
||||||
msg: String;
|
|
||||||
C: TWinControl;
|
|
||||||
lReport: TStrings;
|
|
||||||
begin
|
|
||||||
if not Validate(msg, C) then begin
|
|
||||||
C.SetFocus;
|
|
||||||
MessageDlg(msg, mtError, [mbOK], 0);
|
|
||||||
exit;
|
|
||||||
end;
|
|
||||||
|
|
||||||
SetLength(ColNoSelected, NoVariables);
|
|
||||||
|
|
||||||
GrpVar := 1;
|
|
||||||
MeasVar := 2;
|
|
||||||
Sigma := 3.0;
|
|
||||||
UpperSpec := 0.0;
|
|
||||||
LowerSpec := 0.0;
|
|
||||||
TargetSpec := 0.0;
|
|
||||||
for i := 1 to NoVariables do
|
|
||||||
begin
|
|
||||||
cellstring := OS3MainFrm.DataGrid.Cells[i,0];
|
|
||||||
if cellstring = GroupEdit.Text then GrpVar := i;
|
|
||||||
if cellstring = MeasEdit.Text then MeasVar := i;
|
|
||||||
end;
|
|
||||||
ColNoSelected[0] := MeasVar;
|
|
||||||
ColNoSelected[1] := GrpVar;
|
|
||||||
NoSelected := 2;
|
|
||||||
|
|
||||||
if UpSpecEdit.Text <> '' then UpperSpec := StrToFloat(UpSpecEdit.Text);
|
|
||||||
if LowSpecEdit.Text <> '' then LowerSpec := StrToFloat(LowSpecEdit.Text);
|
|
||||||
if TargetSpecEdit.Text <> '' then TargetSpec := StrToFloat(TargetSpecEdit.Text);
|
|
||||||
|
|
||||||
case SigmaOpts.ItemIndex of
|
|
||||||
0: Sigma := 3.0;
|
|
||||||
1: Sigma := 2.0;
|
|
||||||
2: Sigma := 1.0;
|
|
||||||
3: Sigma := StrToFloat(XSigmaEdit.Text);
|
|
||||||
end;
|
|
||||||
|
|
||||||
numGrps := 0;
|
|
||||||
SetLength(groups, NoCases);
|
|
||||||
for i := 1 to NoCases do
|
|
||||||
begin
|
|
||||||
if not GoodRecord(i, NoSelected, ColNoSelected) then continue;
|
|
||||||
grp := Trim(OS3MainFrm.DataGrid.Cells[GrpVar, i]);
|
|
||||||
if IndexOfString(groups, grp) = -1 then
|
|
||||||
begin
|
|
||||||
groups[numGrps] := grp;
|
|
||||||
inc(numGrps);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
SetLength(groups, numGrps);
|
|
||||||
SetLength(means, numGrps);
|
|
||||||
SetLength(count, numGrps);
|
|
||||||
SetLength(stddev, numGrps);
|
|
||||||
semean := 0.0;
|
|
||||||
GrandMean := 0.0;
|
|
||||||
|
|
||||||
// calculate group means, grand mean, group sd's, semeans
|
|
||||||
for i := 1 to NoCases do
|
|
||||||
begin
|
|
||||||
if not GoodRecord(i, NoSelected, ColNoSelected) then continue;
|
|
||||||
grp := Trim(OS3MainFrm.DataGrid.cells[GrpVar, i]);
|
|
||||||
grpIndex := IndexOfString(groups, grp);
|
|
||||||
X := StrToFloat(Trim(OS3MainFrm.DataGrid.Cells[MeasVar, i]));
|
|
||||||
means[grpIndex] := means[grpIndex] + X;
|
|
||||||
count[grpIndex] := count[grpIndex] + 1;
|
|
||||||
stddev[grpIndex] := stddev[grpIndex] + sqr(X);
|
|
||||||
semean := semean + sqr(X);
|
|
||||||
GrandMean := GrandMean + X;
|
|
||||||
end;
|
|
||||||
|
|
||||||
for i := 0 to numGrps-1 do
|
|
||||||
begin
|
|
||||||
if count[i] = 0 then
|
|
||||||
begin
|
|
||||||
means[i] := NaN;
|
|
||||||
stddev[i] := NaN;
|
|
||||||
end else
|
|
||||||
begin
|
|
||||||
if count[i] = 1 then
|
|
||||||
stddev[i] := NaN
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
stddev[i] := stddev[i] - sqr(means[i]) / count[i];
|
|
||||||
stddev[i] := stddev[i] / (count[i] - 1);
|
|
||||||
stddev[i] := sqrt(stddev[i]);
|
|
||||||
end;
|
|
||||||
means[i] := means[i] / count[i];
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
semean := semean - sqr(GrandMean) / NoCases;
|
|
||||||
semean := sqrt(semean / (NoCases - 1));
|
|
||||||
GrandSD := semean;
|
|
||||||
semean := semean / sqrt(NoCases);
|
|
||||||
GrandMean := GrandMean / NoCases;
|
|
||||||
UCL := GrandMean + Sigma * semean;
|
|
||||||
LCL := GrandMean - Sigma * semean;
|
|
||||||
|
|
||||||
// printed results
|
|
||||||
lReport := TStringList.Create;
|
|
||||||
try
|
|
||||||
lReport.Add('X BAR CHART RESULTS');
|
|
||||||
lReport.Add('');
|
|
||||||
lReport.Add('Group Size Mean Std.Dev.');
|
|
||||||
lReport.Add('----- ---- --------- ----------');
|
|
||||||
for i := 0 to numGrps-1 do
|
|
||||||
lReport.Add('%5s %4d %9.2f %9.2f', [groups[i], count[i], means[i], stddev[i]]);
|
|
||||||
lReport.Add('');
|
|
||||||
lReport.Add('Grand Mean: %8.3f', [GrandMean]);
|
|
||||||
lReport.Add('Standard Deviation: %8.3f', [GrandSD]);
|
|
||||||
lReport.Add('Standard Error of Mean: %8.3f', [semean]);
|
|
||||||
lReport.Add('');
|
|
||||||
lReport.Add('Lower Control Limit: %8.3f', [LCL]);
|
|
||||||
lReport.Add('Upper Control Limit: %8.3f', [UCL]);
|
|
||||||
|
|
||||||
{$IFDEF USE_TACHART}
|
|
||||||
ReportMemo.Lines.Assign(lReport);
|
|
||||||
{$ELSE}
|
|
||||||
DisplayReport(lReport);
|
|
||||||
{$ENDIF}
|
|
||||||
finally
|
|
||||||
lReport.Free;
|
|
||||||
end;
|
|
||||||
|
|
||||||
// show graph
|
|
||||||
{$IFNDEF USE_TACHART}
|
|
||||||
BlankFrm.Image1.Canvas.Clear;
|
|
||||||
BlankFrm.Show;
|
|
||||||
{$ENDIF}
|
|
||||||
if not ErrorBarsChk.Checked then stddev := nil;
|
|
||||||
PlotMeans(groups, means, stddev, UCL, LCL, GrandMean, TargetSpec, LowerSpec, UpperSpec);
|
|
||||||
|
|
||||||
// Clean up
|
|
||||||
stddev := nil;
|
|
||||||
count := nil;
|
|
||||||
means := nil;
|
|
||||||
groups := nil;
|
|
||||||
ColNoSelected := nil;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TXBarFrm.FormActivate(Sender: TObject);
|
|
||||||
var
|
|
||||||
w: Integer;
|
|
||||||
begin
|
|
||||||
{
|
|
||||||
if FAutoSized then
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
w := MaxValue([HelpBtn.Width, ResetBtn.Width, ComputeBtn.Width, CloseBtn.Width]);
|
|
||||||
HelpBtn.Constraints.MinWidth := w;
|
|
||||||
ResetBtn.Constraints.MinWidth := w;
|
|
||||||
ComputeBtn.Constraints.MinWidth := w;
|
|
||||||
CloseBtn.Constraints.MinWidth := w;
|
|
||||||
|
|
||||||
VarList.Constraints.MinWidth := VarListLabel.Width;
|
|
||||||
SpecsPanel.Constraints.MinWidth := VarListLabel.Left + VarListLabel.Width + VarList.BorderSpacing.Right + GroupBox1.Width;
|
|
||||||
// VarList.Constraints.MinHeight := GroupBox1.Top + GroupBox1.Height - VarList.Top;
|
|
||||||
// SpecsPanel.Constraints.MinWidth := SpecsPanel.Width;
|
|
||||||
// PageControl.Constraints.MinWidth := SpecsPanel.Width ;
|
|
||||||
|
|
||||||
//AutoSize := false;
|
|
||||||
Constraints.MinHeight := GroupBox1.Top + GroupBox1.Height + Bevel1.Height + CloseBtn.Height + CloseBtn.BorderSpacing.Top * 2; // Height;
|
|
||||||
//Constraints.MinWidth := Width;
|
|
||||||
|
|
||||||
// FAutoSized := true;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TXBarFrm.FormCreate(Sender: TObject);
|
|
||||||
begin
|
|
||||||
Assert(OS3MainFrm <> nil);
|
|
||||||
{$IFDEF USE_TACHART}
|
|
||||||
FChartFrame := TChartFrame.Create(self);
|
|
||||||
FChartFrame.Parent := ChartPage;
|
|
||||||
FChartFrame.Align := alClient;
|
|
||||||
FChartFrame.BorderSpacing.Around := Scale96ToFont(8);
|
|
||||||
FChartFrame.Chart.Legend.SymbolWidth := Scale96ToFont(30);
|
|
||||||
FChartFrame.Chart.Legend.Alignment := laBottomCenter;
|
|
||||||
FChartFrame.Chart.Legend.ColumnCount := 3;
|
|
||||||
FChartFrame.Chart.Title.TextFormat := tfHtml;
|
|
||||||
with FChartFrame.Chart.AxisList.Add do
|
|
||||||
begin
|
|
||||||
Alignment := calRight;
|
|
||||||
Marks.Source := TListChartSource.Create(self);
|
|
||||||
Marks.Style := smsLabel;
|
|
||||||
end;
|
|
||||||
{$ELSE}
|
|
||||||
if BlankFrm = nil then
|
|
||||||
Application.CreateForm(TBlankFrm, BlankFrm);
|
|
||||||
{$ENDIF}
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TXBarFrm.FormShow(Sender: TObject);
|
|
||||||
begin
|
|
||||||
ResetBtnClick(self);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TXBarFrm.PlotMeans(const Groups: StrDyneVec; const Means, StdDevs: DblDyneVec;
|
|
||||||
UCL, LCL, GrandMean, TargetSpec, LowerSpec, UpperSpec: double);
|
|
||||||
const
|
|
||||||
TARGET_COLOR = clBlue;
|
|
||||||
CL_COLOR = clRed;
|
|
||||||
SPEC_COLOR = clGreen;
|
|
||||||
CL_STYLE = psDash;
|
|
||||||
SPEC_STYLE = psSolid;
|
|
||||||
var
|
|
||||||
fn: String;
|
|
||||||
{$IFDEF USE_TACHART}
|
|
||||||
ser: TChartSeries;
|
|
||||||
rightLabels: TListChartSource;
|
|
||||||
constLine: TConstantLine;
|
|
||||||
s: String;
|
|
||||||
{$ELSE}
|
|
||||||
i: Integer;
|
|
||||||
xpos, ypos, hleft, hright, vtop, vbottom, imagewide: integer;
|
|
||||||
maxVal, minVal: Double;
|
|
||||||
NoGrps, vhi, hwide, offset, strhi: integer;
|
|
||||||
imagehi, valincr, Yvalue: double;
|
|
||||||
title: String;
|
|
||||||
{$ENDIF}
|
|
||||||
begin
|
|
||||||
fn := ExtractFileName(OS3MainFrm.FileNameEdit.Text);
|
|
||||||
{$IFDEF USE_TACHART}
|
|
||||||
rightLabels := FChartFrame.Chart.AxisList[2].Marks.Source as TListChartSource;
|
|
||||||
|
|
||||||
FChartFrame.Clear;
|
|
||||||
FChartFrame.SetTitle(Format('x̄ chart for "%s"', [fn]));
|
|
||||||
FChartFrame.SetXTitle(GroupEdit.Text);
|
|
||||||
FChartFrame.SetYTitle(MeasEdit.Text);
|
|
||||||
|
|
||||||
ser := FChartFrame.PlotXY(ptSymbols, nil, Means, Groups, StdDevs, 'Group means', clBlack);
|
|
||||||
FChartFrame.Chart.BottomAxis.Marks.Source := ser.Source;
|
|
||||||
FChartFrame.Chart.BottomAxis.Marks.style := smsLabel;
|
|
||||||
|
|
||||||
FChartFrame.HorLine(GrandMean, clRed, psSolid, 'Grand mean');
|
|
||||||
rightLabels.Add(GrandMean, GrandMean, 'Grand mean');
|
|
||||||
|
|
||||||
FChartFrame.HorLine(UCL, CL_COLOR, CL_STYLE, 'UCL/LCL');
|
|
||||||
rightLabels.Add(UCL, UCL, 'UCL');
|
|
||||||
|
|
||||||
FChartFrame.HorLine(LCL, CL_COLOR, CL_STYLE, '');
|
|
||||||
rightLabels.Add(UCL, LCL, 'LCL');
|
|
||||||
|
|
||||||
if UpSpecChk.Checked then
|
|
||||||
begin
|
|
||||||
if LowSpecChk.Checked then
|
|
||||||
s := 'Upper/Lower Spec'
|
|
||||||
else
|
|
||||||
s := 'Upper Spec';
|
|
||||||
FChartFrame.HorLine(UpperSpec, SPEC_COLOR, SPEC_STYLE, s);
|
|
||||||
rightLabels.Add(UpperSpec, UpperSpec, 'Upper Spec');
|
|
||||||
end;
|
|
||||||
|
|
||||||
if TargetChk.Checked then begin
|
|
||||||
FChartFrame.HorLine(TargetSpec, TARGET_COLOR, psSolid, 'Target');
|
|
||||||
rightLabels.Add(TargetSpec, TargetSpec, 'Target');
|
|
||||||
end;
|
|
||||||
|
|
||||||
if LowSpecChk.Checked then
|
|
||||||
begin
|
|
||||||
if UpSpecChk.Checked then
|
|
||||||
s := 'Upper/Lower Spec'
|
|
||||||
else
|
|
||||||
s := 'Lower Spec';
|
|
||||||
constLine := FChartFrame.HorLine(LowerSpec, SPEC_COLOR, SPEC_STYLE, s);
|
|
||||||
constLine.Legend.Visible := not UpSpecChk.Checked;
|
|
||||||
rightLabels.Add(LowerSpec, LowerSpec, 'Lower Spec');
|
|
||||||
end;
|
|
||||||
{$ELSE}
|
|
||||||
NoGrps := Length(groups);
|
|
||||||
maxval := -Infinity;
|
|
||||||
minval := Infinity;
|
|
||||||
for i := 0 to NoGrps-1 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;
|
|
||||||
if UpSpecChk.Checked and (UpperSpec > maxval) then maxval := UpperSpec;
|
|
||||||
if LowSpecChk.Checked and (LowerSpec < minval) then minval := LowerSpec;
|
|
||||||
if TargetChk.Checked then
|
|
||||||
begin
|
|
||||||
if TargetSpec > maxval then maxval := TargetSpec;
|
|
||||||
if TargetSpec < minval then minval := TargetSpec;
|
|
||||||
end;
|
|
||||||
|
|
||||||
BlankFrm.Caption := 'XBAR CHART FOR ' + fn;
|
|
||||||
imagewide := BlankFrm.Image1.Width;
|
|
||||||
imagehi := BlankFrm.Image1.Height;
|
|
||||||
vtop := 20;
|
|
||||||
vbottom := round(imagehi) - 80;
|
|
||||||
vhi := vbottom - vtop;
|
|
||||||
hleft := 100;
|
|
||||||
hright := imagewide - 100;
|
|
||||||
hwide := hright - hleft;
|
|
||||||
|
|
||||||
// Draw outer background
|
|
||||||
BlankFrm.Image1.Canvas.Brush.Color := clLtGray;
|
|
||||||
BlankFrm.Image1.Canvas.FillRect(0, 0, BlankFrm.Image1.Width, BlankFrm.Image1.Height);
|
|
||||||
|
|
||||||
// Draw chart border and inner background
|
|
||||||
BlankFrm.Image1.Canvas.Pen.Color := clBlack;
|
|
||||||
BlankFrm.Image1.Canvas.Brush.Color := clWhite;
|
|
||||||
BlankFrm.Image1.Canvas.Rectangle(hleft,vtop-10,hleft+hwide,vtop+vhi+10);
|
|
||||||
|
|
||||||
// Draw Grand Mean
|
|
||||||
xpos := hright + 10;
|
|
||||||
ypos := round(vhi * ( (maxval - GrandMean) / (maxval - minval)));
|
|
||||||
ypos := ypos + vtop;
|
|
||||||
BlankFrm.Image1.Canvas.Pen.Color := clRed;
|
|
||||||
BlankFrm.Image1.Canvas.Line(hLeft, ypos, hright, ypos);
|
|
||||||
title := 'MEAN';
|
|
||||||
strhi := BlankFrm.Image1.Canvas.TextHeight(title);
|
|
||||||
BlankFrm.Image1.Canvas.Brush.Style := bsClear;
|
|
||||||
BlankFrm.Image1.Canvas.TextOut(xpos, ypos - strhi div 2, title);
|
|
||||||
|
|
||||||
// draw horizontal axis
|
|
||||||
//BlankFrm.Image1.Canvas.Line(hleft, vbottom + 20, hright, vbottom + 20);
|
|
||||||
BlankFrm.Image1.Canvas.Pen.Color := clBlack;
|
|
||||||
for i := 1 to NoGrps do
|
|
||||||
begin
|
|
||||||
ypos := vbottom + 10;
|
|
||||||
xpos := round(hwide / NoGrps * i + hleft);
|
|
||||||
BlankFrm.Image1.Canvas.Line(xpos, ypos, xpos, ypos + 10);
|
|
||||||
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.TextOut(xpos, ypos, title);
|
|
||||||
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('%.2f', [maxval - (i - 1) * valincr]);
|
|
||||||
strhi := BlankFrm.Image1.Canvas.TextHeight(title);
|
|
||||||
Yvalue := maxval - valincr * (i - 1);
|
|
||||||
ypos := vtop + round(vhi * (maxval - Yvalue) / (maxval - minval));
|
|
||||||
BlankFrm.Image1.Canvas.Line(hleft, ypos, hleft-10, ypos);
|
|
||||||
xpos := hleft - 20 - BlankFrm.Image1.Canvas.TextWidth(title);;
|
|
||||||
BlankFrm.Image1.Canvas.TextOut(xpos, ypos - strhi div 2, title);
|
|
||||||
end;
|
|
||||||
|
|
||||||
// draw lines for means of the groups
|
|
||||||
ypos := round(vhi * (maxval - means[0]) / (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-1]) / (maxval - minval));
|
|
||||||
ypos := ypos + vtop;
|
|
||||||
xpos := round(hwide/NoGrps* i + hleft);
|
|
||||||
BlankFrm.Image1.Canvas.LineTo(xpos, ypos);
|
|
||||||
end;
|
|
||||||
|
|
||||||
// Draw upper and lower confidence intervals
|
|
||||||
xpos := hright + 10;
|
|
||||||
ypos := round(vhi * (maxval - UCL) / (maxval - minval));
|
|
||||||
ypos := ypos + vtop;
|
|
||||||
BlankFrm.Image1.Canvas.Pen.Style := CL_STYLE;
|
|
||||||
BlankFrm.Image1.Canvas.Pen.Color := CL_COLOR;
|
|
||||||
BlankFrm.Image1.Canvas.Line(hleft, ypos, hright, 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;
|
|
||||||
BlankFrm.Image1.Canvas.Pen.Color := CL_COLOR;
|
|
||||||
BlankFrm.Image1.Canvas.Line(hleft, ypos, hright, ypos);
|
|
||||||
title := 'LCL';
|
|
||||||
strhi := BlankFrm.Image1.Canvas.TextHeight(title);
|
|
||||||
ypos := ypos - strhi div 2;
|
|
||||||
BlankFrm.Image1.Canvas.TextOut(xpos, ypos, title);
|
|
||||||
|
|
||||||
// Draw lines for specified values
|
|
||||||
if UpSpecChk.Checked then
|
|
||||||
begin
|
|
||||||
ypos := round(vhi * (maxval - UpperSpec) / (maxval - minval));
|
|
||||||
ypos := ypos + vtop;
|
|
||||||
BlankFrm.Image1.Canvas.Pen.Color := SPEC_COLOR;
|
|
||||||
BlankFrm.Image1.Canvas.Pen.Style := SPEC_STYLE;
|
|
||||||
BlankFrm.Image1.Canvas.Line(hleft, ypos, hright, ypos);
|
|
||||||
title := 'UPPER SPEC';
|
|
||||||
strhi := BlankFrm.Image1.Canvas.TextHeight(title);
|
|
||||||
ypos := ypos - strhi div 2;
|
|
||||||
BlankFrm.Image1.Canvas.TextOut(xpos, ypos, title);
|
|
||||||
end;
|
|
||||||
if LowSpecChk.Checked then
|
|
||||||
begin
|
|
||||||
ypos := round(vhi * (maxval - LowerSpec) / (maxval - minval));
|
|
||||||
ypos := ypos + vtop;
|
|
||||||
BlankFrm.Image1.Canvas.Pen.Color := SPEC_COLOR;
|
|
||||||
BlankFrm.Image1.Canvas.Line(hleft, ypos, hright, ypos);
|
|
||||||
title := 'LOWER SPEC';
|
|
||||||
strhi := BlankFrm.Image1.Canvas.TextHeight(title);
|
|
||||||
ypos := ypos - strhi div 2;
|
|
||||||
BlankFrm.Image1.Canvas.TextOut(xpos, ypos, title);
|
|
||||||
end;
|
|
||||||
if TargetChk.Checked then
|
|
||||||
begin
|
|
||||||
ypos := round(vhi * (maxval - TargetSpec) / (maxval - minval));
|
|
||||||
ypos := ypos + vtop;
|
|
||||||
BlankFrm.Image1.Canvas.Pen.Color := TARGET_COLOR;
|
|
||||||
BlankFrm.Image1.Canvas.Line(hleft, ypos, hright, ypos);
|
|
||||||
title := 'TARGET';
|
|
||||||
strhi := BlankFrm.Image1.Canvas.TextHeight(title);
|
|
||||||
ypos := ypos - strhi div 2;
|
|
||||||
BlankFrm.Image1.Canvas.TextOut(xpos, ypos, title);
|
|
||||||
end;
|
|
||||||
{$ENDIF}
|
|
||||||
end;
|
|
||||||
|
|
||||||
function TXBarFrm.Validate(out AMsg: String; out AControl: TWinControl): Boolean;
|
|
||||||
var
|
|
||||||
x: Double;
|
|
||||||
begin
|
|
||||||
Result := false;
|
|
||||||
if GroupEdit.Text = '' then begin
|
|
||||||
AMsg := 'Group variable not specified.';
|
|
||||||
AControl := GroupEdit;
|
|
||||||
exit;
|
|
||||||
end;
|
|
||||||
if MeasEdit.Text = '' then
|
|
||||||
begin
|
|
||||||
AMsg := 'Measurement variable not specified.';
|
|
||||||
AControl := MeasEdit;
|
|
||||||
exit;
|
|
||||||
end;
|
|
||||||
if SigmaOpts.ItemIndex = -1 then
|
|
||||||
begin
|
|
||||||
AMsg := 'Number of sigma units for UCL and LCL not specified.';
|
|
||||||
AControl := SigmaOpts;
|
|
||||||
exit;
|
|
||||||
end;
|
|
||||||
if SigmaOpts.ItemIndex = 3 then
|
|
||||||
begin
|
|
||||||
if (XSigmaEdit.Text = '') then
|
|
||||||
begin
|
|
||||||
AMsg := 'User-defined sigma units missing.';
|
|
||||||
AControl := XSigmaEdit;
|
|
||||||
exit;
|
|
||||||
end;
|
|
||||||
if not TryStrToFloat(XSigmaEdit.Text, x) then
|
|
||||||
begin
|
|
||||||
AMsg := 'No valid number given for sser-defined sigma units.';
|
|
||||||
AControl := XSigmaEdit;
|
|
||||||
exit;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
if UpSpecChk.Checked then begin
|
|
||||||
if UpSpecEdit.Text = '' then
|
|
||||||
begin
|
|
||||||
AMsg := 'Upper Spec Level missing.';
|
|
||||||
AControl := UpSpecEdit;
|
|
||||||
exit;
|
|
||||||
end;
|
|
||||||
if not TryStrToFloat(UpSpecEdit.Text, x) then
|
|
||||||
begin
|
|
||||||
AMsg := 'Upper Spec Level is not a valid number.';
|
|
||||||
AControl := UpSpecEdit;
|
|
||||||
exit;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
if LowSpecChk.Checked then begin
|
|
||||||
if LowSpecEdit.Text = '' then
|
|
||||||
begin
|
|
||||||
AMsg := 'Lower Spec Level missing.';
|
|
||||||
AControl := LowSpecEdit;
|
|
||||||
exit;
|
|
||||||
end;
|
|
||||||
if not TryStrToFloat(LowSpecEdit.Text, x) then
|
|
||||||
begin
|
|
||||||
AMsg := 'Lower Spec Level is not a valid number.';
|
|
||||||
AControl := LowSpecEdit;
|
|
||||||
exit;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
if TargetChk.Checked then begin
|
|
||||||
if TargetSpecEdit.Text = '' then
|
|
||||||
begin
|
|
||||||
AMsg := 'Target Spec Level missing.';
|
|
||||||
AControl := TargetSpecEdit;
|
|
||||||
exit;
|
|
||||||
end;
|
|
||||||
if not TryStrToFloat(TargetSpecEdit.Text, x) then
|
|
||||||
begin
|
|
||||||
AMsg := 'Target Spec Level is not a valid number.';
|
|
||||||
AControl := TargetSpecEdit;
|
|
||||||
exit;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
Result := true;
|
|
||||||
end;
|
|
||||||
|
|
||||||
initialization
|
|
||||||
{$I xbarunit.lrs}
|
|
||||||
|
|
||||||
end.
|
|
||||||
|
|
@@ -510,8 +510,8 @@ uses
|
|||||||
BinomialUnit, KendallTauUnit, KaplanMeierUnit,
|
BinomialUnit, KendallTauUnit, KaplanMeierUnit,
|
||||||
|
|
||||||
// Statistical process control
|
// Statistical process control
|
||||||
XBarUnit, RChartUnit, SChartUnit, CUMSUMUNIT, CCHARTUNIT,
|
XBarChartUnit, RChartUnit, SChartUnit, CUMSUMUNIT, CCHARTUNIT,
|
||||||
PChartUnit, UChartUnit, //SigmaChartUnit,
|
PChartUnit, UChartUnit,
|
||||||
|
|
||||||
CorSimUnit,
|
CorSimUnit,
|
||||||
ErrorCurvesUnit, PCurvesUnit, DistribUnit, GenSeqUnit, GenRndValsUnit,
|
ErrorCurvesUnit, PCurvesUnit, DistribUnit, GenSeqUnit, GenRndValsUnit,
|
||||||
@@ -2136,17 +2136,17 @@ end;
|
|||||||
// Menu "Analysis" > "Statistical Process Control" > "XBAR Chart"
|
// Menu "Analysis" > "Statistical Process Control" > "XBAR Chart"
|
||||||
procedure TOS3MainFrm.mnuAnalysisSPC_XBarClick(Sender: TObject);
|
procedure TOS3MainFrm.mnuAnalysisSPC_XBarClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
if XBarFrm = nil then
|
if XBarChartForm = nil then
|
||||||
Application.CreateForm(TXBarFrm, XBarFrm);
|
Application.CreateForm(TXBarChartForm, XBarChartForm);
|
||||||
XBarFrm.ShowModal;
|
XBarChartForm.ShowModal;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// Menu "Analysis" > "Statistical Process Control" > "Range Chart"
|
// Menu "Analysis" > "Statistical Process Control" > "Range Chart"
|
||||||
procedure TOS3MainFrm.mnuAnalysisSPC_RangeClick(Sender: TObject);
|
procedure TOS3MainFrm.mnuAnalysisSPC_RangeClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
if RChartFrm = nil then
|
if RChartForm = nil then
|
||||||
Application.CreateForm(TRChartFrm, RChartFrm);
|
Application.CreateForm(TRChartForm, RChartForm);
|
||||||
RChartFrm.ShowModal;
|
RChartForm.ShowModal;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// Menu "Analysis" > "Statistical Process Control" > "S Control Chart"
|
// Menu "Analysis" > "Statistical Process Control" > "S Control Chart"
|
||||||
@@ -2155,11 +2155,6 @@ begin
|
|||||||
if SChartForm = nil then
|
if SChartForm = nil then
|
||||||
Application.CreateForm(TSChartForm, SChartForm);
|
Application.CreateForm(TSChartForm, SChartForm);
|
||||||
SChartForm.ShowModal;
|
SChartForm.ShowModal;
|
||||||
{
|
|
||||||
if SigmaChartFrm = nil then
|
|
||||||
Application.CreateForm(TSigmaChartFrm, SigmaChartFrm);
|
|
||||||
SigmaChartFrm.ShowModal;
|
|
||||||
}
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// Menu "Analysis" > "Statistical Process Control" > "Defect (nonconformity) c Chart"
|
// Menu "Analysis" > "Statistical Process Control" > "Defect (nonconformity) c Chart"
|
||||||
|
Reference in New Issue
Block a user