diff --git a/applications/lazstats/source/LazStats.lpi b/applications/lazstats/source/LazStats.lpi index 102009030..6fa18af5b 100644 --- a/applications/lazstats/source/LazStats.lpi +++ b/applications/lazstats/source/LazStats.lpi @@ -405,7 +405,7 @@ - + diff --git a/applications/lazstats/source/forms/analysis/correlation/partialsunit.lfm b/applications/lazstats/source/forms/analysis/correlation/partialsunit.lfm index 52863ff8c..38f1a451a 100644 --- a/applications/lazstats/source/forms/analysis/correlation/partialsunit.lfm +++ b/applications/lazstats/source/forms/analysis/correlation/partialsunit.lfm @@ -1,573 +1,275 @@ -object PartialsFrm: TPartialsFrm +inherited PartialsForm: TPartialsForm Left = 593 - Height = 398 + Height = 328 Top = 175 - Width = 361 + Width = 513 HelpType = htKeyword HelpKeyword = 'html/PartialSemipartial.htm' - AutoSize = True Caption = 'Partial Correlation' - ClientHeight = 398 - ClientWidth = 361 - OnActivate = FormActivate - OnCreate = FormCreate - OnShow = FormShow - Position = poMainFormCenter - LCLVersion = '2.1.0.0' - object Label1: TLabel - AnchorSideLeft.Control = Owner - AnchorSideTop.Control = Owner - Left = 8 - Height = 15 - Top = 8 - Width = 100 - BorderSpacing.Left = 8 - BorderSpacing.Top = 8 - Caption = 'Available Variables:' - ParentColor = False + ClientHeight = 328 + ClientWidth = 513 + inherited ParamsPanel: TPanel + Height = 312 + ClientHeight = 312 + inherited CloseBtn: TButton + Top = 287 + TabOrder = 13 + end + inherited ComputeBtn: TButton + Top = 287 + TabOrder = 12 + end + inherited ResetBtn: TButton + Top = 287 + TabOrder = 11 + end + inherited HelpBtn: TButton + Tag = 136 + Top = 287 + TabOrder = 10 + end + inherited ButtonBevel: TBevel + Top = 271 + end + object Label1: TLabel[5] + AnchorSideLeft.Control = ParamsPanel + AnchorSideTop.Control = ParamsPanel + Left = 0 + Height = 15 + Top = 0 + Width = 100 + Caption = 'Available Variables:' + ParentColor = False + end + object VarList: TListBox[6] + AnchorSideLeft.Control = ParamsPanel + AnchorSideTop.Control = Label1 + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = DepInBtn + AnchorSideBottom.Control = Bevel3 + Left = 0 + Height = 135 + Top = 17 + Width = 126 + Anchors = [akTop, akLeft, akRight, akBottom] + BorderSpacing.Top = 2 + BorderSpacing.Right = 6 + ItemHeight = 0 + MultiSelect = True + OnDblClick = VarListDblClick + OnSelectionChange = VarListSelectionChange + TabOrder = 0 + end + object PartInBtn: TBitBtn[7] + AnchorSideTop.Control = VarList + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = Bevel1 + AnchorSideBottom.Control = Label4 + Left = 33 + Height = 26 + Top = 160 + Width = 26 + Anchors = [akTop, akRight] + BorderSpacing.Top = 8 + Images = MainDataModule.ImageList + ImageIndex = 3 + OnClick = PartInBtnClick + Spacing = 0 + TabOrder = 7 + end + object PartOutBtn: TBitBtn[8] + AnchorSideLeft.Control = Bevel1 + AnchorSideLeft.Side = asrBottom + AnchorSideTop.Control = PartInBtn + Left = 67 + Height = 26 + Top = 160 + Width = 26 + Images = MainDataModule.ImageList + ImageIndex = 2 + OnClick = PartOutBtnClick + Spacing = 0 + TabOrder = 8 + end + object Label4: TLabel[9] + AnchorSideLeft.Control = PartList + AnchorSideTop.Control = PartInBtn + AnchorSideTop.Side = asrBottom + AnchorSideBottom.Control = PartList + Left = 0 + Height = 15 + Top = 194 + Width = 121 + BorderSpacing.Top = 8 + BorderSpacing.Bottom = 2 + Caption = 'Variables Partialed Out:' + ParentColor = False + end + object PartList: TListBox[10] + AnchorSideLeft.Control = ParamsPanel + AnchorSideTop.Control = Label4 + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = VarList + AnchorSideRight.Side = asrBottom + AnchorSideBottom.Control = ButtonBevel + Left = 0 + Height = 60 + Top = 211 + Width = 126 + Anchors = [akTop, akLeft, akRight, akBottom] + BorderSpacing.Top = 2 + ItemHeight = 0 + MultiSelect = True + OnDblClick = PartListDblClick + OnSelectionChange = VarListSelectionChange + TabOrder = 9 + end + object DepInBtn: TBitBtn[11] + AnchorSideLeft.Control = ParamsPanel + AnchorSideLeft.Side = asrCenter + AnchorSideTop.Control = VarList + Left = 132 + Height = 26 + Top = 17 + Width = 26 + Images = MainDataModule.ImageList + ImageIndex = 1 + OnClick = DepInBtnClick + Spacing = 0 + TabOrder = 1 + end + object DepOutBtn: TBitBtn[12] + AnchorSideLeft.Control = ParamsPanel + AnchorSideLeft.Side = asrCenter + AnchorSideTop.Control = DepInBtn + AnchorSideTop.Side = asrBottom + Left = 132 + Height = 26 + Top = 47 + Width = 26 + BorderSpacing.Top = 4 + Images = MainDataModule.ImageList + ImageIndex = 0 + OnClick = DepOutBtnClick + Spacing = 0 + TabOrder = 3 + end + object PredInBtn: TBitBtn[13] + AnchorSideLeft.Control = ParamsPanel + AnchorSideLeft.Side = asrCenter + AnchorSideTop.Control = DepOutBtn + AnchorSideTop.Side = asrBottom + Left = 132 + Height = 26 + Top = 93 + Width = 26 + BorderSpacing.Top = 20 + Images = MainDataModule.ImageList + ImageIndex = 1 + OnClick = PredInBtnClick + Spacing = 0 + TabOrder = 4 + end + object PredOutBtn: TBitBtn[14] + AnchorSideLeft.Control = ParamsPanel + AnchorSideLeft.Side = asrCenter + AnchorSideTop.Control = PredInBtn + AnchorSideTop.Side = asrBottom + AnchorSideBottom.Side = asrBottom + Left = 132 + Height = 26 + Top = 123 + Width = 26 + BorderSpacing.Top = 4 + Images = MainDataModule.ImageList + ImageIndex = 0 + OnClick = PredOutBtnClick + Spacing = 0 + TabOrder = 5 + end + object Label2: TLabel[15] + AnchorSideLeft.Control = DepVarEdit + AnchorSideTop.Control = DepInBtn + AnchorSideBottom.Control = DepVarEdit + Left = 164 + Height = 15 + Top = 17 + Width = 152 + Caption = 'Selected Dependent Variable:' + ParentColor = False + end + object Label3: TLabel[16] + AnchorSideLeft.Control = PredList + AnchorSideTop.Control = PredInBtn + Left = 164 + Height = 15 + Top = 93 + Width = 147 + Caption = 'Selected Predictor Variables:' + ParentColor = False + end + object DepVarEdit: TEdit[17] + AnchorSideLeft.Control = DepInBtn + AnchorSideLeft.Side = asrBottom + AnchorSideTop.Control = Label2 + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = ParamsPanel + AnchorSideRight.Side = asrBottom + AnchorSideBottom.Side = asrBottom + Left = 164 + Height = 23 + Top = 34 + Width = 127 + Anchors = [akTop, akLeft, akRight] + BorderSpacing.Left = 6 + BorderSpacing.Top = 2 + ReadOnly = True + TabOrder = 2 + Text = 'DepVarEdit' + end + object PredList: TListBox[18] + AnchorSideLeft.Control = PredInBtn + AnchorSideLeft.Side = asrBottom + AnchorSideTop.Control = Label3 + AnchorSideTop.Side = asrBottom + AnchorSideRight.Control = ParamsPanel + AnchorSideRight.Side = asrBottom + AnchorSideBottom.Control = Bevel3 + Left = 164 + Height = 42 + Top = 110 + Width = 127 + Anchors = [akTop, akLeft, akRight, akBottom] + BorderSpacing.Left = 6 + BorderSpacing.Top = 2 + ItemHeight = 0 + MultiSelect = True + OnDblClick = PredListDblClick + OnSelectionChange = VarListSelectionChange + TabOrder = 6 + end + object Bevel1: TBevel[19] + AnchorSideLeft.Control = VarList + AnchorSideLeft.Side = asrCenter + AnchorSideTop.Control = VarList + AnchorSideTop.Side = asrBottom + Left = 59 + Height = 28 + Top = 152 + Width = 8 + Shape = bsSpacer + end + object Bevel3: TBevel[20] + AnchorSideTop.Control = ParamsPanel + AnchorSideTop.Side = asrCenter + Left = 8 + Height = 8 + Top = 152 + Width = 40 + Shape = bsSpacer + end end - object Label2: TLabel - AnchorSideLeft.Control = DepVar - AnchorSideTop.Control = DepInBtn - AnchorSideBottom.Control = DepVar - Left = 202 - Height = 15 - Top = 25 - Width = 152 - Caption = 'Selected Dependent Variable:' - ParentColor = False - end - object Label3: TLabel - AnchorSideLeft.Control = PredList - AnchorSideTop.Control = DepOutBtn - AnchorSideTop.Side = asrBottom - Left = 203 - Height = 15 - Top = 93 - Width = 144 - BorderSpacing.Top = 8 - Caption = 'Selected Predictor Variables' - ParentColor = False - end - object Label4: TLabel - AnchorSideLeft.Control = PartList - AnchorSideTop.Control = PartInBtn - AnchorSideTop.Side = asrBottom - AnchorSideBottom.Control = PartList - Left = 8 - Height = 15 - Top = 239 - Width = 121 - BorderSpacing.Top = 8 - BorderSpacing.Bottom = 2 - Caption = 'Variables Partialed Out:' - ParentColor = False - end - object VarList: TListBox - AnchorSideLeft.Control = Owner - AnchorSideTop.Control = Label1 - AnchorSideTop.Side = asrBottom - AnchorSideRight.Control = DepInBtn - AnchorSideBottom.Control = Bevel3 - Left = 8 - Height = 170 - Top = 25 - Width = 150 - Anchors = [akTop, akLeft, akRight, akBottom] - BorderSpacing.Left = 8 - BorderSpacing.Top = 2 - BorderSpacing.Right = 8 - ItemHeight = 0 - MultiSelect = True - OnSelectionChange = VarListSelectionChange - TabOrder = 0 - end - object DepInBtn: TBitBtn - AnchorSideLeft.Control = Owner - AnchorSideLeft.Side = asrCenter - AnchorSideTop.Control = VarList - Left = 166 - Height = 28 - Top = 25 - Width = 28 - Glyph.Data = { - 36040000424D3604000000000000360000002800000010000000100000000100 - 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE - 6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580 - 3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3 - 71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 - 89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7 - 74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA - 90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7 - 74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799 - 4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 - } - Images = MainDataModule.ImageList - ImageIndex = 1 - OnClick = DepInBtnClick - Spacing = 0 - TabOrder = 1 - end - object DepOutBtn: TBitBtn - AnchorSideLeft.Control = Owner - AnchorSideLeft.Side = asrCenter - AnchorSideTop.Control = DepInBtn - AnchorSideTop.Side = asrBottom - Left = 166 - Height = 28 - Top = 57 - Width = 28 - BorderSpacing.Top = 4 - Glyph.Data = { - 36040000424D3604000000000000360000002800000010000000100000000100 - 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580 - 3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3 - 71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 - 89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7 - 74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA - 90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF - FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799 - 4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF - FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 - } - Images = MainDataModule.ImageList - ImageIndex = 0 - OnClick = DepOutBtnClick - Spacing = 0 - TabOrder = 2 - end - object PredInBtn: TBitBtn - AnchorSideLeft.Control = Owner - AnchorSideLeft.Side = asrCenter - AnchorSideTop.Control = DepOutBtn - AnchorSideTop.Side = asrBottom - AnchorSideBottom.Control = Bevel4 - Left = 166 - Height = 28 - Top = 122 - Width = 28 - Anchors = [akLeft, akBottom] - Glyph.Data = { - 36040000424D3604000000000000360000002800000010000000100000000100 - 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE - 6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580 - 3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3 - 71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 - 89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7 - 74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA - 90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7 - 74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799 - 4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 - } - Images = MainDataModule.ImageList - ImageIndex = 1 - OnClick = PredInBtnClick - Spacing = 0 - TabOrder = 4 - end - object PredOutBtn: TBitBtn - AnchorSideLeft.Control = Owner - AnchorSideLeft.Side = asrCenter - AnchorSideTop.Control = Bevel4 - AnchorSideTop.Side = asrBottom - AnchorSideBottom.Side = asrBottom - Left = 166 - Height = 28 - Top = 154 - Width = 28 - Glyph.Data = { - 36040000424D3604000000000000360000002800000010000000100000000100 - 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580 - 3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3 - 71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6 - 89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7 - 74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA - 90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF - FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799 - 4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF - FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 - } - Images = MainDataModule.ImageList - ImageIndex = 0 - OnClick = PredOutBtnClick - Spacing = 0 - TabOrder = 5 - end - object PartInBtn: TBitBtn - AnchorSideTop.Control = VarList - AnchorSideTop.Side = asrBottom - AnchorSideRight.Control = Bevel1 - AnchorSideBottom.Control = Label4 - Left = 51 - Height = 28 - Top = 203 - Width = 28 - Anchors = [akTop, akRight] - BorderSpacing.Top = 8 - Glyph.Data = { - 36040000424D3604000000000000360000002800000010000000100000000100 - 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00256929C4216425C9FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF002D7533CF488F4DFF458C4AFF2265 - 26D1FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF003C8A430638833ED9519957FF79C07EFF76BF7CFF468D - 4BFF236627DB20622306FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF0042924AB83D8C45F765AD6CFF7DC282FF7AC180FF4B92 - 50FF276D2CF7246828BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF0043944B384E9A55FF81C587FF7EC385FF317A - 36FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0045954CFF85C78CFF82C689FF3682 - 3DFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A9E53FF8ACA91FF87C98EFF3C8A - 43FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0050A659FF8ECC95FF8BCB93FF4292 - 4AFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0056AD5FFF93CF9AFF90CE98FF489A - 50FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF005BB465FF96D29FFF94D09CFF4EA2 - 57FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF005FBB6AFF9AD4A3FF98D3A1FF53AA - 5DFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0063C06FFF9ED6A7FF9CD4A5FF59B2 - 63FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0066C572FFA2D8ABFFA0D7A9FF5DB8 - 68FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0068C774FF67C673FF65C270FF62BE - 6DFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 - } - Images = MainDataModule.ImageList - ImageIndex = 3 - OnClick = PartInBtnClick - Spacing = 0 - TabOrder = 7 - end - object PartOutBtn: TBitBtn - AnchorSideLeft.Control = Bevel1 - AnchorSideLeft.Side = asrBottom - AnchorSideTop.Control = PartInBtn - Left = 87 - Height = 28 - Top = 203 - Width = 28 - Glyph.Data = { - 36040000424D3604000000000000360000002800000010000000100000000100 - 2000000000000004000064000000640000000000000000000000FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00286E2DFF256929FF216425FF1E60 - 22FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF002D7533FF74BD7AFF72BD78FF2265 - 26FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00337D39FF79C07EFF76BF7CFF266B - 2BFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0039853FFF7DC282FF7AC180FF2B72 - 30FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF003F8D46FF81C587FF7EC385FF317A - 36FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0045954CFF85C78CFF82C689FF3682 - 3DFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A9E53FF8ACA91FF87C98EFF3C8A - 43FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0050A659FF8ECC95FF8BCB93FF4292 - 4AFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0056AD5FFF93CF9AFF90CE98FF489A - 50FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF005BB465FF96D29FFF94D09CFF5DAC - 65FF499C5238FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF0065C371BB62BF6EF779C683FF9AD4A3FF98D3A1FF7DC3 - 86FF4FA458F74A9E53B8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF0068C7740666C472DB7CCA87FF9ED6A7FF9CD4A5FF73C0 - 7DFF55AC5ED950A65906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0066C572D17ECA88FF7BC885FF5DB8 - 68CFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0067C673C965C270C4FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00 - } - Images = MainDataModule.ImageList - ImageIndex = 2 - OnClick = PartOutBtnClick - Spacing = 0 - TabOrder = 8 - end - object DepVar: TEdit - AnchorSideLeft.Control = DepInBtn - AnchorSideLeft.Side = asrBottom - AnchorSideTop.Control = Label2 - AnchorSideTop.Side = asrBottom - AnchorSideRight.Control = Owner - AnchorSideRight.Side = asrBottom - AnchorSideBottom.Control = DepOutBtn - AnchorSideBottom.Side = asrBottom - Left = 202 - Height = 23 - Top = 42 - Width = 151 - Anchors = [akTop, akLeft, akRight] - BorderSpacing.Left = 8 - BorderSpacing.Top = 2 - BorderSpacing.Right = 8 - ReadOnly = True - TabOrder = 3 - Text = 'DepVar' - end - object PredList: TListBox - AnchorSideLeft.Control = PredInBtn - AnchorSideLeft.Side = asrBottom - AnchorSideTop.Control = Label3 - AnchorSideTop.Side = asrBottom - AnchorSideRight.Control = Owner - AnchorSideRight.Side = asrBottom - AnchorSideBottom.Control = Bevel3 - Left = 203 - Height = 85 - Top = 110 - Width = 150 - Anchors = [akTop, akLeft, akRight, akBottom] - BorderSpacing.Left = 9 - BorderSpacing.Top = 2 - BorderSpacing.Right = 8 - ItemHeight = 0 - MultiSelect = True - OnSelectionChange = VarListSelectionChange - TabOrder = 6 - end - object PartList: TListBox - AnchorSideLeft.Control = Owner - AnchorSideTop.Control = Label4 - AnchorSideTop.Side = asrBottom - AnchorSideRight.Control = VarList - AnchorSideRight.Side = asrBottom - AnchorSideBottom.Control = Bevel2 - Left = 8 - Height = 93 - Top = 256 - Width = 150 - Anchors = [akTop, akLeft, akRight, akBottom] - BorderSpacing.Left = 8 - BorderSpacing.Top = 2 - ItemHeight = 0 - MultiSelect = True - OnSelectionChange = VarListSelectionChange - TabOrder = 9 - end - object ResetBtn: TButton - AnchorSideRight.Control = ComputeBtn - AnchorSideBottom.Control = Owner - AnchorSideBottom.Side = asrBottom - Left = 152 - Height = 25 - Top = 365 - Width = 54 - Anchors = [akRight, akBottom] - AutoSize = True - BorderSpacing.Left = 8 - BorderSpacing.Top = 8 - BorderSpacing.Right = 8 - BorderSpacing.Bottom = 8 - Caption = 'Reset' - OnClick = ResetBtnClick - TabOrder = 11 - end - object ComputeBtn: TButton - AnchorSideRight.Control = CloseBtn - AnchorSideBottom.Control = Owner - AnchorSideBottom.Side = asrBottom - Left = 214 - Height = 25 - Top = 365 - Width = 76 - Anchors = [akRight, akBottom] - AutoSize = True - BorderSpacing.Left = 8 - BorderSpacing.Top = 8 - BorderSpacing.Right = 8 - BorderSpacing.Bottom = 8 - Caption = 'Compute' - OnClick = ComputeBtnClick - TabOrder = 12 - end - object CloseBtn: TButton - AnchorSideRight.Control = Owner - AnchorSideRight.Side = asrBottom - AnchorSideBottom.Control = Owner - AnchorSideBottom.Side = asrBottom - Left = 298 - Height = 25 - Top = 365 - Width = 55 - Anchors = [akRight, akBottom] - AutoSize = True - BorderSpacing.Left = 8 - BorderSpacing.Top = 8 - BorderSpacing.Right = 8 - BorderSpacing.Bottom = 8 - Caption = 'Close' - ModalResult = 11 - TabOrder = 13 - end - object HelpBtn: TButton - Tag = 136 - AnchorSideRight.Control = ResetBtn - AnchorSideBottom.Control = Owner - AnchorSideBottom.Side = asrBottom - Left = 93 - Height = 25 - Top = 365 - Width = 51 - Anchors = [akRight, akBottom] - AutoSize = True - BorderSpacing.Left = 8 - BorderSpacing.Top = 8 - BorderSpacing.Right = 8 - BorderSpacing.Bottom = 8 - Caption = 'Help' - OnClick = HelpBtnClick - TabOrder = 10 - end - object Bevel1: TBevel - AnchorSideLeft.Control = VarList - AnchorSideLeft.Side = asrCenter - AnchorSideTop.Control = VarList - AnchorSideTop.Side = asrBottom - Left = 79 - Height = 28 - Top = 195 - Width = 8 - Shape = bsSpacer - end - object Bevel2: TBevel - AnchorSideLeft.Control = Owner - AnchorSideRight.Control = Owner - AnchorSideRight.Side = asrBottom - AnchorSideBottom.Control = CloseBtn - Left = 0 - Height = 8 - Top = 349 - Width = 361 - Anchors = [akLeft, akRight, akBottom] - Shape = bsBottomLine - end - object Bevel3: TBevel - AnchorSideTop.Control = Owner - AnchorSideTop.Side = asrCenter - Left = 8 - Height = 8 - Top = 195 - Width = 40 - Shape = bsSpacer - end - object Bevel4: TBevel - AnchorSideLeft.Control = Owner - AnchorSideLeft.Side = asrCenter - AnchorSideTop.Control = PredList - AnchorSideTop.Side = asrCenter - Left = 160 - Height = 4 - Top = 150 - Width = 40 - Shape = bsSpacer + inherited ParamsSplitter: TSplitter + Height = 328 end end diff --git a/applications/lazstats/source/forms/analysis/correlation/partialsunit.pas b/applications/lazstats/source/forms/analysis/correlation/partialsunit.pas index 050ca1f40..51baab8f2 100644 --- a/applications/lazstats/source/forms/analysis/correlation/partialsunit.pas +++ b/applications/lazstats/source/forms/analysis/correlation/partialsunit.pas @@ -1,6 +1,6 @@ // File for testing: cansas.laz // - Selected dependent variable --> jumps -// - Seleckted predictor variables --> weight +// - Selected predictor variables --> weight // - variables partialed out --> waist, pulse unit PartialsUnit; @@ -10,30 +10,23 @@ unit PartialsUnit; interface uses - Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs, - StdCtrls, Buttons, ExtCtrls, - MainUnit, MatrixLib, FunctionsLib, OutputUnit, Globals, ContextHelpUnit; + Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, Buttons, ExtCtrls, + MainUnit, MatrixLib, FunctionsLib, Globals, BasicStatsReportFormUnit; type - { TPartialsFrm } + { TPartialsForm } - TPartialsFrm = class(TForm) + TPartialsForm = class(TBasicStatsReportForm) Bevel1: TBevel; - Bevel2: TBevel; Bevel3: TBevel; - Bevel4: TBevel; DepInBtn: TBitBtn; DepOutBtn: TBitBtn; - HelpBtn: TButton; PredInBtn: TBitBtn; PredOutBtn: TBitBtn; PartInBtn: TBitBtn; PartOutBtn: TBitBtn; - ResetBtn: TButton; - ComputeBtn: TButton; - CloseBtn: TButton; - DepVar: TEdit; + DepVarEdit: TEdit; Label1: TLabel; Label2: TLabel; Label3: TLabel; @@ -41,215 +34,87 @@ type PartList: TListBox; PredList: TListBox; VarList: TListBox; - procedure ComputeBtnClick(Sender: TObject); procedure DepInBtnClick(Sender: TObject); procedure DepOutBtnClick(Sender: TObject); - procedure FormActivate(Sender: TObject); - procedure FormCreate(Sender: TObject); - procedure FormShow(Sender: TObject); - procedure HelpBtnClick(Sender: TObject); procedure PartInBtnClick(Sender: TObject); + procedure PartListDblClick(Sender: TObject); procedure PartOutBtnClick(Sender: TObject); procedure PredInBtnClick(Sender: TObject); + procedure PredListDblClick(Sender: TObject); procedure PredOutBtnClick(Sender: TObject); - procedure ResetBtnClick(Sender: TObject); + procedure VarListDblClick(Sender: TObject); procedure VarListSelectionChange(Sender: TObject; {%H-}User: boolean); - private - { private declarations } - FAutoSized: Boolean; - procedure UpdateBtnStates; + + protected + procedure AdjustConstraints; override; + procedure Compute; override; + procedure UpdateBtnStates; override; + function Validate(out AMsg: String; out AControl: TWinControl): Boolean; override; + public - { public declarations } + constructor Create(AOwner: TComponent); override; + procedure Reset; override; end; var - PartialsFrm: TPartialsFrm; + PartialsForm: TPartialsForm; implementation +{$R *.lfm} + uses Math, Utils, MathUnit; -{ TPartialsFrm } -procedure TPartialsFrm.ResetBtnClick(Sender: TObject); +{ TPartialsForm } + +constructor TPartialsForm.Create(AOwner: TComponent); +begin + inherited; +end; + + +procedure TPartialsForm.AdjustConstraints; +begin + inherited; + ParamsPanel.Constraints.MinHeight := (PredOutBtn.Top + PredOutBtn.Height) * 2; + ParamsPanel.Constraints.MinWidth := Max( + 4*CloseBtn.Width + 3*CloseBtn.BorderSpacing.Left, + MaxValue([Label1.Width, Label2.Width, Label3.Width, Label4.Width]) * 2 + + DepInBtn.Width + VarList.BorderSpacing.Right*2); +end; + + +procedure TPartialsForm.Compute; var - i: integer; -begin - DepVar.Text := ''; - VarList.Clear; - PartList.Clear; - PredList.Clear; - for i := 1 to OS3MainFrm.DataGrid.ColCount - 1 do - VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]); - UpdateBtnStates; -end; - -procedure TPartialsFrm.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; - - w := 2 * Max(Label2.Width, Label3.Width) + DepInBtn.Width + 4 * VarList.BorderSpacing.Left; - Constraints.MinWidth := w; //Max(Width, w); - Constraints.MinHeight := Height; - - FAutoSized := true; -end; - -procedure TPartialsFrm.FormCreate(Sender: TObject); -begin - Assert(OS3MainFrm <> nil); -end; - -procedure TPartialsFrm.FormShow(Sender: TObject); -begin - ResetBtnClick(self); -end; - -procedure TPartialsFrm.HelpBtnClick(Sender: TObject); -begin - if ContextHelpForm = nil then - Application.CreateForm(TContextHelpForm, ContextHelpForm); - ContextHelpForm.HelpMessage((Sender as TButton).tag); -end; - -procedure TPartialsFrm.PartInBtnClick(Sender: TObject); -var - i: integer; -begin - i := 0; - while i < VarList.Items.Count do - begin - if VarList.Selected[i] then - begin - PartList.Items.Add(VarList.Items[i]); - VarList.Items.Delete(i); - i := 0; - end else - i := i + 1; - end; - UpdateBtnStates; -end; - -procedure TPartialsFrm.PartOutBtnClick(Sender: TObject); -var - i: integer; -begin - i := 0; - while i < PartList.Items.Count do - begin - if PartList.Selected[i] then - begin - VarList.Items.Add(PartList.Items[i]); - PartList.Items.Delete(i); - i := 0; - end else - i := i + 1; - end; - UpdateBtnStates; -end; - -procedure TPartialsFrm.PredInBtnClick(Sender: TObject); -var - i: integer; -begin - i := 0; - while i < VarList.Items.Count do - begin - if VarList.Selected[i] then - begin - PredList.Items.Add(VarList.Items[i]); - VarList.Items.Delete(i); - i := 0; - end else - i := i + 1; - end; - UpdateBtnStates; -end; - -procedure TPartialsFrm.PredOutBtnClick(Sender: TObject); -var - i: integer; -begin - i := 0; - while i < PredList.Items.Count do - begin - if PredList.Selected[i] then - begin - VarList.Items.Add(PredList.Items[i]); - PredList.Items.Delete(i); - i := 0; - end else - i := i + 1; - end; - UpdateBtnStates; -end; - -procedure TPartialsFrm.DepInBtnClick(Sender: TObject); -var - index: integer; -begin - index := VarList.ItemIndex; - if (index > -1) and (DepVar.Text = '') then - begin - DepVar.Text := VarList.Items[index]; - VarList.Items.Delete(index); - UpdateBtnStates; - end; -end; - -procedure TPartialsFrm.DepOutBtnClick(Sender: TObject); -begin - if DepVar.Text <> '' then - begin - VarList.Items.Add(DepVar.Text); - DepVar.Text := ''; - UpdateBtnStates; - end; -end; - -procedure TPartialsFrm.ComputeBtnClick(Sender: TObject); -var - rmatrix, workmat: DblDyneMat; - Means, Variances, StdDevs, W: DblDyneVec; + rMatrix: DblDyneMat = nil; + workMat: DblDyneMat = nil; + Means: DblDyneVec = nil; + Variances: DblDyneVec = nil; + StdDevs: DblDyneVec = nil; + PredVars: IntDyneVec = nil; + CntrlVars: IntDyneVec = nil; + W: DblDyneVec = nil; + MatVars: IntDyneVec = nil; + vtimesw: DblDyneMat = nil; + W1: DblDyneMat = nil; + v: DblDyneMat = nil; R2Full, R2Cntrl, SemiPart, Partial, df1, df2, F, Prob: double; NoPredVars, NoCntrlVars, DepVarNo, TotNoVars, pcnt, ccnt, count: integer; - PredVars, CntrlVars: IntDyneVec; - MatVars: IntDyneVec; varstring: string; i, j, K, L: integer; - errorcode: boolean; - vtimesw, W1, v: DblDyneMat; + errorcode: boolean = false; lReport: TStrings; begin DepVarNo := 1; errorcode := false; - if DepVar.Text = '' then - begin - MessageDlg('No dependent variable selected.', mtError, [mbOK], 0); - exit; - end; - // Get no. of predictor and control variables NoPredVars := PredList.Items.Count; NoCntrlVars := PartList.Items.Count; - if (NoPredVars = 0) or (NoCntrlVars = 0) then - begin - MessageDlg('You must select at least one predictor and one control variable.', mtError, [mbOK], 0); - exit; - end; TotNoVars := NoPredVars + NoCntrlVars + 1; count := NoCases; @@ -257,8 +122,8 @@ begin SetLength(vtimesw,NoVariables,NoVariables); SetLength(v,NoVariables,NoVariables); SetLength(W1,NoVariables,NoVariables); - SetLength(rmatrix,NoVariables+1,NoVariables+1); // augmented - SetLength(workmat,NoVariables+1,NoVariables+1); // augmented + SetLength(rmatrix,NoVariables+1,NoVariables+1); // +1: augmented + SetLength(workmat,NoVariables+1,NoVariables+1); // +1: augmented SetLength(PredVars,NoVariables); SetLength(CntrlVars,NoVariables); SetLength(Means,NoVariables); @@ -276,7 +141,7 @@ begin pcnt := 1; for i := 0 to NoPredVars - 1 do begin - varstring := PredList.Items.Strings[i]; + varstring := PredList.Items[i]; for j := 1 to NoVariables do begin if varstring = OS3MainFrm.DataGrid.Cells[j,0] then @@ -289,7 +154,7 @@ begin ccnt := 1; for i := 0 to NoCntrlVars - 1 do begin - varstring := PartList.Items.Strings[i]; + varstring := PartList.Items[i]; for j := 1 to NoVariables do begin if varstring = OS3MainFrm.DataGrid.Cells[j,0] then @@ -299,7 +164,7 @@ begin end; end; end; - varstring := DepVar.Text; + varstring := DepVarEdit.Text; for i := 1 to NoVariables do if varstring = OS3MainFrm.DataGrid.Cells[i,0] then DepVarNo := i; @@ -363,6 +228,7 @@ begin end; end; MatInv(workmat, vtimesw, v, W1, NoCntrlVars); + R2Cntrl := 0.0; for i := 1 to NoCntrlVars do begin @@ -375,6 +241,7 @@ begin end; R2Cntrl := R2Cntrl + W[i-1] * rmatrix[0,L-1]; end; + lReport.Add('Squared Multiple Correlation with control variables: %6.3f', [R2Cntrl]); lReport.Add(''); lReport.Add('Standardized Regression Coefficients:'); @@ -400,47 +267,228 @@ begin lReport.Add(' D.F.1 %8.0f', [df1]); lReport.Add(' D.F.2 %8.0f', [df2]); - DisplayReport(lReport); + FReportFrame.DisplayReport(lReport); finally lReport.Free; - MatVars := nil; - W := nil; - Variances := nil; - StdDevs := nil; - Means := nil; - CntrlVars := nil; - PredVars := nil; - workmat := nil; - rmatrix := nil; - v := nil; - W1 := nil; - vtimesw := nil; end; end; -procedure TPartialsFrm.UpdateBtnStates; + +procedure TPartialsForm.DepInBtnClick(Sender: TObject); +var + index: integer; +begin + index := VarList.ItemIndex; + if (index > -1) and (DepVarEdit.Text = '') then + begin + DepVarEdit.Text := VarList.Items[index]; + VarList.Items.Delete(index); + UpdateBtnStates; + end; +end; + + +procedure TPartialsForm.DepOutBtnClick(Sender: TObject); +begin + if DepVarEdit.Text <> '' then + begin + VarList.Items.Add(DepVarEdit.Text); + DepVarEdit.Text := ''; + UpdateBtnStates; + end; +end; + + +procedure TPartialsForm.PartInBtnClick(Sender: TObject); +var + i: integer; +begin + i := 0; + while i < VarList.Items.Count do + begin + if VarList.Selected[i] then + begin + PartList.Items.Add(VarList.Items[i]); + VarList.Items.Delete(i); + i := 0; + end else + i := i + 1; + end; + UpdateBtnStates; +end; + + +procedure TPartialsForm.PartListDblClick(Sender: TObject); +var + index: Integer; +begin + index := PartList.ItemIndex; + if index > -1 then + begin + VarList.Items.Add(PartList.Items[index]); + PartList.Items.Delete(index); + UpdateBtnStates; + end; +end; + + +procedure TPartialsForm.PartOutBtnClick(Sender: TObject); +var + i: integer; +begin + i := 0; + if PartList.Items.Count = 0 then PartList.Selected[0] := true; + while i < PartList.Items.Count do + begin + if PartList.Selected[i] then + begin + VarList.Items.Add(PartList.Items[i]); + PartList.Items.Delete(i); + i := 0; + end else + i := i + 1; + end; + UpdateBtnStates; +end; + + +procedure TPartialsForm.PredInBtnClick(Sender: TObject); +var + i: integer; +begin + i := 0; + while i < VarList.Items.Count do + begin + if VarList.Selected[i] then + begin + PredList.Items.Add(VarList.Items[i]); + VarList.Items.Delete(i); + i := 0; + end else + i := i + 1; + end; + UpdateBtnStates; +end; + + +procedure TPartialsForm.PredListDblClick(Sender: TObject); +var + index: Integer; +begin + index := PredList.ItemIndex; + if index > -1 then + begin + VarList.Items.Add(PredList.Items[index]); + PredList.Items.Delete(index); + UpdateBtnStates; + end; +end; + + +procedure TPartialsForm.PredOutBtnClick(Sender: TObject); +var + i: integer; +begin + i := 0; + if PredList.Items.Count = 1 then PredList.Selected[0] := true; + while i < PredList.Items.Count do + begin + if PredList.Selected[i] then + begin + VarList.Items.Add(PredList.Items[i]); + PredList.Items.Delete(i); + i := 0; + end else + i := i + 1; + end; + UpdateBtnStates; +end; + + +procedure TPartialsForm.Reset; +var + i: integer; +begin + inherited; + DepVarEdit.Clear; + PartList.Clear; + PredList.Clear; + VarList.Clear; + for i := 1 to OS3MainFrm.DataGrid.ColCount - 1 do + VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]); + UpdateBtnStates; +end; + + +procedure TPartialsForm.UpdateBtnStates; var lSelected: Boolean; begin + inherited; + lSelected := AnySelected(VarList); - DepInBtn.Enabled := lSelected and (DepVar.Text = ''); + DepInBtn.Enabled := lSelected and (DepVarEdit.Text = ''); PredInBtn.Enabled := lSelected; PartInBtn.Enabled := lSelected; - DepOutBtn.Enabled := DepVar.Text <> ''; - PredOutBtn.Enabled := AnySelected(PredList); - PartOutBtn.Enabled := AnySelected(Partlist); + DepOutBtn.Enabled := DepVarEdit.Text <> ''; + PredOutBtn.Enabled := AnySelected(PredList) or (PredList.Count = 1); + PartOutBtn.Enabled := AnySelected(Partlist) or (PartList.Count = 1); end; -procedure TPartialsFrm.VarListSelectionChange(Sender: TObject; User: boolean); + +function TPartialsForm.Validate(out AMsg: String; out AControl: TWinControl): Boolean; +begin + Result := false; + + if DepVarEdit.Text = '' then + begin + AMsg := 'No dependent variable selected.'; + AControl := VarList; + exit; + end; + + if (PredList.Items.Count = 0) or (PartList.Items.Count = 0) then + begin + AMsg := 'You must select at least one predictor and one control variable.'; + AControl := VarList; + exit; + end; + + Result := true; +end; + + +procedure TPartialsForm.VarListDblClick(Sender: TObject); +var + index: Integer; + s: String; +begin + index := VarList.ItemIndex; + s := VarList.Items[index]; + if index > -1 then + begin + if DepVarEdit.Text = '' then + begin + DepVarEdit.Text := s; + VarList.Items.Delete(index); + UpdateBtnStates; + end else + begin + PredList.Items.Add(s); + Varlist.Items.Delete(index); + UpdateBtnStates; + end; + end; +end; + + +procedure TPartialsForm.VarListSelectionChange(Sender: TObject; User: boolean); begin UpdateBtnStates; end; -initialization - {$I partialsunit.lrs} - end. diff --git a/applications/lazstats/source/forms/mainunit.pas b/applications/lazstats/source/forms/mainunit.pas index a8ee89a90..2f043f913 100644 --- a/applications/lazstats/source/forms/mainunit.pas +++ b/applications/lazstats/source/forms/mainunit.pas @@ -563,41 +563,80 @@ implementation {$R *.lfm} uses - Utils, BasicStatsFormUnit, - OptionsUnit, OutputUnit, LicenseUnit, TransFrmUnit, DescriptiveUnit, - FreqUnit, CrossTabUnit, BreakDownUnit, BoxPlotUnit, NormalityUnit, Rot3DUnit, - PlotXYUnit, BubblePlotUnit, StemLeafUnit, MultXvsYUnit, OneSampleUnit, - TwoCorrsUnit, TwoPropUnit, TtestUnit, BlkAnovaUnit, WithinANOVAUnit, - AxSAnovaUnit, ABRAnovaUnit, ANCOVAUNIT, LatinSqrsUnit, RMatUnit, PartialsUnit, - AutoCorUnit, CanonUnit, GLMUnit, StepFwdMRUnit, BlkMRegUnit, BackRegUnit, - BestRegUnit, SimultRegUnit, CoxRegUnit, LogRegUnit, LinProUnit, DiscrimUnit, - FactorUnit, HierarchUnit, PathUnit, LogLinScreenUnit, TwoWayLogLinUnit, - ABCLogLinUnit, TestGenUnit, TestScoreUnit, RaschUnit, SuccIntUnit, GuttmanUnit, - CompRelUnit, KR21Unit, SpBrUnit, RelChangeUnit, DIFUnit, PolyDIFUnit, - ChiSqrUnit, SpearmanUnit, MannWhitUUnit, ExactUnit, ConcordanceUnit, - KWAnovaUnit, WilcoxonUnit, CochranQUnit, SignTestUnit, FriedmanUnit, - BinomialUnit, KendallTauUnit, KaplanMeierUnit, + // General + Utils, BasicStatsFormUnit, GridHelpUnit, OutputUnit, LicenseUnit, + + // Comparisons + ABCNestedUnit, ABRAnovaUnit, ANCOVAUNIT, AnovaTestsUnit, AxSAnovaUnit, + BlkAnovaUnit, BNestAUnit, GLMUnit, LatinSqrsUnit, OneCaseAnovaUnit, + TtestUnit, TwoCorrsUnit, TwoPropUnit, WithinANOVAUnit, + + // Cross-classification + ABCLogLinUnit, LogLinScreenUnit, TwoWayLogLinUnit, + + // Descriptive + BoxPlotUnit, BreakDownUnit, BubblePlotUnit, CompareDistUnit, CrossTabUnit, + DescriptiveUnit, FreqUnit, GroupFreqUnit, MultXvsYUnit, NormalityUnit, + PlotXYUnit, ResistanceLineUnit, Rot3DUnit, SmoothDataUnit, StemLeafUnit, + XvsMultYUnit, + + // Financial + DblDeclineUnit, LoanItUnit, SLDUnit, SumYrsDepUnit, + + // Correlations + RMatUnit, PartialsUnit, AutoCorUnit, CanonUnit, + + // Help + AboutUnit, + + // Matrix manuipulation + matmanunit, + + // Measurement + CompRelUnit, DIFUnit, gradebookunit, GuttmanUnit, KR21Unit, PolyDIFUnit, + RaschUnit, RelChangeUnit, SpBrUnit, SuccIntUnit, TestGenUnit, TestScoreUnit, + + // Multiple Regression + BackRegUnit, BestRegUnit, BlkMRegUnit, CoxRegUnit, LinProUnit, LSMRunit, + SimultRegUnit, StepFwdMRUnit, TwoSLSUnit, WLSUnit, + + // Multivariate + AvgLinkUnit, BartlettTestUnit, CorrespondenceUnit, DiscrimUnit, FactorUnit, + HierarchUnit, kmeansunit, MedianPolishUnit, PathUnit, + SingleLinkUnit, + + // Nonparametric + BinomialUnit, ChiSqrUnit, CochranQUnit, ConcordanceUnit, ExactUnit, + FriedmanUnit, GenKappaUnit, KaplanMeierUnit, KappaUnit, KendallTauUnit, + KWAnovaUnit, LifeTableUnit, MannWhitUUnit, RIDITUnit, RunsTestUnit, SensUnit, + SignTestUnit, SimpleChiSqrUnit, SpearmanUnit, SRHTestUnit, WilcoxonUnit, + + // One-sample tests + OneSampleUnit, + + // Options + OptionsUnit, + + // Simulations + CorSimUnit, DistribUnit, ErrorCurvesUnit, FProbUnit, GenRndValsUnit, + GenSeqUnit, HyperGeoUnit, MultGenUnit, PCurvesUnit, ProbChiSqrUnit, + ProbSmallerzUnit, ProbzUnit, TprobUnit, TwozProbUnit, // Statistical process control XBarChartUnit, RChartUnit, SChartUnit, CUSUMUnit, CChartUnit, PChartUnit, UChartUnit, - CorSimUnit, - ErrorCurvesUnit, PCurvesUnit, DistribUnit, GenSeqUnit, GenRndValsUnit, - MultGenUnit, LoanItUnit, SumYrsDepUnit, SLDUnit, DblDeclineUnit, - RIDITUnit, TwoSLSUnit, WLSUnit, SortCasesUnit, - SelectCasesUnit, GridHelpUnit, RecodeUnit, KappaUnit, AvgLinkUnit, kmeansunit, - SingleLinkUnit, GenKappaUnit, CompareDistUnit, matmanunit, gradebookunit, - ProbzUnit, ProbSmallerzUnit, TwozProbUnit, InversezUnit, ProbChiSqrUnit, - TprobUnit, FProbUnit, HyperGeoUnit, BNestAUnit, ABCNestedUnit, BartlettTestUnit, - DataSmoothUnit, GroupFreqUnit, RunsTestUnit, XvsMultYUnit, SensUnit, - CorrespondenceUnit, EquationUnit, CalculatorUnit, JPEGUnit, ResistanceLineUnit, - MedianPolishUnit, OneCaseAnovaUnit, SmoothDataUnit, SRHTestUnit, AboutUnit, - ItemBankingUnit, ANOVATESTSUnit, SimpleChiSqrUnit, LifeTableUnit, LSMRunit; + // Tools + CalculatorUnit, DataSmoothUnit, JPEGUnit, SelectCasesUnit, SortCasesUnit, + + // Not identified + TransFrmUnit, LogRegUnit, + RecodeUnit, InversezUnit, EquationUnit, ItemBankingUnit; const HELP_KEYWORD_PREFIX = 'html'; + { TOS3MainFrm } procedure TOS3MainFrm.FormCloseQuery(Sender: TObject; var CanClose: Boolean); @@ -729,11 +768,12 @@ end; // Menu "Correlation" > "Partial, Semipartial" procedure TOS3MainFrm.mnuAnalysisCorrel_PartialClick(Sender: TObject); begin - if PartialsFrm = nil then - Application.CreateForm(TPartialsFrm, PartialsFrm); - PartialsFrm.ShowModal; + if PartialsForm = nil then + Application.CreateForm(TPartialsForm, PartialsForm); + PartialsForm.Show; end; +// Menu "Correlation" > "Autocorrelation" procedure TOS3MainFrm.mnuAnalysisCorrel_AutoCorrClick(Sender: TObject); begin if AutoCorrFrm = nil then @@ -741,6 +781,7 @@ begin AutocorrFrm.ShowModal; end; +// Menu "Correlation" > "Canonical" procedure TOS3MainFrm.mnuAnalysisCorrel_CanonicalClick(Sender: TObject); begin if CannonFrm = nil then