You've already forked lazarus-ccr
LazStats: Refactor TestScoreUnit. Add demo files from OpenStat. Add help to chm file. Activate help link.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@7459 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
Binary file not shown.
@ -6,7 +6,9 @@ Clone of the LazStats statistics application by William Miller
|
||||
|
||||
What is different?
|
||||
------------------
|
||||
- Update form layout.
|
||||
- Updated form layout. More consistent user interface. Use anchoring and
|
||||
autosizing to avoid widgetset-dependent layout issues.
|
||||
- Input validation for more robust user interface.
|
||||
- Move units into subfolders for each major menu command in order to avoid the
|
||||
extremely long file list in the project manager.
|
||||
- Include data and documentation folders of the original site.
|
||||
@ -14,6 +16,8 @@ What is different?
|
||||
pdf help files.
|
||||
- Create chm help from the original pdf help files of the original site,
|
||||
tool used: HelpNDoc.
|
||||
- Refactoring of code to write text output into a TStringList instead of to
|
||||
the memo of TOutputFrm directly.
|
||||
|
||||
License
|
||||
-------
|
||||
|
@ -2,37 +2,37 @@
|
||||
8
|
||||
VAR1
|
||||
VARIABLE 1
|
||||
4
|
||||
F
|
||||
2
|
||||
1
|
||||
I
|
||||
0
|
||||
99999
|
||||
L
|
||||
VAR2
|
||||
VARIABLE 2
|
||||
4
|
||||
F
|
||||
2
|
||||
1
|
||||
I
|
||||
0
|
||||
99999
|
||||
L
|
||||
VAR3
|
||||
VARIABLE 3
|
||||
4
|
||||
F
|
||||
2
|
||||
1
|
||||
I
|
||||
0
|
||||
99999
|
||||
L
|
||||
VAR4
|
||||
VARIABLE 4
|
||||
4
|
||||
F
|
||||
2
|
||||
1
|
||||
I
|
||||
0
|
||||
99999
|
||||
L
|
||||
VAR5
|
||||
VARIABLE 5
|
||||
4
|
||||
F
|
||||
2
|
||||
1
|
||||
I
|
||||
0
|
||||
99999
|
||||
L
|
||||
LastName
|
||||
@ -65,147 +65,147 @@ VAR5
|
||||
LastName
|
||||
FirstName
|
||||
IDNO
|
||||
CASE 1
|
||||
1.00
|
||||
1.00
|
||||
1.00
|
||||
1.00
|
||||
1.00
|
||||
Case 1
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
Miller
|
||||
Bill
|
||||
1
|
||||
CASE 2
|
||||
1.00
|
||||
1.00
|
||||
1.00
|
||||
1.00
|
||||
0.00
|
||||
Case 2
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
0
|
||||
Benton
|
||||
Barb
|
||||
2
|
||||
CASE 3
|
||||
1.00
|
||||
1.00
|
||||
1.00
|
||||
0.00
|
||||
0.00
|
||||
Case 3
|
||||
1
|
||||
1
|
||||
1
|
||||
0
|
||||
0
|
||||
Richards
|
||||
Tom
|
||||
3
|
||||
CASE 4
|
||||
1.00
|
||||
1.00
|
||||
0.00
|
||||
0.00
|
||||
0.00
|
||||
Case 4
|
||||
1
|
||||
1
|
||||
0
|
||||
0
|
||||
0
|
||||
Thomas
|
||||
Keith
|
||||
4
|
||||
CASE 5
|
||||
1.00
|
||||
0.00
|
||||
0.00
|
||||
0.00
|
||||
0.00
|
||||
Case 5
|
||||
1
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
King
|
||||
Bob
|
||||
5
|
||||
CASE 6
|
||||
0.00
|
||||
0.00
|
||||
0.00
|
||||
0.00
|
||||
0.00
|
||||
Case 6
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
Moreland
|
||||
Rob
|
||||
6
|
||||
CASE 7
|
||||
1.00
|
||||
0.00
|
||||
0.00
|
||||
0.00
|
||||
0.00
|
||||
Case 7
|
||||
1
|
||||
0
|
||||
0
|
||||
0
|
||||
0
|
||||
Landis
|
||||
Sandy
|
||||
7
|
||||
CASE 8
|
||||
1.00
|
||||
1.00
|
||||
0.00
|
||||
0.00
|
||||
0.00
|
||||
Case 8
|
||||
1
|
||||
1
|
||||
0
|
||||
0
|
||||
0
|
||||
Moore
|
||||
Vernil
|
||||
8
|
||||
CASE 9
|
||||
1.00
|
||||
1.00
|
||||
1.00
|
||||
0.00
|
||||
0.00
|
||||
Case 9
|
||||
1
|
||||
1
|
||||
1
|
||||
0
|
||||
0
|
||||
Tyler
|
||||
Dick
|
||||
9
|
||||
CASE 10
|
||||
1.00
|
||||
1.00
|
||||
1.00
|
||||
1.00
|
||||
0.00
|
||||
Case 10
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
0
|
||||
Cook
|
||||
Harry
|
||||
10
|
||||
CASE 11
|
||||
1.00
|
||||
1.00
|
||||
1.00
|
||||
1.00
|
||||
1.00
|
||||
Case 11
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
Rains
|
||||
Claude
|
||||
11
|
||||
CASE 12
|
||||
1.00
|
||||
0.00
|
||||
1.00
|
||||
0.00
|
||||
1.00
|
||||
Case 12
|
||||
1
|
||||
0
|
||||
1
|
||||
0
|
||||
1
|
||||
Kent
|
||||
Clark
|
||||
12
|
||||
CASE 13
|
||||
0.00
|
||||
1.00
|
||||
1.00
|
||||
1.00
|
||||
0.00
|
||||
Case 13
|
||||
0
|
||||
1
|
||||
1
|
||||
1
|
||||
0
|
||||
Clinton
|
||||
Bill
|
||||
13
|
||||
CASE 14
|
||||
1.00
|
||||
1.00
|
||||
1.00
|
||||
0.00
|
||||
1.00
|
||||
Case 14
|
||||
1
|
||||
1
|
||||
1
|
||||
0
|
||||
1
|
||||
Bush
|
||||
George
|
||||
14
|
||||
CASE 15
|
||||
1.00
|
||||
1.00
|
||||
0.00
|
||||
1.00
|
||||
1.00
|
||||
Case 15
|
||||
1
|
||||
1
|
||||
0
|
||||
1
|
||||
1
|
||||
Jefferson
|
||||
Tom
|
||||
15
|
||||
CASE 16
|
||||
1.00
|
||||
0.00
|
||||
0.00
|
||||
1.00
|
||||
0.00
|
||||
Case 16
|
||||
1
|
||||
0
|
||||
0
|
||||
1
|
||||
0
|
||||
Lincoln
|
||||
Abe
|
||||
16
|
||||
|
17
applications/lazstats/data/ItemDat.tab
Normal file
17
applications/lazstats/data/ItemDat.tab
Normal file
@ -0,0 +1,17 @@
|
||||
VAR1 VAR2 VAR3 VAR4 VAR5 LastName FirstName IDNO
|
||||
1 1 1 1 1 Miller Bill 1
|
||||
1 1 1 1 0 Benton Barb 2
|
||||
1 1 1 0 0 Richards Tom 3
|
||||
1 1 0 0 0 Thomas Keith 4
|
||||
1 0 0 0 0 King Bob 5
|
||||
0 0 0 0 0 Moreland Rob 6
|
||||
1 0 0 0 0 Landis Sandy 7
|
||||
1 1 0 0 0 Moore Vernil 8
|
||||
1 1 1 0 0 Tyler Dick 9
|
||||
1 1 1 1 0 Cook Harry 10
|
||||
1 1 1 1 1 Rains Claude 11
|
||||
1 0 1 0 1 Kent Clark 12
|
||||
0 1 1 1 0 Clinton Bill 13
|
||||
1 1 1 0 1 Bush George 14
|
||||
1 1 0 1 1 Jefferson Tom 15
|
||||
1 0 0 1 0 Lincoln Abe 16
|
220
applications/lazstats/data/itemrel.laz
Normal file
220
applications/lazstats/data/itemrel.laz
Normal file
@ -0,0 +1,220 @@
|
||||
17
|
||||
8
|
||||
VAR1
|
||||
VARIABLE 1
|
||||
4
|
||||
F
|
||||
2
|
||||
99999
|
||||
L
|
||||
VAR2
|
||||
VARIABLE 2
|
||||
4
|
||||
F
|
||||
2
|
||||
99999
|
||||
L
|
||||
VAR3
|
||||
VARIABLE 3
|
||||
4
|
||||
F
|
||||
2
|
||||
99999
|
||||
L
|
||||
VAR4
|
||||
VARIABLE 4
|
||||
4
|
||||
F
|
||||
2
|
||||
99999
|
||||
L
|
||||
VAR5
|
||||
VARIABLE 5
|
||||
4
|
||||
F
|
||||
2
|
||||
99999
|
||||
L
|
||||
VAR6
|
||||
VARIABLE 6
|
||||
4
|
||||
F
|
||||
2
|
||||
99999
|
||||
L
|
||||
VAR7
|
||||
VARIABLE 7
|
||||
4
|
||||
F
|
||||
2
|
||||
99999
|
||||
L
|
||||
VAR8
|
||||
VARIABLE 8
|
||||
4
|
||||
F
|
||||
2
|
||||
99999
|
||||
L
|
||||
Case 0
|
||||
VAR1
|
||||
VAR2
|
||||
VAR3
|
||||
VAR4
|
||||
VAR5
|
||||
VAR6
|
||||
VAR7
|
||||
VAR8
|
||||
Case 1
|
||||
1.00
|
||||
1.00
|
||||
1.00
|
||||
1.00
|
||||
1.00
|
||||
1.00
|
||||
1.00
|
||||
1.00
|
||||
Case 2
|
||||
1.00
|
||||
1.00
|
||||
1.00
|
||||
1.00
|
||||
1.00
|
||||
1.00
|
||||
1.00
|
||||
0.00
|
||||
Case 3
|
||||
1.00
|
||||
1.00
|
||||
1.00
|
||||
1.00
|
||||
1.00
|
||||
1.00
|
||||
0.00
|
||||
0.00
|
||||
Case 4
|
||||
1.00
|
||||
1.00
|
||||
1.00
|
||||
1.00
|
||||
1.00
|
||||
0.00
|
||||
0.00
|
||||
0.00
|
||||
Case 5
|
||||
1.00
|
||||
1.00
|
||||
1.00
|
||||
1.00
|
||||
0.00
|
||||
0.00
|
||||
0.00
|
||||
0.00
|
||||
Case 6
|
||||
1.00
|
||||
1.00
|
||||
1.00
|
||||
0.00
|
||||
0.00
|
||||
0.00
|
||||
0.00
|
||||
0.00
|
||||
Case 7
|
||||
1.00
|
||||
1.00
|
||||
0.00
|
||||
0.00
|
||||
0.00
|
||||
0.00
|
||||
0.00
|
||||
0.00
|
||||
Case 8
|
||||
1.00
|
||||
0.00
|
||||
0.00
|
||||
0.00
|
||||
0.00
|
||||
0.00
|
||||
0.00
|
||||
0.00
|
||||
Case 9
|
||||
0.00
|
||||
0.00
|
||||
0.00
|
||||
0.00
|
||||
0.00
|
||||
0.00
|
||||
0.00
|
||||
0.00
|
||||
Case 10
|
||||
1.00
|
||||
0.00
|
||||
0.00
|
||||
0.00
|
||||
0.00
|
||||
0.00
|
||||
0.00
|
||||
0.00
|
||||
Case 11
|
||||
1.00
|
||||
1.00
|
||||
0.00
|
||||
0.00
|
||||
0.00
|
||||
0.00
|
||||
0.00
|
||||
0.00
|
||||
Case 12
|
||||
1.00
|
||||
1.00
|
||||
1.00
|
||||
0.00
|
||||
0.00
|
||||
0.00
|
||||
0.00
|
||||
0.00
|
||||
Case 13
|
||||
1.00
|
||||
1.00
|
||||
1.00
|
||||
1.00
|
||||
0.00
|
||||
0.00
|
||||
0.00
|
||||
0.00
|
||||
Case 14
|
||||
1.00
|
||||
1.00
|
||||
1.00
|
||||
1.00
|
||||
1.00
|
||||
0.00
|
||||
0.00
|
||||
0.00
|
||||
Case 15
|
||||
1.00
|
||||
1.00
|
||||
1.00
|
||||
1.00
|
||||
1.00
|
||||
1.00
|
||||
0.00
|
||||
0.00
|
||||
Case 16
|
||||
1.00
|
||||
1.00
|
||||
1.00
|
||||
1.00
|
||||
1.00
|
||||
1.00
|
||||
1.00
|
||||
0.00
|
||||
Case 17
|
||||
1.00
|
||||
1.00
|
||||
1.00
|
||||
1.00
|
||||
1.00
|
||||
1.00
|
||||
1.00
|
||||
1.00
|
18
applications/lazstats/data/itemrel.tab
Normal file
18
applications/lazstats/data/itemrel.tab
Normal file
@ -0,0 +1,18 @@
|
||||
VAR1 VAR2 VAR3 VAR4 VAR5 VAR6 VAR7 VAR8
|
||||
1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00
|
||||
1.00 1.00 1.00 1.00 1.00 1.00 1.00 0.00
|
||||
1.00 1.00 1.00 1.00 1.00 1.00 0.00 0.00
|
||||
1.00 1.00 1.00 1.00 1.00 0.00 0.00 0.00
|
||||
1.00 1.00 1.00 1.00 0.00 0.00 0.00 0.00
|
||||
1.00 1.00 1.00 0.00 0.00 0.00 0.00 0.00
|
||||
1.00 1.00 0.00 0.00 0.00 0.00 0.00 0.00
|
||||
1.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
|
||||
0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
|
||||
1.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
|
||||
1.00 1.00 0.00 0.00 0.00 0.00 0.00 0.00
|
||||
1.00 1.00 1.00 0.00 0.00 0.00 0.00 0.00
|
||||
1.00 1.00 1.00 1.00 0.00 0.00 0.00 0.00
|
||||
1.00 1.00 1.00 1.00 1.00 0.00 0.00 0.00
|
||||
1.00 1.00 1.00 1.00 1.00 1.00 0.00 0.00
|
||||
1.00 1.00 1.00 1.00 1.00 1.00 1.00 0.00
|
||||
1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00
|
Binary file not shown.
@ -1899,7 +1899,7 @@ var
|
||||
Grptotals: DblDyneVec;
|
||||
Subjtotals: DblDyneMat;
|
||||
design: StrDyneMat;
|
||||
G, term1, term2, term3, term4, term5, term6, term7: double;
|
||||
term1, term2, term3, term4, term5, term6, term7: double;
|
||||
sumxsqr: double;
|
||||
SSbetsubj, SSgroups, SSsubwGrps, SSwithinsubj, SSa, SSb, SSab: double;
|
||||
SSerrwithin, SStotal, MSgroups, MSsubwGrps, MSa, MSb, MSab: double;
|
||||
@ -1994,7 +1994,6 @@ begin
|
||||
for j := 0 to n do
|
||||
Subjtotals[i,j] := 0.0;
|
||||
|
||||
G := 0.0;
|
||||
sumxsqr := 0.0;
|
||||
term1 := 0.0;
|
||||
term2 := 0.0;
|
||||
@ -2398,7 +2397,7 @@ var
|
||||
Grptotals: DblDyneVec;
|
||||
Subjtotals: DblDyneMat;
|
||||
design: StrDyneMat;
|
||||
G, term1, term2, term3, term4, term5, term6, term7: double;
|
||||
term1, term2, term3, term4, term5, term6, term7: double;
|
||||
sumxsqr: double;
|
||||
SSbetsubj, SSgroups, SSsubwGrps, SSwithinsubj, SSa, SSb, SSab: double;
|
||||
SSerrwithin, SStotal, MSgroups, MSsubwGrps, MSa, MSb, MSab: double;
|
||||
@ -2493,7 +2492,6 @@ begin
|
||||
for j := 0 to n do
|
||||
Subjtotals[i,j] := 0.0;
|
||||
|
||||
G := 0.0;
|
||||
sumxsqr := 0.0;
|
||||
term1 := 0.0;
|
||||
term2 := 0.0;
|
||||
@ -2898,7 +2896,7 @@ var
|
||||
Grptotals: DblDyneVec;
|
||||
Subjtotals: DblDyneMat;
|
||||
design: StrDyneMat;
|
||||
G, term1, term2, term3, term4, term5, term6, term7, term8, term9: double;
|
||||
term1, term2, term3, term4, term5, term6, term7, term8, term9: double;
|
||||
sumxsqr: double;
|
||||
SSbetsubj, SSgroups, SSsubwGrps, SSwithinsubj, SSa, SSb, SSc, SSab: double;
|
||||
SSerrwithin, SStotal, MSgroups, MSsubwGrps, MSa, MSb, MSc, MSab: double;
|
||||
@ -3000,7 +2998,6 @@ begin
|
||||
for j := 0 to n do
|
||||
Subjtotals[i,j] := 0.0;
|
||||
|
||||
G := 0.0;
|
||||
sumxsqr := 0.0;
|
||||
term1 := 0.0;
|
||||
term2 := 0.0;
|
||||
|
@ -249,7 +249,6 @@ end;
|
||||
procedure TTwoWayLogLinFrm.ComputeBtnClick(Sender: TObject);
|
||||
var
|
||||
Data : DblDyneMat;
|
||||
NewData : DblDyneMat = nil;
|
||||
Prop : DblDyneMat;
|
||||
LogData : DblDyneMat;
|
||||
Expected : DblDyneMat;
|
||||
@ -313,7 +312,6 @@ begin
|
||||
SetLength(Prop, Nrows + 1, Ncols + 1);
|
||||
SetLength(LogData, Nrows + 1, Ncols + 1);
|
||||
SetLength(Expected, Nrows + 1, Ncols + 1);
|
||||
SetLength(NewData, Nrows + 1, Ncols + 1);
|
||||
SetLength(NewRowMarg, Nrows + 1);
|
||||
SetLength(NewColMarg, Ncols + 1);
|
||||
|
||||
@ -348,7 +346,6 @@ begin
|
||||
SetLength(Prop,Nrows+1,Ncols+1);
|
||||
SetLength(LogData,Nrows+1,Ncols+1);
|
||||
SetLength(Expected,Nrows+1,Ncols+1);
|
||||
SetLength(NewData,Nrows+1,Ncols+1);
|
||||
SetLength(NewRowMarg,Nrows+1);
|
||||
SetLength(NewColMarg,Ncols+1);
|
||||
end;
|
||||
@ -705,7 +702,6 @@ begin
|
||||
|
||||
NewColMarg := nil;
|
||||
NewRowMarg := nil;
|
||||
NewData := nil;
|
||||
Expected := nil;
|
||||
LogData := nil;
|
||||
Prop := nil;
|
||||
|
@ -206,7 +206,6 @@ end;
|
||||
|
||||
procedure TMatchItemForm.FormShow(Sender: TObject);
|
||||
var
|
||||
nitems: integer;
|
||||
noleft, noright: integer;
|
||||
JPEG: TJPEGImage;
|
||||
begin
|
||||
@ -225,7 +224,6 @@ begin
|
||||
|
||||
if ItemBankFrm.BankInfo.NMatchItems > 0 then
|
||||
begin
|
||||
nitems := ItemBankFrm.BankInfo.NMatchItems;
|
||||
ItemNoEdit.Text := '1'; //IntToStr(ItemBankFrm.TFItemInfo[1].ItemNumber);
|
||||
MajorCodeEdit.Text := IntToStr(ItemBankFrm.MatchInfo[1].majorcode) ;
|
||||
MinorCodeEdit.Text := IntToStr(ItemBankFrm.MatchInfo[1].minorcode);
|
||||
|
@ -313,7 +313,6 @@ var
|
||||
itemno: integer;
|
||||
JPEG: TJPEGImage;
|
||||
nochoices: integer;
|
||||
response: string;
|
||||
begin
|
||||
if MessageDlg('Save current item?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
|
||||
ItemSaveBtnClick(self);
|
||||
@ -358,7 +357,6 @@ end;
|
||||
procedure TMCItemForm.StartNewBtnClick(Sender: TObject);
|
||||
var
|
||||
currentno: integer;
|
||||
response: string;
|
||||
begin
|
||||
if MessageDlg('Save current item?', mtInformation, [mbYes, mbNo], 0) = mrYes then
|
||||
ItemSaveBtnClick(self);
|
||||
|
@ -1,149 +1,152 @@
|
||||
object TestScoreFrm: TTestScoreFrm
|
||||
Left = 501
|
||||
Height = 543
|
||||
Height = 575
|
||||
Top = 204
|
||||
Width = 641
|
||||
Width = 505
|
||||
HelpType = htKeyword
|
||||
HelpKeyword = 'ClassicalTestAnalysis.htm'
|
||||
AutoSize = True
|
||||
Caption = 'Test Scoring and Analysis'
|
||||
ClientHeight = 543
|
||||
ClientWidth = 641
|
||||
ClientHeight = 575
|
||||
ClientWidth = 505
|
||||
OnActivate = FormActivate
|
||||
OnCreate = FormCreate
|
||||
OnShow = FormShow
|
||||
Position = poMainFormCenter
|
||||
LCLVersion = '2.1.0.0'
|
||||
object GroupBox1: TGroupBox
|
||||
object OptionsGroup: TGroupBox
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideRight.Control = Owner
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = Bevel1
|
||||
Left = 8
|
||||
Height = 156
|
||||
Top = 338
|
||||
Width = 625
|
||||
Anchors = [akLeft, akRight, akBottom]
|
||||
Top = 370
|
||||
Width = 496
|
||||
Anchors = [akLeft, akBottom]
|
||||
AutoSize = True
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Top = 8
|
||||
BorderSpacing.Right = 8
|
||||
Caption = 'Options'
|
||||
ChildSizing.LeftRightSpacing = 12
|
||||
ChildSizing.LeftRightSpacing = 16
|
||||
ChildSizing.TopBottomSpacing = 6
|
||||
ChildSizing.HorizontalSpacing = 8
|
||||
ChildSizing.HorizontalSpacing = 32
|
||||
ChildSizing.VerticalSpacing = 2
|
||||
ChildSizing.EnlargeHorizontal = crsHomogenousChildResize
|
||||
ChildSizing.Layout = cclLeftToRightThenTopToBottom
|
||||
ChildSizing.ControlsPerLine = 2
|
||||
ClientHeight = 136
|
||||
ClientWidth = 621
|
||||
ClientWidth = 492
|
||||
TabOrder = 3
|
||||
object FirstChk: TCheckBox
|
||||
Left = 12
|
||||
Left = 16
|
||||
Height = 19
|
||||
Top = 6
|
||||
Width = 287
|
||||
Width = 206
|
||||
Caption = 'First data record is the scoring key'
|
||||
OnClick = FirstChkClick
|
||||
TabOrder = 0
|
||||
end
|
||||
object SimultChk: TCheckBox
|
||||
Left = 307
|
||||
Left = 254
|
||||
Height = 19
|
||||
Top = 6
|
||||
Width = 302
|
||||
Width = 222
|
||||
Caption = 'Simultaneous Multiple Regression'
|
||||
TabOrder = 1
|
||||
end
|
||||
object ReplaceChk: TCheckBox
|
||||
Left = 12
|
||||
Left = 16
|
||||
Height = 19
|
||||
Top = 27
|
||||
Width = 287
|
||||
Width = 206
|
||||
Caption = 'Replace grid items with item scores'
|
||||
TabOrder = 7
|
||||
end
|
||||
object CorrsChk: TCheckBox
|
||||
Left = 307
|
||||
Left = 254
|
||||
Height = 19
|
||||
Top = 27
|
||||
Width = 302
|
||||
Width = 222
|
||||
Caption = 'Intercorrelations Matrix'
|
||||
TabOrder = 2
|
||||
end
|
||||
object AddChk: TCheckBox
|
||||
Left = 12
|
||||
Left = 16
|
||||
Height = 19
|
||||
Top = 48
|
||||
Width = 287
|
||||
Width = 206
|
||||
Caption = 'Add Test scores to the grid'
|
||||
TabOrder = 8
|
||||
end
|
||||
object PlotChk: TCheckBox
|
||||
Left = 307
|
||||
Left = 254
|
||||
Height = 19
|
||||
Top = 48
|
||||
Width = 302
|
||||
Width = 222
|
||||
Caption = 'Plot Total Score Distribution'
|
||||
TabOrder = 3
|
||||
end
|
||||
object ListChk: TCheckBox
|
||||
Left = 12
|
||||
Left = 16
|
||||
Height = 19
|
||||
Top = 69
|
||||
Width = 287
|
||||
Width = 206
|
||||
Caption = 'List test scores'
|
||||
TabOrder = 9
|
||||
end
|
||||
object DescChk: TCheckBox
|
||||
Left = 307
|
||||
Left = 254
|
||||
Height = 19
|
||||
Top = 69
|
||||
Width = 302
|
||||
Width = 222
|
||||
Caption = 'Means, Variances, Standard Deviations'
|
||||
TabOrder = 4
|
||||
end
|
||||
object AlphaChk: TCheckBox
|
||||
Left = 12
|
||||
Left = 16
|
||||
Height = 19
|
||||
Top = 90
|
||||
Width = 287
|
||||
Width = 206
|
||||
Caption = 'Cronbach Alpha Reliability'
|
||||
TabOrder = 10
|
||||
end
|
||||
object HoytChk: TCheckBox
|
||||
Left = 307
|
||||
Left = 254
|
||||
Height = 19
|
||||
Top = 90
|
||||
Width = 302
|
||||
Width = 222
|
||||
Caption = 'Hoyt''s Intraclass Reliability Estimates'
|
||||
TabOrder = 5
|
||||
end
|
||||
object StepChk: TCheckBox
|
||||
Left = 12
|
||||
Left = 16
|
||||
Height = 19
|
||||
Top = 111
|
||||
Width = 287
|
||||
Width = 206
|
||||
Caption = 'Stepwise KR#20 Reliability'
|
||||
TabOrder = 11
|
||||
end
|
||||
object MeansPlotChk: TCheckBox
|
||||
Left = 307
|
||||
Left = 254
|
||||
Height = 19
|
||||
Top = 111
|
||||
Width = 302
|
||||
Width = 222
|
||||
Caption = 'Plot Item Means'
|
||||
TabOrder = 6
|
||||
end
|
||||
end
|
||||
object GroupBox2: TGroupBox
|
||||
object ItemScoringGroup: TGroupBox
|
||||
AnchorSideLeft.Control = ObtainScoreGroup
|
||||
AnchorSideTop.Control = Owner
|
||||
AnchorSideRight.Control = Owner
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 411
|
||||
Left = 275
|
||||
Height = 215
|
||||
Top = 8
|
||||
Width = 221
|
||||
Anchors = [akTop, akRight]
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
AutoSize = True
|
||||
BorderSpacing.Top = 8
|
||||
BorderSpacing.Right = 9
|
||||
@ -152,7 +155,7 @@ object TestScoreFrm: TTestScoreFrm
|
||||
ClientWidth = 217
|
||||
TabOrder = 1
|
||||
object Label7: TLabel
|
||||
AnchorSideLeft.Control = GroupBox2
|
||||
AnchorSideLeft.Control = ItemScoringGroup
|
||||
AnchorSideTop.Control = ItemNoEdit
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 16
|
||||
@ -164,7 +167,7 @@ object TestScoreFrm: TTestScoreFrm
|
||||
ParentColor = False
|
||||
end
|
||||
object Label8: TLabel
|
||||
AnchorSideLeft.Control = GroupBox2
|
||||
AnchorSideLeft.Control = ItemScoringGroup
|
||||
AnchorSideTop.Control = ItemScroll
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 16
|
||||
@ -178,7 +181,7 @@ object TestScoreFrm: TTestScoreFrm
|
||||
object Label9: TLabel
|
||||
AnchorSideTop.Control = ItemScroll
|
||||
AnchorSideTop.Side = asrCenter
|
||||
AnchorSideRight.Control = GroupBox2
|
||||
AnchorSideRight.Control = ItemScoringGroup
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 194
|
||||
Height = 15
|
||||
@ -190,7 +193,7 @@ object TestScoreFrm: TTestScoreFrm
|
||||
ParentColor = False
|
||||
end
|
||||
object Label10: TLabel
|
||||
AnchorSideLeft.Control = GroupBox2
|
||||
AnchorSideLeft.Control = ItemScoringGroup
|
||||
AnchorSideTop.Control = ItemScroll
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 16
|
||||
@ -204,7 +207,7 @@ object TestScoreFrm: TTestScoreFrm
|
||||
ParentColor = False
|
||||
end
|
||||
object Label11: TLabel
|
||||
AnchorSideLeft.Control = GroupBox2
|
||||
AnchorSideLeft.Control = ItemScoringGroup
|
||||
AnchorSideTop.Control = RespNoEdit
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 16
|
||||
@ -216,7 +219,7 @@ object TestScoreFrm: TTestScoreFrm
|
||||
ParentColor = False
|
||||
end
|
||||
object Label12: TLabel
|
||||
AnchorSideLeft.Control = GroupBox2
|
||||
AnchorSideLeft.Control = ItemScoringGroup
|
||||
AnchorSideTop.Control = ResponseEdit
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 16
|
||||
@ -228,7 +231,7 @@ object TestScoreFrm: TTestScoreFrm
|
||||
ParentColor = False
|
||||
end
|
||||
object Label13: TLabel
|
||||
AnchorSideLeft.Control = GroupBox2
|
||||
AnchorSideLeft.Control = ItemScoringGroup
|
||||
AnchorSideTop.Control = ScoreEdit
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 16
|
||||
@ -240,10 +243,10 @@ object TestScoreFrm: TTestScoreFrm
|
||||
ParentColor = False
|
||||
end
|
||||
object Label14: TLabel
|
||||
AnchorSideLeft.Control = GroupBox2
|
||||
AnchorSideLeft.Control = ItemScoringGroup
|
||||
AnchorSideTop.Control = ResponseScroll
|
||||
AnchorSideTop.Side = asrCenter
|
||||
AnchorSideRight.Control = GroupBox2
|
||||
AnchorSideRight.Control = ItemScoringGroup
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 16
|
||||
Height = 15
|
||||
@ -257,7 +260,7 @@ object TestScoreFrm: TTestScoreFrm
|
||||
object Label15: TLabel
|
||||
AnchorSideTop.Control = ResponseScroll
|
||||
AnchorSideTop.Side = asrCenter
|
||||
AnchorSideRight.Control = GroupBox2
|
||||
AnchorSideRight.Control = ItemScoringGroup
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 194
|
||||
Height = 15
|
||||
@ -269,8 +272,8 @@ object TestScoreFrm: TTestScoreFrm
|
||||
ParentColor = False
|
||||
end
|
||||
object ItemNoEdit: TEdit
|
||||
AnchorSideTop.Control = GroupBox2
|
||||
AnchorSideRight.Control = GroupBox2
|
||||
AnchorSideTop.Control = ItemScoringGroup
|
||||
AnchorSideRight.Control = ItemScoringGroup
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 157
|
||||
Height = 23
|
||||
@ -306,7 +309,7 @@ object TestScoreFrm: TTestScoreFrm
|
||||
object RespNoEdit: TEdit
|
||||
AnchorSideTop.Control = Label10
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = GroupBox2
|
||||
AnchorSideRight.Control = ItemScoringGroup
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 157
|
||||
Height = 23
|
||||
@ -320,16 +323,16 @@ object TestScoreFrm: TTestScoreFrm
|
||||
Text = '1'
|
||||
end
|
||||
object ResponseEdit: TEdit
|
||||
AnchorSideLeft.Control = Label12
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = RespNoEdit
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = GroupBox2
|
||||
AnchorSideRight.Control = ItemScoringGroup
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 77
|
||||
Left = 157
|
||||
Height = 23
|
||||
Top = 115
|
||||
Width = 132
|
||||
Width = 52
|
||||
Alignment = taRightJustify
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Top = 4
|
||||
@ -339,7 +342,7 @@ object TestScoreFrm: TTestScoreFrm
|
||||
object ScoreEdit: TEdit
|
||||
AnchorSideTop.Control = ResponseEdit
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = GroupBox2
|
||||
AnchorSideRight.Control = ItemScoringGroup
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 157
|
||||
Height = 23
|
||||
@ -375,17 +378,19 @@ object TestScoreFrm: TTestScoreFrm
|
||||
OnChange = ResponseScrollChange
|
||||
end
|
||||
end
|
||||
object GroupBox3: TGroupBox
|
||||
AnchorSideLeft.Control = GroupBox2
|
||||
AnchorSideTop.Control = GroupBox2
|
||||
object ObtainScoreGroup: TGroupBox
|
||||
AnchorSideLeft.Control = ItemScoringGroup
|
||||
AnchorSideTop.Control = ItemScoringGroup
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = Owner
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 411
|
||||
AnchorSideBottom.Control = Panel1
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 275
|
||||
Height = 93
|
||||
Top = 239
|
||||
Top = 269
|
||||
Width = 222
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
Anchors = [akRight, akBottom]
|
||||
AutoSize = True
|
||||
BorderSpacing.Top = 16
|
||||
BorderSpacing.Right = 8
|
||||
@ -403,13 +408,13 @@ object TestScoreFrm: TTestScoreFrm
|
||||
Top = 27
|
||||
Width = 34
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Right = 8
|
||||
BorderSpacing.Right = 16
|
||||
Caption = 'wrong'
|
||||
ParentColor = False
|
||||
end
|
||||
object NoCorBtn: TRadioButton
|
||||
AnchorSideLeft.Control = GroupBox3
|
||||
AnchorSideTop.Control = GroupBox3
|
||||
AnchorSideLeft.Control = ObtainScoreGroup
|
||||
AnchorSideTop.Control = ObtainScoreGroup
|
||||
Left = 12
|
||||
Height = 19
|
||||
Top = 4
|
||||
@ -420,7 +425,7 @@ object TestScoreFrm: TTestScoreFrm
|
||||
TabOrder = 0
|
||||
end
|
||||
object FractWrongBtn: TRadioButton
|
||||
AnchorSideLeft.Control = GroupBox3
|
||||
AnchorSideLeft.Control = ObtainScoreGroup
|
||||
AnchorSideTop.Control = NoCorBtn
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 12
|
||||
@ -447,7 +452,7 @@ object TestScoreFrm: TTestScoreFrm
|
||||
Text = '1'
|
||||
end
|
||||
object SumRespBtn: TRadioButton
|
||||
AnchorSideLeft.Control = GroupBox3
|
||||
AnchorSideLeft.Control = ObtainScoreGroup
|
||||
AnchorSideTop.Control = FractWrongBtn
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 12
|
||||
@ -465,9 +470,9 @@ object TestScoreFrm: TTestScoreFrm
|
||||
AnchorSideRight.Control = ComputeBtn
|
||||
AnchorSideBottom.Control = Owner
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 432
|
||||
Left = 296
|
||||
Height = 25
|
||||
Top = 510
|
||||
Top = 542
|
||||
Width = 54
|
||||
Anchors = [akRight, akBottom]
|
||||
AutoSize = True
|
||||
@ -483,9 +488,9 @@ object TestScoreFrm: TTestScoreFrm
|
||||
AnchorSideRight.Control = CloseBtn
|
||||
AnchorSideBottom.Control = Owner
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 494
|
||||
Left = 358
|
||||
Height = 25
|
||||
Top = 510
|
||||
Top = 542
|
||||
Width = 76
|
||||
Anchors = [akRight, akBottom]
|
||||
AutoSize = True
|
||||
@ -502,9 +507,9 @@ object TestScoreFrm: TTestScoreFrm
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = Owner
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 578
|
||||
Left = 442
|
||||
Height = 25
|
||||
Top = 510
|
||||
Top = 542
|
||||
Width = 55
|
||||
Anchors = [akRight, akBottom]
|
||||
AutoSize = True
|
||||
@ -519,19 +524,19 @@ object TestScoreFrm: TTestScoreFrm
|
||||
object Panel1: TPanel
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideTop.Control = Owner
|
||||
AnchorSideRight.Control = GroupBox3
|
||||
AnchorSideBottom.Control = GroupBox1
|
||||
AnchorSideRight.Control = ObtainScoreGroup
|
||||
AnchorSideBottom.Control = OptionsGroup
|
||||
Left = 8
|
||||
Height = 322
|
||||
Height = 354
|
||||
Top = 8
|
||||
Width = 387
|
||||
Width = 259
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Top = 8
|
||||
BorderSpacing.Right = 16
|
||||
BorderSpacing.Right = 8
|
||||
BevelOuter = bvNone
|
||||
ClientHeight = 322
|
||||
ClientWidth = 387
|
||||
ClientHeight = 354
|
||||
ClientWidth = 259
|
||||
TabOrder = 0
|
||||
object Label1: TLabel
|
||||
AnchorSideLeft.Control = Panel1
|
||||
@ -546,7 +551,7 @@ object TestScoreFrm: TTestScoreFrm
|
||||
object Label2: TLabel
|
||||
AnchorSideLeft.Control = ItemList
|
||||
AnchorSideTop.Control = Panel1
|
||||
Left = 215
|
||||
Left = 151
|
||||
Height = 15
|
||||
Top = 0
|
||||
Width = 76
|
||||
@ -557,9 +562,9 @@ object TestScoreFrm: TTestScoreFrm
|
||||
AnchorSideLeft.Control = LastNameEdit
|
||||
AnchorSideTop.Control = LastInBtn
|
||||
AnchorSideBottom.Control = LastNameEdit
|
||||
Left = 215
|
||||
Left = 151
|
||||
Height = 15
|
||||
Top = 172
|
||||
Top = 204
|
||||
Width = 59
|
||||
Anchors = [akLeft, akBottom]
|
||||
BorderSpacing.Bottom = 2
|
||||
@ -569,9 +574,9 @@ object TestScoreFrm: TTestScoreFrm
|
||||
object Label4: TLabel
|
||||
AnchorSideLeft.Control = FirstNameEdit
|
||||
AnchorSideBottom.Control = FirstNameEdit
|
||||
Left = 215
|
||||
Left = 151
|
||||
Height = 15
|
||||
Top = 228
|
||||
Top = 260
|
||||
Width = 60
|
||||
Anchors = [akLeft, akBottom]
|
||||
Caption = 'First Name:'
|
||||
@ -580,9 +585,9 @@ object TestScoreFrm: TTestScoreFrm
|
||||
object Label5: TLabel
|
||||
AnchorSideLeft.Control = IDNoEdit
|
||||
AnchorSideBottom.Control = IDNoEdit
|
||||
Left = 215
|
||||
Left = 151
|
||||
Height = 15
|
||||
Top = 282
|
||||
Top = 314
|
||||
Width = 58
|
||||
Anchors = [akLeft, akBottom]
|
||||
BorderSpacing.Bottom = 2
|
||||
@ -597,9 +602,9 @@ object TestScoreFrm: TTestScoreFrm
|
||||
AnchorSideBottom.Control = Panel1
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 0
|
||||
Height = 305
|
||||
Height = 337
|
||||
Top = 17
|
||||
Width = 171
|
||||
Width = 107
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
BorderSpacing.Top = 2
|
||||
BorderSpacing.Right = 8
|
||||
@ -612,7 +617,7 @@ object TestScoreFrm: TTestScoreFrm
|
||||
AnchorSideLeft.Control = Panel1
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = VarList
|
||||
Left = 179
|
||||
Left = 115
|
||||
Height = 28
|
||||
Top = 17
|
||||
Width = 28
|
||||
@ -627,7 +632,7 @@ object TestScoreFrm: TTestScoreFrm
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = InBtn
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 179
|
||||
Left = 115
|
||||
Height = 28
|
||||
Top = 49
|
||||
Width = 28
|
||||
@ -642,9 +647,9 @@ object TestScoreFrm: TTestScoreFrm
|
||||
AnchorSideLeft.Control = Panel1
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideBottom.Control = Label4
|
||||
Left = 179
|
||||
Left = 115
|
||||
Height = 28
|
||||
Top = 184
|
||||
Top = 216
|
||||
Width = 28
|
||||
Anchors = [akLeft, akBottom]
|
||||
BorderSpacing.Bottom = 16
|
||||
@ -658,9 +663,9 @@ object TestScoreFrm: TTestScoreFrm
|
||||
AnchorSideLeft.Control = Panel1
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideBottom.Control = Label5
|
||||
Left = 179
|
||||
Left = 115
|
||||
Height = 28
|
||||
Top = 238
|
||||
Top = 270
|
||||
Width = 28
|
||||
Anchors = [akLeft, akBottom]
|
||||
BorderSpacing.Bottom = 16
|
||||
@ -675,9 +680,9 @@ object TestScoreFrm: TTestScoreFrm
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideBottom.Control = Panel1
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 179
|
||||
Left = 115
|
||||
Height = 28
|
||||
Top = 294
|
||||
Top = 326
|
||||
Width = 28
|
||||
Anchors = [akLeft, akBottom]
|
||||
Images = MainDataModule.ImageList
|
||||
@ -693,10 +698,10 @@ object TestScoreFrm: TTestScoreFrm
|
||||
AnchorSideRight.Control = Panel1
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = Label3
|
||||
Left = 215
|
||||
Height = 139
|
||||
Left = 151
|
||||
Height = 171
|
||||
Top = 17
|
||||
Width = 172
|
||||
Width = 108
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
BorderSpacing.Left = 8
|
||||
BorderSpacing.Bottom = 16
|
||||
@ -714,10 +719,10 @@ object TestScoreFrm: TTestScoreFrm
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = LastInBtn
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 215
|
||||
Left = 151
|
||||
Height = 23
|
||||
Top = 189
|
||||
Width = 172
|
||||
Top = 221
|
||||
Width = 108
|
||||
Anchors = [akLeft, akRight, akBottom]
|
||||
BorderSpacing.Left = 8
|
||||
ReadOnly = True
|
||||
@ -730,10 +735,10 @@ object TestScoreFrm: TTestScoreFrm
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = FirstInBtn
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 215
|
||||
Left = 151
|
||||
Height = 23
|
||||
Top = 243
|
||||
Width = 172
|
||||
Top = 275
|
||||
Width = 108
|
||||
Anchors = [akLeft, akRight, akBottom]
|
||||
BorderSpacing.Left = 8
|
||||
ReadOnly = True
|
||||
@ -746,10 +751,10 @@ object TestScoreFrm: TTestScoreFrm
|
||||
AnchorSideRight.Side = asrBottom
|
||||
AnchorSideBottom.Control = IDInBtn
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 215
|
||||
Left = 151
|
||||
Height = 23
|
||||
Top = 299
|
||||
Width = 172
|
||||
Top = 331
|
||||
Width = 108
|
||||
Anchors = [akLeft, akRight, akBottom]
|
||||
BorderSpacing.Left = 8
|
||||
ReadOnly = True
|
||||
@ -763,8 +768,8 @@ object TestScoreFrm: TTestScoreFrm
|
||||
AnchorSideBottom.Control = CloseBtn
|
||||
Left = 0
|
||||
Height = 8
|
||||
Top = 494
|
||||
Width = 641
|
||||
Top = 526
|
||||
Width = 505
|
||||
Anchors = [akLeft, akRight, akBottom]
|
||||
Shape = bsBottomLine
|
||||
end
|
||||
|
@ -1,3 +1,5 @@
|
||||
// File for testing: ItemDat.laz
|
||||
|
||||
unit TestScoreUnit;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
@ -46,9 +48,9 @@ type
|
||||
RespNoEdit: TEdit;
|
||||
ItemNoEdit: TEdit;
|
||||
FractEdit: TEdit;
|
||||
GroupBox1: TGroupBox;
|
||||
GroupBox2: TGroupBox;
|
||||
GroupBox3: TGroupBox;
|
||||
OptionsGroup: TGroupBox;
|
||||
ItemScoringGroup: TGroupBox;
|
||||
ObtainScoreGroup: TGroupBox;
|
||||
Label10: TLabel;
|
||||
Label11: TLabel;
|
||||
Label6: TLabel;
|
||||
@ -107,8 +109,8 @@ type
|
||||
procedure SimMR(AReport: TStrings);
|
||||
procedure Hoyt(AReport: TStrings);
|
||||
procedure StepKR(AReport: TStrings);
|
||||
procedure PlotScores;
|
||||
procedure PlotMeans;
|
||||
function PlotScores: Boolean;
|
||||
function PlotMeans: Boolean;
|
||||
|
||||
procedure UpdateBtnStates;
|
||||
|
||||
@ -134,12 +136,11 @@ begin
|
||||
ResponseScroll.Min := 1;
|
||||
ItemScroll.Position := 1;
|
||||
ResponseScroll.Position := 1;
|
||||
//InBtn.Enabled := true;
|
||||
//OutBtn.Enabled := false;
|
||||
VarList.Items.Clear;
|
||||
ItemList.Items.Clear;
|
||||
for i := 1 to NoVariables do
|
||||
VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]);
|
||||
|
||||
ItemNoEdit.Text := '1';
|
||||
RespNoEdit.Text := '1';
|
||||
ResponseEdit.Text := '1';
|
||||
@ -148,6 +149,7 @@ begin
|
||||
LastNameEdit.Text := '';
|
||||
FirstNameEdit.Text := '';
|
||||
IDNoEdit.Text := '';
|
||||
|
||||
NoCorBtn.Checked := true;
|
||||
ReplaceChk.Checked := false;
|
||||
AddChk.Checked := false;
|
||||
@ -158,11 +160,10 @@ begin
|
||||
PlotChk.Checked := false;
|
||||
DescChk.Checked := false;
|
||||
FirstChk.Checked := true;
|
||||
GroupBox2.Visible := false;
|
||||
|
||||
ItemScoringGroup.Visible := false;
|
||||
|
||||
MaxRespNo := 0;
|
||||
//LastInBtn.Visible := true;
|
||||
//FirstInBtn.Visible := true;
|
||||
//IDInBtn.Visible := true;
|
||||
StepChk.Checked := false;
|
||||
HoytChk.Checked := false;
|
||||
MeansPlotChk.Checked := false;
|
||||
@ -228,6 +229,7 @@ begin
|
||||
ComputeBtn.Constraints.MinWidth := w;
|
||||
CloseBtn.Constraints.MinWidth := w;
|
||||
|
||||
Panel1.Constraints.MinHeight := ItemScoringGroup.Top + ItemScoringGroup.Height + ObtainScoreGroup.Height + ObtainScoreGroup.BorderSpacing.Top - Panel1.Top;
|
||||
Constraints.MinWidth := Width;
|
||||
Constraints.MinHeight := Height;
|
||||
|
||||
@ -295,6 +297,7 @@ begin
|
||||
Responses[respno][item-1] := ResponseEdit.Text;
|
||||
RespWghts[respno][item-1] := StrToFloat(ScoreEdit.Text);
|
||||
end;
|
||||
|
||||
item := ItemScroll.Position;
|
||||
ItemNoEdit.Text := IntToStr(item);
|
||||
respno := 1;
|
||||
@ -343,6 +346,7 @@ var
|
||||
i, j, col, start, count: integer;
|
||||
cellstring: string;
|
||||
lReport: TStrings;
|
||||
canContinue: Boolean;
|
||||
begin
|
||||
NoItems := ItemList.Items.Count;
|
||||
|
||||
@ -402,6 +406,11 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
// Avoid crashing when the scrollbar has not been clicked.
|
||||
if not FirstChk.checked and (MaxRespNo = 0) then
|
||||
MaxRespNo := 1;
|
||||
|
||||
// now score the responses
|
||||
ItemScores();
|
||||
|
||||
@ -462,13 +471,13 @@ begin
|
||||
// Get simultaneous multiple regressions if elected
|
||||
if SimultChk.Checked then SimMR(lReport);
|
||||
|
||||
if lReport.Count > 0 then DisplayReport(lReport);
|
||||
if lReport.Count > 0 then canContinue := DisplayReport(lReport);
|
||||
|
||||
// plot subject scores if elected
|
||||
if PlotChk.Checked then PlotScores();
|
||||
if PlotChk.Checked and canContinue then canContinue := PlotScores();
|
||||
|
||||
// Plot item means if elected
|
||||
if MeansPlotChk.Checked then PlotMeans();
|
||||
if MeansPlotChk.Checked and canContinue then PlotMeans();
|
||||
|
||||
finally
|
||||
lReport.Free;
|
||||
@ -477,8 +486,7 @@ end;
|
||||
|
||||
procedure TTestScoreFrm.FirstChkClick(Sender: TObject);
|
||||
begin
|
||||
if FirstChk.Checked then GroupBox2.Visible := false else
|
||||
GroupBox2.Visible := true;
|
||||
ItemScoringGroup.Visible := not FirstChk.Checked;
|
||||
end;
|
||||
|
||||
procedure TTestScoreFrm.FirstInBtnClick(Sender: TObject);
|
||||
@ -508,32 +516,32 @@ begin
|
||||
score := 0.0;
|
||||
if (not GoodRecord(i,NoSelected,ColNoSelected)) then continue;
|
||||
count := count + 1;
|
||||
for j := 1 to NoItems do
|
||||
for j := 0 to NoItems-1 do
|
||||
begin
|
||||
col := ColNoSelected[j-1];
|
||||
response := Trim(OS3MainFrm.DataGrid.Cells[col,i]);
|
||||
col := ColNoSelected[j];
|
||||
response := Trim(OS3MainFrm.DataGrid.Cells[col, i]);
|
||||
for k := 1 to MaxRespNo do
|
||||
begin
|
||||
if (response = Responses[k][j-1])then
|
||||
if response = Responses[k, j]then
|
||||
begin
|
||||
if SumRespBtn.Checked then
|
||||
begin
|
||||
score := score + RespWghts[k][j-1];
|
||||
Data[count-1,j-1] := RespWghts[k][j-1];
|
||||
score := score + RespWghts[k, j];
|
||||
Data[count-1, j] := RespWghts[k, j];
|
||||
end;
|
||||
|
||||
if NoCorBtn.Checked then
|
||||
begin
|
||||
score := score + 1;
|
||||
Data[count-1,j-1] := 1;
|
||||
Data[count-1, j] := 1;
|
||||
end;
|
||||
|
||||
if FractWrongBtn.Checked then
|
||||
begin
|
||||
denom := StrToFloat(FractEdit.Text);
|
||||
fract := 1.0 / denom;
|
||||
score := score + RespWghts[k][j-1] - (fract * RespWghts[k][j-1]);
|
||||
Data[count-1,j-1] :=RespWghts[k][j-1] - (fract * RespWghts[k][j-1]);
|
||||
score := score + RespWghts[k, j] - fract * RespWghts[k, j];
|
||||
Data[count-1,j] := RespWghts[k, j] - fract * RespWghts[k, j];
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
@ -596,10 +604,10 @@ begin
|
||||
begin
|
||||
col := LNameCol;
|
||||
namestr := Trim(OS3MainFrm.DataGrid.Cells[col,i]);
|
||||
outline := outline + Format('%10s ', [namestr]);
|
||||
outline := outline + Format('%9s ', [namestr]);
|
||||
end;
|
||||
|
||||
outline := outline + Format('%6.2f', [Data[count-1,NoItems]]);
|
||||
outline := outline + Format('%7.2f', [Data[count-1,NoItems]]);
|
||||
AReport.Add(outline);
|
||||
end;
|
||||
|
||||
@ -706,19 +714,21 @@ begin
|
||||
|
||||
if DescChk.Checked then
|
||||
begin
|
||||
AReport.Add('');
|
||||
title := 'Means';
|
||||
DynVectorPrint(means, NoItems+1, title, ColLabels, NCases, AReport);
|
||||
|
||||
AReport.Add('');
|
||||
title := 'Variances';
|
||||
DynVectorPrint(variances, NoItems+1, title, ColLabels, NCases, AReport);
|
||||
|
||||
AReport.Add('');
|
||||
title := 'Standard Deviations';
|
||||
DynVectorPrint(stddevs, NoItems+1, title, ColLabels, NCases, AReport);
|
||||
end;
|
||||
|
||||
if CorrsChk.Checked or DescChk.Checked then
|
||||
begin
|
||||
AReport.Add('');
|
||||
AReport.Add(DIVIDER);
|
||||
AReport.Add('');
|
||||
end;
|
||||
@ -768,7 +778,8 @@ begin
|
||||
|
||||
AReport.Add('Multiple Correlation Coefficients for Each Variable');
|
||||
AReport.Add('');
|
||||
AReport.Add('%10s%8s%10s%10s%12s%5s%5s', ['Variable','R','R2','F','Prob.>F','DF1','DF2']);
|
||||
AReport.Add(' Variable R R2 F Prob > F DF1 DF2 ');
|
||||
AReport.Add('---------- -------- -------- -------- -------- ----- -----');
|
||||
|
||||
df1 := NoItems - 1.0;
|
||||
df2 := NCases - NoItems;
|
||||
@ -780,18 +791,20 @@ begin
|
||||
W[i] := (R2s[i] / df1) / ((1.0-R2s[i]) / df2);
|
||||
FProbs[i] := probf(W[i],df1,df2);
|
||||
valstring := Format('%10s', [ColLabels[i]]);
|
||||
AReport.Add('%10s%10.3f%10.3f%10.3f%10.3f%5.0f%5.0f', [valstring,sqrt(R2s[i]),R2s[i],W[i],FProbs[i],df1,df2]);
|
||||
AReport.Add('%10s %7.3f %7.3f %7.3f %7.3f %4.0f %4.0f', [valstring,sqrt(R2s[i]),R2s[i],W[i],FProbs[i],df1,df2]);
|
||||
|
||||
// betas
|
||||
for j := 0 to NoItems-1 do
|
||||
ProdMat[i,j] := -CorrMat[i,j] / CorrMat[j,j];
|
||||
end;
|
||||
|
||||
AReport.Add('');
|
||||
title := 'Betas in Columns';
|
||||
MatPrint(ProdMat, NoItems, NoItems, title, RowLabels, ColLabels, NCases, AReport);
|
||||
|
||||
AReport.Add('');
|
||||
AReport.Add('Standard Errors of Prediction');
|
||||
AReport.Add('Variable Std.Error');
|
||||
|
||||
for i := 0 to NoItems-1 do
|
||||
begin
|
||||
StdErr := (NCases-1) * Variances[i] * (1.0 / CorrMat[i,i]);
|
||||
@ -803,6 +816,7 @@ begin
|
||||
for j := 0 to NoItems-1 do
|
||||
if (i <> j) then ProdMat[i,j] := ProdMat[i,j] * (StdDevs[j]/StdDevs[i]);
|
||||
|
||||
AReport.Add('');
|
||||
title := 'Raw Regression Coefficients';
|
||||
MatPrint(ProdMat, NoItems, NoItems, title, RowLabels, ColLabels, NCases,AReport);
|
||||
AReport.Add('Variable Constant');
|
||||
@ -887,7 +901,8 @@ begin
|
||||
|
||||
AReport.Add('Analysis of Variance for Hoyt Reliabilities');
|
||||
AReport.Add('');
|
||||
AReport.Add('SOURCE D.F. SS MS F PROB');
|
||||
AReport.Add('SOURCE D.F. SS MS F PROB ');
|
||||
AReport.Add('-------- ------ --------- --------- -------- ---------');
|
||||
AReport.Add('Subjects %3.0f %8.2f %8.2f %8.2f %8.2f', [dfcases, SSCases, MSCases, F1, prob1]);
|
||||
AReport.Add('Within %3.0f %8.2f %8.2f', [dfwithin, SSWithin, MSWithin]);
|
||||
AReport.Add('Items %3.0f %8.2f %8.2f %8.2f %8.2f', [dfitems, SSItems, MSItems, F2, prob2]);
|
||||
@ -901,16 +916,16 @@ begin
|
||||
Hoyt3 := (MSCases - MSWithin) / (MSCases + (NoItems-1.0) * MSWithin);
|
||||
|
||||
SEMeas1 := stddevs[NoItems] * sqrt(1.0 - Hoyt1);
|
||||
AReport.Add('Hoyt Unadjusted Test Rel. for scale %s = %6.4f S.E. of Measurement = %8.3f', [ColLabels[NoItems], Hoyt1, SEMeas1]);
|
||||
AReport.Add('Hoyt Unadjusted Test Rel. for scale %s: %6.4f; S.E. of Measurement: %8.3f', [ColLabels[NoItems], Hoyt1, SEMeas1]);
|
||||
|
||||
SEMeas2 := stddevs[NoItems] * sqrt(1.0 - Hoyt2);
|
||||
AReport.Add('Hoyt Adjusted Test Rel. for scale %s = %6.4f S.E. of Measurement = %8.3f', [ColLabels[NoItems], Hoyt2, SEMeas2]);
|
||||
AReport.Add('Hoyt Adjusted Test Rel. for scale %s: %6.4f; S.E. of Measurement: %8.3f', [ColLabels[NoItems], Hoyt2, SEMeas2]);
|
||||
|
||||
SEMeas3 := stddevs[NoItems] * sqrt(1.0 - Hoyt3);
|
||||
AReport.Add('Hoyt Unadjusted Item Rel. for scale %s = %6.4f S.E. of Measurement = %8.3f', [ColLabels[NoItems], Hoyt3, SEMeas3]);
|
||||
AReport.Add('Hoyt Unadjusted Item Rel. for scale %s: %6.4f; S.E. of Measurement: %8.3f', [ColLabels[NoItems], Hoyt3, SEMeas3]);
|
||||
|
||||
SEMeas4 := stddevs[NoItems] * sqrt(1.0 - Hoyt4);
|
||||
AReport.Add('Hoyt Adjusted Item Rel. for scale %s = %6.4f S.E. of Measurement = %8.3f', [ColLabels[NoItems], Hoyt4, SEMeas4]);
|
||||
AReport.Add('Hoyt Adjusted Item Rel. for scale %s: %6.4f; S.E. of Measurement: %8.3f', [ColLabels[NoItems], Hoyt4, SEMeas4]);
|
||||
|
||||
AReport.Add('');
|
||||
AReport.Add(DIVIDER);
|
||||
@ -1030,6 +1045,7 @@ begin
|
||||
incount := incount + 1;
|
||||
invalues[incount-1] := v1;
|
||||
end;
|
||||
AReport.Add('');
|
||||
|
||||
until done;
|
||||
|
||||
@ -1048,7 +1064,7 @@ begin
|
||||
UpdateBtnStates;
|
||||
end;
|
||||
|
||||
procedure TTestScoreFrm.PlotScores;
|
||||
function TTestScoreFrm.PlotScores: Boolean;
|
||||
var
|
||||
rowvar: DblDyneVec;
|
||||
totscrs: DblDyneVec;
|
||||
@ -1096,7 +1112,7 @@ begin
|
||||
GraphFrm.WallColor := GRAPH_WALL_COLOR;
|
||||
GraphFrm.FloorColor := GRAPH_FLOOR_COLOR;
|
||||
GraphFrm.ShowBackWall := true;
|
||||
GraphFrm.ShowModal;
|
||||
Result := GraphFrm.ShowModal = mrOK;
|
||||
|
||||
rowvar := nil;
|
||||
totscrs := nil;
|
||||
@ -1104,7 +1120,7 @@ begin
|
||||
GraphFrm.Ypoints := nil;
|
||||
end;
|
||||
|
||||
procedure TTestScoreFrm.PlotMeans;
|
||||
function TTestScoreFrm.PlotMeans: Boolean;
|
||||
var
|
||||
rowvar: DblDyneVec;
|
||||
i: integer;
|
||||
@ -1133,7 +1149,7 @@ begin
|
||||
GraphFrm.WallColor := GRAPH_WALL_COLOR;
|
||||
GraphFrm.FloorColor := GRAPH_FLOOR_COLOR;
|
||||
GraphFrm.ShowBackWall := true;
|
||||
GraphFrm.ShowModal;
|
||||
Result := GraphFrm.ShowModal = mrOK;
|
||||
|
||||
rowvar := nil;
|
||||
GraphFrm.Xpoints := nil;
|
||||
|
@ -50,7 +50,7 @@ type
|
||||
var
|
||||
OutputFrm: TOutputFrm;
|
||||
|
||||
procedure DisplayReport(AReport: TStrings);
|
||||
function DisplayReport(AReport: TStrings): Boolean;
|
||||
|
||||
|
||||
implementation
|
||||
@ -61,8 +61,9 @@ const
|
||||
TOP_MARGIN = 150;
|
||||
BOTTOM_MARGIN = 200;
|
||||
|
||||
procedure DisplayReport(AReport: TStrings);
|
||||
function DisplayReport(AReport: TStrings): Boolean;
|
||||
begin
|
||||
Result := false;
|
||||
if AReport.Count > 0 then
|
||||
begin
|
||||
if OutputFrm = nil then
|
||||
@ -70,7 +71,7 @@ begin
|
||||
else
|
||||
OutputFrm.Clear;
|
||||
OutputFrm.AddLines(AReport);
|
||||
OutputFrm.ShowModal;
|
||||
Result := OutputFrm.ShowModal = mrOK;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
@ -87,10 +87,8 @@ type
|
||||
VAR RightCnt : integer;
|
||||
VAR Expression : string);
|
||||
|
||||
procedure GetExpression(VAR Expression : string;
|
||||
VAR SubExpr : string;
|
||||
VAR LeftParen : integer;
|
||||
VAR RightParen : integer);
|
||||
procedure GetExpression(const Expression: string; var SubExpr: string;
|
||||
out LeftParen, RightParen: integer);
|
||||
|
||||
procedure DelSubSt(VAR Expression : string;
|
||||
FromPos, ToPos : integer);
|
||||
@ -384,13 +382,15 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TSelectIfFrm.GetExpression(var Expression: string;
|
||||
var SubExpr: string; var LeftParen: integer; var RightParen: integer);
|
||||
VAR i, j : integer;
|
||||
|
||||
{ Search from left for first right paren.
|
||||
Search back for first left paren (corresponding paren.)
|
||||
Extract sub string. }
|
||||
procedure TSelectIfFrm.GetExpression(const Expression: string;
|
||||
var SubExpr: string; out LeftParen, RightParen: integer);
|
||||
var
|
||||
i, j : integer;
|
||||
begin
|
||||
// Search from left for for first right paren.
|
||||
// Search back for first left paren (corresponding paren.)
|
||||
// Extract sub string.
|
||||
RightParen := 0;
|
||||
LeftParen := 0;
|
||||
for i := 1 to Length(Expression) do
|
||||
|
@ -60,7 +60,8 @@ function StringsToInt(strcol : integer; VAR newcol : integer; prompt : boolean)
|
||||
|
||||
implementation
|
||||
|
||||
uses MainUnit;
|
||||
uses
|
||||
Utils, MainUnit;
|
||||
|
||||
Function GoodRecord(Row, NoVars: integer; const GridPos: IntDyneVec): boolean;
|
||||
var
|
||||
@ -76,20 +77,18 @@ begin
|
||||
end;
|
||||
//-------------------------------------------------------------------
|
||||
|
||||
procedure FormatCell(Col, Row : integer);
|
||||
procedure FormatCell(Col, Row: integer);
|
||||
var
|
||||
VarType : char;
|
||||
NoDec : integer;
|
||||
Justify : char;
|
||||
//Justify : char;
|
||||
missing : string;
|
||||
astr : string;
|
||||
cellstr : string;
|
||||
newcell : string;
|
||||
cellStr : string;
|
||||
newcellStr : string;
|
||||
X : double;
|
||||
Width : integer;
|
||||
cellsize : integer;
|
||||
I: Integer;
|
||||
|
||||
begin
|
||||
if OS3MainFrm.DataGrid.Cells[Col,Row] = '' then
|
||||
exit;
|
||||
@ -101,42 +100,27 @@ begin
|
||||
|
||||
NoDec := StrToInt(DictionaryFrm.DictGrid.Cells[5,Col]);
|
||||
|
||||
astr := DictionaryFrm.DictGrid.Cells[7,Col];
|
||||
if astr <> '' then Justify := astr[1] else Justify := 'L';
|
||||
|
||||
missing := DictionaryFrm.DictGrid.Cells[6,Col];
|
||||
cellstr := Trim(OS3MainFrm.DataGrid.Cells[Col,Row]);
|
||||
if missing = cellstr then
|
||||
cellStr := Trim(OS3MainFrm.DataGrid.Cells[Col,Row]);
|
||||
if missing = cellStr then
|
||||
exit;
|
||||
|
||||
newCellStr := cellStr;
|
||||
if (VarType = 'F') and TryStrToFloat(cellStr, X) then
|
||||
newcell := FloatToStrF(X, ffFixed, Width, NoDec)
|
||||
newCellStr := FloatToStrF(X, ffFixed, Width, NoDec)
|
||||
else
|
||||
if (VarType = 'I') and TryStrToInt(cellStr, I) then
|
||||
newCell := IntToStr(I)
|
||||
(*
|
||||
if (VarTyp
|
||||
if ((VarType = 'F') or (VarType = 'I')) then
|
||||
begin
|
||||
if TryStrToFloat(cellstr, X) then
|
||||
newcell := FloatToStrF(X, ffFixed, Width, NoDec);
|
||||
{
|
||||
if IsNumeric(cellstr) then
|
||||
begin
|
||||
X := StrToFloat(cellstr);
|
||||
newcell := FloatToStrF(X,ffFixed,Width,NoDec);
|
||||
// Str(X:Width:NoDec,newcell);
|
||||
end;
|
||||
|
||||
}
|
||||
end
|
||||
*)
|
||||
else
|
||||
newcell := cellstr;
|
||||
if (VarType = 'I') and TryStrToFloat(cellStr, X) then
|
||||
newCellStr := IntToStr(trunc(X));
|
||||
|
||||
// now set justification
|
||||
cellsize := OS3MainFrm.DataGrid.ColWidths[Col]; // in pixels
|
||||
cellsize := cellsize div 8;
|
||||
|
||||
{ wp: justification should be done by the grid, not by adding spaces!
|
||||
|
||||
astr := DictionaryFrm.DictGrid.Cells[7,Col];
|
||||
if astr <> '' then Justify := astr[1] else Justify := 'L';
|
||||
|
||||
case Justify of
|
||||
'L' : newcell := TrimLeft(newcell);
|
||||
'C' : begin
|
||||
@ -149,13 +133,15 @@ begin
|
||||
while Length(newcell) < cellsize do newcell := ' ' + newcell;
|
||||
end;
|
||||
end;
|
||||
OS3MainFrm.DataGrid.Cells[Col,Row] := newcell;
|
||||
}
|
||||
|
||||
OS3MainFrm.DataGrid.Cells[Col,Row] := newCellStr;
|
||||
end;
|
||||
//-------------------------------------------------------------------
|
||||
|
||||
procedure FormatGrid;
|
||||
var
|
||||
i, j : integer;
|
||||
i, j: integer;
|
||||
|
||||
begin
|
||||
for i := 1 to NoCases do
|
||||
@ -1371,17 +1357,15 @@ begin
|
||||
end;
|
||||
|
||||
procedure PasteIt;
|
||||
VAR
|
||||
var
|
||||
astring, cellstr : string;
|
||||
col, howlong, startcol : integer;
|
||||
startrows :integer;
|
||||
row, i, j : integer;
|
||||
buf : pchar;
|
||||
strarray : array[0..100000] of char;
|
||||
size : integer;
|
||||
// buf : pchar;
|
||||
// strarray : array[0..100000] of char;
|
||||
achar : char;
|
||||
pos : integer;
|
||||
|
||||
begin
|
||||
Assert(OS3MainFrm <> nil);
|
||||
Assert(DictionaryFrm <> nil);
|
||||
@ -1407,22 +1391,29 @@ begin
|
||||
end;
|
||||
OS3MainFrm.DataGrid.Row := startrows;
|
||||
OS3MainFrm.DataGrid.Col := startcol;
|
||||
|
||||
{
|
||||
buf := strarray;
|
||||
size := 100000;
|
||||
}
|
||||
|
||||
// get clipboard info
|
||||
if (Clipboard.HasFormat(CF_TEXT)) then astring := Clipboard.AsText
|
||||
if (Clipboard.HasFormat(CF_TEXT)) then
|
||||
astring := Clipboard.AsText
|
||||
else
|
||||
begin
|
||||
ShowMessage('The clipboard does not contain text.');
|
||||
ErrorMsg('The clipboard does not contain text.');
|
||||
exit;
|
||||
end;
|
||||
|
||||
{
|
||||
buf := strarray;
|
||||
size := 100000;
|
||||
ClipBoard.GetTextBuf(buf,size);
|
||||
// put buf in a string to parse
|
||||
astring := buf;
|
||||
}
|
||||
|
||||
howlong := Length(astring);
|
||||
pos := 1;
|
||||
cellstr := '';
|
||||
@ -1479,11 +1470,10 @@ begin
|
||||
howlong := howlong - 1;
|
||||
end;
|
||||
end;
|
||||
|
||||
// delete extraneous row and column
|
||||
OS3MainFrm.DataGrid.Col := NoVariables;
|
||||
// DeleteCol;
|
||||
OS3MainFrm.DataGrid.Row := NoCases+1;
|
||||
// CutaRow;
|
||||
OS3MainFrm.NoCasesEdit.Text := IntToStr(NoCases+1);
|
||||
OS3MainFrm.NoVarsEdit.Text := IntToStr(NoVariables);
|
||||
end;
|
||||
|
Reference in New Issue
Block a user