LazStats: Adding original source, part 3.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@7882 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2020-11-16 11:07:56 +00:00
parent 0875c16886
commit 045c799d49
72 changed files with 24075 additions and 0 deletions

View File

@ -0,0 +1,71 @@
unit DataUnit;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, Grids, OutPutUnit, Globals;
procedure GetFileData(VAR FName : string);
procedure Allocations;
procedure DeAllocations;
implementation
uses LinPro;
procedure GetFileData(VAR FName : string);
var
F : TextFile;
i, j : integer;
begin
LinProFrm.OpenDialog1.DefaultExt := 'LPR';
LinProFrm.OpenDialog1.Filter := 'Linear Programming File (*.LPR)|*.LPR|All Files (*.*)|*.*';
LinProFrm.OpenDialog1.FilterIndex := 1;
if LinProFrm.OpenDialog1.Execute then
begin
FName := LinProFrm.OpenDialog1.FileName;
AssignFile(F,FName);
Reset(F);
readln(F,LinProFrm.NoVars);
readln(F,LinProFrm.NoMax);
readln(F,LinProFrm.NoMin);
readln(F,LinProFrm.NoEql);
readln(F,LinProFrm.MinMax);
LinProFrm.NoCoefs := LinProFrm.NoMax + LinProFrm.NoMin + LinProFrm.NoEql;
Alloc;
for i := 1 to LinProFrm.NoVars do readln(F,LinProFrm.Objective[i]);
for i := 1 to LinProFrm.NoMax do readln(F,LinProFrm.MaxConstraints[i]);
for i := 1 to LinProFrm.NoMin do readln(F,LinProFrm.MinConstraints[i]);
for i := 1 to LinProFrm.NoEql do readln(F,LinProFrm.EqlConstraints[i]);
for i := 1 to LinProFrm.NoCoefs do
for j := 1 to LinProFrm.NoVars do readln(F,LinProFrm.Coefficients[i,j]);
CloseFile(F);
end;
end;
//-------------------------------------------------------------------
procedure Allocations;
begin
SetLength(LinProFrm.Objective,LinProFrm.NoVars + 1);
SetLength(LinProFrm.MaxConstraints,LinProFrm.NoMax + 1);
SetLength(LinProFrm.MinConstraints,LinProFrm.NoMin + 1);
SetLength(LinProFrm.EqlConstraints,LinProFrm.NoEql+1);
SetLength(LinProFrm.Coefficients,LinProFrm.NoCoefs+1,LinProFrm.NoVars+1);
end;
//-------------------------------------------------------------------
procedure DeAllocations;
begin
// cleanup
LinProFrm.Coefficients := nil;
LinProFrm.EqlConstraints := nil;
LinProFrm.MinConstraints := nil;
LinProFrm.MaxConstraints := nil;
LinProFrm.Objective := nil;
end;
//-------------------------------------------------------------------
end.

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,422 @@
object DIFfrm: TDIFfrm
Left = 62
Top = 100
Width = 486
Height = 466
HelpContext = 1210
Caption = 'DIF Specifications'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
HelpFile = 'OS2Help.hlp'
OnShow = FormShow
PixelsPerInch = 96
TextHeight = 13
object Label1: TLabel
Left = 8
Top = 112
Width = 89
Height = 13
Caption = 'Available Variables'
end
object Label2: TLabel
Left = 200
Top = 112
Width = 70
Height = 13
Caption = 'Items Selected'
end
object Label3: TLabel
Left = 200
Top = 264
Width = 84
Height = 13
Caption = 'Grouping Variable'
end
object Label4: TLabel
Left = 200
Top = 328
Width = 110
Height = 13
Caption = 'Reference group code:'
end
object Label5: TLabel
Left = 200
Top = 352
Width = 89
Height = 13
Caption = 'Focal Group Code:'
end
object Label6: TLabel
Left = 200
Top = 376
Width = 94
Height = 13
Caption = 'No. of Score Levels'
end
object Label7: TLabel
Left = 352
Top = 288
Width = 108
Height = 13
Caption = 'Enter bounds for levels'
end
object Label8: TLabel
Left = 352
Top = 352
Width = 66
Height = 13
Caption = 'Lower Bound:'
end
object Label9: TLabel
Left = 352
Top = 376
Width = 66
Height = 13
Caption = 'Upper Bound:'
end
object Label10: TLabel
Left = 352
Top = 304
Width = 28
Height = 13
Caption = 'Down'
end
object Label11: TLabel
Left = 416
Top = 304
Width = 14
Height = 13
Caption = 'Up'
end
object Label12: TLabel
Left = 440
Top = 304
Width = 26
Height = 13
Caption = 'Level'
end
object Memo1: TMemo
Left = 8
Top = 0
Width = 457
Height = 105
Lines.Strings = (
'This procedure is an adaptation of the program written by Niels ' +
'G. Waller, Dept. of Psychology,'
'University of California - Davis, Jan. 1998. It'#39's purpose is to' +
' identify test items that differ in the '
'response pattern for two groups: a reference group and a focal g' +
'roup. The file of data to be '
'analyzed should consist of a variable containing a code designat' +
'ing the two groups and '
'variables containing subject'#39's item responses coded 0 for incorr' +
'ect and 1 for correct. No '
'missing data may be included. The results provide the Mantel-Ha' +
'enszel statistics for identifying '
'those items which are different for the two groups.')
TabOrder = 0
end
object VarList: TListBox
Left = 8
Top = 128
Width = 137
Height = 249
ItemHeight = 13
MultiSelect = True
TabOrder = 1
end
object ItemInBtn: TBitBtn
Left = 160
Top = 152
Width = 25
Height = 25
TabOrder = 2
OnClick = ItemInBtnClick
Glyph.Data = {
76010000424D7601000000000000760000002800000020000000100000000100
04000000000000010000120B0000120B00001000000000000000000000000000
800000800000008080008000000080008000808000007F7F7F00BFBFBF000000
FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333
3333333333333333333333333333333333333333333333333333333333333333
3333333333333333333333333333333333333333333FF3333333333333003333
3333333333773FF3333333333309003333333333337F773FF333333333099900
33333FFFFF7F33773FF30000000999990033777777733333773F099999999999
99007FFFFFFF33333F7700000009999900337777777F333F7733333333099900
33333333337F3F77333333333309003333333333337F77333333333333003333
3333333333773333333333333333333333333333333333333333333333333333
3333333333333333333333333333333333333333333333333333}
NumGlyphs = 2
end
object ItemOutBtn: TBitBtn
Left = 160
Top = 184
Width = 25
Height = 25
TabOrder = 3
OnClick = ItemOutBtnClick
Glyph.Data = {
76010000424D7601000000000000760000002800000020000000100000000100
04000000000000010000120B0000120B00001000000000000000000000000000
800000800000008080008000000080008000808000007F7F7F00BFBFBF000000
FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333
3333333333333333333333333333333333333333333333333333333333333333
3333333333333FF3333333333333003333333333333F77F33333333333009033
333333333F7737F333333333009990333333333F773337FFFFFF330099999000
00003F773333377777770099999999999990773FF33333FFFFF7330099999000
000033773FF33777777733330099903333333333773FF7F33333333333009033
33333333337737F3333333333333003333333333333377333333333333333333
3333333333333333333333333333333333333333333333333333333333333333
3333333333333333333333333333333333333333333333333333}
NumGlyphs = 2
end
object AllBtn: TBitBtn
Left = 160
Top = 216
Width = 25
Height = 25
Caption = 'ALL'
TabOrder = 4
OnClick = AllBtnClick
end
object GrpInBtn: TBitBtn
Left = 160
Top = 264
Width = 25
Height = 25
TabOrder = 5
OnClick = GrpInBtnClick
Glyph.Data = {
76010000424D7601000000000000760000002800000020000000100000000100
04000000000000010000120B0000120B00001000000000000000000000000000
800000800000008080008000000080008000808000007F7F7F00BFBFBF000000
FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333
3333333333333333333333333333333333333333333333333333333333333333
3333333333333333333333333333333333333333333FF3333333333333003333
3333333333773FF3333333333309003333333333337F773FF333333333099900
33333FFFFF7F33773FF30000000999990033777777733333773F099999999999
99007FFFFFFF33333F7700000009999900337777777F333F7733333333099900
33333333337F3F77333333333309003333333333337F77333333333333003333
3333333333773333333333333333333333333333333333333333333333333333
3333333333333333333333333333333333333333333333333333}
NumGlyphs = 2
end
object GrpOutBtn: TBitBtn
Left = 160
Top = 296
Width = 25
Height = 25
TabOrder = 6
Glyph.Data = {
76010000424D7601000000000000760000002800000020000000100000000100
04000000000000010000120B0000120B00001000000000000000000000000000
800000800000008080008000000080008000808000007F7F7F00BFBFBF000000
FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333
3333333333333333333333333333333333333333333333333333333333333333
3333333333333FF3333333333333003333333333333F77F33333333333009033
333333333F7737F333333333009990333333333F773337FFFFFF330099999000
00003F773333377777770099999999999990773FF33333FFFFF7330099999000
000033773FF33777777733330099903333333333773FF7F33333333333009033
33333333337737F3333333333333003333333333333377333333333333333333
3333333333333333333333333333333333333333333333333333333333333333
3333333333333333333333333333333333333333333333333333}
NumGlyphs = 2
end
object GroupVarEdit: TEdit
Left = 200
Top = 280
Width = 137
Height = 21
TabOrder = 7
Text = 'GroupVarEdit'
end
object ItemsList: TListBox
Left = 200
Top = 128
Width = 137
Height = 121
ItemHeight = 13
TabOrder = 8
end
object RefGrpEdit: TEdit
Left = 312
Top = 320
Width = 25
Height = 21
TabOrder = 9
Text = 'RefGrpEdit'
end
object TrgtGrpEdit: TEdit
Left = 312
Top = 344
Width = 25
Height = 21
TabOrder = 10
Text = 'TrgtGrpEdit'
end
object ResetBtn: TButton
Left = 8
Top = 408
Width = 65
Height = 25
Caption = 'Reset'
TabOrder = 11
OnClick = ResetBtnClick
end
object ComputeBtn: TButton
Left = 208
Top = 408
Width = 65
Height = 25
Caption = 'Compute'
TabOrder = 12
OnClick = ComputeBtnClick
end
object ReturnBtn: TButton
Left = 400
Top = 408
Width = 65
Height = 25
Caption = 'Return'
ModalResult = 1
TabOrder = 13
OnClick = ReturnBtnClick
end
object GroupBox1: TGroupBox
Left = 352
Top = 112
Width = 113
Height = 169
Caption = 'Options'
TabOrder = 14
object ItemStatsChk: TCheckBox
Left = 8
Top = 16
Width = 89
Height = 17
Caption = 'Item Statistics'
Checked = True
State = cbChecked
TabOrder = 0
end
object TestStatsChk: TCheckBox
Left = 8
Top = 32
Width = 89
Height = 17
Caption = 'Test Statistics'
TabOrder = 1
end
object ItemCorrsChk: TCheckBox
Left = 8
Top = 48
Width = 97
Height = 17
Caption = 'Item Intercorr.s'
TabOrder = 2
end
object ItemTestChk: TCheckBox
Left = 8
Top = 64
Width = 89
Height = 17
Caption = 'Item-Test cor.s'
TabOrder = 3
end
object AlphaChk: TCheckBox
Left = 8
Top = 80
Width = 97
Height = 17
Caption = 'Alpha Reliability'
TabOrder = 4
end
object LogisticChk: TCheckBox
Left = 8
Top = 112
Width = 97
Height = 17
Caption = 'Logistic Regres.'
Enabled = False
TabOrder = 5
end
object MHChk: TCheckBox
Left = 8
Top = 96
Width = 97
Height = 17
Caption = 'Mantel-Haenszel'
Checked = True
State = cbChecked
TabOrder = 6
end
object CurvesChk: TCheckBox
Left = 8
Top = 128
Width = 97
Height = 17
Caption = 'Item Char. Crvs.'
TabOrder = 7
end
object CountsChk: TCheckBox
Left = 8
Top = 144
Width = 97
Height = 17
Caption = 'Level Counts'
TabOrder = 8
end
end
object LevelsEdit: TEdit
Left = 312
Top = 368
Width = 25
Height = 21
TabOrder = 15
OnExit = LevelsEditExit
end
object LevelNoEdit: TEdit
Left = 440
Top = 320
Width = 25
Height = 21
TabOrder = 16
Text = '1'
end
object LowBoundEdit: TEdit
Left = 440
Top = 344
Width = 25
Height = 21
TabOrder = 17
OnExit = LowBoundEditExit
end
object UpBoundEdit: TEdit
Left = 440
Top = 368
Width = 25
Height = 21
TabOrder = 18
OnExit = UpBoundEditExit
end
object LevelScroll: TScrollBar
Left = 352
Top = 320
Width = 81
Height = 19
Min = 1
PageSize = 0
Position = 1
TabOrder = 19
OnScroll = LevelScrollScroll
end
end

View File

@ -0,0 +1,127 @@
LazarusResources.Add('TDIFfrm','FORMDATA',[
'TPF0'#7'TDIFfrm'#6'DIFfrm'#4'Left'#2'>'#3'Top'#2'd'#5'Width'#3#230#1#6'Heigh'
+'t'#3#210#1#11'HelpContext'#3#186#4#7'Caption'#6#18'DIF Specifications'#5'Co'
+'lor'#7#9'clBtnFace'#12'Font.Charset'#7#15'DEFAULT_CHARSET'#10'Font.Color'#7
+#12'clWindowText'#11'Font.Height'#2#245#9'Font.Name'#6#13'MS Sans Serif'#10
+'Font.Style'#11#0#8'HelpFile'#6#11'OS2Help.hlp'#6'OnShow'#7#8'FormShow'#13'P'
+'ixelsPerInch'#2'`'#10'TextHeight'#2#13#0#6'TLabel'#6'Label1'#4'Left'#2#8#3
+'Top'#2'p'#5'Width'#2'Y'#6'Height'#2#13#7'Caption'#6#19'Available Variables'
+#0#0#6'TLabel'#6'Label2'#4'Left'#3#200#0#3'Top'#2'p'#5'Width'#2'F'#6'Height'
+#2#13#7'Caption'#6#14'Items Selected'#0#0#6'TLabel'#6'Label3'#4'Left'#3#200#0
+#3'Top'#3#8#1#5'Width'#2'T'#6'Height'#2#13#7'Caption'#6#17'Grouping Variable'
+#0#0#6'TLabel'#6'Label4'#4'Left'#3#200#0#3'Top'#3'H'#1#5'Width'#2'n'#6'Heigh'
+'t'#2#13#7'Caption'#6#21'Reference group code:'#0#0#6'TLabel'#6'Label5'#4'Le'
+'ft'#3#200#0#3'Top'#3'`'#1#5'Width'#2'Y'#6'Height'#2#13#7'Caption'#6#17'Foca'
+'l Group Code:'#0#0#6'TLabel'#6'Label6'#4'Left'#3#200#0#3'Top'#3'x'#1#5'Widt'
+'h'#2'^'#6'Height'#2#13#7'Caption'#6#19'No. of Score Levels'#0#0#6'TLabel'#6
+'Label7'#4'Left'#3'`'#1#3'Top'#3' '#1#5'Width'#2'l'#6'Height'#2#13#7'Caption'
+#6#23'Enter bounds for levels'#0#0#6'TLabel'#6'Label8'#4'Left'#3'`'#1#3'Top'
+#3'`'#1#5'Width'#2'B'#6'Height'#2#13#7'Caption'#6#12'Lower Bound:'#0#0#6'TLa'
+'bel'#6'Label9'#4'Left'#3'`'#1#3'Top'#3'x'#1#5'Width'#2'B'#6'Height'#2#13#7
+'Caption'#6#12'Upper Bound:'#0#0#6'TLabel'#7'Label10'#4'Left'#3'`'#1#3'Top'#3
+'0'#1#5'Width'#2#28#6'Height'#2#13#7'Caption'#6#4'Down'#0#0#6'TLabel'#7'Labe'
+'l11'#4'Left'#3#160#1#3'Top'#3'0'#1#5'Width'#2#14#6'Height'#2#13#7'Caption'#6
+#2'Up'#0#0#6'TLabel'#7'Label12'#4'Left'#3#184#1#3'Top'#3'0'#1#5'Width'#2#26#6
+'Height'#2#13#7'Caption'#6#5'Level'#0#0#5'TMemo'#5'Memo1'#4'Left'#2#8#3'Top'
+#2#0#5'Width'#3#201#1#6'Height'#2'i'#13'Lines.Strings'#1#6'_This procedure i'
+'s an adaptation of the program written by Niels G. Waller, Dept. of Psychol'
+'ogy,'#6'hUniversity of California - Davis, Jan. 1998. It''s purpose is to '
+'identify test items that differ in the '#6'^response pattern for two groups'
+': a reference group and a focal group. The file of data to be '#6'Wanalyze'
+'d should consist of a variable containing a code designating the two groups'
+' and '#6'[variables containing subject''s item responses coded 0 for incorr'
+'ect and 1 for correct. No '#6'bmissing data may be included. The results '
+'provide the Mantel-Haenszel statistics for identifying '#6'3those items whi'
+'ch are different for the two groups.'#0#8'TabOrder'#2#0#0#0#8'TListBox'#7'V'
+'arList'#4'Left'#2#8#3'Top'#3#128#0#5'Width'#3#137#0#6'Height'#3#249#0#10'It'
+'emHeight'#2#13#11'MultiSelect'#9#8'TabOrder'#2#1#0#0#7'TBitBtn'#9'ItemInBtn'
+#4'Left'#3#160#0#3'Top'#3#152#0#5'Width'#2#25#6'Height'#2#25#8'TabOrder'#2#2
+#7'OnClick'#7#14'ItemInBtnClick'#10'Glyph.Data'#10'z'#1#0#0'v'#1#0#0'BMv'#1#0
+#0#0#0#0#0'v'#0#0#0'('#0#0#0' '#0#0#0#16#0#0#0#1#0#4#0#0#0#0#0#0#1#0#0#18#11
+#0#0#18#11#0#0#16#0#0#0#0#0#0#0#0#0#0#0#0#0#128#0#0#128#0#0#0#128#128#0#128#0
+#0#0#128#0#128#0#128#128#0#0''#0#191#191#191#0#0#0#255#0#0#255#0#0#0#255
+#255#0#255#0#0#0#255#0#255#0#255#255#0#0#255#255#255#0'333333333333333333333'
+'33333333333333333333333333333333333333?'#243'333333'#0'3333333w?'#243'33333'
+#9#0'333333w?'#243'3333'#9#153#0'33?'#255#255'3w?'#243#0#0#0#9#153#153#0'3'
+'wwws33w?'#9#153#153#153#153#153#153#0''#255#255#255'33?w'#0#0#0#9#153#153#0
+'3www3?w3333'#9#153#0'33333?w33333'#9#0'333333w333333'#0'3333333w33333333'
+'33333333333333333333333333333333333333333333'#9'NumGlyphs'#2#2#0#0#7'TBitBt'
+'n'#10'ItemOutBtn'#4'Left'#3#160#0#3'Top'#3#184#0#5'Width'#2#25#6'Height'#2
+#25#8'TabOrder'#2#3#7'OnClick'#7#15'ItemOutBtnClick'#10'Glyph.Data'#10'z'#1#0
+#0'v'#1#0#0'BMv'#1#0#0#0#0#0#0'v'#0#0#0'('#0#0#0' '#0#0#0#16#0#0#0#1#0#4#0#0
+#0#0#0#0#1#0#0#18#11#0#0#18#11#0#0#16#0#0#0#0#0#0#0#0#0#0#0#0#0#128#0#0#128#0
+#0#0#128#128#0#128#0#0#0#128#0#128#0#128#128#0#0''#0#191#191#191#0#0#0#255
+#0#0#255#0#0#0#255#255#0#255#0#0#0#255#0#255#0#255#255#0#0#255#255#255#0'333'
+'33333333333333333333333333333333333333333?'#243'333333'#0'333333?w'#243'333'
+'33'#0#144'33333?w7'#243'3333'#0#153#144'3333?w37'#255#255#255'3'#0#153#153
+#144#0#0#0'?w337www'#0#153#153#153#153#153#153#144'w?'#243'33'#255#255#247'3'
+#0#153#153#144#0#0#0'3w?'#243'7www33'#0#153#144'33333w?'#247#243'33333'#0#144
+'333333w7'#243'333333'#0'3333333w3333333333333333333333333333333333333333333'
+'333333333333333333333333'#9'NumGlyphs'#2#2#0#0#7'TBitBtn'#6'AllBtn'#4'Left'
+#3#160#0#3'Top'#3#216#0#5'Width'#2#25#6'Height'#2#25#7'Caption'#6#3'ALL'#8'T'
+'abOrder'#2#4#7'OnClick'#7#11'AllBtnClick'#0#0#7'TBitBtn'#8'GrpInBtn'#4'Left'
+#3#160#0#3'Top'#3#8#1#5'Width'#2#25#6'Height'#2#25#8'TabOrder'#2#5#7'OnClick'
+#7#13'GrpInBtnClick'#10'Glyph.Data'#10'z'#1#0#0'v'#1#0#0'BMv'#1#0#0#0#0#0#0
+'v'#0#0#0'('#0#0#0' '#0#0#0#16#0#0#0#1#0#4#0#0#0#0#0#0#1#0#0#18#11#0#0#18#11
,#0#0#16#0#0#0#0#0#0#0#0#0#0#0#0#0#128#0#0#128#0#0#0#128#128#0#128#0#0#0#128#0
+#128#0#128#128#0#0''#0#191#191#191#0#0#0#255#0#0#255#0#0#0#255#255#0#255#0
+#0#0#255#0#255#0#255#255#0#0#255#255#255#0'333333333333333333333333333333333'
+'33333333333333333333333333?'#243'333333'#0'3333333w?'#243'33333'#9#0'333333'
+'w?'#243'3333'#9#153#0'33?'#255#255'3w?'#243#0#0#0#9#153#153#0'3wwws33w?'#9
+#153#153#153#153#153#153#0''#255#255#255'33?w'#0#0#0#9#153#153#0'3www3?w33'
+'33'#9#153#0'33333?w33333'#9#0'333333w333333'#0'3333333w333333333333333333'
+'3333333333333333333333333333333333'#9'NumGlyphs'#2#2#0#0#7'TBitBtn'#9'GrpOu'
+'tBtn'#4'Left'#3#160#0#3'Top'#3'('#1#5'Width'#2#25#6'Height'#2#25#8'TabOrder'
+#2#6#10'Glyph.Data'#10'z'#1#0#0'v'#1#0#0'BMv'#1#0#0#0#0#0#0'v'#0#0#0'('#0#0#0
+' '#0#0#0#16#0#0#0#1#0#4#0#0#0#0#0#0#1#0#0#18#11#0#0#18#11#0#0#16#0#0#0#0#0#0
+#0#0#0#0#0#0#0#128#0#0#128#0#0#0#128#128#0#128#0#0#0#128#0#128#0#128#128#0#0
+''#0#191#191#191#0#0#0#255#0#0#255#0#0#0#255#255#0#255#0#0#0#255#0#255#0
+#255#255#0#0#255#255#255#0'33333333333333333333333333333333333333333333?'#243
+'333333'#0'333333?w'#243'33333'#0#144'33333?w7'#243'3333'#0#153#144'3333?w37'
+#255#255#255'3'#0#153#153#144#0#0#0'?w337www'#0#153#153#153#153#153#153#144
+'w?'#243'33'#255#255#247'3'#0#153#153#144#0#0#0'3w?'#243'7www33'#0#153#144'3'
+'3333w?'#247#243'33333'#0#144'333333w7'#243'333333'#0'3333333w33333333333333'
+'33333333333333333333333333333333333333333333333333333'#9'NumGlyphs'#2#2#0#0
+#5'TEdit'#12'GroupVarEdit'#4'Left'#3#200#0#3'Top'#3#24#1#5'Width'#3#137#0#6
+'Height'#2#21#8'TabOrder'#2#7#4'Text'#6#12'GroupVarEdit'#0#0#8'TListBox'#9'I'
+'temsList'#4'Left'#3#200#0#3'Top'#3#128#0#5'Width'#3#137#0#6'Height'#2'y'#10
+'ItemHeight'#2#13#8'TabOrder'#2#8#0#0#5'TEdit'#10'RefGrpEdit'#4'Left'#3'8'#1
+#3'Top'#3'@'#1#5'Width'#2#25#6'Height'#2#21#8'TabOrder'#2#9#4'Text'#6#10'Ref'
+'GrpEdit'#0#0#5'TEdit'#11'TrgtGrpEdit'#4'Left'#3'8'#1#3'Top'#3'X'#1#5'Width'
+#2#25#6'Height'#2#21#8'TabOrder'#2#10#4'Text'#6#11'TrgtGrpEdit'#0#0#7'TButto'
+'n'#8'ResetBtn'#4'Left'#2#8#3'Top'#3#152#1#5'Width'#2'A'#6'Height'#2#25#7'Ca'
+'ption'#6#5'Reset'#8'TabOrder'#2#11#7'OnClick'#7#13'ResetBtnClick'#0#0#7'TBu'
+'tton'#10'ComputeBtn'#4'Left'#3#208#0#3'Top'#3#152#1#5'Width'#2'A'#6'Height'
+#2#25#7'Caption'#6#7'Compute'#8'TabOrder'#2#12#7'OnClick'#7#15'ComputeBtnCli'
+'ck'#0#0#7'TButton'#9'ReturnBtn'#4'Left'#3#144#1#3'Top'#3#152#1#5'Width'#2'A'
+#6'Height'#2#25#7'Caption'#6#6'Return'#11'ModalResult'#2#1#8'TabOrder'#2#13#7
+'OnClick'#7#14'ReturnBtnClick'#0#0#9'TGroupBox'#9'GroupBox1'#4'Left'#3'`'#1#3
+'Top'#2'p'#5'Width'#2'q'#6'Height'#3#169#0#7'Caption'#6#7'Options'#8'TabOrde'
+'r'#2#14#0#9'TCheckBox'#12'ItemStatsChk'#4'Left'#2#8#3'Top'#2#16#5'Width'#2
+'Y'#6'Height'#2#17#7'Caption'#6#15'Item Statistics'#7'Checked'#9#5'State'#7#9
+'cbChecked'#8'TabOrder'#2#0#0#0#9'TCheckBox'#12'TestStatsChk'#4'Left'#2#8#3
+'Top'#2' '#5'Width'#2'Y'#6'Height'#2#17#7'Caption'#6#15'Test Statistics'#8'T'
+'abOrder'#2#1#0#0#9'TCheckBox'#12'ItemCorrsChk'#4'Left'#2#8#3'Top'#2'0'#5'Wi'
+'dth'#2'a'#6'Height'#2#17#7'Caption'#6#16'Item Intercorr.s'#8'TabOrder'#2#2#0
+#0#9'TCheckBox'#11'ItemTestChk'#4'Left'#2#8#3'Top'#2'@'#5'Width'#2'Y'#6'Heig'
+'ht'#2#17#7'Caption'#6#15'Item-Test cor.s'#8'TabOrder'#2#3#0#0#9'TCheckBox'#8
+'AlphaChk'#4'Left'#2#8#3'Top'#2'P'#5'Width'#2'a'#6'Height'#2#17#7'Caption'#6
+#17'Alpha Reliability'#8'TabOrder'#2#4#0#0#9'TCheckBox'#11'LogisticChk'#4'Le'
+'ft'#2#8#3'Top'#2'p'#5'Width'#2'a'#6'Height'#2#17#7'Caption'#6#16'Logistic R'
+'egres.'#7'Enabled'#8#8'TabOrder'#2#5#0#0#9'TCheckBox'#5'MHChk'#4'Left'#2#8#3
+'Top'#2'`'#5'Width'#2'a'#6'Height'#2#17#7'Caption'#6#15'Mantel-Haenszel'#7'C'
+'hecked'#9#5'State'#7#9'cbChecked'#8'TabOrder'#2#6#0#0#9'TCheckBox'#9'Curves'
+'Chk'#4'Left'#2#8#3'Top'#3#128#0#5'Width'#2'a'#6'Height'#2#17#7'Caption'#6#16
+'Item Char. Crvs.'#8'TabOrder'#2#7#0#0#9'TCheckBox'#9'CountsChk'#4'Left'#2#8
+#3'Top'#3#144#0#5'Width'#2'a'#6'Height'#2#17#7'Caption'#6#12'Level Counts'#8
+'TabOrder'#2#8#0#0#0#5'TEdit'#10'LevelsEdit'#4'Left'#3'8'#1#3'Top'#3'p'#1#5
+'Width'#2#25#6'Height'#2#21#8'TabOrder'#2#15#6'OnExit'#7#14'LevelsEditExit'#0
+#0#5'TEdit'#11'LevelNoEdit'#4'Left'#3#184#1#3'Top'#3'@'#1#5'Width'#2#25#6'He'
+'ight'#2#21#8'TabOrder'#2#16#4'Text'#6#1'1'#0#0#5'TEdit'#12'LowBoundEdit'#4
+'Left'#3#184#1#3'Top'#3'X'#1#5'Width'#2#25#6'Height'#2#21#8'TabOrder'#2#17#6
+'OnExit'#7#16'LowBoundEditExit'#0#0#5'TEdit'#11'UpBoundEdit'#4'Left'#3#184#1
+#3'Top'#3'p'#1#5'Width'#2#25#6'Height'#2#21#8'TabOrder'#2#18#6'OnExit'#7#15
+'UpBoundEditExit'#0#0#10'TScrollBar'#11'LevelScroll'#4'Left'#3'`'#1#3'Top'#3
+'@'#1#5'Width'#2'Q'#6'Height'#2#19#3'Min'#2#1#8'PageSize'#2#0#8'Position'#2#1
+#8'TabOrder'#2#19#8'OnScroll'#7#17'LevelScrollScroll'#0#0#0
]);

View File

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

View File

@ -0,0 +1,71 @@
object DifferenceFrm: TDifferenceFrm
Left = 211
Height = 136
Top = 137
Width = 271
Caption = 'Differencing Specification'
ClientHeight = 136
ClientWidth = 271
OnShow = FormShow
LCLVersion = '0.9.28.2'
object Label1: TLabel
Left = 7
Height = 14
Top = 16
Width = 102
Caption = 'Difference for lag of:'
ParentColor = False
end
object Label2: TLabel
Left = 7
Height = 14
Top = 56
Width = 114
Caption = 'No. of times to repeat: '
ParentColor = False
end
object LagEdit: TEdit
Left = 120
Height = 21
Top = 9
Width = 39
TabOrder = 0
Text = '1'
end
object OrderEdit: TEdit
Left = 120
Height = 21
Top = 49
Width = 39
TabOrder = 1
Text = '1'
end
object CancelBtn: TButton
Left = 96
Height = 31
Top = 88
Width = 78
Caption = 'Cancel'
ModalResult = 2
TabOrder = 2
end
object OKBtn: TButton
Left = 184
Height = 31
Top = 88
Width = 78
Caption = 'OK'
ModalResult = 1
TabOrder = 3
end
object HelpBtn: TButton
Tag = 121
Left = 8
Height = 32
Top = 88
Width = 82
Caption = 'Help'
OnClick = HelpBtnClick
TabOrder = 4
end
end

View File

@ -0,0 +1,20 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TDifferenceFrm','FORMDATA',[
'TPF0'#14'TDifferenceFrm'#13'DifferenceFrm'#4'Left'#3#211#0#6'Height'#3#136#0
+#3'Top'#3#137#0#5'Width'#3#15#1#7'Caption'#6#26'Differencing Specification'
+#12'ClientHeight'#3#136#0#11'ClientWidth'#3#15#1#6'OnShow'#7#8'FormShow'#10
+'LCLVersion'#6#8'0.9.28.2'#0#6'TLabel'#6'Label1'#4'Left'#2#7#6'Height'#2#14#3
+'Top'#2#16#5'Width'#2'f'#7'Caption'#6#22'Difference for lag of:'#11'ParentCo'
+'lor'#8#0#0#6'TLabel'#6'Label2'#4'Left'#2#7#6'Height'#2#14#3'Top'#2'8'#5'Wid'
+'th'#2'r'#7'Caption'#6#24'No. of times to repeat: '#11'ParentColor'#8#0#0#5
+'TEdit'#7'LagEdit'#4'Left'#2'x'#6'Height'#2#21#3'Top'#2#9#5'Width'#2''''#8'T'
+'abOrder'#2#0#4'Text'#6#1'1'#0#0#5'TEdit'#9'OrderEdit'#4'Left'#2'x'#6'Height'
+#2#21#3'Top'#2'1'#5'Width'#2''''#8'TabOrder'#2#1#4'Text'#6#1'1'#0#0#7'TButto'
+'n'#9'CancelBtn'#4'Left'#2'`'#6'Height'#2#31#3'Top'#2'X'#5'Width'#2'N'#7'Cap'
+'tion'#6#6'Cancel'#11'ModalResult'#2#2#8'TabOrder'#2#2#0#0#7'TButton'#5'OKBt'
+'n'#4'Left'#3#184#0#6'Height'#2#31#3'Top'#2'X'#5'Width'#2'N'#7'Caption'#6#2
+'OK'#11'ModalResult'#2#1#8'TabOrder'#2#3#0#0#7'TButton'#7'HelpBtn'#3'Tag'#2
+'y'#4'Left'#2#8#6'Height'#2' '#3'Top'#2'X'#5'Width'#2'R'#7'Caption'#6#4'Help'
+#7'OnClick'#7#12'HelpBtnClick'#8'TabOrder'#2#4#0#0#0
]);

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,406 @@
object DiscrimFrm: TDiscrimFrm
Left = 152
Height = 415
Top = 93
Width = 560
Caption = 'Discriminant Function and Multivariate Analysis of Variance'
ClientHeight = 415
ClientWidth = 560
OnShow = FormShow
LCLVersion = '0.9.28.2'
object Label1: TLabel
Left = 6
Height = 14
Top = 2
Width = 85
Caption = 'Available Variable'
ParentColor = False
end
object Label2: TLabel
Left = 225
Height = 14
Top = 16
Width = 71
Caption = 'Group Variable'
ParentColor = False
end
object Label3: TLabel
Left = 225
Height = 14
Top = 104
Width = 90
Caption = 'Predictor Variables'
ParentColor = False
end
object VarList: TListBox
Left = 6
Height = 288
Top = 17
Width = 165
ItemHeight = 0
MultiSelect = True
TabOrder = 0
end
object DepIn: TBitBtn
Left = 184
Height = 31
Top = 17
Width = 33
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE
6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580
3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3
71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7
74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7
74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = DepInClick
TabOrder = 1
end
object DepOut: TBitBtn
Left = 184
Height = 31
Top = 56
Width = 33
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = DepOutClick
TabOrder = 2
end
object PredIn: TBitBtn
Left = 184
Height = 31
Top = 128
Width = 33
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE
6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580
3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3
71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7
74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7
74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = PredInClick
TabOrder = 3
end
object PredOut: TBitBtn
Left = 184
Height = 31
Top = 168
Width = 33
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = PredOutClick
TabOrder = 4
end
object GroupVar: TEdit
Left = 225
Height = 21
Top = 36
Width = 136
TabOrder = 5
Text = 'GroupVar'
end
object PredList: TListBox
Left = 223
Height = 182
Top = 120
Width = 139
ItemHeight = 0
TabOrder = 6
end
object GroupBox1: TGroupBox
Left = 377
Height = 294
Top = 6
Width = 174
Caption = 'Options'
ClientHeight = 276
ClientWidth = 170
TabOrder = 7
object DescChk: TCheckBox
Left = 6
Height = 17
Top = 1
Width = 119
Caption = 'Descriptive Statistics'
TabOrder = 0
end
object CorrsChk: TCheckBox
Left = 7
Height = 17
Top = 22
Width = 78
Caption = 'Correlations'
TabOrder = 1
end
object InvChk: TCheckBox
Left = 6
Height = 17
Top = 44
Width = 95
Caption = 'Matrix Inverses'
TabOrder = 2
end
object PlotChk: TCheckBox
Left = 6
Height = 17
Top = 65
Width = 73
Caption = 'Plot Scores'
TabOrder = 3
end
object ClassChk: TCheckBox
Left = 6
Height = 17
Top = 88
Width = 92
Caption = 'Classify Scores'
TabOrder = 4
end
object AnovaChk: TCheckBox
Left = 6
Height = 17
Top = 110
Width = 109
Caption = 'One-Way ANOVAs'
TabOrder = 5
end
object CrossChk: TCheckBox
Left = 6
Height = 17
Top = 130
Width = 93
Caption = 'Cross-Products'
TabOrder = 6
end
object DevCPChk: TCheckBox
Left = 6
Height = 17
Top = 152
Width = 141
Caption = 'Deviation Cross-Products'
TabOrder = 7
end
object EigensChk: TCheckBox
Left = 6
Height = 17
Top = 175
Width = 85
Caption = 'Eigen Vectors'
TabOrder = 8
end
object PCovChk: TCheckBox
Left = 7
Height = 17
Top = 194
Width = 142
Caption = 'Pooled Within Covariance'
TabOrder = 9
end
object CentroidsChk: TCheckBox
Left = 7
Height = 17
Top = 218
Width = 66
Caption = 'Centroids'
TabOrder = 10
end
object ScoresChk: TCheckBox
Left = 7
Height = 17
Top = 242
Width = 106
Caption = 'Scores to the Grid'
TabOrder = 11
end
end
object ClassSize: TRadioGroup
Left = 377
Height = 94
Top = 310
Width = 172
AutoFill = True
Caption = 'Classify Using:'
ChildSizing.LeftRightSpacing = 6
ChildSizing.TopBottomSpacing = 6
ChildSizing.EnlargeHorizontal = crsHomogenousChildResize
ChildSizing.EnlargeVertical = crsHomogenousChildResize
ChildSizing.ShrinkHorizontal = crsScaleChilds
ChildSizing.ShrinkVertical = crsScaleChilds
ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 1
ClientHeight = 76
ClientWidth = 168
Items.Strings = (
'Equal Group Sizes'
'Existing Sample Sizes'
'Entered Prior Sizes'
)
TabOrder = 8
end
object ResetBtn: TButton
Left = 27
Height = 28
Top = 328
Width = 64
Caption = 'Reset'
OnClick = ResetBtnClick
TabOrder = 9
end
object CancelBtn: TButton
Left = 107
Height = 28
Top = 328
Width = 64
Caption = 'Cancel'
ModalResult = 2
TabOrder = 10
end
object ComputeBtn: TButton
Left = 216
Height = 28
Top = 328
Width = 64
Caption = 'Compute'
OnClick = ComputeBtnClick
TabOrder = 11
end
object ReturnBtn: TButton
Left = 296
Height = 28
Top = 328
Width = 64
Caption = 'Return'
ModalResult = 1
TabOrder = 12
end
end

View File

@ -0,0 +1,264 @@
LazarusResources.Add('TDiscrimFrm','FORMDATA',[
'TPF0'#11'TDiscrimFrm'#10'DiscrimFrm'#4'Left'#3#152#0#6'Height'#3#159#1#3'Top'
+#2']'#5'Width'#3'0'#2#7'Caption'#6';Discriminant Function and Multivariate A'
+'nalysis of Variance'#12'ClientHeight'#3#159#1#11'ClientWidth'#3'0'#2#6'OnSh'
+'ow'#7#8'FormShow'#10'LCLVersion'#6#8'0.9.28.2'#0#6'TLabel'#6'Label1'#4'Left'
+#2#6#6'Height'#2#14#3'Top'#2#2#5'Width'#2'U'#7'Caption'#6#18'Available Varia'
+'ble'#11'ParentColor'#8#0#0#6'TLabel'#6'Label2'#4'Left'#3#225#0#6'Height'#2
+#14#3'Top'#2#16#5'Width'#2'G'#7'Caption'#6#14'Group Variable'#11'ParentColor'
+#8#0#0#6'TLabel'#6'Label3'#4'Left'#3#225#0#6'Height'#2#14#3'Top'#2'h'#5'Widt'
+'h'#2'Z'#7'Caption'#6#19'Predictor Variables'#11'ParentColor'#8#0#0#8'TListB'
+'ox'#7'VarList'#4'Left'#2#6#6'Height'#3' '#1#3'Top'#2#17#5'Width'#3#165#0#10
+'ItemHeight'#2#0#11'MultiSelect'#9#8'TabOrder'#2#0#0#0#7'TBitBtn'#5'DepIn'#4
+'Left'#3#184#0#6'Height'#2#31#3'Top'#2#17#5'Width'#2'!'#10'Glyph.Data'#10':'
+#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '
+#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'!c$'#184#29'^ '#6
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0'*p/8%i)'#247'!c$'#217#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'a'#190'm'#255']'#184'h'#255'X'#177'b'
+#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'
+#128';'#255'?'#136'E'#255'Y'#161'^'#255'D'#139'I'#255'!c$'#207#255#255#255#0
+#255#255#255#0#255#255#255#0'e'#195'q'#255#160#215#169#255#156#213#165#255
+#152#211#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142
+#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'E'#140'J'
+#255'!c$'#196#255#255#255#0#255#255#255#0'h'#199't'#255#165#218#174#255#162
+#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255
+#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130
+#255'J'#145'P'#255'%i)'#201#255#255#255#0#255#255#255#0'h'#199't'#255'h'#199
+'t'#255'e'#195'q'#255'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255
+'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'
+#209#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'A'#145'I'#247';'#136'B'#219#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'G'#153'O'#187'A'#145'I'#6#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#10'DepInClick'#8
+'TabOrder'#2#1#0#0#7'TBitBtn'#6'DepOut'#4'Left'#3#184#0#6'Height'#2#31#3'Top'
+#2'8'#5'Width'#2'!'#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'
,#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0
+#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'M'#161'V'#6'G'#153
+'O'#184#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'S'#169'\'#217'M'#161'V'
+#247'G'#153'O8'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131#255
+'['#170'd'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'
+#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255#255#255#255#0#255#255#255#0'e'#195
+'q'#196'{'#200#134#255#156#213#165#255#152#211#161#255#148#208#157#255#144
+#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255
+'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!c$'#255#255#255#255#0#255#255
+#255#0'h'#199't'#201#127#204#138#255#162#216#171#255#158#214#167#255#154#212
+#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255#133
+#199#139#255#129#197#135#255'}'#194#130#255'x'#192'~'#255'%i)'#255#255#255
+#255#0#255#255#255#0#255#255#255#0'h'#199't'#209#128#205#139#255'|'#201#135
+#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'
+#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#219'e'#195'q'#247#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#6'h'#199't'#187#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyp'
+'hs'#2#0#7'OnClick'#7#11'DepOutClick'#8'TabOrder'#2#2#0#0#7'TBitBtn'#6'PredI'
+'n'#4'Left'#3#184#0#6'Height'#2#31#3'Top'#3#128#0#5'Width'#2'!'#10'Glyph.Dat'
+'a'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0
+#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
,#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'!c$'#184
+#29'^ '#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'*p/8%i)'#247'!c$'#217#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0'a'#190'm'#255']'#184'h'#255'X'#177
+'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255
+'5'#128';'#255'?'#136'E'#255'Y'#161'^'#255'D'#139'I'#255'!c$'#207#255#255#255
+#0#255#255#255#0#255#255#255#0'e'#195'q'#255#160#215#169#255#156#213#165#255
+#152#211#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142
+#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'E'#140'J'
+#255'!c$'#196#255#255#255#0#255#255#255#0'h'#199't'#255#165#218#174#255#162
+#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255
+#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130
+#255'J'#145'P'#255'%i)'#201#255#255#255#0#255#255#255#0'h'#199't'#255'h'#199
+'t'#255'e'#195'q'#255'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255
+'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'
+#209#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'A'#145'I'#247';'#136'B'#219#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'G'#153'O'#187'A'#145'I'#6#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#11'PredInClick'#8
+'TabOrder'#2#3#0#0#7'TBitBtn'#7'PredOut'#4'Left'#3#184#0#6'Height'#2#31#3'To'
+'p'#3#168#0#5'Width'#2'!'#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0
+#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'
+#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'M'#161'V'#6'G'
+#153'O'#184#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'S'#169'\'#217'M'#161
+'V'#247'G'#153'O8'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131
+#255'['#170'd'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/'
+'x5'#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255#255#255#255#0#255#255#255#0'e'
+#195'q'#196'{'#200#134#255#156#213#165#255#152#211#161#255#148#208#157#255
+#144#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132
+#255'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!c$'#255#255#255#255#0#255
,#255#255#0'h'#199't'#201#127#204#138#255#162#216#171#255#158#214#167#255#154
+#212#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255
+#133#199#139#255#129#197#135#255'}'#194#130#255'x'#192'~'#255'%i)'#255#255
+#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#209#128#205#139#255'|'#201
+#135#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'
+#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#219'e'#195'q'#247#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#6'h'#199't'#187#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'Num'
+'Glyphs'#2#0#7'OnClick'#7#12'PredOutClick'#8'TabOrder'#2#4#0#0#5'TEdit'#8'Gr'
+'oupVar'#4'Left'#3#225#0#6'Height'#2#21#3'Top'#2'$'#5'Width'#3#136#0#8'TabOr'
+'der'#2#5#4'Text'#6#8'GroupVar'#0#0#8'TListBox'#8'PredList'#4'Left'#3#223#0#6
+'Height'#3#182#0#3'Top'#2'x'#5'Width'#3#139#0#10'ItemHeight'#2#0#8'TabOrder'
+#2#6#0#0#9'TGroupBox'#9'GroupBox1'#4'Left'#3'y'#1#6'Height'#3'&'#1#3'Top'#2#6
+#5'Width'#3#174#0#7'Caption'#6#7'Options'#12'ClientHeight'#3#20#1#11'ClientW'
+'idth'#3#170#0#8'TabOrder'#2#7#0#9'TCheckBox'#7'DescChk'#4'Left'#2#6#6'Heigh'
+'t'#2#17#3'Top'#2#1#5'Width'#2'w'#7'Caption'#6#22'Descriptive Statistics'#8
+'TabOrder'#2#0#0#0#9'TCheckBox'#8'CorrsChk'#4'Left'#2#7#6'Height'#2#17#3'Top'
+#2#22#5'Width'#2'N'#7'Caption'#6#12'Correlations'#8'TabOrder'#2#1#0#0#9'TChe'
+'ckBox'#6'InvChk'#4'Left'#2#6#6'Height'#2#17#3'Top'#2','#5'Width'#2'_'#7'Cap'
+'tion'#6#15'Matrix Inverses'#8'TabOrder'#2#2#0#0#9'TCheckBox'#7'PlotChk'#4'L'
+'eft'#2#6#6'Height'#2#17#3'Top'#2'A'#5'Width'#2'I'#7'Caption'#6#11'Plot Scor'
+'es'#8'TabOrder'#2#3#0#0#9'TCheckBox'#8'ClassChk'#4'Left'#2#6#6'Height'#2#17
+#3'Top'#2'X'#5'Width'#2'\'#7'Caption'#6#15'Classify Scores'#8'TabOrder'#2#4#0
+#0#9'TCheckBox'#8'AnovaChk'#4'Left'#2#6#6'Height'#2#17#3'Top'#2'n'#5'Width'#2
+'m'#7'Caption'#6#14'One-Way ANOVAs'#8'TabOrder'#2#5#0#0#9'TCheckBox'#8'Cross'
+'Chk'#4'Left'#2#6#6'Height'#2#17#3'Top'#3#130#0#5'Width'#2']'#7'Caption'#6#14
+'Cross-Products'#8'TabOrder'#2#6#0#0#9'TCheckBox'#8'DevCPChk'#4'Left'#2#6#6
+'Height'#2#17#3'Top'#3#152#0#5'Width'#3#141#0#7'Caption'#6#24'Deviation Cros'
+'s-Products'#8'TabOrder'#2#7#0#0#9'TCheckBox'#9'EigensChk'#4'Left'#2#6#6'Hei'
+'ght'#2#17#3'Top'#3#175#0#5'Width'#2'U'#7'Caption'#6#13'Eigen Vectors'#8'Tab'
+'Order'#2#8#0#0#9'TCheckBox'#7'PCovChk'#4'Left'#2#7#6'Height'#2#17#3'Top'#3
+#194#0#5'Width'#3#142#0#7'Caption'#6#24'Pooled Within Covariance'#8'TabOrder'
+#2#9#0#0#9'TCheckBox'#12'CentroidsChk'#4'Left'#2#7#6'Height'#2#17#3'Top'#3
+#218#0#5'Width'#2'B'#7'Caption'#6#9'Centroids'#8'TabOrder'#2#10#0#0#9'TCheck'
+'Box'#9'ScoresChk'#4'Left'#2#7#6'Height'#2#17#3'Top'#3#242#0#5'Width'#2'j'#7
+'Caption'#6#18'Scores to the Grid'#8'TabOrder'#2#11#0#0#0#11'TRadioGroup'#9
+'ClassSize'#4'Left'#3'y'#1#6'Height'#2'^'#3'Top'#3'6'#1#5'Width'#3#172#0#8'A'
+'utoFill'#9#7'Caption'#6#15'Classify Using:'#28'ChildSizing.LeftRightSpacing'
+#2#6#28'ChildSizing.TopBottomSpacing'#2#6#29'ChildSizing.EnlargeHorizontal'#7
+#24'crsHomogenousChildResize'#27'ChildSizing.EnlargeVertical'#7#24'crsHomoge'
+'nousChildResize'#28'ChildSizing.ShrinkHorizontal'#7#14'crsScaleChilds'#26'C'
+'hildSizing.ShrinkVertical'#7#14'crsScaleChilds'#18'ChildSizing.Layout'#7#29
+'cclLeftToRightThenTopToBottom'#27'ChildSizing.ControlsPerLine'#2#1#12'Clien'
+'tHeight'#2'L'#11'ClientWidth'#3#168#0#13'Items.Strings'#1#6#17'Equal Group '
+'Sizes'#6#21'Existing Sample Sizes'#6#19'Entered Prior Sizes'#0#8'TabOrder'#2
+#8#0#0#7'TButton'#8'ResetBtn'#4'Left'#2#27#6'Height'#2#28#3'Top'#3'H'#1#5'Wi'
+'dth'#2'@'#7'Caption'#6#5'Reset'#7'OnClick'#7#13'ResetBtnClick'#8'TabOrder'#2
+#9#0#0#7'TButton'#9'CancelBtn'#4'Left'#2'k'#6'Height'#2#28#3'Top'#3'H'#1#5'W'
,'idth'#2'@'#7'Caption'#6#6'Cancel'#11'ModalResult'#2#2#8'TabOrder'#2#10#0#0#7
+'TButton'#10'ComputeBtn'#4'Left'#3#216#0#6'Height'#2#28#3'Top'#3'H'#1#5'Widt'
+'h'#2'@'#7'Caption'#6#7'Compute'#7'OnClick'#7#15'ComputeBtnClick'#8'TabOrder'
+#2#11#0#0#7'TButton'#9'ReturnBtn'#4'Left'#3'('#1#6'Height'#2#28#3'Top'#3'H'#1
+#5'Width'#2'@'#7'Caption'#6#6'Return'#11'ModalResult'#2#1#8'TabOrder'#2#12#0
+#0#0
]);

View File

@ -0,0 +1,158 @@
object DistribFrm: TDistribFrm
Left = 183
Height = 286
Top = 110
Width = 323
Caption = 'Distributions'
ClientHeight = 286
ClientWidth = 323
OnShow = FormShow
LCLVersion = '0.9.28.2'
object GroupBox1: TGroupBox
Left = 8
Height = 96
Top = 8
Width = 208
Caption = 'Plot Distribution:'
ClientHeight = 78
ClientWidth = 204
TabOrder = 0
object NDChk: TCheckBox
Left = 9
Height = 17
Top = 2
Width = 110
Caption = 'Normal Distribution'
OnClick = NDChkClick
TabOrder = 0
end
object ChiChk: TCheckBox
Left = 9
Height = 17
Top = 24
Width = 130
Caption = 'Chi-Square Distribution'
OnClick = ChiChkClick
TabOrder = 1
end
object FChk: TCheckBox
Left = 9
Height = 17
Top = 49
Width = 121
Caption = 'Central F Distribution'
OnClick = FChkClick
TabOrder = 2
end
end
object GroupBox2: TGroupBox
Left = 8
Height = 152
Top = 120
Width = 208
Caption = 'Parameters'
ClientHeight = 134
ClientWidth = 204
TabOrder = 1
object AlphaLabel: TLabel
Left = 8
Height = 14
Top = 15
Width = 85
Caption = 'Type I Error Rate'
ParentColor = False
end
object Label2: TLabel
Left = 8
Height = 14
Top = 46
Width = 86
Caption = 'Deg. Freedom (1)'
ParentColor = False
end
object Label3: TLabel
Left = 9
Height = 14
Top = 81
Width = 86
Caption = 'Deg. Freedom (2)'
ParentColor = False
end
object Label4: TLabel
Left = 8
Height = 14
Top = 111
Width = 27
Caption = 'Mean'
ParentColor = False
end
object AlphaEdit: TEdit
Left = 102
Height = 21
Top = 8
Width = 43
TabOrder = 0
Text = 'AlphaEdit'
end
object DF1Edit: TEdit
Left = 102
Height = 21
Top = 39
Width = 43
TabOrder = 1
Text = 'Edit1'
end
object MeanEdit: TEdit
Left = 102
Height = 21
Top = 104
Width = 43
TabOrder = 2
Text = 'Edit1'
end
object DF2Edit: TEdit
Left = 102
Height = 21
Top = 72
Width = 43
TabOrder = 3
Text = 'Edit1'
end
end
object ResetBtn: TButton
Left = 232
Height = 29
Top = 23
Width = 71
Caption = 'Reset'
OnClick = ResetBtnClick
TabOrder = 2
end
object CancelBtn: TButton
Left = 232
Height = 29
Top = 88
Width = 71
Caption = 'Cancel'
ModalResult = 2
TabOrder = 3
end
object ComputeBtn: TButton
Left = 232
Height = 29
Top = 152
Width = 71
Caption = 'Compute'
OnClick = ComputeBtnClick
TabOrder = 4
end
object ReturnBtn: TButton
Left = 232
Height = 29
Top = 216
Width = 71
Caption = 'Return'
ModalResult = 1
TabOrder = 5
end
end

View File

@ -0,0 +1,38 @@
LazarusResources.Add('TDistribFrm','FORMDATA',[
'TPF0'#11'TDistribFrm'#10'DistribFrm'#4'Left'#3#183#0#6'Height'#3#30#1#3'Top'
+#2'n'#5'Width'#3'C'#1#7'Caption'#6#13'Distributions'#12'ClientHeight'#3#30#1
+#11'ClientWidth'#3'C'#1#6'OnShow'#7#8'FormShow'#10'LCLVersion'#6#8'0.9.28.2'
+#0#9'TGroupBox'#9'GroupBox1'#4'Left'#2#8#6'Height'#2'`'#3'Top'#2#8#5'Width'#3
+#208#0#7'Caption'#6#18'Plot Distribution:'#12'ClientHeight'#2'N'#11'ClientWi'
+'dth'#3#204#0#8'TabOrder'#2#0#0#9'TCheckBox'#5'NDChk'#4'Left'#2#9#6'Height'#2
+#17#3'Top'#2#2#5'Width'#2'n'#7'Caption'#6#19'Normal Distribution'#7'OnClick'
+#7#10'NDChkClick'#8'TabOrder'#2#0#0#0#9'TCheckBox'#6'ChiChk'#4'Left'#2#9#6'H'
+'eight'#2#17#3'Top'#2#24#5'Width'#3#130#0#7'Caption'#6#23'Chi-Square Distrib'
+'ution'#7'OnClick'#7#11'ChiChkClick'#8'TabOrder'#2#1#0#0#9'TCheckBox'#4'FChk'
+#4'Left'#2#9#6'Height'#2#17#3'Top'#2'1'#5'Width'#2'y'#7'Caption'#6#22'Centra'
+'l F Distribution'#7'OnClick'#7#9'FChkClick'#8'TabOrder'#2#2#0#0#0#9'TGroupB'
+'ox'#9'GroupBox2'#4'Left'#2#8#6'Height'#3#152#0#3'Top'#2'x'#5'Width'#3#208#0
+#7'Caption'#6#10'Parameters'#12'ClientHeight'#3#134#0#11'ClientWidth'#3#204#0
+#8'TabOrder'#2#1#0#6'TLabel'#10'AlphaLabel'#4'Left'#2#8#6'Height'#2#14#3'Top'
+#2#15#5'Width'#2'U'#7'Caption'#6#17'Type I Error Rate'#11'ParentColor'#8#0#0
+#6'TLabel'#6'Label2'#4'Left'#2#8#6'Height'#2#14#3'Top'#2'.'#5'Width'#2'V'#7
+'Caption'#6#16'Deg. Freedom (1)'#11'ParentColor'#8#0#0#6'TLabel'#6'Label3'#4
+'Left'#2#9#6'Height'#2#14#3'Top'#2'Q'#5'Width'#2'V'#7'Caption'#6#16'Deg. Fre'
+'edom (2)'#11'ParentColor'#8#0#0#6'TLabel'#6'Label4'#4'Left'#2#8#6'Height'#2
+#14#3'Top'#2'o'#5'Width'#2#27#7'Caption'#6#4'Mean'#11'ParentColor'#8#0#0#5'T'
+'Edit'#9'AlphaEdit'#4'Left'#2'f'#6'Height'#2#21#3'Top'#2#8#5'Width'#2'+'#8'T'
+'abOrder'#2#0#4'Text'#6#9'AlphaEdit'#0#0#5'TEdit'#7'DF1Edit'#4'Left'#2'f'#6
+'Height'#2#21#3'Top'#2''''#5'Width'#2'+'#8'TabOrder'#2#1#4'Text'#6#5'Edit1'#0
+#0#5'TEdit'#8'MeanEdit'#4'Left'#2'f'#6'Height'#2#21#3'Top'#2'h'#5'Width'#2'+'
+#8'TabOrder'#2#2#4'Text'#6#5'Edit1'#0#0#5'TEdit'#7'DF2Edit'#4'Left'#2'f'#6'H'
+'eight'#2#21#3'Top'#2'H'#5'Width'#2'+'#8'TabOrder'#2#3#4'Text'#6#5'Edit1'#0#0
+#0#7'TButton'#8'ResetBtn'#4'Left'#3#232#0#6'Height'#2#29#3'Top'#2#23#5'Width'
+#2'G'#7'Caption'#6#5'Reset'#7'OnClick'#7#13'ResetBtnClick'#8'TabOrder'#2#2#0
+#0#7'TButton'#9'CancelBtn'#4'Left'#3#232#0#6'Height'#2#29#3'Top'#2'X'#5'Widt'
+'h'#2'G'#7'Caption'#6#6'Cancel'#11'ModalResult'#2#2#8'TabOrder'#2#3#0#0#7'TB'
+'utton'#10'ComputeBtn'#4'Left'#3#232#0#6'Height'#2#29#3'Top'#3#152#0#5'Width'
+#2'G'#7'Caption'#6#7'Compute'#7'OnClick'#7#15'ComputeBtnClick'#8'TabOrder'#2
+#4#0#0#7'TButton'#9'ReturnBtn'#4'Left'#3#232#0#6'Height'#2#29#3'Top'#3#216#0
+#5'Width'#2'G'#7'Caption'#6#6'Return'#11'ModalResult'#2#1#8'TabOrder'#2#5#0#0
+#0
]);

View File

@ -0,0 +1,151 @@
object ErrorCurvesFrm: TErrorCurvesFrm
Left = 172
Height = 276
Top = 104
Width = 383
Caption = 'Alpha and Beta Curves for z tests'
ClientHeight = 276
ClientWidth = 383
OnShow = FormShow
LCLVersion = '0.9.28.2'
object Label1: TLabel
Left = 7
Height = 14
Top = 87
Width = 135
Caption = 'Mean of the Null Hypothesis'
ParentColor = False
end
object Label2: TLabel
Left = 7
Height = 14
Top = 119
Width = 171
Caption = 'Mean of the Alternative Hypothesis'
ParentColor = False
end
object Label3: TLabel
Left = 7
Height = 14
Top = 151
Width = 182
Caption = 'Standard Deviation of the Distribution'
ParentColor = False
end
object Label4: TLabel
Left = 7
Height = 14
Top = 184
Width = 170
Caption = 'Probability of Making a Type I Error'
ParentColor = False
end
object Label5: TLabel
Left = 7
Height = 14
Top = 216
Width = 174
Caption = 'Probability of Making a Type II Error'
ParentColor = False
end
object NullMeanEdit: TEdit
Left = 198
Height = 21
Top = 80
Width = 60
TabOrder = 0
Text = 'NullMeanEdit'
end
object AltMeanEdit: TEdit
Left = 198
Height = 21
Top = 112
Width = 60
TabOrder = 1
Text = 'Edit1'
end
object SDEdit: TEdit
Left = 198
Height = 21
Top = 144
Width = 60
TabOrder = 2
Text = 'Edit1'
end
object TypeIEdit: TEdit
Left = 198
Height = 21
Top = 176
Width = 60
TabOrder = 3
Text = 'Edit1'
end
object TypeIIEdit: TEdit
Left = 198
Height = 21
Top = 208
Width = 60
TabOrder = 4
Text = 'Edit1'
end
object ResetBtn: TButton
Left = 288
Height = 29
Top = 72
Width = 70
Caption = 'Reset'
OnClick = ResetBtnClick
TabOrder = 5
end
object CancelBtn: TButton
Left = 288
Height = 29
Top = 9
Width = 70
Caption = 'Cancel'
ModalResult = 2
TabOrder = 6
end
object ComputeBtn: TButton
Left = 288
Height = 29
Top = 136
Width = 70
Caption = 'Compute'
OnClick = ComputeBtnClick
TabOrder = 7
end
object ReturnBtn: TButton
Left = 288
Height = 29
Top = 200
Width = 70
Caption = 'Return'
ModalResult = 1
TabOrder = 8
end
object NullType: TRadioGroup
Left = 8
Height = 67
Top = 0
Width = 252
AutoFill = True
Caption = 'Null Hypothesis Characteristic:'
ChildSizing.LeftRightSpacing = 6
ChildSizing.TopBottomSpacing = 6
ChildSizing.EnlargeHorizontal = crsHomogenousChildResize
ChildSizing.EnlargeVertical = crsHomogenousChildResize
ChildSizing.ShrinkHorizontal = crsScaleChilds
ChildSizing.ShrinkVertical = crsScaleChilds
ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 1
ClientHeight = 49
ClientWidth = 248
ItemIndex = 1
Items.Strings = (
'One-tailed (Directional alterntive)'
'Two-tailed (non-directional alterntive)'
)
TabOrder = 9
end
end

View File

@ -0,0 +1,42 @@
LazarusResources.Add('TErrorCurvesFrm','FORMDATA',[
'TPF0'#15'TErrorCurvesFrm'#14'ErrorCurvesFrm'#4'Left'#3#172#0#6'Height'#3#20#1
+#3'Top'#2'h'#5'Width'#3#127#1#7'Caption'#6'!Alpha and Beta Curves for z test'
+'s'#12'ClientHeight'#3#20#1#11'ClientWidth'#3#127#1#6'OnShow'#7#8'FormShow'
+#10'LCLVersion'#6#8'0.9.28.2'#0#6'TLabel'#6'Label1'#4'Left'#2#7#6'Height'#2
+#14#3'Top'#2'W'#5'Width'#3#135#0#7'Caption'#6#27'Mean of the Null Hypothesis'
+#11'ParentColor'#8#0#0#6'TLabel'#6'Label2'#4'Left'#2#7#6'Height'#2#14#3'Top'
+#2'w'#5'Width'#3#171#0#7'Caption'#6'"Mean of the Alternative Hypothesis'#11
+'ParentColor'#8#0#0#6'TLabel'#6'Label3'#4'Left'#2#7#6'Height'#2#14#3'Top'#3
+#151#0#5'Width'#3#182#0#7'Caption'#6'&Standard Deviation of the Distribution'
+#11'ParentColor'#8#0#0#6'TLabel'#6'Label4'#4'Left'#2#7#6'Height'#2#14#3'Top'
+#3#184#0#5'Width'#3#170#0#7'Caption'#6'$Probability of Making a Type I Error'
+#11'ParentColor'#8#0#0#6'TLabel'#6'Label5'#4'Left'#2#7#6'Height'#2#14#3'Top'
+#3#216#0#5'Width'#3#174#0#7'Caption'#6'%Probability of Making a Type II Erro'
+'r'#11'ParentColor'#8#0#0#5'TEdit'#12'NullMeanEdit'#4'Left'#3#198#0#6'Height'
+#2#21#3'Top'#2'P'#5'Width'#2'<'#8'TabOrder'#2#0#4'Text'#6#12'NullMeanEdit'#0
+#0#5'TEdit'#11'AltMeanEdit'#4'Left'#3#198#0#6'Height'#2#21#3'Top'#2'p'#5'Wid'
+'th'#2'<'#8'TabOrder'#2#1#4'Text'#6#5'Edit1'#0#0#5'TEdit'#6'SDEdit'#4'Left'#3
+#198#0#6'Height'#2#21#3'Top'#3#144#0#5'Width'#2'<'#8'TabOrder'#2#2#4'Text'#6
+#5'Edit1'#0#0#5'TEdit'#9'TypeIEdit'#4'Left'#3#198#0#6'Height'#2#21#3'Top'#3
+#176#0#5'Width'#2'<'#8'TabOrder'#2#3#4'Text'#6#5'Edit1'#0#0#5'TEdit'#10'Type'
+'IIEdit'#4'Left'#3#198#0#6'Height'#2#21#3'Top'#3#208#0#5'Width'#2'<'#8'TabOr'
+'der'#2#4#4'Text'#6#5'Edit1'#0#0#7'TButton'#8'ResetBtn'#4'Left'#3' '#1#6'Hei'
+'ght'#2#29#3'Top'#2'H'#5'Width'#2'F'#7'Caption'#6#5'Reset'#7'OnClick'#7#13'R'
+'esetBtnClick'#8'TabOrder'#2#5#0#0#7'TButton'#9'CancelBtn'#4'Left'#3' '#1#6
+'Height'#2#29#3'Top'#2#9#5'Width'#2'F'#7'Caption'#6#6'Cancel'#11'ModalResult'
+#2#2#8'TabOrder'#2#6#0#0#7'TButton'#10'ComputeBtn'#4'Left'#3' '#1#6'Height'#2
+#29#3'Top'#3#136#0#5'Width'#2'F'#7'Caption'#6#7'Compute'#7'OnClick'#7#15'Com'
+'puteBtnClick'#8'TabOrder'#2#7#0#0#7'TButton'#9'ReturnBtn'#4'Left'#3' '#1#6
+'Height'#2#29#3'Top'#3#200#0#5'Width'#2'F'#7'Caption'#6#6'Return'#11'ModalRe'
+'sult'#2#1#8'TabOrder'#2#8#0#0#11'TRadioGroup'#8'NullType'#4'Left'#2#8#6'Hei'
+'ght'#2'C'#3'Top'#2#0#5'Width'#3#252#0#8'AutoFill'#9#7'Caption'#6#31'Null Hy'
+'pothesis Characteristic:'#28'ChildSizing.LeftRightSpacing'#2#6#28'ChildSizi'
+'ng.TopBottomSpacing'#2#6#29'ChildSizing.EnlargeHorizontal'#7#24'crsHomogeno'
+'usChildResize'#27'ChildSizing.EnlargeVertical'#7#24'crsHomogenousChildResiz'
+'e'#28'ChildSizing.ShrinkHorizontal'#7#14'crsScaleChilds'#26'ChildSizing.Shr'
+'inkVertical'#7#14'crsScaleChilds'#18'ChildSizing.Layout'#7#29'cclLeftToRigh'
+'tThenTopToBottom'#27'ChildSizing.ControlsPerLine'#2#1#12'ClientHeight'#2'1'
+#11'ClientWidth'#3#248#0#9'ItemIndex'#2#1#13'Items.Strings'#1#6'#One-tailed '
+'(Directional alterntive)'#6'''Two-tailed (non-directional alterntive)'#0#8
+'TabOrder'#2#9#0#0#0
]);

View File

@ -0,0 +1,420 @@
unit EssayUnit;
{$MODE Delphi}
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, ItemBankGlobals, ExtDlgs, FunctionsUnit;
type
TEssayFrm = class(TForm)
Label2: TLabel;
ItemNoEdit: TEdit;
ItemNoScroll: TScrollBar;
Label1: TLabel;
CodeCombo: TComboBox;
Label14: TLabel;
BMPFileEdit: TEdit;
Label15: TLabel;
BrowseBtn: TButton;
ClearBtn: TButton;
Label16: TLabel;
BMPImage: TImage;
Label18: TLabel;
ItemWeightEdit: TEdit;
Panel1: TPanel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
PcntEdit: TEdit;
IRT1Edit: TEdit;
IRT2Edit: TEdit;
IRT3Edit: TEdit;
NoSelEdit: TEdit;
Label3: TLabel;
StemMemo: TMemo;
NewBtn: TButton;
SaveBtn: TButton;
DeleteBtn: TButton;
ReturnBtn: TButton;
AnswerMemo: TMemo;
Label4: TLabel;
OpenPictureDialog1: TOpenPictureDialog;
Label5: TLabel;
SymbolBox: TListBox;
Label6: TLabel;
OpenDialog1: TOpenDialog;
procedure FormShow(Sender: TObject);
procedure ShowEssayItem(Sender: TObject; itemno : integer);
procedure ReturnBtnClick(Sender: TObject);
procedure NewBtnClick(Sender: TObject);
procedure SaveBtnClick(Sender: TObject);
procedure LoadRecord(VAR NewRcd : EssayItemRcd; Sender : TObject);
procedure DeleteBtnClick(Sender: TObject);
procedure BrowseBtnClick(Sender: TObject);
procedure ItemNoScrollScroll(Sender: TObject; ScrollCode: TScrollCode;
var ScrollPos: Integer);
procedure ClearBtnClick(Sender: TObject);
procedure SymbolBoxClick(Sender: TObject);
procedure StemMemoEnter(Sender: TObject);
procedure AnswerMemoEnter(Sender: TObject);
private
{ Private declarations }
maxitems : integer;
ARcd : EssayItemRcd;
symbol : char;
EditBox : integer;
public
{ Public declarations }
end;
var
EssayFrm: TEssayFrm;
implementation
{$R *.lfm}
procedure TEssayFrm.FormShow(Sender: TObject);
var
F : TextFile;
S : string;
TF : File of EssayItemRcd;
i : integer;
begin
StemMemo.Clear;
AnswerMemo.Clear;
ItemNoScroll.Min := 1;
ItemNoScroll.Max := 1;
ItemNoEdit.Text := '1';
ItemNoScroll.Position := 1;
CodeCombo.Text := '';
BMPFileEdit.Text := '';
PcntEdit.Text := '0';
IRT1Edit.Text := '0';
IRT2Edit.Text := '0';
IRT3Edit.Text := '0';
NoSelEdit.Text := '0';
ItemWeightEdit.Text := '0';
maxitems := 0;
OpenDialog1.DefaultExt := '.COD';
OpenDialog1.Filter := 'Code files (*.cod)|*.COD|Text files (*.txt)|*.TXT|All files (*.*)|*.*';
OpenDialog1.FilterIndex := 1;
OpenDialog1.FileName := BankPath + ExtractFileName(BankName) + '.COD';
OpenDialog1.Title := 'Name of Item Code File:';
if OpenDialog1.Execute then
begin
AssignFile(F,OpenDialog1.filename);
ReSet(F);
while not EOF(F) do
begin
readln(F,S);
CodeCombo.Items.Add(S);
end;
end
else begin
ShowMessage('You must first open a file of item codes.');
exit;
end;
CloseFile(F);
S := BankPath + 'EssayFile' + ExtractFileName(BankName);
EssayFName := S;
if FileExists(S) { *Converted from FileExists* } then
begin
AssignFile(TF,S);
Reset(TF);
while not EOF(TF) do
begin
read(TF,EssayItem);
maxitems := maxitems + 1;
end;
CloseFile(TF);
if maxitems > ItemNoScroll.Max then
ItemNoScroll.Max := maxitems;
ItemNoScroll.Min := 1;
end
else begin // create empty file
AssignFile(TF,S);
rewrite(TF);
CloseFile(TF);
end;
for i := 1 to 20 do ARcd.BestAns[i] := '';
if maxitems > 0 then
begin
ItemNoScroll.Position := 1;
ShowEssayItem(self,1);
end;
SymbolBox.Clear;
for i := 127 to 255 do SymbolBox.Items.Add(chr(ord(i)));
end;
//-------------------------------------------------------------------
procedure TEssayFrm.ShowEssayItem(Sender: TObject; itemno : integer);
var
S : string;
F : File of EssayItemRcd;
where : longint;
Frecd : EssayItemRcd;
i : integer;
begin
ItemNoEdit.Text := IntToStr(ItemNoScroll.Position);
S := BankPath + 'EssayFile' + ExtractFileName(BankName);
AssignFile(F,S);
Reset(F);
where := itemno-1;
Seek(F,where);
read(F,FRecd);
CloseFile(F);
CodeCombo.Text := Frecd.Code;
BMPFileEdit.Text := Frecd.Picture;
PcntEdit.Text := FloatToStr(Frecd.PcntPass);
if BMPFileEdit.Text <> '' then
begin
if FileExists(Frecd.Picture) { *Converted from FileExists* } then
begin
BMPImage.Picture.LoadFromFile(Frecd.Picture);
BMPImage.Visible := true;
end
else begin
// ShowMessage('Image ' + Frecd.Picture + ' not found.');
BMPFileEdit.Text := '';
Frecd.Picture := '';
end;
end
else BMPImage.Visible := false;
ItemWeightEdit.Text := IntToStr(Frecd.ItemWeight);
IRT1Edit.Text := FloatToStr(Frecd.IRT[1]);
IRT2Edit.Text := FloatToStr(Frecd.IRT[2]);
IRT3Edit.Text := FLoatToStr(Frecd.IRT[3]);
StemMemo.Clear;
for i := 1 to 20 do
begin
S := Frecd.ItemStem[i];
if length(S) > 0 then StemMemo.Lines.Add(S);
end;
AnswerMemo.Clear;
for i := 1 to 20 do
begin
S := Frecd.BestAns[i];
if length(S) > 0 then AnswerMemo.Lines.Add(S);
end;
end;
//-------------------------------------------------------------------
procedure TEssayFrm.ReturnBtnClick(Sender: TObject);
begin
EssayFrm.Hide;
end;
//-------------------------------------------------------------------
procedure TEssayFrm.NewBtnClick(Sender: TObject);
begin
StemMemo.Clear;
AnswerMemo.Clear;
ItemNoScroll.Max := maxitems + 1;
ItemNoScroll.Position := ItemNoScroll.Max;
ItemNoEdit.Text := IntToStr(ItemNoScroll.Position);
CodeCombo.Text := '';
BMPFileEdit.Text := '';
BMPImage.Visible := false;
PcntEdit.Text := '0';
IRT1Edit.Text := '0';
IRT2Edit.Text := '0';
IRT3Edit.Text := '0';
NoSelEdit.Text := '0';
ItemWeightEdit.Text := '0';
BMPImage.Visible := false;
end;
//-------------------------------------------------------------------
procedure TEssayFrm.SaveBtnClick(Sender: TObject);
var
NewRcd : EssayItemRcd;
itemno : integer;
begin
itemno := ItemNoScroll.Position;
LoadRecord(NewRcd,self);
WriteESItem(itemno,NewRcd);
if itemno > maxitems then
begin
maxitems := itemno;
ItemNoScroll.Max := maxitems+1;
end;
end;
//-------------------------------------------------------------------
procedure TEssayFrm.LoadRecord(VAR NewRcd : EssayItemRcd; Sender : TObject);
var
i : integer;
S : string;
begin
NewRcd.ItemNo := ItemNoScroll.Position;
NewRcd.Code := CodeCombo.Text;
for i := 0 to StemMemo.Lines.Count-1 do
begin
S := Trim(StemMemo.Lines[i]);
NewRcd.ItemStem[i+1] := S;
end;
if StemMemo.Lines.Count < 20 then
for i := StemMemo.Lines.Count+1 to 20 do NewRcd.ItemStem[i] := '';
for i := 0 to AnswerMemo.Lines.Count-1 do
begin
S := Trim(AnswerMemo.Lines[i]);
NewRcd.BestAns[i+1] := S;
end;
if AnswerMemo.Lines.Count < 20 then
for i := AnswerMemo.Lines.Count+1 to 20 do NewRcd.BestAns[i] := '';
NewRcd.ItemWeight := StrToInt(ItemWeightEdit.Text);
NewRcd.Picture := BMPFileEdit.Text;
NewRcd.PcntPass := StrToFloat(PcntEdit.Text);
NewRcd.IRT[1] := StrToFloat(IRT1Edit.Text);
NewRcd.IRT[2] := StrToFloat(IRT2Edit.Text);
NewRcd.IRT[3] := StrToFloat(IRT3Edit.Text);
NewRcd.FreqElect := StrToInt(NoSelEdit.Text);
end;
//-------------------------------------------------------------------
procedure TEssayFrm.DeleteBtnClick(Sender: TObject);
var
FOld : File of EssayItemRcd;
FNew : File of EssayItemRcd;
itemno : integer;
i : integer;
SOld : string;
SNew : string;
begin
itemno := ItemNoScroll.Position;
SOld := BankPath + 'EssayFile' + ExtractFileName(BankName);
AssignFile(FOld,SOld);
ReSet(FOld);
SNew := BankPath + 'TempEssayFile';
AssignFile(FNew,SNew);
Rewrite(FNew);
// copy up to itemno from old file to new file
for i := 1 to itemno-1 do
begin
if not EOF(FOld) then
begin
read(FOld,ARcd);
write(FNew,ARcd);
end;
end;
// read past itemno to delete
if not EOF(FOld) then read(FOld,ARcd);
// write remaining records, if any, from old to new
if not EOF(FOld) then
begin
while not EOF(FOld) do
begin
read(FOld,ARcd);
write(FNew,ARcd);
end;
end;
CloseFile(FOld);
CloseFile(FNew);
// delete old file and rename temp file to old file name
DeleteFile(SOld); { *Converted from DeleteFile* }
RenameFile(SNew, Sold); { *Converted from RenameFile* }
maxitems := maxitems - 1;
if maxitems > 0 then ItemNoScroll.Max := maxitems else
ItemNoScroll.Max := 1;
end;
//-------------------------------------------------------------------
procedure TEssayFrm.BrowseBtnClick(Sender: TObject);
begin
if OpenPictureDialog1.Execute then
begin
BMPFileEdit.Text := OpenPictureDialog1.FileName;
BMPImage.Picture.LoadFromFile(BMPFileEdit.Text);
BMPImage.Visible := true;
end;
end;
//-------------------------------------------------------------------
procedure TEssayFrm.ItemNoScrollScroll(Sender: TObject;
ScrollCode: TScrollCode; var ScrollPos: Integer);
var
itemno : integer;
begin
itemno := ScrollPos;
if (itemno > maxitems) or (itemno < 1) then exit;
ItemNoEdit.Text := IntToStr(itemno);
ShowEssayItem(self,itemno);
end;
//-------------------------------------------------------------------
procedure TEssayFrm.ClearBtnClick(Sender: TObject);
begin
BMPFileEdit.Text := '';
BMPImage.Visible := false;
end;
//-------------------------------------------------------------------
procedure TEssayFrm.SymbolBoxClick(Sender: TObject);
var
index : integer;
S : string;
begin
if EditBox = 1 then
begin
index := SymbolBox.ItemIndex;
S := SymbolBox.Items.Strings[index];
symbol := S[1];
index := StemMemo.Lines.Count;
if index > 0 then
begin
S := StemMemo.Lines.Strings[index-1];
StemMemo.Lines.Delete(index-1);
S := S + symbol;
StemMemo.Lines.Insert(index-1,S);
end
else begin
S := StemMemo.Lines.Strings[0];
StemMemo.Lines.Delete(0);
S := S + symbol;
StemMemo.Lines.Add(S);
end;
end
else begin
index := SymbolBox.ItemIndex;
S := SymbolBox.Items.Strings[index];
symbol := S[1];
index := AnswerMemo.Lines.Count;
if index > 0 then
begin
S := AnswerMemo.Lines.Strings[index-1];
AnswerMemo.Lines.Delete(index-1);
S := S + symbol;
AnswerMemo.Lines.Insert(index-1,S);
end
else begin
S := AnswerMemo.Lines.Strings[0];
AnswerMemo.Lines.Delete(0);
S := S + symbol;
AnswerMemo.Lines.Add(S);
end;
end;
end;
//-------------------------------------------------------------------
procedure TEssayFrm.StemMemoEnter(Sender: TObject);
begin
EditBox := 1;
end;
//-------------------------------------------------------------------
procedure TEssayFrm.AnswerMemoEnter(Sender: TObject);
begin
EditBox := 2;
end;
//-------------------------------------------------------------------
end.

View File

@ -0,0 +1,329 @@
object EssayFrm: TEssayFrm
Left = 23
Top = 10
HelpContext = 1855
BorderStyle = bsDialog
Caption = 'Essay Item Specification'
ClientHeight = 479
ClientWidth = 658
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
HelpFile = 'ITEMBANKHELP.HLP'
OnShow = FormShow
PixelsPerInch = 96
object Label2: TLabel
Left = 16
Top = 8
Width = 63
Height = 13
Caption = 'Item Number:'
end
object Label1: TLabel
Left = 160
Top = 8
Width = 281
Height = 13
Caption = 'Click on the Item Classification Code listed in the box below.'
end
object Label14: TLabel
Left = 16
Top = 64
Width = 89
Height = 13
Caption = 'Bit Map File Name:'
end
object Label15: TLabel
Left = 16
Top = 88
Width = 72
Height = 13
Caption = 'Image (if used):'
end
object Label16: TLabel
Left = 120
Top = 80
Width = 97
Height = 13
Caption = '(Thumb Nail Sketch)'
end
object BMPImage: TImage
Left = 112
Top = 96
Width = 121
Height = 97
Center = True
Stretch = True
end
object Label18: TLabel
Left = 248
Top = 96
Width = 60
Height = 13
Caption = 'Item Weight:'
end
object Label3: TLabel
Left = 16
Top = 208
Width = 47
Height = 13
Caption = 'Item Stem'
end
object Label4: TLabel
Left = 16
Top = 328
Width = 92
Height = 13
Caption = 'Suggested Answer:'
end
object Label5: TLabel
Left = 600
Top = 8
Width = 39
Height = 13
Caption = 'Symbols'
end
object Label6: TLabel
Left = 584
Top = 24
Width = 68
Height = 13
Caption = 'Click to Select'
end
object ItemNoEdit: TEdit
Left = 104
Top = 0
Width = 41
Height = 21
TabOrder = 0
end
object ItemNoScroll: TScrollBar
Left = 16
Top = 28
Width = 129
Height = 16
Max = 1000
PageSize = 0
TabOrder = 1
OnScroll = ItemNoScrollScroll
end
object CodeCombo: TComboBox
Left = 160
Top = 24
Width = 417
Height = 21
ItemHeight = 13
TabOrder = 2
Text = 'Classification Code'
end
object BMPFileEdit: TEdit
Left = 112
Top = 56
Width = 465
Height = 21
TabOrder = 3
Text = 'BMPFileEdit'
end
object BrowseBtn: TButton
Left = 24
Top = 112
Width = 57
Height = 25
Caption = 'Browse'
TabOrder = 4
OnClick = BrowseBtnClick
end
object ClearBtn: TButton
Left = 24
Top = 144
Width = 57
Height = 25
Caption = 'Clear'
TabOrder = 5
OnClick = ClearBtnClick
end
object ItemWeightEdit: TEdit
Left = 312
Top = 96
Width = 33
Height = 21
TabOrder = 6
Text = 'ItemWeightEdit'
end
object Panel1: TPanel
Left = 408
Top = 80
Width = 169
Height = 137
TabOrder = 7
object Label9: TLabel
Left = 6
Top = 14
Width = 78
Height = 13
Caption = 'Percent Passed:'
end
object Label10: TLabel
Left = 6
Top = 38
Width = 97
Height = 13
Caption = 'Log Difficulty (IRT1):'
end
object Label11: TLabel
Left = 6
Top = 62
Width = 86
Height = 13
Caption = 'Item Slope (IRT2):'
end
object Label12: TLabel
Left = 6
Top = 86
Width = 96
Height = 13
Caption = 'Item Chance (IRT3):'
end
object Label13: TLabel
Left = 6
Top = 110
Width = 76
Height = 13
Caption = 'Times Selected:'
end
object PcntEdit: TEdit
Left = 110
Top = 6
Width = 41
Height = 21
TabOrder = 0
end
object IRT1Edit: TEdit
Left = 110
Top = 30
Width = 41
Height = 21
TabOrder = 1
end
object IRT2Edit: TEdit
Left = 110
Top = 54
Width = 41
Height = 21
TabOrder = 2
end
object IRT3Edit: TEdit
Left = 110
Top = 78
Width = 41
Height = 21
TabOrder = 3
end
object NoSelEdit: TEdit
Left = 110
Top = 102
Width = 41
Height = 21
TabOrder = 4
end
end
object StemMemo: TMemo
Left = 16
Top = 224
Width = 561
Height = 97
Font.Charset = GREEK_CHARSET
Font.Color = clWindowText
Font.Height = -16
Font.Name = 'Times New Roman'
Font.Style = []
MaxLength = 1000
ParentFont = False
ScrollBars = ssVertical
TabOrder = 8
WantTabs = True
WordWrap = False
OnEnter = StemMemoEnter
end
object NewBtn: TButton
Left = 16
Top = 443
Width = 73
Height = 25
Caption = 'New Item'
TabOrder = 9
OnClick = NewBtnClick
end
object SaveBtn: TButton
Left = 104
Top = 443
Width = 73
Height = 25
Caption = 'Save Item'
TabOrder = 10
OnClick = SaveBtnClick
end
object DeleteBtn: TButton
Left = 192
Top = 443
Width = 73
Height = 25
Caption = 'Delete'
TabOrder = 11
OnClick = DeleteBtnClick
end
object ReturnBtn: TButton
Left = 496
Top = 443
Width = 73
Height = 25
Caption = 'Return'
ModalResult = 1
TabOrder = 12
OnClick = ReturnBtnClick
end
object AnswerMemo: TMemo
Left = 16
Top = 344
Width = 553
Height = 89
Font.Charset = GREEK_CHARSET
Font.Color = clWindowText
Font.Height = -16
Font.Name = 'Times New Roman'
Font.Style = []
Lines.Strings = (
'')
MaxLength = 1000
ParentFont = False
TabOrder = 13
WantTabs = True
OnEnter = AnswerMemoEnter
end
object SymbolBox: TListBox
Left = 592
Top = 40
Width = 49
Height = 425
Font.Charset = GREEK_CHARSET
Font.Color = clWindowText
Font.Height = -16
Font.Name = 'Times New Roman'
Font.Style = []
ItemHeight = 19
ParentFont = False
TabOrder = 14
OnClick = SymbolBoxClick
end
object OpenPictureDialog1: TOpenPictureDialog
Left = 304
Top = 440
end
object OpenDialog1: TOpenDialog
Left = 344
Top = 440
end
end

View File

@ -0,0 +1,456 @@
unit ExactUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
ExtCtrls, StdCtrls, Buttons, MainUnit, OutPutUnit, FunctionsLib,
Globals, DataProcs, Math;
type
{ TFisherFrm }
TFisherFrm = class(TForm)
ResetBtn: TButton;
CancelBtn: TButton;
ComputeBtn: TButton;
ReturnBtn: TButton;
RC11Edit: TEdit;
RC12Edit: TEdit;
RC21Edit: TEdit;
RC22Edit: TEdit;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
NCasesEdit: TEdit;
NCasesLabel: TLabel;
Panel2: TPanel;
RowIn: TBitBtn;
RowOut: TBitBtn;
ColIn: TBitBtn;
ColOut: TBitBtn;
DepIn: TBitBtn;
DepOut: TBitBtn;
ColEdit: TEdit;
DepEdit: TEdit;
RowEdit: TEdit;
InputGrp: TRadioGroup;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
VarList: TListBox;
Panel1: TPanel;
procedure ColInClick(Sender: TObject);
procedure ColOutClick(Sender: TObject);
procedure ComputeBtnClick(Sender: TObject);
procedure DepInClick(Sender: TObject);
procedure DepOutClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure InputGrpClick(Sender: TObject);
procedure RC11EditKeyPress(Sender: TObject; var Key: char);
procedure RC12EditKeyPress(Sender: TObject; var Key: char);
procedure RC21EditKeyPress(Sender: TObject; var Key: char);
procedure RC22EditKeyPress(Sender: TObject; var Key: char);
procedure ResetBtnClick(Sender: TObject);
procedure RowInClick(Sender: TObject);
procedure RowOutClick(Sender: TObject);
private
{ private declarations }
procedure FisherTable(A, b, C, d : integer; p, SumP : double);
public
{ public declarations }
end;
var
FisherFrm: TFisherFrm;
implementation
{ TFisherFrm }
procedure TFisherFrm.ResetBtnClick(Sender: TObject);
VAR i : integer;
begin
VarList.Clear;
RowEdit.Text := '';
ColEdit.Text := '';
DepEdit.Text := '';
DepEdit.Visible := false;
RowIn.Visible := true;
RowOut.Visible := false;
ColIn.Visible := false;
ColOut.Visible := false;
DepIn.Visible := false;
DepOut.Visible := false;
NCasesLabel.Visible := false;
Label4.Visible := false;
NCasesEdit.Text := '';
NCasesEdit.Visible := false;
for i := 1 to NoVariables do
VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]);
Panel1.Visible := false;
Panel2.Visible := false;
RC11Edit.Text := '';
RC12Edit.Text := '';
RC21Edit.Text := '';
RC22Edit.Text := '';
end;
procedure TFisherFrm.RowInClick(Sender: TObject);
VAR index : integer;
begin
index := VarList.ItemIndex;
RowEdit.Text := VarList.Items.Strings[index];
VarList.Items.Delete(index);
RowIn.Visible := false;
RowOut.Visible := true;
end;
procedure TFisherFrm.RowOutClick(Sender: TObject);
begin
VarList.Items.Add(RowEdit.Text);
RowEdit.Text := '';
RowIn.Visible := true;
RowOut.Visible := false;
end;
procedure TFisherFrm.FormShow(Sender: TObject);
begin
ResetBtnClick(self);
end;
procedure TFisherFrm.ColInClick(Sender: TObject);
VAR index : integer;
begin
index := VarList.ItemIndex;
ColEdit.Text := VarList.Items.Strings[index];
VarList.Items.Delete(index);
ColIn.Visible := false;
ColOut.Visible := true;
end;
procedure TFisherFrm.ColOutClick(Sender: TObject);
begin
VarList.Items.Add(ColEdit.Text);
ColEdit.Text := '';
ColIn.Visible := true;
ColOut.Visible := false;
end;
procedure TFisherFrm.ComputeBtnClick(Sender: TObject);
var
i, j, row, col, caserow, casecol, A, b, C, d, Largest : integer;
N, APlusB, APlusC, BPlusD, CPlusD, NoSelected, dep : integer;
FirstP, p, SumProb, Tocher, Alpha, X : double;
obs : array[1..2,1..2] of integer;
ColNoSelected : IntDyneVec;
done : boolean;
cellstring, outline, response : string;
begin
Randomize; // initialize random number generator
row := 0;
col := 0;
dep := 0;
// get column no.s of row and col variables
if InputGrp.ItemIndex <> 3 then
begin
for i := 1 to NoVariables do
begin
cellstring := RowEdit.Text;
if cellstring = OS3MainFrm.DataGrid.Cells[i,0] then row := i;
cellstring := ColEdit.Text;
if cellstring = OS3MainFrm.DataGrid.Cells[i,0] then col := i;
if InputGrp.ItemIndex = 2 then
begin
cellstring := DepEdit.Text;
if cellstring = OS3MainFrm.DataGrid.Cells[i,0] then dep := i;
end;
end;
end;
SetLength(ColNoSelected,3);
ColNoSelected[0] := row;
ColNoSelected[1] := col;
if InputGrp.ItemIndex = 2 then
begin
ColNoSelected[2] := dep;
NoSelected := 3;
end
else NoSelected := 2;
//initialize observed matrix
for i := 1 to 2 do
for j := 1 to 2 do obs[i,j] := 0;
if InputGrp.ItemIndex = 3 then // get freq. from form
begin
obs[1,1] := StrToInt(RC11Edit.Text);
obs[1,2] := StrToInt(RC12Edit.Text);
obs[2,1] := StrToInt(RC21Edit.Text);
obs[2,2] := StrToInt(RC22Edit.Text);
end;
if InputGrp.ItemIndex = 0 then // count no. in row/col combinations
begin
for j := 1 to NoCases do
begin
if (not GoodRecord(j,NoSelected,ColNoSelected)) then continue;
caserow := round(StrToFloat(Trim(OS3MainFrm.DataGrid.Cells[row,j])));
casecol := round(StrToFloat(Trim(OS3MainFrm.DataGrid.Cells[col,j])));
if (caserow > 2) or (caserow < 1) then
begin
ShowMessage('ERROR! Row < 1 or > 2 found. Case ignored.');
continue;
end;
if (casecol > 2) or (casecol < 1) then
begin
ShowMessage('ERROR! Column < 1 or > 2 found. Case ignored.');
continue;
end;
obs[caserow,casecol] := obs[caserow,casecol] + 1;
end;
end;
if (InputGrp.ItemIndex = 1) or (InputGrp.ItemIndex = 2) then // Grid has frequencies for row/col
begin
for j := 1 to NoCases do
begin
if (not GoodRecord(j,NoSelected,ColNoSelected)) then continue;
caserow := round(StrToFloat(Trim(OS3MainFrm.DataGrid.Cells[row,j])));
casecol := round(StrToFloat(Trim(OS3MainFrm.DataGrid.Cells[col,j])));
if (caserow > 2) or (caserow < 1) then
begin
ShowMessage('ERROR! Row < 1 or > 2 found. Case ignored.');
continue;
end;
if (casecol > 2) or (casecol < 1) then
begin
ShowMessage('ERROR! Column < 1 or > 2 found. Case ignored.');
continue;
end;
obs[caserow,casecol] := round(StrToFloat(Trim(OS3MainFrm.DataGrid.Cells[dep,j])));
if InputGrp.ItemIndex = 2 then
obs[caserow,casecol] := obs[caserow,casecol] *
StrToInt(NCasesEdit.Text);
end;
end;
//Find smallest value
A := obs[1,1];
b := obs[1,2];
C := obs[2,1];
d := obs[2,2];
APlusB := A + b;
CPlusD := C + d;
BPlusD := b + d;
APlusC := A + C;
N := A + b + C + d;
Largest := 1;
if (b > A) then largest := 2;
if ((b > A) and (b > C) and (b > d)) then Largest := 2;
if ((C > A) and (C > b) and (C > d)) then Largest := 3;
if ((d > A) and (d > b) and (d > C)) then Largest := 4;
//Ready output
OutPutFrm.RichEdit.Clear;
SumProb := 0.0;
OutPutFrm.RichEdit.Lines.Add('Fisher Exact Probability Test');
OutPutFrm.RichEdit.Lines.Add('');
//Get first probability
FirstP := combos(A, APlusC) * combos(b, BPlusD) / combos(APlusB, N);
SumProb := SumProb + FirstP;
FisherTable(A, b, C, d, FirstP, SumProb);
//Get more extreme probabilities
done := false;
while (not done) do
begin
case Largest of
1: begin// top row, first col
if (A = APlusB) then done := true
else begin
A := A + 1;
b := b - 1;
C := C - 1;
d := d + 1;
end;
end;
2: begin// top row, second column
if (b = APlusB) then done := true
else begin
A := A - 1;
b := b + 1;
C := C + 1;
d := d - 1;
end;
end;
3: begin // second row, first column
if (C = CPlusD) then done := true
else begin
A := A - 1;
b := b + 1;
C := C + 1;
d := d - 1;
end;
end;
4: begin // second row, second column
if (d = CPlusD) then done := true
else begin
A := A + 1;
b := b - 1;
C := C - 1;
d := d + 1;
end;
end;
end; // end case
if (not done) then
begin
p := combos(A, APlusC) * combos(b, BPlusD) / combos(APlusB, N);
SumProb := SumProb + p;
FisherTable(A, b, C, d, p, SumProb);
end;
end;
//Tocher's modification
response :=
InputBox( 'ALPHA','Enter your Alpha (Type I Error rate) : ', '0.05');
Alpha := StrToFloat(response);
if ((SumProb - FirstP) > Alpha) then //Extreme values > alpha - accept null hypothesis
OutPutFrm.RichEdit.Lines.Add('Null hypothesis accepted.')
else begin//Extreme values significant - is total probability significant?
if (SumProb >= Alpha) then//No, so apply Tocher's rule
begin
Tocher := ( Alpha - (SumProb - FirstP)) / FirstP;
X := random(1000) / 1000.0; //Select a random value between 0 and num - 1
outline := format('Tocher ratio computed: %5.3f',[Tocher]);
OutPutFrm.RichEdit.Lines.Add(outline);
if (X < Tocher) then //Call it significant
begin
outline := format('A random value of %5.3f selected was less than the Tocher value.',[X]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add('Conclusion: Reject the null Hypothesis');
end
else begin //Call it non-significant
outline := format('A random value of %5.3f selected was greater than the Tocher value.',[X]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add('Conclusion: Accept the null Hypothesis');
end;
end
else begin //Total probability < alpha - reject null
OutPutFrm.RichEdit.Lines.Add('Probability less than alpha - reject null hypothesis.');
end; // end if-else
end; // end if-else
OutPutFrm.ShowModal;
end;
procedure TFisherFrm.DepInClick(Sender: TObject);
VAR index : integer;
begin
index := VarList.ItemIndex;
DepEdit.Text := VarList.Items.Strings[index];
VarList.Items.Delete(index);
DepIn.Visible := false;
DepOut.Visible := true;
end;
procedure TFisherFrm.DepOutClick(Sender: TObject);
begin
VarList.Items.Add(DepEdit.Text);
DepEdit.Text := '';
DepIn.Visible := true;
DepOut.Visible := false;
end;
procedure TFisherFrm.InputGrpClick(Sender: TObject);
begin
if InputGrp.ItemIndex = 3 then
begin
Panel2.Visible := true;
Panel1.Visible := false;
RC11Edit.SetFocus;
Label4.Visible := false;
ColIn.Visible := false;
DepIn.Visible := false;
DepOut.Visible := false;
end
else
begin
Panel1.Visible := true;
Panel2.Visible := false;
ColIn.Visible := true;
ColOut.Visible := false;
if InputGrp.ItemIndex = 2 then
begin
NCasesLabel.Visible := true;
NCasesEdit.Visible := true;
end
else begin
NCasesLabel.Visible := false;
NCasesEdit.Visible := false;
end;
if InputGrp.ItemIndex = 0 then
begin
Label4.Visible := false;
DepEdit.Visible := false;
DepIn.Visible := false;
DepOut.Visible := false;
end
else begin // InputGrp = 1
Label4.Visible := true;
DepEdit.Visible := true;
DepIn.Visible := true;
DepOut.Visible := true;
end;
end;
end;
procedure TFisherFrm.RC11EditKeyPress(Sender: TObject; var Key: char);
begin
if Ord(Key) = 13 then RC12Edit.SetFocus;
end;
procedure TFisherFrm.RC12EditKeyPress(Sender: TObject; var Key: char);
begin
if Ord(Key) = 13 then RC21Edit.SetFocus;
end;
procedure TFisherFrm.RC21EditKeyPress(Sender: TObject; var Key: char);
begin
if Ord(Key) = 13 then RC22Edit.SetFocus;
end;
procedure TFisherFrm.RC22EditKeyPress(Sender: TObject; var Key: char);
begin
if Ord(Key) = 13 then ComputeBtn.SetFocus;
end;
procedure TFisherFrm.FisherTable(A, b, C, d : integer; p, SumP : double);
var
outline : string;
begin
OutPutFrm.RichEdit.Lines.Add('');
OutPutFrm.RichEdit.Lines.Add('Contingency Table for Fisher Exact Test');
OutPutFrm.RichEdit.Lines.Add(' Column');
OutPutFrm.RichEdit.Lines.Add('Row 1 2');
outline := format(' 1 %10d %10d',[A, b]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format(' 2 %10d %10d',[C, d]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Probability := %6.4f',[p]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add('');
outline := format('Cumulative Probability := %6.4f',[SumP]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add('');
end;
initialization
{$I exactunit.lrs}
end.

View File

@ -0,0 +1,508 @@
object FisherFrm: TFisherFrm
Left = 171
Height = 407
Top = 104
Width = 553
Caption = 'Fisher''s Exact Test for a 2 by 2 Table'
ClientHeight = 407
ClientWidth = 553
OnShow = FormShow
LCLVersion = '0.9.26.2'
object InputGrp: TRadioGroup
Left = 6
Height = 95
Top = 1
Width = 366
AutoFill = True
Caption = 'Input Options'
ChildSizing.LeftRightSpacing = 6
ChildSizing.TopBottomSpacing = 6
ChildSizing.EnlargeHorizontal = crsHomogenousChildResize
ChildSizing.EnlargeVertical = crsHomogenousChildResize
ChildSizing.ShrinkHorizontal = crsScaleChilds
ChildSizing.ShrinkVertical = crsScaleChilds
ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 1
ClientHeight = 77
ClientWidth = 362
Items.Strings = (
'Count cases classified by row and column vectors in the data grid.'
'Use frequencies recorded in the data grid for row and column variables.'
'Use proportions recorded in the data grid for row and column variables.'
'Enter frequencies on this form.'
)
OnClick = InputGrpClick
TabOrder = 0
end
object Panel1: TPanel
Left = 6
Height = 293
Top = 103
Width = 368
ClientHeight = 293
ClientWidth = 368
TabOrder = 1
object Label1: TLabel
Left = 8
Height = 14
Top = 7
Width = 90
Caption = 'Variables Available'
ParentColor = False
end
object Label2: TLabel
Left = 208
Height = 14
Top = 23
Width = 63
Caption = 'Row Variable'
ParentColor = False
end
object Label3: TLabel
Left = 207
Height = 14
Top = 103
Width = 77
Caption = 'Column Variable'
ParentColor = False
end
object Label4: TLabel
Left = 207
Height = 14
Top = 183
Width = 93
Caption = 'Variable to Analyze'
ParentColor = False
end
object NCasesLabel: TLabel
Left = 8
Height = 14
Top = 265
Width = 94
Caption = 'Total No. of Cases:'
ParentColor = False
end
object VarList: TListBox
Left = 6
Height = 226
Top = 24
Width = 153
TabOrder = 0
end
object RowIn: TBitBtn
Left = 170
Height = 26
Top = 25
Width = 29
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE
6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580
3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3
71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7
74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7
74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = RowInClick
TabOrder = 1
end
object RowEdit: TEdit
Left = 208
Height = 16
Top = 40
Width = 136
TabOrder = 2
Text = 'RowEdit'
end
object ColEdit: TEdit
Left = 207
Height = 17
Top = 120
Width = 138
TabOrder = 3
Text = 'ColEdit'
end
object DepEdit: TEdit
Left = 207
Height = 17
Top = 199
Width = 138
TabOrder = 4
Text = 'DepEdit'
end
object NCasesEdit: TEdit
Left = 111
Height = 18
Top = 261
Width = 49
TabOrder = 5
Text = 'NCasesEdit'
end
end
object RowOut: TBitBtn
Left = 176
Height = 26
Top = 160
Width = 29
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = RowOutClick
TabOrder = 2
end
object ColIn: TBitBtn
Left = 176
Height = 26
Top = 208
Width = 29
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE
6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580
3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3
71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7
74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7
74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = ColInClick
TabOrder = 3
end
object ColOut: TBitBtn
Left = 176
Height = 26
Top = 240
Width = 29
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = ColOutClick
TabOrder = 4
end
object DepIn: TBitBtn
Left = 176
Height = 26
Top = 288
Width = 29
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE
6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580
3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3
71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7
74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7
74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = DepInClick
TabOrder = 5
end
object DepOut: TBitBtn
Left = 176
Height = 26
Top = 320
Width = 29
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = DepOutClick
TabOrder = 6
end
object Panel2: TPanel
Left = 384
Height = 88
Top = 8
Width = 158
ClientHeight = 88
ClientWidth = 158
TabOrder = 7
object Label6: TLabel
Left = 7
Height = 14
Top = 27
Width = 31
Caption = 'Row 1'
ParentColor = False
end
object Label7: TLabel
Left = 7
Height = 14
Top = 59
Width = 31
Caption = 'Row 2'
ParentColor = False
end
object Label8: TLabel
Left = 40
Height = 14
Top = 9
Width = 29
Caption = 'Col. 1'
ParentColor = False
end
object Label9: TLabel
Left = 88
Height = 14
Top = 9
Width = 29
Caption = 'Col. 2'
ParentColor = False
end
object RC11Edit: TEdit
Left = 40
Height = 21
Top = 24
Width = 38
OnKeyPress = RC11EditKeyPress
TabOrder = 0
Text = 'RC11Edit'
end
object RC12Edit: TEdit
Left = 87
Height = 20
Top = 24
Width = 43
OnKeyPress = RC12EditKeyPress
TabOrder = 1
Text = 'RC12Edit'
end
object RC21Edit: TEdit
Left = 40
Height = 18
Top = 55
Width = 36
OnKeyPress = RC21EditKeyPress
TabOrder = 2
Text = 'RC21Edit'
end
object RC22Edit: TEdit
Left = 88
Height = 16
Top = 54
Width = 42
OnKeyPress = RC22EditKeyPress
TabOrder = 3
Text = 'RC22Edit'
end
end
object ResetBtn: TButton
Left = 424
Height = 29
Top = 112
Width = 83
Caption = 'Reset'
OnClick = ResetBtnClick
TabOrder = 8
end
object CancelBtn: TButton
Left = 424
Height = 29
Top = 176
Width = 83
Caption = 'Cancel'
ModalResult = 2
TabOrder = 9
end
object ComputeBtn: TButton
Left = 424
Height = 29
Top = 240
Width = 83
Caption = 'Compute'
OnClick = ComputeBtnClick
TabOrder = 10
end
object ReturnBtn: TButton
Left = 424
Height = 29
Top = 296
Width = 83
Caption = 'Return'
ModalResult = 1
TabOrder = 11
end
end

View File

@ -0,0 +1,372 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TFisherFrm','FORMDATA',[
'TPF0'#10'TFisherFrm'#9'FisherFrm'#4'Left'#3#171#0#6'Height'#3#151#1#3'Top'#2
+'h'#5'Width'#3')'#2#7'Caption'#6'&Fisher''s Exact Test for a 2 by 2 Table'#12
+'ClientHeight'#3#151#1#11'ClientWidth'#3')'#2#6'OnShow'#7#8'FormShow'#10'LCL'
+'Version'#6#8'0.9.26.2'#0#11'TRadioGroup'#8'InputGrp'#4'Left'#2#6#6'Height'#2
+'_'#3'Top'#2#1#5'Width'#3'n'#1#8'AutoFill'#9#7'Caption'#6#13'Input Options'
+#28'ChildSizing.LeftRightSpacing'#2#6#28'ChildSizing.TopBottomSpacing'#2#6#29
+'ChildSizing.EnlargeHorizontal'#7#24'crsHomogenousChildResize'#27'ChildSizin'
+'g.EnlargeVertical'#7#24'crsHomogenousChildResize'#28'ChildSizing.ShrinkHori'
+'zontal'#7#14'crsScaleChilds'#26'ChildSizing.ShrinkVertical'#7#14'crsScaleCh'
+'ilds'#18'ChildSizing.Layout'#7#29'cclLeftToRightThenTopToBottom'#27'ChildSi'
+'zing.ControlsPerLine'#2#1#12'ClientHeight'#2'M'#11'ClientWidth'#3'j'#1#13'I'
+'tems.Strings'#1#6'BCount cases classified by row and column vectors in the '
+'data grid.'#6'GUse frequencies recorded in the data grid for row and column'
+' variables.'#6'GUse proportions recorded in the data grid for row and colum'
+'n variables.'#6#31'Enter frequencies on this form.'#0#7'OnClick'#7#13'Input'
+'GrpClick'#8'TabOrder'#2#0#0#0#6'TPanel'#6'Panel1'#4'Left'#2#6#6'Height'#3'%'
+#1#3'Top'#2'g'#5'Width'#3'p'#1#12'ClientHeight'#3'%'#1#11'ClientWidth'#3'p'#1
+#8'TabOrder'#2#1#0#6'TLabel'#6'Label1'#4'Left'#2#8#6'Height'#2#14#3'Top'#2#7
+#5'Width'#2'Z'#7'Caption'#6#19'Variables Available'#11'ParentColor'#8#0#0#6
+'TLabel'#6'Label2'#4'Left'#3#208#0#6'Height'#2#14#3'Top'#2#23#5'Width'#2'?'#7
+'Caption'#6#12'Row Variable'#11'ParentColor'#8#0#0#6'TLabel'#6'Label3'#4'Lef'
+'t'#3#207#0#6'Height'#2#14#3'Top'#2'g'#5'Width'#2'M'#7'Caption'#6#15'Column '
+'Variable'#11'ParentColor'#8#0#0#6'TLabel'#6'Label4'#4'Left'#3#207#0#6'Heigh'
+'t'#2#14#3'Top'#3#183#0#5'Width'#2']'#7'Caption'#6#19'Variable to Analyze'#11
+'ParentColor'#8#0#0#6'TLabel'#11'NCasesLabel'#4'Left'#2#8#6'Height'#2#14#3'T'
+'op'#3#9#1#5'Width'#2'^'#7'Caption'#6#19'Total No. of Cases:'#11'ParentColor'
+#8#0#0#8'TListBox'#7'VarList'#4'Left'#2#6#6'Height'#3#226#0#3'Top'#2#24#5'Wi'
+'dth'#3#153#0#8'TabOrder'#2#0#0#0#7'TBitBtn'#5'RowIn'#4'Left'#3#170#0#6'Heig'
+'ht'#2#26#3'Top'#2#25#5'Width'#2#29#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'
+#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0
+'d'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'!c$'#184#29'^ '#6#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0'*p/8%i)'#247'!c$'#217#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'
+#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'?'#136'E'
+#255'Y'#161'^'#255'D'#139'I'#255'!c$'#207#255#255#255#0#255#255#255#0#255#255
+#255#0'e'#195'q'#255#160#215#169#255#156#213#165#255#152#211#161#255#148#208
+#157#255#144#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'
+#195#132#255'z'#193#128#255'v'#190'|'#255'E'#140'J'#255'!c$'#196#255#255#255
+#0#255#255#255#0'h'#199't'#255#165#218#174#255#162#216#171#255#158#214#167
+#255#154#212#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202
+#144#255#133#199#139#255#129#197#135#255'}'#194#130#255'J'#145'P'#255'%i)'
+#201#255#255#255#0#255#255#255#0'h'#199't'#255'h'#199't'#255'e'#195'q'#255'a'
+#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'
+#255'A'#145'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'#209#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0'A'#145'I'#247';'#136'B'#219#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
,#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0'G'#153'O'#187'A'#145'I'#6#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#9'NumGlyphs'#2#0#7'OnClick'#7#10'RowInClick'#8'TabOrder'#2#1#0#0#5'TEdit'#7
+'RowEdit'#4'Left'#3#208#0#6'Height'#2#16#3'Top'#2'('#5'Width'#3#136#0#8'TabO'
+'rder'#2#2#4'Text'#6#7'RowEdit'#0#0#5'TEdit'#7'ColEdit'#4'Left'#3#207#0#6'He'
+'ight'#2#17#3'Top'#2'x'#5'Width'#3#138#0#8'TabOrder'#2#3#4'Text'#6#7'ColEdit'
+#0#0#5'TEdit'#7'DepEdit'#4'Left'#3#207#0#6'Height'#2#17#3'Top'#3#199#0#5'Wid'
+'th'#3#138#0#8'TabOrder'#2#4#4'Text'#6#7'DepEdit'#0#0#5'TEdit'#10'NCasesEdit'
+#4'Left'#2'o'#6'Height'#2#18#3'Top'#3#5#1#5'Width'#2'1'#8'TabOrder'#2#5#4'Te'
+'xt'#6#10'NCasesEdit'#0#0#0#7'TBitBtn'#6'RowOut'#4'Left'#3#176#0#6'Height'#2
+#26#3'Top'#3#160#0#5'Width'#2#29#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0
+#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0
+#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'M'#161
+'V'#6'G'#153'O'#184#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'S'#169'\'
+#217'M'#161'V'#247'G'#153'O8'#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0']'#184'h'#207'q'#190'{'#255
+'z'#193#131#255'['#170'd'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'
+#128';'#255'/x5'#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255#255#255#255#0#255
+#255#255#0'e'#195'q'#196'{'#200#134#255#156#213#165#255#152#211#161#255#148
+#208#157#255#144#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255
+'~'#195#132#255'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!c$'#255#255#255
+#255#0#255#255#255#0'h'#199't'#201''#204#138#255#162#216#171#255#158#214#167
+#255#154#212#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202
+#144#255#133#199#139#255#129#197#135#255'}'#194#130#255'x'#192'~'#255'%i)'
+#255#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#209#128#205#139#255
+'|'#201#135#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'
+#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#219'e'#195'q'
+#247#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#6'h'#199't'
+#187#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
,#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#11'RowOutClick'#8'TabOrder'#2#2#0#0
+#7'TBitBtn'#5'ColIn'#4'Left'#3#176#0#6'Height'#2#26#3'Top'#3#208#0#5'Width'#2
+#29#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0
+#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0'!c$'#184#29'^ '#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'*p/8%i)'#247'!c$'
+#217#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'a'#190'm'#255']'
+#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'
+#255';'#136'B'#255'5'#128';'#255'?'#136'E'#255'Y'#161'^'#255'D'#139'I'#255'!'
+'c$'#207#255#255#255#0#255#255#255#0#255#255#255#0'e'#195'q'#255#160#215#169
+#255#156#213#165#255#152#211#161#255#148#208#157#255#144#206#152#255#139#203
+#147#255#135#201#142#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190
+'|'#255'E'#140'J'#255'!c$'#196#255#255#255#0#255#255#255#0'h'#199't'#255#165
+#218#174#255#162#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255
+#147#207#154#255#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135
+#255'}'#194#130#255'J'#145'P'#255'%i)'#201#255#255#255#0#255#255#255#0'h'#199
+'t'#255'h'#199't'#255'e'#195'q'#255'a'#190'm'#255']'#184'h'#255'X'#177'b'#255
+'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255'Z'#163'b'#255'U'#157
+'\'#255'/x5'#209#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0'A'#145'I'#247';'#136'B'#219
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0'G'#153'O'#187'A'#145'I'#6
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#10
+'ColInClick'#8'TabOrder'#2#3#0#0#7'TBitBtn'#6'ColOut'#4'Left'#3#176#0#6'Heig'
+'ht'#2#26#3'Top'#3#240#0#5'Width'#2#29#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'B'
+'M6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0
+#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255
,#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+'M'#161'V'#6'G'#153'O'#184#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'S'#169
+'\'#217'M'#161'V'#247'G'#153'O8'#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0']'#184'h'#207'q'#190'{'
+#255'z'#193#131#255'['#170'd'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255
+'5'#128';'#255'/x5'#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255#255#255#255#0
+#255#255#255#0'e'#195'q'#196'{'#200#134#255#156#213#165#255#152#211#161#255
+#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142#255#130#198#137
+#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!c$'#255#255
+#255#255#0#255#255#255#0'h'#199't'#201''#204#138#255#162#216#171#255#158#214
+#167#255#154#212#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137
+#202#144#255#133#199#139#255#129#197#135#255'}'#194#130#255'x'#192'~'#255'%i'
+')'#255#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#209#128#205#139
+#255'|'#201#135#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255
+'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#219'e'#195
+'q'#247#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#6'h'#199't'
+#187#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#11'ColOutClick'#8'TabOrder'#2#4#0#0
+#7'TBitBtn'#5'DepIn'#4'Left'#3#176#0#6'Height'#2#26#3'Top'#3' '#1#5'Width'#2
+#29#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0
+#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
,#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0'!c$'#184#29'^ '#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'*p/8%i)'#247'!c$'
+#217#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'a'#190'm'#255']'
+#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'
+#255';'#136'B'#255'5'#128';'#255'?'#136'E'#255'Y'#161'^'#255'D'#139'I'#255'!'
+'c$'#207#255#255#255#0#255#255#255#0#255#255#255#0'e'#195'q'#255#160#215#169
+#255#156#213#165#255#152#211#161#255#148#208#157#255#144#206#152#255#139#203
+#147#255#135#201#142#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190
+'|'#255'E'#140'J'#255'!c$'#196#255#255#255#0#255#255#255#0'h'#199't'#255#165
+#218#174#255#162#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255
+#147#207#154#255#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135
+#255'}'#194#130#255'J'#145'P'#255'%i)'#201#255#255#255#0#255#255#255#0'h'#199
+'t'#255'h'#199't'#255'e'#195'q'#255'a'#190'm'#255']'#184'h'#255'X'#177'b'#255
+'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255'Z'#163'b'#255'U'#157
+'\'#255'/x5'#209#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0'A'#145'I'#247';'#136'B'#219
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0'G'#153'O'#187'A'#145'I'#6
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#10
+'DepInClick'#8'TabOrder'#2#5#0#0#7'TBitBtn'#6'DepOut'#4'Left'#3#176#0#6'Heig'
+'ht'#2#26#3'Top'#3'@'#1#5'Width'#2#29#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM'
+'6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0
+#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+'M'#161'V'#6'G'#153'O'#184#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'S'#169
+'\'#217'M'#161'V'#247'G'#153'O8'#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0']'#184'h'#207'q'#190'{'
+#255'z'#193#131#255'['#170'd'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255
+'5'#128';'#255'/x5'#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255#255#255#255#0
+#255#255#255#0'e'#195'q'#196'{'#200#134#255#156#213#165#255#152#211#161#255
+#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142#255#130#198#137
+#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!c$'#255#255
+#255#255#0#255#255#255#0'h'#199't'#201''#204#138#255#162#216#171#255#158#214
+#167#255#154#212#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137
,#202#144#255#133#199#139#255#129#197#135#255'}'#194#130#255'x'#192'~'#255'%i'
+')'#255#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#209#128#205#139
+#255'|'#201#135#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255
+'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#219'e'#195
+'q'#247#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#6'h'#199't'
+#187#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#11'DepOutClick'#8'TabOrder'#2#6#0#0
+#6'TPanel'#6'Panel2'#4'Left'#3#128#1#6'Height'#2'X'#3'Top'#2#8#5'Width'#3#158
+#0#12'ClientHeight'#2'X'#11'ClientWidth'#3#158#0#8'TabOrder'#2#7#0#6'TLabel'
+#6'Label6'#4'Left'#2#7#6'Height'#2#14#3'Top'#2#27#5'Width'#2#31#7'Caption'#6
+#5'Row 1'#11'ParentColor'#8#0#0#6'TLabel'#6'Label7'#4'Left'#2#7#6'Height'#2
+#14#3'Top'#2';'#5'Width'#2#31#7'Caption'#6#5'Row 2'#11'ParentColor'#8#0#0#6
+'TLabel'#6'Label8'#4'Left'#2'('#6'Height'#2#14#3'Top'#2#9#5'Width'#2#29#7'Ca'
+'ption'#6#6'Col. 1'#11'ParentColor'#8#0#0#6'TLabel'#6'Label9'#4'Left'#2'X'#6
+'Height'#2#14#3'Top'#2#9#5'Width'#2#29#7'Caption'#6#6'Col. 2'#11'ParentColor'
+#8#0#0#5'TEdit'#8'RC11Edit'#4'Left'#2'('#6'Height'#2#21#3'Top'#2#24#5'Width'
+#2'&'#10'OnKeyPress'#7#16'RC11EditKeyPress'#8'TabOrder'#2#0#4'Text'#6#8'RC11'
+'Edit'#0#0#5'TEdit'#8'RC12Edit'#4'Left'#2'W'#6'Height'#2#20#3'Top'#2#24#5'Wi'
+'dth'#2'+'#10'OnKeyPress'#7#16'RC12EditKeyPress'#8'TabOrder'#2#1#4'Text'#6#8
+'RC12Edit'#0#0#5'TEdit'#8'RC21Edit'#4'Left'#2'('#6'Height'#2#18#3'Top'#2'7'#5
+'Width'#2'$'#10'OnKeyPress'#7#16'RC21EditKeyPress'#8'TabOrder'#2#2#4'Text'#6
+#8'RC21Edit'#0#0#5'TEdit'#8'RC22Edit'#4'Left'#2'X'#6'Height'#2#16#3'Top'#2'6'
+#5'Width'#2'*'#10'OnKeyPress'#7#16'RC22EditKeyPress'#8'TabOrder'#2#3#4'Text'
+#6#8'RC22Edit'#0#0#0#7'TButton'#8'ResetBtn'#4'Left'#3#168#1#6'Height'#2#29#3
+'Top'#2'p'#5'Width'#2'S'#7'Caption'#6#5'Reset'#7'OnClick'#7#13'ResetBtnClick'
+#8'TabOrder'#2#8#0#0#7'TButton'#9'CancelBtn'#4'Left'#3#168#1#6'Height'#2#29#3
+'Top'#3#176#0#5'Width'#2'S'#7'Caption'#6#6'Cancel'#11'ModalResult'#2#2#8'Tab'
+'Order'#2#9#0#0#7'TButton'#10'ComputeBtn'#4'Left'#3#168#1#6'Height'#2#29#3'T'
+'op'#3#240#0#5'Width'#2'S'#7'Caption'#6#7'Compute'#7'OnClick'#7#15'ComputeBt'
+'nClick'#8'TabOrder'#2#10#0#0#7'TButton'#9'ReturnBtn'#4'Left'#3#168#1#6'Heig'
+'ht'#2#29#3'Top'#3'('#1#5'Width'#2'S'#7'Caption'#6#6'Return'#11'ModalResult'
+#2#1#8'TabOrder'#2#11#0#0#0
]);

View File

@ -0,0 +1,56 @@
unit ExpSmoothUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls;
type
{ TExpSmoothFrm }
TExpSmoothFrm = class(TForm)
AlphaEdit: TEdit;
CancelBtn: TButton;
OKBtn: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
AlphaScroll: TScrollBar;
procedure AlphaScrollChange(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
alpha : double;
end;
var
ExpSmoothFrm: TExpSmoothFrm;
implementation
{ TExpSmoothFrm }
procedure TExpSmoothFrm.FormShow(Sender: TObject);
begin
AlphaEdit.Text := '0.99';
AlphaScroll.Position := 99;
alpha := 0.99;
end;
procedure TExpSmoothFrm.AlphaScrollChange(Sender: TObject);
begin
AlphaEdit.Text := FloatToStr(AlphaScroll.Position / 100.0);
alpha := AlphaScroll.Position / 100.0;
end;
initialization
{$I expsmoothunit.lrs}
end.

View File

@ -0,0 +1,72 @@
object ExpSmoothFrm: TExpSmoothFrm
Left = 208
Height = 166
Top = 135
Width = 273
Caption = 'Exponential Smoothing Form'
ClientHeight = 166
ClientWidth = 273
OnShow = FormShow
LCLVersion = '0.9.28.2'
object Label1: TLabel
Left = 8
Height = 14
Top = 24
Width = 42
Caption = 'Alpha = '
ParentColor = False
end
object Label2: TLabel
Left = 8
Height = 14
Top = 80
Width = 17
Caption = '0.0'
ParentColor = False
end
object Label3: TLabel
Left = 240
Height = 14
Top = 80
Width = 17
Caption = '1.0'
ParentColor = False
end
object AlphaEdit: TEdit
Left = 64
Height = 21
Top = 17
Width = 44
TabOrder = 0
Text = '0.99'
end
object AlphaScroll: TScrollBar
Left = 8
Height = 23
Top = 48
Width = 253
Max = 1
PageSize = 0
Position = 1
TabOrder = 1
OnChange = AlphaScrollChange
end
object CancelBtn: TButton
Left = 8
Height = 28
Top = 112
Width = 75
Caption = 'Cancel'
ModalResult = 2
TabOrder = 2
end
object OKBtn: TButton
Left = 184
Height = 28
Top = 112
Width = 75
Caption = 'OK'
ModalResult = 1
TabOrder = 3
end
end

View File

@ -0,0 +1,20 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TExpSmoothFrm','FORMDATA',[
'TPF0'#13'TExpSmoothFrm'#12'ExpSmoothFrm'#4'Left'#3#208#0#6'Height'#3#166#0#3
+'Top'#3#135#0#5'Width'#3#17#1#7'Caption'#6#26'Exponential Smoothing Form'#12
+'ClientHeight'#3#166#0#11'ClientWidth'#3#17#1#6'OnShow'#7#8'FormShow'#10'LCL'
+'Version'#6#8'0.9.28.2'#0#6'TLabel'#6'Label1'#4'Left'#2#8#6'Height'#2#14#3'T'
+'op'#2#24#5'Width'#2'*'#7'Caption'#6#8'Alpha = '#11'ParentColor'#8#0#0#6'TLa'
+'bel'#6'Label2'#4'Left'#2#8#6'Height'#2#14#3'Top'#2'P'#5'Width'#2#17#7'Capti'
+'on'#6#3'0.0'#11'ParentColor'#8#0#0#6'TLabel'#6'Label3'#4'Left'#3#240#0#6'He'
+'ight'#2#14#3'Top'#2'P'#5'Width'#2#17#7'Caption'#6#3'1.0'#11'ParentColor'#8#0
+#0#5'TEdit'#9'AlphaEdit'#4'Left'#2'@'#6'Height'#2#21#3'Top'#2#17#5'Width'#2
+','#8'TabOrder'#2#0#4'Text'#6#4'0.99'#0#0#10'TScrollBar'#11'AlphaScroll'#4'L'
+'eft'#2#8#6'Height'#2#23#3'Top'#2'0'#5'Width'#3#253#0#3'Max'#2#1#8'PageSize'
+#2#0#8'Position'#2#1#8'TabOrder'#2#1#8'OnChange'#7#17'AlphaScrollChange'#0#0
+#7'TButton'#9'CancelBtn'#4'Left'#2#8#6'Height'#2#28#3'Top'#2'p'#5'Width'#2'K'
+#7'Caption'#6#6'Cancel'#11'ModalResult'#2#2#8'TabOrder'#2#2#0#0#7'TButton'#5
+'OKBtn'#4'Left'#3#184#0#6'Height'#2#28#3'Top'#2'p'#5'Width'#2'K'#7'Caption'#6
+#2'OK'#11'ModalResult'#2#1#8'TabOrder'#2#3#0#0#0
]);

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,379 @@
object FactorFrm: TFactorFrm
Left = 181
Height = 486
Top = 99
Width = 608
Caption = 'Factor Analysis'
ClientHeight = 486
ClientWidth = 608
OnShow = FormShow
LCLVersion = '0.9.28.2'
object Label1: TLabel
Left = 6
Height = 14
Top = 1
Width = 90
Caption = 'Available Variables'
ParentColor = False
end
object Label2: TLabel
Left = 227
Height = 14
Top = 1
Width = 88
Caption = 'Selected Variables'
ParentColor = False
end
object Label3: TLabel
Left = 415
Height = 14
Top = 328
Width = 115
Caption = 'Min. root size to rotate:'
ParentColor = False
end
object Label4: TLabel
Left = 415
Height = 14
Top = 358
Width = 99
Caption = 'Maximum Iterations:'
ParentColor = False
end
object Label5: TLabel
Left = 414
Height = 14
Top = 391
Width = 108
Caption = 'Maximum No. Factors:'
ParentColor = False
end
object VarList: TListBox
Left = 7
Height = 295
Top = 15
Width = 169
ItemHeight = 0
MultiSelect = True
TabOrder = 0
end
object InBtn: TBitBtn
Left = 183
Height = 35
Top = 16
Width = 36
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE
6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580
3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3
71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7
74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7
74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = InBtnClick
TabOrder = 1
end
object OutBtn: TBitBtn
Left = 184
Height = 35
Top = 56
Width = 36
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = OutBtnClick
TabOrder = 2
end
object FactorList: TListBox
Left = 225
Height = 292
Top = 16
Width = 173
ItemHeight = 0
TabOrder = 3
end
object TypeGroup: TRadioGroup
Left = 416
Height = 156
Top = 4
Width = 187
AutoFill = True
Caption = 'Type of Analysis'
ChildSizing.LeftRightSpacing = 6
ChildSizing.TopBottomSpacing = 6
ChildSizing.EnlargeHorizontal = crsHomogenousChildResize
ChildSizing.EnlargeVertical = crsHomogenousChildResize
ChildSizing.ShrinkHorizontal = crsScaleChilds
ChildSizing.ShrinkVertical = crsScaleChilds
ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 1
ClientHeight = 138
ClientWidth = 183
Items.Strings = (
'Principal Components'
'Partial Image (No Iterations)'
'Guttman Image'
'Harris Scaled Image'
'Canonical (Max. Likelihood)'
'Alpha'
'Principal Factors'
)
TabOrder = 4
end
object RotateGroup: TRadioGroup
Left = 415
Height = 133
Top = 176
Width = 187
AutoFill = True
Caption = 'Rotation Option'
ChildSizing.LeftRightSpacing = 6
ChildSizing.TopBottomSpacing = 6
ChildSizing.EnlargeHorizontal = crsHomogenousChildResize
ChildSizing.EnlargeVertical = crsHomogenousChildResize
ChildSizing.ShrinkHorizontal = crsScaleChilds
ChildSizing.ShrinkVertical = crsScaleChilds
ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 1
ClientHeight = 115
ClientWidth = 183
Items.Strings = (
'Varimax'
'Oblimax'
'Quartimax'
'Manual (Graphical)'
'Procrustian'
'NO rotation'
)
TabOrder = 5
end
object GroupBox1: TGroupBox
Left = 6
Height = 110
Top = 320
Width = 393
Caption = 'Output Options:'
ClientHeight = 92
ClientWidth = 389
TabOrder = 6
object DescBtn: TCheckBox
Left = 6
Height = 17
Top = 2
Width = 119
Caption = 'Descriptive Statistics'
TabOrder = 0
end
object RMatBtn: TCheckBox
Left = 6
Height = 17
Top = 24
Width = 106
Caption = 'Correlation Matrix'
TabOrder = 1
end
object UnrotBtn: TCheckBox
Left = 5
Height = 17
Top = 46
Width = 108
Caption = 'Unrotated Factors'
TabOrder = 2
end
object PcntTrBtn: TCheckBox
Left = 6
Height = 17
Top = 67
Width = 87
Caption = 'Percent Trace'
TabOrder = 3
end
object ScreeBtn: TCheckBox
Left = 137
Height = 17
Top = 2
Width = 68
Caption = 'Scree Plot'
TabOrder = 4
end
object ComUnBtn: TCheckBox
Left = 136
Height = 17
Top = 24
Width = 88
Caption = 'Communalities'
TabOrder = 5
end
object PlotBtn: TCheckBox
Left = 137
Height = 17
Top = 46
Width = 77
Caption = 'Plot Factors'
TabOrder = 6
end
object ScoresBtn: TCheckBox
Left = 137
Height = 17
Top = 67
Width = 86
Caption = 'Factor Scores'
TabOrder = 7
end
object SaveCorsBtn: TCheckBox
Left = 248
Height = 17
Top = 2
Width = 133
Caption = 'Save Correlation Matrix'
TabOrder = 8
end
object SaveFactBtn: TCheckBox
Left = 248
Height = 17
Top = 24
Width = 111
Caption = 'Save Factor Matrix'
TabOrder = 9
end
object SortBtn: TCheckBox
Left = 248
Height = 17
Top = 46
Width = 79
Caption = 'Sort Factors'
TabOrder = 10
end
end
object MinRootEdit: TEdit
Left = 568
Height = 21
Top = 323
Width = 32
TabOrder = 7
Text = 'MinRootEdit'
end
object MaxItersEdit: TEdit
Left = 568
Height = 21
Top = 353
Width = 32
TabOrder = 8
Text = 'Edit1'
end
object MaxFactorsEdit: TEdit
Left = 568
Height = 21
Top = 386
Width = 32
TabOrder = 9
Text = 'Edit1'
end
object ResetBtn: TButton
Left = 7
Height = 30
Top = 440
Width = 74
Caption = 'Reset'
OnClick = ResetBtnClick
TabOrder = 10
end
object CancelBtn: TButton
Left = 102
Height = 30
Top = 440
Width = 74
Caption = 'Cancel'
ModalResult = 2
TabOrder = 11
end
object ComputeBtn: TButton
Left = 224
Height = 30
Top = 440
Width = 74
Caption = 'Compute'
OnClick = ComputeBtnClick
TabOrder = 12
end
object ReturnBtn: TButton
Left = 320
Height = 30
Top = 440
Width = 74
Caption = 'Return'
ModalResult = 1
TabOrder = 13
end
object OpenDialog1: TOpenDialog
left = 425
top = 431
end
object SaveDialog1: TSaveDialog
left = 472
top = 431
end
end

View File

@ -0,0 +1,180 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TFactorFrm','FORMDATA',[
'TPF0'#10'TFactorFrm'#9'FactorFrm'#4'Left'#3#181#0#6'Height'#3#230#1#3'Top'#2
+'c'#5'Width'#3'`'#2#7'Caption'#6#15'Factor Analysis'#12'ClientHeight'#3#230#1
+#11'ClientWidth'#3'`'#2#6'OnShow'#7#8'FormShow'#10'LCLVersion'#6#8'0.9.28.2'
+#0#6'TLabel'#6'Label1'#4'Left'#2#6#6'Height'#2#14#3'Top'#2#1#5'Width'#2'Z'#7
+'Caption'#6#19'Available Variables'#11'ParentColor'#8#0#0#6'TLabel'#6'Label2'
+#4'Left'#3#227#0#6'Height'#2#14#3'Top'#2#1#5'Width'#2'X'#7'Caption'#6#18'Sel'
+'ected Variables'#11'ParentColor'#8#0#0#6'TLabel'#6'Label3'#4'Left'#3#159#1#6
+'Height'#2#14#3'Top'#3'H'#1#5'Width'#2's'#7'Caption'#6#25'Min. root size to '
+'rotate:'#11'ParentColor'#8#0#0#6'TLabel'#6'Label4'#4'Left'#3#159#1#6'Height'
+#2#14#3'Top'#3'f'#1#5'Width'#2'c'#7'Caption'#6#19'Maximum Iterations:'#11'Pa'
+'rentColor'#8#0#0#6'TLabel'#6'Label5'#4'Left'#3#158#1#6'Height'#2#14#3'Top'#3
+#135#1#5'Width'#2'l'#7'Caption'#6#20'Maximum No. Factors:'#11'ParentColor'#8
+#0#0#8'TListBox'#7'VarList'#4'Left'#2#7#6'Height'#3''''#1#3'Top'#2#15#5'Widt'
+'h'#3#169#0#10'ItemHeight'#2#0#11'MultiSelect'#9#8'TabOrder'#2#0#0#0#7'TBitB'
+'tn'#5'InBtn'#4'Left'#3#183#0#6'Height'#2'#'#3'Top'#2#16#5'Width'#2'$'#10'Gl'
+'yph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0
+#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'!c$'
+#184#29'^ '#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0'*p/8%i)'#247'!c$'#217#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0'a'#190'm'#255']'#184'h'#255'X'
+#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'
+#255'5'#128';'#255'?'#136'E'#255'Y'#161'^'#255'D'#139'I'#255'!c$'#207#255#255
+#255#0#255#255#255#0#255#255#255#0'e'#195'q'#255#160#215#169#255#156#213#165
+#255#152#211#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135#201
+#142#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'E'#140
+'J'#255'!c$'#196#255#255#255#0#255#255#255#0'h'#199't'#255#165#218#174#255
+#162#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207#154
+#255#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'#194
+#130#255'J'#145'P'#255'%i)'#201#255#255#255#0#255#255#255#0'h'#199't'#255'h'
+#199't'#255'e'#195'q'#255'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'
+#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255'Z'#163'b'#255'U'#157'\'#255'/'
+'x5'#209#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'A'#145'I'#247';'#136'B'#219#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'G'#153'O'#187'A'#145'I'#6#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
,#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#10'InBtnClick'#8
+'TabOrder'#2#1#0#0#7'TBitBtn'#6'OutBtn'#4'Left'#3#184#0#6'Height'#2'#'#3'Top'
+#2'8'#5'Width'#2'$'#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'
+#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0
+#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'M'#161'V'#6'G'#153
+'O'#184#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'S'#169'\'#217'M'#161'V'
+#247'G'#153'O8'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131#255
+'['#170'd'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'
+#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255#255#255#255#0#255#255#255#0'e'#195
+'q'#196'{'#200#134#255#156#213#165#255#152#211#161#255#148#208#157#255#144
+#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255
+'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!c$'#255#255#255#255#0#255#255
+#255#0'h'#199't'#201#127#204#138#255#162#216#171#255#158#214#167#255#154#212
+#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255#133
+#199#139#255#129#197#135#255'}'#194#130#255'x'#192'~'#255'%i)'#255#255#255
+#255#0#255#255#255#0#255#255#255#0'h'#199't'#209#128#205#139#255'|'#201#135
+#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'
+#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#219'e'#195'q'#247#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#6'h'#199't'#187#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyp'
+'hs'#2#0#7'OnClick'#7#11'OutBtnClick'#8'TabOrder'#2#2#0#0#8'TListBox'#10'Fac'
+'torList'#4'Left'#3#225#0#6'Height'#3'$'#1#3'Top'#2#16#5'Width'#3#173#0#10'I'
+'temHeight'#2#0#8'TabOrder'#2#3#0#0#11'TRadioGroup'#9'TypeGroup'#4'Left'#3
+#160#1#6'Height'#3#156#0#3'Top'#2#4#5'Width'#3#187#0#8'AutoFill'#9#7'Caption'
+#6#16'Type of Analysis'#28'ChildSizing.LeftRightSpacing'#2#6#28'ChildSizing.'
+'TopBottomSpacing'#2#6#29'ChildSizing.EnlargeHorizontal'#7#24'crsHomogenousC'
+'hildResize'#27'ChildSizing.EnlargeVertical'#7#24'crsHomogenousChildResize'
+#28'ChildSizing.ShrinkHorizontal'#7#14'crsScaleChilds'#26'ChildSizing.Shrink'
+'Vertical'#7#14'crsScaleChilds'#18'ChildSizing.Layout'#7#29'cclLeftToRightTh'
+'enTopToBottom'#27'ChildSizing.ControlsPerLine'#2#1#12'ClientHeight'#3#138#0
+#11'ClientWidth'#3#183#0#13'Items.Strings'#1#6#20'Principal Components'#6#29
+'Partial Image (No Iterations)'#6#13'Guttman Image'#6#19'Harris Scaled Image'
,#6#27'Canonical (Max. Likelihood)'#6#5'Alpha'#6#17'Principal Factors'#0#8'Ta'
+'bOrder'#2#4#0#0#11'TRadioGroup'#11'RotateGroup'#4'Left'#3#159#1#6'Height'#3
+#133#0#3'Top'#3#176#0#5'Width'#3#187#0#8'AutoFill'#9#7'Caption'#6#15'Rotatio'
+'n Option'#28'ChildSizing.LeftRightSpacing'#2#6#28'ChildSizing.TopBottomSpac'
+'ing'#2#6#29'ChildSizing.EnlargeHorizontal'#7#24'crsHomogenousChildResize'#27
+'ChildSizing.EnlargeVertical'#7#24'crsHomogenousChildResize'#28'ChildSizing.'
+'ShrinkHorizontal'#7#14'crsScaleChilds'#26'ChildSizing.ShrinkVertical'#7#14
+'crsScaleChilds'#18'ChildSizing.Layout'#7#29'cclLeftToRightThenTopToBottom'
+#27'ChildSizing.ControlsPerLine'#2#1#12'ClientHeight'#2's'#11'ClientWidth'#3
+#183#0#13'Items.Strings'#1#6#7'Varimax'#6#7'Oblimax'#6#9'Quartimax'#6#18'Man'
+'ual (Graphical)'#6#11'Procrustian'#6#11'NO rotation'#0#8'TabOrder'#2#5#0#0#9
+'TGroupBox'#9'GroupBox1'#4'Left'#2#6#6'Height'#2'n'#3'Top'#3'@'#1#5'Width'#3
+#137#1#7'Caption'#6#15'Output Options:'#12'ClientHeight'#2'\'#11'ClientWidth'
+#3#133#1#8'TabOrder'#2#6#0#9'TCheckBox'#7'DescBtn'#4'Left'#2#6#6'Height'#2#17
+#3'Top'#2#2#5'Width'#2'w'#7'Caption'#6#22'Descriptive Statistics'#8'TabOrder'
+#2#0#0#0#9'TCheckBox'#7'RMatBtn'#4'Left'#2#6#6'Height'#2#17#3'Top'#2#24#5'Wi'
+'dth'#2'j'#7'Caption'#6#18'Correlation Matrix'#8'TabOrder'#2#1#0#0#9'TCheckB'
+'ox'#8'UnrotBtn'#4'Left'#2#5#6'Height'#2#17#3'Top'#2'.'#5'Width'#2'l'#7'Capt'
+'ion'#6#17'Unrotated Factors'#8'TabOrder'#2#2#0#0#9'TCheckBox'#9'PcntTrBtn'#4
+'Left'#2#6#6'Height'#2#17#3'Top'#2'C'#5'Width'#2'W'#7'Caption'#6#13'Percent '
+'Trace'#8'TabOrder'#2#3#0#0#9'TCheckBox'#8'ScreeBtn'#4'Left'#3#137#0#6'Heigh'
+'t'#2#17#3'Top'#2#2#5'Width'#2'D'#7'Caption'#6#10'Scree Plot'#8'TabOrder'#2#4
+#0#0#9'TCheckBox'#8'ComUnBtn'#4'Left'#3#136#0#6'Height'#2#17#3'Top'#2#24#5'W'
+'idth'#2'X'#7'Caption'#6#13'Communalities'#8'TabOrder'#2#5#0#0#9'TCheckBox'#7
+'PlotBtn'#4'Left'#3#137#0#6'Height'#2#17#3'Top'#2'.'#5'Width'#2'M'#7'Caption'
+#6#12'Plot Factors'#8'TabOrder'#2#6#0#0#9'TCheckBox'#9'ScoresBtn'#4'Left'#3
+#137#0#6'Height'#2#17#3'Top'#2'C'#5'Width'#2'V'#7'Caption'#6#13'Factor Score'
+'s'#8'TabOrder'#2#7#0#0#9'TCheckBox'#11'SaveCorsBtn'#4'Left'#3#248#0#6'Heigh'
+'t'#2#17#3'Top'#2#2#5'Width'#3#133#0#7'Caption'#6#23'Save Correlation Matrix'
+#8'TabOrder'#2#8#0#0#9'TCheckBox'#11'SaveFactBtn'#4'Left'#3#248#0#6'Height'#2
+#17#3'Top'#2#24#5'Width'#2'o'#7'Caption'#6#18'Save Factor Matrix'#8'TabOrder'
+#2#9#0#0#9'TCheckBox'#7'SortBtn'#4'Left'#3#248#0#6'Height'#2#17#3'Top'#2'.'#5
+'Width'#2'O'#7'Caption'#6#12'Sort Factors'#8'TabOrder'#2#10#0#0#0#5'TEdit'#11
+'MinRootEdit'#4'Left'#3'8'#2#6'Height'#2#21#3'Top'#3'C'#1#5'Width'#2' '#8'Ta'
+'bOrder'#2#7#4'Text'#6#11'MinRootEdit'#0#0#5'TEdit'#12'MaxItersEdit'#4'Left'
+#3'8'#2#6'Height'#2#21#3'Top'#3'a'#1#5'Width'#2' '#8'TabOrder'#2#8#4'Text'#6
+#5'Edit1'#0#0#5'TEdit'#14'MaxFactorsEdit'#4'Left'#3'8'#2#6'Height'#2#21#3'To'
+'p'#3#130#1#5'Width'#2' '#8'TabOrder'#2#9#4'Text'#6#5'Edit1'#0#0#7'TButton'#8
+'ResetBtn'#4'Left'#2#7#6'Height'#2#30#3'Top'#3#184#1#5'Width'#2'J'#7'Caption'
+#6#5'Reset'#7'OnClick'#7#13'ResetBtnClick'#8'TabOrder'#2#10#0#0#7'TButton'#9
+'CancelBtn'#4'Left'#2'f'#6'Height'#2#30#3'Top'#3#184#1#5'Width'#2'J'#7'Capti'
+'on'#6#6'Cancel'#11'ModalResult'#2#2#8'TabOrder'#2#11#0#0#7'TButton'#10'Comp'
+'uteBtn'#4'Left'#3#224#0#6'Height'#2#30#3'Top'#3#184#1#5'Width'#2'J'#7'Capti'
+'on'#6#7'Compute'#7'OnClick'#7#15'ComputeBtnClick'#8'TabOrder'#2#12#0#0#7'TB'
+'utton'#9'ReturnBtn'#4'Left'#3'@'#1#6'Height'#2#30#3'Top'#3#184#1#5'Width'#2
+'J'#7'Caption'#6#6'Return'#11'ModalResult'#2#1#8'TabOrder'#2#13#0#0#11'TOpen'
+'Dialog'#11'OpenDialog1'#4'left'#3#169#1#3'top'#3#175#1#0#0#11'TSaveDialog'
+#11'SaveDialog1'#4'left'#3#216#1#3'top'#3#175#1#0#0#0
]);

View File

@ -0,0 +1,36 @@
unit FFTUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls;
type
{ TFFTFrm }
TFFTFrm = class(TForm)
CancelBtn: TButton;
OKBtn: TButton;
NptsEdit: TEdit;
Label1: TLabel;
Memo1: TMemo;
private
{ private declarations }
public
{ public declarations }
end;
var
FFTFrm: TFFTFrm;
implementation
initialization
{$I fftunit.lrs}
end.

View File

@ -0,0 +1,54 @@
object FFTFrm: TFFTFrm
Left = 192
Height = 138
Top = 136
Width = 232
Caption = 'Fourier Transform Form'
ClientHeight = 138
ClientWidth = 232
LCLVersion = '0.9.28.2'
object Label1: TLabel
Left = 8
Height = 14
Top = 72
Width = 90
Caption = 'Number of points: '
ParentColor = False
end
object Memo1: TMemo
Left = 7
Height = 44
Top = 8
Width = 209
Lines.Strings = (
'Enter the number of data points to '
'include in the Fourier smoothing.'
)
TabOrder = 0
end
object NptsEdit: TEdit
Left = 104
Height = 21
Top = 62
Width = 45
TabOrder = 1
end
object CancelBtn: TButton
Left = 7
Height = 29
Top = 97
Width = 70
Caption = 'Cancel'
ModalResult = 2
TabOrder = 2
end
object OKBtn: TButton
Left = 112
Height = 29
Top = 97
Width = 70
Caption = 'OK'
ModalResult = 1
TabOrder = 3
end
end

View File

@ -0,0 +1,16 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TFFTFrm','FORMDATA',[
'TPF0'#7'TFFTFrm'#6'FFTFrm'#4'Left'#3#192#0#6'Height'#3#138#0#3'Top'#3#136#0#5
+'Width'#3#232#0#7'Caption'#6#22'Fourier Transform Form'#12'ClientHeight'#3
+#138#0#11'ClientWidth'#3#232#0#10'LCLVersion'#6#8'0.9.28.2'#0#6'TLabel'#6'La'
+'bel1'#4'Left'#2#8#6'Height'#2#14#3'Top'#2'H'#5'Width'#2'Z'#7'Caption'#6#18
+'Number of points: '#11'ParentColor'#8#0#0#5'TMemo'#5'Memo1'#4'Left'#2#7#6'H'
+'eight'#2','#3'Top'#2#8#5'Width'#3#209#0#13'Lines.Strings'#1#6'#Enter the nu'
+'mber of data points to '#6'!include in the Fourier smoothing.'#0#8'TabOrder'
+#2#0#0#0#5'TEdit'#8'NptsEdit'#4'Left'#2'h'#6'Height'#2#21#3'Top'#2'>'#5'Widt'
+'h'#2'-'#8'TabOrder'#2#1#0#0#7'TButton'#9'CancelBtn'#4'Left'#2#7#6'Height'#2
+#29#3'Top'#2'a'#5'Width'#2'F'#7'Caption'#6#6'Cancel'#11'ModalResult'#2#2#8'T'
+'abOrder'#2#2#0#0#7'TButton'#5'OKBtn'#4'Left'#2'p'#6'Height'#2#29#3'Top'#2'a'
+#5'Width'#2'F'#7'Caption'#6#2'OK'#11'ModalResult'#2#1#8'TabOrder'#2#3#0#0#0
]);

View File

@ -0,0 +1,447 @@
unit FileExtractUnit;
{$MODE Delphi}
interface
uses
LCLIntf, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Grids, ExtCtrls, GLOBALS, OS3MainUnit, DATAPROCS, DICTIONARYUNIT,
LResources, Buttons;
type
TFileExtractFrm = class(TForm)
Memo1: TMemo;
Label2: TLabel;
NoLinesEdit: TEdit;
Label3: TLabel;
NoFieldsEdit: TEdit;
FormatGrp: TRadioGroup;
Label4: TLabel;
KeyVarNoEdit: TEdit;
Label5: TLabel;
ValueEdit: TEdit;
LabelsChk: TCheckBox;
FmtGrid: TStringGrid;
CancelBtn: TButton;
OKBtn: TButton;
ResetBtn: TButton;
ExtractBtn: TButton;
OpenDialog1: TOpenDialog;
FileSelBtn: TButton;
Label1: TLabel;
NoGotEdit: TEdit;
Label6: TLabel;
RecdReadEdit: TEdit;
TypeBox: TComboBox;
procedure ResetBtnClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure CancelBtnClick(Sender: TObject);
procedure FormatGrpClick(Sender: TObject);
procedure OKBtnClick(Sender: TObject);
procedure ExtractBtnClick(Sender: TObject);
procedure FileSelBtnClick(Sender: TObject);
procedure TypeBoxChange(Sender: TObject);
private
{ Private declarations }
FileName : string;
public
{ Public declarations }
function GetValues(VAR TheFile : TextFile;
NoLines : integer;
NoFlds : integer;
Token : integer;
VAR StrValues : StrDyneVec) : boolean;
procedure PutGrid(RecdNo : integer;
NoFlds : integer;
LabelsFirst : boolean;
VAR StrValues : StrDyneVec);
function GetFmtValues(VAR TheFile : TextFile;
NoLines : integer;
NoFlds : integer;
VAR StrValues : StrDyneVec) : boolean;
end;
var
FileExtractFrm: TFileExtractFrm;
implementation
procedure TFileExtractFrm.ResetBtnClick(Sender: TObject);
begin
NoLinesEdit.Text := '1';
NoFieldsEdit.Text := '';
KeyVarNoEdit.Text := '';
ValueEdit.Text := '';
NoGotEdit.Text := '';
RecdReadEdit.Text := '';
FormatGrp.ItemIndex := 0;
LabelsChk.Checked := false;
FmtGrid.Cells[0,0] := 'Field';
FmtGrid.Cells[1,0] := 'Start';
FmtGrid.Cells[2,0] := 'End';
FmtGrid.Cells[3,0] := 'Data Type';
FmtGrid.Cells[4,0] := 'Line No.';
FmtGrid.Cells[5,0] := 'Label';
FmtGrid.Visible := false;
TypeBox.Text := 'Types';
TypeBox.Visible := false;
end;
//--------------------------------------------------------
procedure TFileExtractFrm.FormShow(Sender: TObject);
begin
ResetBtnClick(self);
end;
//---------------------------------------------------------
procedure TFileExtractFrm.CancelBtnClick(Sender: TObject);
begin
FileExtractFrm.Hide;
end;
//--------------------------------------------------------------
procedure TFileExtractFrm.FormatGrpClick(Sender: TObject);
begin
if FormatGrp.ItemIndex = 3 then
begin
FmtGrid.RowCount := StrToInt(NoFieldsEdit.Text) + 1;
FmtGrid.Visible := true;
TypeBox.Visible := true;
end
else begin
FmtGrid.Visible := false;
TypeBox.Visible := false;
end;
end;
//-------------------------------------------------------------
procedure TFileExtractFrm.OKBtnClick(Sender: TObject);
begin
FileExtractFrm.Hide;
end;
//---------------------------------------------------------------------
function TFileExtractFrm.GetValues(VAR TheFile : TextFile;
NoLines : integer;
NoFlds : integer;
Token : integer;
VAR StrValues : StrDyneVec) : boolean;
var
done, endline : boolean;
i, valcount : integer;
cellstring : string;
achar : char;
begin
done := false;
valcount := 0;
if not done then
begin
for i := 1 to NoLines do
begin
endline := false;
while not endline do
begin
read(TheFile,achar);
if EOF(TheFile) then
begin
done := true;
GetValues := done;
exit;
end;
if ord(achar) = 10 then continue; // ignore line feed
if ord(achar) <> 13 then // not a new line
begin
if ord(achar) <> Token then // not a tab character
cellstring := cellstring + achar
else
begin // Token character found - save string and bump counter
StrValues[valcount] := cellstring;
cellstring := '';
valcount := valcount + 1;
end;
end // not a new line - tab or character found
else begin
endline := true;
StrValues[valcount] := cellstring;
valcount := valcount + 1;
cellstring := '';
end;
end; // next line
end; // next line
end // net yet at eof
else done := true;
if valcount <> NoFlds then
begin
ShowMessage('ERROR! Mismatched no. fields - see grid for first record');
FmtGrid.ColCount := valcount + 1;
FmtGrid.Visible := true;
for i := 1 to NoFlds do
FmtGrid.Cells[i-1,0] := StrValues[i-1];
done := true;
end;
GetValues := done;
end;
//---------------------------------------------------------------------
procedure TFileExtractFrm.PutGrid(RecdNo : integer;
NoFlds : integer;
LabelsFirst : boolean;
VAR StrValues : StrDyneVec);
var
i : integer;
cellstring : string;
begin
if LabelsFirst = true then
begin
OS3MainFrm.DataGrid.RowCount := 2;
OS3MainFrm.DataGrid.Cells[0,0] := 'Case 0';
for i := 1 to NoFlds do OS3MainFrm.DataGrid.Cells[i,0] := StrValues[i-1];
end
else
begin
OS3MainFrm.DataGrid.RowCount := RecdNo + 1;
cellstring := 'Case ' + IntToStr(RecdNo);
OS3MainFrm.DataGrid.Cells[0,RecdNo] := cellstring;
for i := 1 to NoFlds do OS3MainFrm.DataGrid.Cells[i,RecdNo] := StrValues[i-1];
end;
end;
//---------------------------------------------------------------------
procedure TFileExtractFrm.ExtractBtnClick(Sender: TObject);
var
LabelsFirst : boolean; // first record contains variable labels
NoFlds : integer; // number of variables
NoLines : integer; // number of lines per record
FormatType : integer; // 1 = tab, 2 = comma, 3 = space, 4 = user spec.
KeyNo : integer; // sequence number of field containing the key
KeyValue : string; // value of the key field
TheFile : TextFile; // file handle
StrValues : StrDyneVec; // pointer to array of strings for record values
done : boolean;
NoRecords : integer;
Token : integer; // tab, comma or space charcter ordinal value
i, fldno : integer;
OldCursor : Tcursor;
NoRead : integer; // no. of records read from big file
fldtype : string;
cellstring : string; // for labels provided in the fmtgrid
begin
// get entered values from the form
if LabelsChk.Checked then LabelsFirst := true else LabelsFirst := false;
NoFlds := StrToInt(NoFieldsEdit.Text);
NoLines := StrToInt(NoLinesEdit.Text);
FormatType := FormatGrp.ItemIndex + 1;
KeyNo := StrToInt(KeyVarNoEdit.Text);
KeyValue := ValueEdit.Text;
SetLength(StrValues,NoFlds + 1);
done := false;
NoRecords := 0;
Token := ord(' '); // default of a space
OldCursor := FileExtractFrm.Cursor;
NoRead := 0;
OS3MainFrm.DataGrid.ColCount := NoFlds + 1;
for i := 1 to NoFlds do
begin
DictionaryFrm.DictGrid.RowCount := i;
DictionaryFrm.Defaults(Self,i);
VarDefined[i] := true;
end;
// open file for processing
AssignFile(TheFile,FileName);
Reset(TheFile);
// process first (or second) record according to format type
case FormatType of
1, 2, 3 : begin // tab seperated fields
FileExtractFrm.Cursor := crHourGlass;
if not LabelsFirst then
begin
// store labels (if not blank) into grid row 0 and type in defs.
for i := 1 to NoFlds do
begin
cellstring := format('VAR%2d',[i]);
OS3MainFrm.DataGrid.Cells[i,0] := cellstring;
end;
end;
while Not done do
begin
if FormatType = 1 then Token := 9; // tab character
if FormatType = 2 then Token := ord(','); // comma
if FormatType = 3 then Token := ord(' '); // space
done := GetValues(TheFile,NoLines,NoFlds,Token,StrValues);
if not done then
begin
NoRead := NoRead + 1;
if LabelsFirst then
begin
PutGrid(0,NoFlds,LabelsFirst,StrValues);
LabelsFirst := false;
end;
RecdReadEdit.Text := IntToStr(NoRead);
FileExtractFrm.Repaint;
StrValues[KeyNo-1] := Trim(StrValues[KeyNo-1]);
if StrValues[KeyNo-1] = KeyValue then // found group record
begin
NoRecords := NoRecords + 1;
PutGrid(NoRecords,NoFlds,LabelsFirst,StrValues);
NoGotEdit.Text := IntToStr(NoRecords);
end;
end;
end;
FileExtractFrm.Cursor := OldCursor;
OS3MainFrm.NoCasesEdit.Text := IntToStr(NoRecords);
OS3MainFrm.NoVarsEdit.Text := IntToStr(NoFlds);
OS3MainFrm.RowEdit.Text := '1';
OS3MainFrm.ColEdit.Text := '1';
OS3MainFrm.DataGrid.Row := 1;
OS3MainFrm.DataGrid.Col := 1;
NoVariables := NoFlds;
NoCases := NoRecords;
end;
4 : begin // user specified format
FileExtractFrm.Cursor := crHourGlass;
if not LabelsFirst then
begin
// store labels (if not blank) into grid row 0 and type in defs.
for i := 1 to NoFlds do
begin
fldno := StrToInt(FmtGrid.Cells[0,i]);
fldtype := FmtGrid.Cells[3,fldno];
DictionaryFrm.DictGrid.Cells[4,fldno] := fldtype[2];
cellstring := FmtGrid.Cells[5,fldno];
DictionaryFrm.DictGrid.Cells[1,fldno] := cellstring;
DictionaryFrm.DictGrid.Cells[2,fldno] := cellstring;
if cellstring <> '' then OS3MainFrm.DataGrid.Cells[i,0] := cellstring;
end;
end;
while NOT done do
begin
done := GetFmtValues(TheFile,NoLines,NoFlds,StrValues);
if not done then
begin
NoRead := NoRead + 1;
if LabelsFirst then
begin
PutGrid(0,NoFlds,LabelsFirst,StrValues);
LabelsFirst := false;
end;
RecdReadEdit.Text := IntToStr(NoRead);
FileExtractFrm.Repaint;
StrValues[KeyNo-1] := Trim(StrValues[KeyNo-1]);
if StrValues[KeyNo-1] = KeyValue then // found group record
begin
NoRecords := NoRecords + 1;
PutGrid(NoRecords,NoFlds,LabelsFirst,StrValues);
NoGotEdit.Text := IntToStr(NoRecords);
end;
end; // if not done
end; // while not done
FileExtractFrm.Cursor := OldCursor;
OS3MainFrm.NoCasesEdit.Text := IntToStr(NoRecords);
OS3MainFrm.NoVarsEdit.Text := IntToStr(NoFlds);
OS3MainFrm.RowEdit.Text := '1';
OS3MainFrm.ColEdit.Text := '1';
OS3MainFrm.DataGrid.Row := 1;
OS3MainFrm.DataGrid.Col := 1;
NoVariables := NoFlds;
NoCases := NoRecords;
end; // end case 4 (formatted input)
end; // end case switch
StrValues := nil;
CloseFile(TheFile);
end;
//------------------------------------------------------------------------
procedure TFileExtractFrm.FileSelBtnClick(Sender: TObject);
begin
OpenDialog1.Filter := 'Tab field files (*.tab)|*.TAB|Text files (*.txt)|*.TXT|All files (*.*)|*.*';
OpenDialog1.FilterIndex := 1;
OpenDialog1.DefaultExt := 'TAB';
if OpenDialog1.Execute then FileName := OpenDialog1.FileName
else ShowMessage('Error in opening File!');
end;
//-------------------------------------------------------------------------
function TFileExtractFrm.GetFmtValues(VAR TheFile : TextFile;
NoLines : integer;
NoFlds : integer;
VAR StrValues : StrDyneVec) : boolean;
var
done, endline : boolean;
i, j, endat, startat, stlong, valcount, fldno : integer;
LineStr : string;
achar : char;
begin
done := false;
valcount := 0;
if not done then
begin
for i := 1 to NoLines do
begin
endline := false;
while not endline do
begin
read(TheFile,achar);
if EOF(TheFile) then
begin
done := true;
GetFmtValues := done;
exit;
end;
if ord(achar) = 10 then continue; // ignore line feed
if ord(achar) <> 13 then LineStr := LineStr + achar
else endline := true;
end;
// now, parse values in this line
for j := 1 to NoFlds do
begin
if StrToInt(FmtGrid.Cells[4,j]) <> i then continue; // in line i?
startat := StrToInt(FmtGrid.Cells[1,j]);
endat := StrToInt(FmtGrid.Cells[2,j]);
stlong := endat - startat + 1;
fldno := StrToInt(FmtGrid.Cells[0,j]);
StrValues[fldno-1] := Copy(LineStr,startat,stlong);
valcount := valcount + 1;
end; // next j
LineStr := '';
end; // next line
end // not yet at eof
else done := true;
if valcount <> NoFlds then
begin
ShowMessage('ERROR! Mismatched no. fields and actual record data.');
done := true;
end;
GetFmtValues := done;
end;
//-----------------------------------------------------------------------
procedure TFileExtractFrm.TypeBoxChange(Sender: TObject);
var
index : integer;
row, col : integer;
begin
index := TypeBox.ItemIndex;
row := FmtGrid.Row;
col := FmtGrid.Col;
FmtGrid.Cells[col,row] := IntToStr(index);
end;
//-------------------------------------------------------------------------
initialization
{$i FILEEXTRACTUNIT.lrs}
{$i FILEEXTRACTUNIT.lrs}
end.

View File

@ -0,0 +1,255 @@
object FileExtractFrm: TFileExtractFrm
Left = 160
Height = 509
Top = 713
Width = 435
HelpContext = 406
HorzScrollBar.Page = 434
VertScrollBar.Page = 508
ActiveControl = NoFieldsEdit
Caption = 'File Extraction Procedure'
Font.Height = -11
Font.Name = 'MS Sans Serif'
HelpFile = 'OS2Help.hlp'
OnShow = FormShow
object Label2: TLabel
Left = 8
Height = 14
Top = 152
Width = 132
Caption = 'Number of lines per record:'
Color = clNone
ParentColor = False
end
object Label3: TLabel
Left = 224
Height = 14
Top = 152
Width = 170
Caption = 'No. of fields (variables) per record:'
Color = clNone
ParentColor = False
end
object Label4: TLabel
Left = 8
Height = 14
Top = 176
Width = 192
Caption = 'Sequence number of key selection field:'
Color = clNone
ParentColor = False
end
object Label5: TLabel
Left = 8
Height = 40
Top = 200
Width = 76
Caption = 'Selection Value (Including Dec. Fraction):'
Color = clNone
ParentColor = False
WordWrap = True
end
object Label1: TLabel
Left = 272
Height = 14
Top = 424
Width = 94
Caption = 'Records Retrieved:'
Color = clNone
ParentColor = False
end
object Label6: TLabel
Left = 8
Height = 14
Top = 424
Width = 96
Caption = 'Records Processed:'
Color = clNone
ParentColor = False
end
object Memo1: TMemo
Left = 24
Height = 113
Width = 377
Lines.Strings = (
'This procedure is used to extract records from files too large to read directly '
'into the data grid. The data grid can hold about 100,000 records. If your file'
'is larger but you will not be processing all records, you may extract sub-groups'
'of records using a "key" field, e.g. a group identification number. The records'
'extracted will be placed into the data grid as if you had entered them via the'
'keyboard. You may then save the sub-file, process it, etc. as any other file. If'
'you have multiple groups to extract, repeat pressing the Extract button until all'
'sub-files you need are placed into the data grid. Press return to continue.'
)
TabOrder = 4
end
object NoLinesEdit: TEdit
Left = 144
Height = 21
Top = 152
Width = 25
TabOrder = 5
end
object NoFieldsEdit: TEdit
Left = 392
Height = 21
Top = 152
Width = 25
TabOrder = 0
end
object FormatGrp: TRadioGroup
Left = 272
Height = 81
Top = 176
Width = 145
AutoFill = True
Caption = 'Record Format:'
ChildSizing.LeftRightSpacing = 6
ChildSizing.TopBottomSpacing = 6
ChildSizing.EnlargeHorizontal = crsHomogenousChildResize
ChildSizing.EnlargeVertical = crsHomogenousChildResize
ChildSizing.ShrinkHorizontal = crsScaleChilds
ChildSizing.ShrinkVertical = crsScaleChilds
ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 1
Items.Strings = (
'Tab seperated fields'
'comma seperated fields'
'space seperated fields'
'User specified format'
)
OnClick = FormatGrpClick
TabOrder = 3
end
object KeyVarNoEdit: TEdit
Left = 200
Height = 21
Top = 176
Width = 25
TabOrder = 1
end
object ValueEdit: TEdit
Left = 112
Height = 21
Top = 208
Width = 113
TabOrder = 2
end
object LabelsChk: TCheckBox
Left = 8
Height = 13
Top = 248
Width = 207
Caption = 'The first record contains variable labels.'
TabOrder = 6
end
object FmtGrid: TStringGrid
Left = 8
Height = 121
Top = 296
Width = 409
ColCount = 6
FixedColor = clBtnFace
FixedCols = 0
FixedRows = 0
GridLineWidth = 0
Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goColMoving, goEditing, goTabs]
RowCount = 5
ScrollBars = ssAutoBoth
TabOrder = 7
TabStop = True
end
object CancelBtn: TButton
Left = 160
Height = 25
Top = 448
Width = 57
BorderSpacing.InnerBorder = 4
Caption = 'Cancel'
ModalResult = 2
OnClick = CancelBtnClick
TabOrder = 8
end
object OKBtn: TButton
Left = 360
Height = 25
Top = 448
Width = 57
BorderSpacing.InnerBorder = 4
Caption = 'Return'
ModalResult = 1
OnClick = OKBtnClick
TabOrder = 9
end
object ResetBtn: TButton
Left = 224
Height = 25
Top = 448
Width = 57
BorderSpacing.InnerBorder = 4
Caption = 'Reset'
OnClick = ResetBtnClick
TabOrder = 10
end
object ExtractBtn: TButton
Left = 288
Height = 25
Top = 448
Width = 65
BorderSpacing.InnerBorder = 4
Caption = 'Extract'
OnClick = ExtractBtnClick
TabOrder = 11
end
object FileSelBtn: TButton
Left = 8
Height = 25
Top = 120
Width = 201
BorderSpacing.InnerBorder = 4
Caption = 'Press to Select a Huge File for Extraction'
OnClick = FileSelBtnClick
TabOrder = 12
end
object NoGotEdit: TEdit
Left = 368
Height = 21
Top = 424
Width = 49
TabOrder = 13
Text = 'NoGotEdit'
end
object RecdReadEdit: TEdit
Left = 104
Height = 21
Top = 424
Width = 65
TabOrder = 14
Text = 'RecdReadEdit'
end
object TypeBox: TComboBox
Left = 208
Height = 21
Top = 272
Width = 57
AutoCompleteText = [cbactEndOfLineComplete, cbactSearchAscending]
ItemHeight = 13
Items.Strings = (
'(I)nteger'
'(F)loating point'
'(S)tring'
'(M)oney'
'(D)ate'
)
MaxLength = 0
OnChange = TypeBoxChange
TabOrder = 15
Text = 'Type'
end
object OpenDialog1: TOpenDialog
Title = 'Open existing file'
FilterIndex = 0
left = 240
top = 192
end
end

View File

@ -0,0 +1,80 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TFileExtractFrm','FORMDATA',[
'TPF0'#15'TFileExtractFrm'#14'FileExtractFrm'#4'Left'#3#160#0#6'Height'#3#253
+#1#3'Top'#3#201#2#5'Width'#3#179#1#11'HelpContext'#3#150#1#18'HorzScrollBar.'
+'Page'#3#178#1#18'VertScrollBar.Page'#3#252#1#13'ActiveControl'#7#12'NoField'
+'sEdit'#7'Caption'#6#25'File Extraction Procedure'#11'Font.Height'#2#245#9'F'
+'ont.Name'#6#13'MS Sans Serif'#8'HelpFile'#6#11'OS2Help.hlp'#6'OnShow'#7#8'F'
+'ormShow'#0#6'TLabel'#6'Label2'#4'Left'#2#8#6'Height'#2#14#3'Top'#3#152#0#5
+'Width'#3#132#0#7'Caption'#6#27'Number of lines per record:'#5'Color'#7#6'cl'
+'None'#11'ParentColor'#8#0#0#6'TLabel'#6'Label3'#4'Left'#3#224#0#6'Height'#2
+#14#3'Top'#3#152#0#5'Width'#3#170#0#7'Caption'#6'%No. of fields (variables) '
+'per record:'#5'Color'#7#6'clNone'#11'ParentColor'#8#0#0#6'TLabel'#6'Label4'
+#4'Left'#2#8#6'Height'#2#14#3'Top'#3#176#0#5'Width'#3#192#0#7'Caption'#6'''S'
+'equence number of key selection field:'#5'Color'#7#6'clNone'#11'ParentColor'
+#8#0#0#6'TLabel'#6'Label5'#4'Left'#2#8#6'Height'#2'('#3'Top'#3#200#0#5'Width'
+#2'L'#7'Caption'#6'*Selection Value (Including Dec. Fraction):'#5'Color'#7#6
+'clNone'#11'ParentColor'#8#8'WordWrap'#9#0#0#6'TLabel'#6'Label1'#4'Left'#3#16
+#1#6'Height'#2#14#3'Top'#3#168#1#5'Width'#2'^'#7'Caption'#6#18'Records Retri'
+'eved:'#5'Color'#7#6'clNone'#11'ParentColor'#8#0#0#6'TLabel'#6'Label6'#4'Lef'
+'t'#2#8#6'Height'#2#14#3'Top'#3#168#1#5'Width'#2'`'#7'Caption'#6#18'Records '
+'Processed:'#5'Color'#7#6'clNone'#11'ParentColor'#8#0#0#5'TMemo'#5'Memo1'#4
+'Left'#2#24#6'Height'#2'q'#5'Width'#3'y'#1#13'Lines.Strings'#1#6'PThis proce'
+'dure is used to extract records from files too large to read directly '#6'P'
+'into the data grid. The data grid can hold about 100,000 records. If your'
+' file'#6'Pis larger but you will not be processing all records, you may ext'
+'ract sub-groups'#6'Pof records using a "key" field, e.g. a group identifica'
+'tion number. The records'#6'Nextracted will be placed into the data grid a'
+'s if you had entered them via the'#6'Rkeyboard. You may then save the sub-'
+'file, process it, etc. as any other file. If'#6'Qyou have multiple groups '
+'to extract, repeat pressing the Extract button until all'#6'Lsub-files you '
+'need are placed into the data grid. Press return to continue.'#0#8'TabOrde'
+'r'#2#4#0#0#5'TEdit'#11'NoLinesEdit'#4'Left'#3#144#0#6'Height'#2#21#3'Top'#3
+#152#0#5'Width'#2#25#8'TabOrder'#2#5#0#0#5'TEdit'#12'NoFieldsEdit'#4'Left'#3
+#136#1#6'Height'#2#21#3'Top'#3#152#0#5'Width'#2#25#8'TabOrder'#2#0#0#0#11'TR'
+'adioGroup'#9'FormatGrp'#4'Left'#3#16#1#6'Height'#2'Q'#3'Top'#3#176#0#5'Widt'
+'h'#3#145#0#8'AutoFill'#9#7'Caption'#6#14'Record Format:'#28'ChildSizing.Lef'
+'tRightSpacing'#2#6#28'ChildSizing.TopBottomSpacing'#2#6#29'ChildSizing.Enla'
+'rgeHorizontal'#7#24'crsHomogenousChildResize'#27'ChildSizing.EnlargeVertica'
+'l'#7#24'crsHomogenousChildResize'#28'ChildSizing.ShrinkHorizontal'#7#14'crs'
+'ScaleChilds'#26'ChildSizing.ShrinkVertical'#7#14'crsScaleChilds'#18'ChildSi'
+'zing.Layout'#7#29'cclLeftToRightThenTopToBottom'#27'ChildSizing.ControlsPer'
+'Line'#2#1#13'Items.Strings'#1#6#20'Tab seperated fields'#6#22'comma seperat'
+'ed fields'#6#22'space seperated fields'#6#21'User specified format'#0#7'OnC'
+'lick'#7#14'FormatGrpClick'#8'TabOrder'#2#3#0#0#5'TEdit'#12'KeyVarNoEdit'#4
+'Left'#3#200#0#6'Height'#2#21#3'Top'#3#176#0#5'Width'#2#25#8'TabOrder'#2#1#0
+#0#5'TEdit'#9'ValueEdit'#4'Left'#2'p'#6'Height'#2#21#3'Top'#3#208#0#5'Width'
+#2'q'#8'TabOrder'#2#2#0#0#9'TCheckBox'#9'LabelsChk'#4'Left'#2#8#6'Height'#2
+#13#3'Top'#3#248#0#5'Width'#3#207#0#7'Caption'#6'*The first record contains '
+'variable labels.'#8'TabOrder'#2#6#0#0#11'TStringGrid'#7'FmtGrid'#4'Left'#2#8
+#6'Height'#2'y'#3'Top'#3'('#1#5'Width'#3#153#1#8'ColCount'#2#6#10'FixedColor'
+#7#9'clBtnFace'#9'FixedCols'#2#0#9'FixedRows'#2#0#13'GridLineWidth'#2#0#7'Op'
+'tions'#11#15'goFixedVertLine'#15'goFixedHorzLine'#10'goVertLine'#10'goHorzL'
+'ine'#11'goColMoving'#9'goEditing'#6'goTabs'#0#8'RowCount'#2#5#10'ScrollBars'
+#7#10'ssAutoBoth'#8'TabOrder'#2#7#7'TabStop'#9#0#0#7'TButton'#9'CancelBtn'#4
+'Left'#3#160#0#6'Height'#2#25#3'Top'#3#192#1#5'Width'#2'9'#25'BorderSpacing.'
+'InnerBorder'#2#4#7'Caption'#6#6'Cancel'#11'ModalResult'#2#2#7'OnClick'#7#14
+'CancelBtnClick'#8'TabOrder'#2#8#0#0#7'TButton'#5'OKBtn'#4'Left'#3'h'#1#6'He'
+'ight'#2#25#3'Top'#3#192#1#5'Width'#2'9'#25'BorderSpacing.InnerBorder'#2#4#7
+'Caption'#6#6'Return'#11'ModalResult'#2#1#7'OnClick'#7#10'OKBtnClick'#8'TabO'
+'rder'#2#9#0#0#7'TButton'#8'ResetBtn'#4'Left'#3#224#0#6'Height'#2#25#3'Top'#3
+#192#1#5'Width'#2'9'#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#5'Reset'
+#7'OnClick'#7#13'ResetBtnClick'#8'TabOrder'#2#10#0#0#7'TButton'#10'ExtractBt'
+'n'#4'Left'#3' '#1#6'Height'#2#25#3'Top'#3#192#1#5'Width'#2'A'#25'BorderSpac'
+'ing.InnerBorder'#2#4#7'Caption'#6#7'Extract'#7'OnClick'#7#15'ExtractBtnClic'
+'k'#8'TabOrder'#2#11#0#0#7'TButton'#10'FileSelBtn'#4'Left'#2#8#6'Height'#2#25
+#3'Top'#2'x'#5'Width'#3#201#0#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6
,'*Press to Select a Huge File for Extraction'#7'OnClick'#7#15'FileSelBtnClic'
+'k'#8'TabOrder'#2#12#0#0#5'TEdit'#9'NoGotEdit'#4'Left'#3'p'#1#6'Height'#2#21
+#3'Top'#3#168#1#5'Width'#2'1'#8'TabOrder'#2#13#4'Text'#6#9'NoGotEdit'#0#0#5
+'TEdit'#12'RecdReadEdit'#4'Left'#2'h'#6'Height'#2#21#3'Top'#3#168#1#5'Width'
+#2'A'#8'TabOrder'#2#14#4'Text'#6#12'RecdReadEdit'#0#0#9'TComboBox'#7'TypeBox'
+#4'Left'#3#208#0#6'Height'#2#21#3'Top'#3#16#1#5'Width'#2'9'#16'AutoCompleteT'
+'ext'#11#22'cbactEndOfLineComplete'#20'cbactSearchAscending'#0#10'ItemHeight'
+#2#13#13'Items.Strings'#1#6#9'(I)nteger'#6#16'(F)loating point'#6#8'(S)tring'
+#6#7'(M)oney'#6#6'(D)ate'#0#9'MaxLength'#2#0#8'OnChange'#7#13'TypeBoxChange'
+#8'TabOrder'#2#15#4'Text'#6#4'Type'#0#0#11'TOpenDialog'#11'OpenDialog1'#5'Ti'
+'tle'#6#18'Open existing file'#11'FilterIndex'#2#0#4'left'#3#240#0#3'top'#3
+#192#0#0#0#0
]);

View File

@ -0,0 +1,348 @@
unit FriedmanUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, Buttons, MainUnit, Globals, OutPutUnit, DataProcs, Math,
FunctionsLib, MatrixLib, contexthelpunit;
type
{ TFriedmanFrm }
TFriedmanFrm = class(TForm)
HelpBtn: TButton;
ResetBtn: TButton;
CancelBtn: TButton;
ComputeBtn: TButton;
ReturnBtn: TButton;
GrpVar: TEdit;
GrpIn: TBitBtn;
GrpOut: TBitBtn;
Label2: TLabel;
Label3: TLabel;
TreatVars: TListBox;
TrtIn: TBitBtn;
TrtOut: TBitBtn;
Label1: TLabel;
VarList: TListBox;
procedure ComputeBtnClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure GrpInClick(Sender: TObject);
procedure GrpOutClick(Sender: TObject);
procedure HelpBtnClick(Sender: TObject);
procedure ResetBtnClick(Sender: TObject);
procedure TrtInClick(Sender: TObject);
procedure TrtOutClick(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
FriedmanFrm: TFriedmanFrm;
implementation
{ TFriedmanFrm }
procedure TFriedmanFrm.ResetBtnClick(Sender: TObject);
VAR i : integer;
begin
VarList.Items.Clear;
TreatVars.Items.Clear;
GrpVar.Text := '';
for i := 1 to NoVariables do
begin
VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]);
end;
GrpIn.Visible := true;
GrpOut.Visible := false;
TrtIn.Visible := true;
TrtOut.Visible := false;
end;
procedure TFriedmanFrm.TrtInClick(Sender: TObject);
VAR i, index : integer;
begin
index := VarList.Items.Count;
i := 0;
while i < index do
begin
if (VarList.Selected[i]) then
begin
TreatVars.Items.Add(VarList.Items.Strings[i]);
VarList.Items.Delete(i);
index := index - 1;
i := 0;
end
else i := i + 1;
end;
TrtOut.Visible := true;
end;
procedure TFriedmanFrm.TrtOutClick(Sender: TObject);
VAR index : integer;
begin
index := TreatVars.ItemIndex;
if index < 0 then
begin
TrtOut.Visible := false;
TrtIn.Visible := true;
exit;
end;
VarList.Items.Add(TreatVars.Items.Strings[index]);
TreatVars.Items.Delete(index);
TrtIn.Visible := true;
end;
procedure TFriedmanFrm.FormShow(Sender: TObject);
begin
ResetBtnClick(self);
end;
procedure TFriedmanFrm.ComputeBtnClick(Sender: TObject);
Var
i, j, k, L, col, itemp, GrpCol, CondVar, mingrp, maxgrp : integer;
tiestart, tieend, NoSelected, NCases, group, nogrps : integer;
s, t, TotRanks, chisqr, probchi, score : double;
X, ColRanks : DblDyneVec;
Ranks, means : DblDyneMat;
RowLabels, ColLabels : StrDyneVec;
index : IntDyneVec;
GrpNo : IntdyneMat;
cellstring, outline: string;
title : string;
ties : boolean;
ColNoSelected : IntDyneVec;
begin
k := TreatVars.Items.Count;
NoSelected := k + 1;
SetLength(ColNoSelected,NoVariables);
SetLength(ColLabels,NoVariables);
// get group variable and treatment variables
GrpCol := 0;
for i := 1 to NoVariables do
begin
cellstring := OS3MainFrm.DataGrid.Cells[i,0];
if cellstring = GrpVar.Text then
begin
ColNoSelected[0] := i;
GrpCol := i;
end;
for j := 1 to k do
begin
if cellstring = TreatVars.Items.Strings[j-1] then
begin
ColNoSelected[j] := i;
ColLabels[j-1] := cellstring;
end;
end;
end;
// get minimum and maximum group codes
NCases := 0;
mingrp := 10000;
maxgrp := -10000;
for i := 1 to NoCases do
begin
if not GoodRecord(i,NoSelected,ColNoSelected) then continue;
NCases := NCases + 1;
group := round(StrToFloat(Trim(OS3MainFrm.DataGrid.Cells[GrpCol,i])));
if group > maxgrp then maxgrp := group;
if group < mingrp then mingrp := group;
end;
nogrps := maxgrp - mingrp + 1;
// Initialize arrays
SetLength(RowLabels,nogrps);
SetLength(index,k);
SetLength(GrpNo,nogrps,k);
SetLength(Ranks,nogrps,k);
SetLength(means,nogrps,k);
SetLength(X,k);
SetLength(ColRanks,k);
for j := 0 to k-1 do
begin
for i := 0 to nogrps-1 do
begin
means[i,j] := 0.0;
Ranks[i,j] := 0.0;
GrpNo[i,j] := 0;
end;
ColRanks[j] := 0.0;
X[j] := 0.0;
index[j] := j+1;
end;
// Initialize labels
for i := 1 to nogrps do
begin
cellstring := format('Group %d',[mingrp + i - 1]);
RowLabels[i-1] := cellstring;
end;
// Setup for printing results
OutPutFrm.RichEdit.Clear;
OutPutFrm.RichEdit.Lines.Add('FRIEDMAN TWO-WAY ANOVA ON RANKS');
OutPutFrm.RichEdit.Lines.Add('See pages 166-173 in S. Siegel''s Nonparametric Statistics');
OutPutFrm.RichEdit.Lines.Add('for the Behavioral Sciences, McGraw-Hill Book Co., New York, 1956');
OutPutFrm.RichEdit.Lines.Add('');
// Obtain mean score for each cell
for i := 1 to NoCases do
begin
if ( not GoodRecord(i,NoSelected,ColNoSelected)) then continue;
group := round(StrToFloat(Trim(OS3MainFrm.DataGrid.Cells[GrpCol,i])));
group := group - mingrp + 1;
for j := 1 to k do // treatment values
begin
col := ColNoSelected[j];
score := StrToFloat(Trim(OS3MainFrm.DataGrid.Cells[col,i]));
means[group-1,j-1] := means[group-1,j-1] + score;
GrpNo[group-1,j-1] := GrpNo[group-1,j-1] + 1;
end;
end;
for i := 1 to nogrps do
for j := 1 to k do
means[i-1,j-1] := means[i-1,j-1] / GrpNo[i-1,j-1];
// Print means and group size arrays
title := 'Treatment means - values to be ranked.';
MAT_PRINT(means,nogrps,k,title,RowLabels,ColLabels,NCases);
title := 'Number in each group''s treatment.';
IntArrayPrint(GrpNo,nogrps,k,'GROUP',RowLabels,ColLabels,title);
// Gather row data in X array and rank within rows
for i := 0 to nogrps-1 do
begin
for j := 0 to k-1 do
begin
X[j] := means[i,j];
index[j] := j+1;
end;
//rank scores in this row i
for j := 1 to k - 1 do
begin
for L := j + 1 to k do
begin
if (X[j-1] > X[L-1]) then
begin
t := X[j-1];
X[j-1] := X[L-1];
X[L-1] := t;
itemp := index[j-1];
index[j-1] := index[L-1];
index[L-1] := itemp;
end;
end;
end;
for j := 1 to k do
begin
Ranks[i,index[j-1]-1] := j;
end;
//Check for tied ranks and use average if desired here
tiestart := 0;
tieend := 0;
ties := false;
j := 1;
while j < k do
begin
for L := j + 1 to k do
begin
if (means[i,j-1] = means[i,L-1]) then
begin
ties := true;
tiestart := j;
tieend := L;
end;
end;
if (ties = true) then
begin
s := 0.0;
for L := tiestart to tieend do s := s + Ranks[i,L-1];
for L := tiestart to tieend do
Ranks[i,L-1] := s / (tieend - tiestart + 1);
j := tieend;
ties := false;
end;
j := j + 1;
end; // next j
end; // next group i
//Get sum of ranks in columns
for i := 1 to nogrps do
for j := 1 to k do
ColRanks[j-1] := ColRanks[j-1] + Ranks[i-1,j-1];
//Calculate Statistics
TotRanks := 0;
for j := 1 to k do TotRanks := TotRanks + (ColRanks[j-1] * ColRanks[j-1]);
chisqr := TotRanks * 12.0 / (nogrps * k * (k + 1));
chisqr := chisqr - (3 * nogrps * (k + 1));
probchi := 1.0 - chisquaredprob(chisqr, k - 1);
//Now, show results
title := 'Score Rankings Within Groups';
MAT_PRINT(Ranks,nogrps,k,title,RowLabels,ColLabels,NCases);
title := 'TOTAL RANKS';
DynVectorPrint(ColRanks,k,title,ColLabels,NCases);
OutPutFrm.RichEdit.Lines.Add('');
outline := format('Chi-square with %d D.F. := %8.3f with probability := %6.4f',
[k-1, chisqr, probchi]);
OutPutFrm.RichEdit.Lines.Add(outline);
if ((k < 5) and (nogrps < 10)) then
begin
OutPutFrm.RichEdit.Lines.Add('Chi-square too approximate-use exact table (TABLE N)');
OutPutFrm.RichEdit.Lines.Add('page 280-281 in Siegel');
end;
OutPutFrm.ShowModal;
OutPutFrm.RichEdit.Clear;
// clean up the heap
ColRanks := nil;
X := nil;
means := nil;
Ranks := nil;
GrpNo := nil;
index := nil;
RowLabels := nil;
ColLabels := nil;
ColNoSelected := nil;
end;
procedure TFriedmanFrm.GrpInClick(Sender: TObject);
VAR index : integer;
begin
index := VarList.ItemIndex;
GrpVar.Text := VarList.Items.Strings[index];
VarList.Items.Delete(index);
GrpIn.Visible := false;
GrpOut.Visible := true;
end;
procedure TFriedmanFrm.GrpOutClick(Sender: TObject);
begin
VarList.Items.Add(GrpVar.Text);
GrpVar.Text := '';
GrpIn.Visible := true;
GrpOut.Visible := false;
end;
procedure TFriedmanFrm.HelpBtnClick(Sender: TObject);
begin
ContextHelpForm.HelpMessage((Sender as TButton).tag);
end;
initialization
{$I friedmanunit.lrs}
end.

View File

@ -0,0 +1,286 @@
object FriedmanFrm: TFriedmanFrm
Left = 121
Height = 299
Top = 109
Width = 498
Caption = 'The Friedman Two Way ANOVA on Ranks'
ClientHeight = 299
ClientWidth = 498
OnShow = FormShow
LCLVersion = '0.9.28.2'
object Label1: TLabel
Left = 8
Height = 14
Top = 6
Width = 90
Caption = 'Available Variables'
ParentColor = False
end
object Label2: TLabel
Left = 217
Height = 14
Top = 15
Width = 71
Caption = 'Group Variable'
ParentColor = False
end
object Label3: TLabel
Left = 216
Height = 14
Top = 102
Width = 97
Caption = 'Treatment Variables'
ParentColor = False
end
object VarList: TListBox
Left = 8
Height = 259
Top = 22
Width = 157
ItemHeight = 0
MultiSelect = True
TabOrder = 0
end
object GrpIn: TBitBtn
Left = 176
Height = 31
Top = 23
Width = 34
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE
6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580
3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3
71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7
74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7
74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = GrpInClick
TabOrder = 1
end
object GrpOut: TBitBtn
Left = 176
Height = 31
Top = 56
Width = 34
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = GrpOutClick
TabOrder = 2
end
object TrtIn: TBitBtn
Left = 176
Height = 31
Top = 104
Width = 34
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE
6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580
3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3
71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7
74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7
74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = TrtInClick
TabOrder = 3
end
object TrtOut: TBitBtn
Left = 176
Height = 31
Top = 136
Width = 34
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = TrtOutClick
TabOrder = 4
end
object GrpVar: TEdit
Left = 216
Height = 21
Top = 33
Width = 152
TabOrder = 5
Text = 'GrpVar'
end
object TreatVars: TListBox
Left = 217
Height = 161
Top = 120
Width = 153
ItemHeight = 0
TabOrder = 6
end
object ResetBtn: TButton
Left = 400
Height = 34
Top = 112
Width = 80
Caption = 'Reset'
OnClick = ResetBtnClick
TabOrder = 7
end
object CancelBtn: TButton
Left = 400
Height = 33
Top = 56
Width = 82
Caption = 'Cancel'
ModalResult = 2
TabOrder = 8
end
object ComputeBtn: TButton
Left = 400
Height = 32
Top = 168
Width = 80
Caption = 'Compute'
OnClick = ComputeBtnClick
TabOrder = 9
end
object ReturnBtn: TButton
Left = 400
Height = 34
Top = 224
Width = 80
Caption = 'Return'
ModalResult = 1
TabOrder = 10
end
object HelpBtn: TButton
Tag = 124
Left = 400
Height = 32
Top = 8
Width = 82
Caption = 'Help'
OnClick = HelpBtnClick
TabOrder = 11
end
end

View File

@ -0,0 +1,234 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TFriedmanFrm','FORMDATA',[
'TPF0'#12'TFriedmanFrm'#11'FriedmanFrm'#4'Left'#2'y'#6'Height'#3'+'#1#3'Top'#2
+'m'#5'Width'#3#242#1#7'Caption'#6'#The Friedman Two Way ANOVA on Ranks'#12'C'
+'lientHeight'#3'+'#1#11'ClientWidth'#3#242#1#6'OnShow'#7#8'FormShow'#10'LCLV'
+'ersion'#6#8'0.9.28.2'#0#6'TLabel'#6'Label1'#4'Left'#2#8#6'Height'#2#14#3'To'
+'p'#2#6#5'Width'#2'Z'#7'Caption'#6#19'Available Variables'#11'ParentColor'#8
+#0#0#6'TLabel'#6'Label2'#4'Left'#3#217#0#6'Height'#2#14#3'Top'#2#15#5'Width'
+#2'G'#7'Caption'#6#14'Group Variable'#11'ParentColor'#8#0#0#6'TLabel'#6'Labe'
+'l3'#4'Left'#3#216#0#6'Height'#2#14#3'Top'#2'f'#5'Width'#2'a'#7'Caption'#6#19
+'Treatment Variables'#11'ParentColor'#8#0#0#8'TListBox'#7'VarList'#4'Left'#2
+#8#6'Height'#3#3#1#3'Top'#2#22#5'Width'#3#157#0#10'ItemHeight'#2#0#11'MultiS'
+'elect'#9#8'TabOrder'#2#0#0#0#7'TBitBtn'#5'GrpIn'#4'Left'#3#176#0#6'Height'#2
+#31#3'Top'#2#23#5'Width'#2'"'#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0
+#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0
+#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0'!c$'#184#29'^ '#6#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0'*p/8%i)'#247'!c$'#217#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'
+#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'?'#136'E'#255'Y'
+#161'^'#255'D'#139'I'#255'!c$'#207#255#255#255#0#255#255#255#0#255#255#255#0
+'e'#195'q'#255#160#215#169#255#156#213#165#255#152#211#161#255#148#208#157
+#255#144#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195
+#132#255'z'#193#128#255'v'#190'|'#255'E'#140'J'#255'!c$'#196#255#255#255#0
+#255#255#255#0'h'#199't'#255#165#218#174#255#162#216#171#255#158#214#167#255
+#154#212#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144
+#255#133#199#139#255#129#197#135#255'}'#194#130#255'J'#145'P'#255'%i)'#201
+#255#255#255#0#255#255#255#0'h'#199't'#255'h'#199't'#255'e'#195'q'#255'a'#190
+'m'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255
+'A'#145'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'#209#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0'A'#145'I'#247';'#136'B'#219#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0'G'#153'O'#187'A'#145'I'#6#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#9'NumGlyphs'#2#0#7'OnClick'#7#10'GrpInClick'#8'TabOrder'#2#1#0#0#7'TBitBtn'
+#6'GrpOut'#4'Left'#3#176#0#6'Height'#2#31#3'Top'#2'8'#5'Width'#2'"'#10'Glyph'
+'.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16
,#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0'M'#161'V'#6'G'#153'O'#184#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0'S'#169'\'#217'M'#161'V'#247'G'#153'O8'#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131#255'['#170'd'#255'G'#153'O'#255
+'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255'%i)'#255'!c$'
+#255#29'^ '#255#255#255#255#0#255#255#255#0'e'#195'q'#196'{'#200#134#255#156
+#213#165#255#152#211#161#255#148#208#157#255#144#206#152#255#139#203#147#255
+#135#201#142#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255
+'r'#189'x'#255'!c$'#255#255#255#255#0#255#255#255#0'h'#199't'#201#127#204#138
+#255#162#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207
+#154#255#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'
+#194#130#255'x'#192'~'#255'%i)'#255#255#255#255#0#255#255#255#0#255#255#255#0
+'h'#199't'#209#128#205#139#255'|'#201#135#255']'#184'h'#255'X'#177'b'#255'S'
+#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'
+#255'/x5'#255'*p/'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0'h'#199't'#219'e'#195'q'#247#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+'h'#199't'#6'h'#199't'#187#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#11'GrpOutClick'#8
+'TabOrder'#2#2#0#0#7'TBitBtn'#5'TrtIn'#4'Left'#3#176#0#6'Height'#2#31#3'Top'
+#2'h'#5'Width'#2'"'#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'
+#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0
+#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
,#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0'!c$'#184#29'^ '#6#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'*p/8%'
+'i)'#247'!c$'#217#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'a'
+#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'
+#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'?'#136'E'#255'Y'#161'^'#255'D'
+#139'I'#255'!c$'#207#255#255#255#0#255#255#255#0#255#255#255#0'e'#195'q'#255
+#160#215#169#255#156#213#165#255#152#211#161#255#148#208#157#255#144#206#152
+#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255'z'#193
+#128#255'v'#190'|'#255'E'#140'J'#255'!c$'#196#255#255#255#0#255#255#255#0'h'
+#199't'#255#165#218#174#255#162#216#171#255#158#214#167#255#154#212#163#255
+#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255#133#199#139
+#255#129#197#135#255'}'#194#130#255'J'#145'P'#255'%i)'#201#255#255#255#0#255
+#255#255#0'h'#199't'#255'h'#199't'#255'e'#195'q'#255'a'#190'm'#255']'#184'h'
+#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255'Z'
+#163'b'#255'U'#157'\'#255'/x5'#209#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'A'#145'I'
+#247';'#136'B'#219#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'G'#153'O'
+#187'A'#145'I'#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7
+'OnClick'#7#10'TrtInClick'#8'TabOrder'#2#3#0#0#7'TBitBtn'#6'TrtOut'#4'Left'#3
+#176#0#6'Height'#2#31#3'Top'#3#136#0#5'Width'#2'"'#10'Glyph.Data'#10':'#4#0#0
+'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0
+#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0'M'#161'V'#6'G'#153'O'#184#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0'S'#169'\'#217'M'#161'V'#247'G'#153'O8'#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0']'#184'h'
+#207'q'#190'{'#255'z'#193#131#255'['#170'd'#255'G'#153'O'#255'A'#145'I'#255
+';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255
+#255#255#255#0#255#255#255#0'e'#195'q'#196'{'#200#134#255#156#213#165#255#152
+#211#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142#255
+#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!'
+'c$'#255#255#255#255#0#255#255#255#0'h'#199't'#201#127#204#138#255#162#216
,#171#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255#142
+#204#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130#255
+'x'#192'~'#255'%i)'#255#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'
+#209#128#205#139#255'|'#201#135#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255
+'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'
+#255'*p/'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199
+'t'#219'e'#195'q'#247#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'
+#6'h'#199't'#187#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#11'TrtOutClick'#8'TabOrde'
+'r'#2#4#0#0#5'TEdit'#6'GrpVar'#4'Left'#3#216#0#6'Height'#2#21#3'Top'#2'!'#5
+'Width'#3#152#0#8'TabOrder'#2#5#4'Text'#6#6'GrpVar'#0#0#8'TListBox'#9'TreatV'
+'ars'#4'Left'#3#217#0#6'Height'#3#161#0#3'Top'#2'x'#5'Width'#3#153#0#10'Item'
+'Height'#2#0#8'TabOrder'#2#6#0#0#7'TButton'#8'ResetBtn'#4'Left'#3#144#1#6'He'
+'ight'#2'"'#3'Top'#2'p'#5'Width'#2'P'#7'Caption'#6#5'Reset'#7'OnClick'#7#13
+'ResetBtnClick'#8'TabOrder'#2#7#0#0#7'TButton'#9'CancelBtn'#4'Left'#3#144#1#6
+'Height'#2'!'#3'Top'#2'8'#5'Width'#2'R'#7'Caption'#6#6'Cancel'#11'ModalResul'
+'t'#2#2#8'TabOrder'#2#8#0#0#7'TButton'#10'ComputeBtn'#4'Left'#3#144#1#6'Heig'
+'ht'#2' '#3'Top'#3#168#0#5'Width'#2'P'#7'Caption'#6#7'Compute'#7'OnClick'#7
+#15'ComputeBtnClick'#8'TabOrder'#2#9#0#0#7'TButton'#9'ReturnBtn'#4'Left'#3
+#144#1#6'Height'#2'"'#3'Top'#3#224#0#5'Width'#2'P'#7'Caption'#6#6'Return'#11
+'ModalResult'#2#1#8'TabOrder'#2#10#0#0#7'TButton'#7'HelpBtn'#3'Tag'#2'|'#4'L'
+'eft'#3#144#1#6'Height'#2' '#3'Top'#2#8#5'Width'#2'R'#7'Caption'#6#4'Help'#7
+'OnClick'#7#12'HelpBtnClick'#8'TabOrder'#2#11#0#0#0
]);

View File

@ -0,0 +1,217 @@
unit FunctionsUnit;
{$MODE Delphi}
interface
uses SysUtils, ItemBankGlobals;
function ReadMCItem(item : integer; VAR R3 : MCItemRcd) : boolean;
function ReadTFItem(item : integer; VAR R5 : TFItemRcd) : boolean;
function ReadMAItem(item : integer; VAR R1 : MatchItemsRcd) : boolean;
function ReadCOItem(item : integer; VAR R2 : BlankItemRcd) : boolean;
function ReadESItem(item : integer; VAR R4 : EssayItemRcd) : boolean;
procedure WriteMCItem(item : integer; VAR R3 : MCItemRcd);
procedure WriteTFItem(item : integer; VAR R5 : TFItemRcd);
procedure WriteMAItem(item : integer; VAR R1 : MatchItemsRcd);
procedure WriteCOItem(item : integer; VAR R2 : BlankItemRcd);
procedure WriteESItem(item : integer; VAR R4 : EssayItemRcd);
implementation
function ReadMCItem(item : integer; VAR R3 : MCItemRcd) : boolean;
var
found : boolean;
F3 : File of MCItemRcd;
filename : string;
begin
found := false;
if FileExists(MCFName) { *Converted from FileExists* } then // multiple choice items
begin
filename := MCFName;
AssignFile(F3,filename);
Reset(F3);
Seek(F3,item-1);
Read(F3,R3);
found := true;
end;
CloseFile(F3);
Result := found;
end;
//-------------------------------------------------------------------
function ReadTFItem(item : integer; VAR R5 : TFItemRcd) : boolean;
var
found : boolean;
F5 : File of TFItemRcd;
filename : string;
begin
found := false;
if FileExists(TFFName) { *Converted from FileExists* } then // true-false items
begin
filename := TFFName;
AssignFile(F5,filename);
Reset(F5);
Seek(F5,item-1);
Read(F5,R5);
found := true;
end;
CloseFile(F5);
Result := found;
end;
//-------------------------------------------------------------------
function ReadMAItem(item : integer; VAR R1 : MatchItemsRcd) : boolean;
var
found : boolean;
F1 : File of MatchItemsRcd;
filename : string;
begin
found := false;
if FileExists(MatchFName) { *Converted from FileExists* } then // matching items
begin
filename := MatchFName;
AssignFile(F1,filename);
Reset(F1);
Seek(F1,item-1);
Read(F1,R1);
found := true;
end;
CloseFile(F1);
Result := found;
end;
//-------------------------------------------------------------------
function ReadCOItem(item : integer; VAR R2 : BlankItemRcd) : boolean;
var
found : boolean;
F2 : File of BlankItemRcd;
filename : string;
begin
found := false;
if FileExists(BlankFName) { *Converted from FileExists* } then // completion items
begin
filename := BlankFName;
AssignFile(F2,filename);
Reset(F2);
Seek(F2,item-1);
Read(F2,R2);
found := true;
end;
CloseFile(F2);
Result := found;
end;
//-------------------------------------------------------------------
function ReadESItem(item : integer; VAR R4 : EssayItemRcd) : boolean;
var
found : boolean;
F4 : File of EssayItemRcd;
filename : string;
begin
found := false;
if FileExists(EssayFName) { *Converted from FileExists* } then // essay items
begin
filename := EssayFName;
AssignFile(F4,filename);
Reset(F4);
Seek(F4,item-1);
Read(F4,R4);
found := true;
end;
CloseFile(F4);
Result := found;
end;
//-------------------------------------------------------------------
procedure WriteMCItem(item : integer; VAR R3 : MCItemRcd);
var
F3 : File of MCItemRcd;
filename : string;
begin
if FileExists(MCFName) { *Converted from FileExists* } then // multiple choice items
begin
filename := MCFName;
AssignFile(F3,filename);
Reset(F3);
Seek(F3,item-1);
write(F3,R3);
end;
CloseFile(F3);
end;
//-------------------------------------------------------------------
procedure WriteTFItem(item : integer; VAR R5 : TFItemRcd);
var
F5 : File of TFItemRcd;
filename : string;
begin
if FileExists(TFFName) { *Converted from FileExists* } then // true-false items
begin
filename := TFFName;
AssignFile(F5,filename);
Reset(F5);
Seek(F5,item-1);
write(F5,R5);
end;
CloseFile(F5);
end;
//-------------------------------------------------------------------
procedure WriteMAItem(item : integer; VAR R1 : MatchItemsRcd);
var
F1 : File of MatchItemsRcd;
filename : string;
begin
if FileExists(MatchFName) { *Converted from FileExists* } then // matching items
begin
filename := MatchFName;
AssignFile(F1,filename);
Reset(F1);
Seek(F1,item-1);
write(F1,R1);
end;
CloseFile(F1);
end;
//-------------------------------------------------------------------
procedure WriteCOItem(item : integer; VAR R2 : BlankItemRcd);
var
F2 : File of BlankItemRcd;
filename : string;
begin
if FileExists(BlankFName) { *Converted from FileExists* } then // completion items
begin
filename := BlankFName;
AssignFile(F2,filename);
Reset(F2);
Seek(F2,item-1);
write(F2,R2);
end;
CloseFile(F2);
end;
//-------------------------------------------------------------------
procedure WriteESItem(item : integer; VAR R4 : EssayItemRcd);
var
F4 : File of EssayItemRcd;
filename : string;
begin
if FileExists(EssayFName) { *Converted from FileExists* } then // essay items
begin
filename := EssayFName;
AssignFile(F4,filename);
Reset(F4);
Seek(F4,item-1);
write(F4,R4);
end;
CloseFile(F4);
end;
//-------------------------------------------------------------------
end.

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,202 @@
object SmoothDataForm: TSmoothDataForm
Left = 288
Height = 360
Top = 161
Width = 378
Caption = 'Data Smoothing'
ClientHeight = 360
ClientWidth = 378
OnShow = ResetBtnClick
LCLVersion = '0.9.30'
object Memo1: TMemo
Left = 6
Height = 79
Top = 9
Width = 362
Lines.Strings = (
'This procedure creates a new variable with the label "smoothed"'
'with data points created from the selected variable. Each new'
'data point is the average of the immediately preceding value and '
'the immediately following value. New values are therefore '
'created for the 2nd, 3rd,...,and N-1 values. The process can be'
'repeated multiple times.'
)
TabOrder = 0
end
object Label2: TLabel
Left = 8
Height = 16
Top = 96
Width = 48
Caption = 'Variables'
ParentColor = False
end
object VarList: TListBox
Left = 8
Height = 225
Top = 112
Width = 166
ItemHeight = 0
MultiSelect = True
TabOrder = 1
end
object InBtn: TBitBtn
Left = 184
Height = 39
Top = 112
Width = 38
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE
6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580
3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3
71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7
74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7
74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = InBtnClick
TabOrder = 2
end
object OutBtn: TBitBtn
Left = 184
Height = 39
Top = 160
Width = 38
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = OutBtnClick
TabOrder = 3
end
object VariableEdit: TEdit
Left = 232
Height = 23
Top = 139
Width = 132
TabOrder = 4
Text = 'VariableEdit'
end
object Label1: TLabel
Left = 185
Height = 16
Top = 214
Width = 101
Caption = 'Repeat smoothing '
ParentColor = False
end
object RepeatEdit: TEdit
Left = 296
Height = 23
Top = 207
Width = 31
TabOrder = 5
Text = 'RepeatEdit'
end
object Label3: TLabel
Left = 331
Height = 16
Top = 214
Width = 33
Caption = 'times.'
ParentColor = False
end
object ResetBtn: TButton
Left = 282
Height = 32
Top = 264
Width = 80
Caption = 'Reset'
OnClick = ResetBtnClick
TabOrder = 6
end
object CancelBtn: TButton
Left = 184
Height = 30
Top = 304
Width = 82
Caption = 'Cancel'
ModalResult = 2
TabOrder = 7
end
object ComputeBtn: TButton
Left = 282
Height = 30
Top = 304
Width = 80
Caption = 'Compute'
ModalResult = 1
OnClick = ComputeBtnClick
TabOrder = 8
end
object HelpBtn: TButton
Tag = 119
Left = 184
Height = 32
Top = 264
Width = 82
Caption = 'Help'
TabOrder = 9
end
end

View File

@ -0,0 +1,136 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TSmoothDataForm','FORMDATA',[
'TPF0'#15'TSmoothDataForm'#14'SmoothDataForm'#4'Left'#3' '#1#6'Height'#3'h'#1
+#3'Top'#3#161#0#5'Width'#3'z'#1#7'Caption'#6#14'Data Smoothing'#12'ClientHei'
+'ght'#3'h'#1#11'ClientWidth'#3'z'#1#6'OnShow'#7#13'ResetBtnClick'#10'LCLVers'
+'ion'#6#6'0.9.30'#0#5'TMemo'#5'Memo1'#4'Left'#2#6#6'Height'#2'O'#3'Top'#2#9#5
+'Width'#3'j'#1#13'Lines.Strings'#1#6'?This procedure creates a new variable '
+'with the label "smoothed"'#6'>with data points created from the selected va'
+'riable. Each new'#6'Adata point is the average of the immediately precedin'
+'g value and '#6';the immediately following value. New values are therefore'
+' '#6'@created for the 2nd, 3rd,...,and N-1 values. The process can be'#6#24
+'repeated multiple times.'#0#8'TabOrder'#2#0#0#0#6'TLabel'#6'Label2'#4'Left'
+#2#8#6'Height'#2#16#3'Top'#2'`'#5'Width'#2'0'#7'Caption'#6#9'Variables'#11'P'
+'arentColor'#8#0#0#8'TListBox'#7'VarList'#4'Left'#2#8#6'Height'#3#225#0#3'To'
+'p'#2'p'#5'Width'#3#166#0#10'ItemHeight'#2#0#11'MultiSelect'#9#8'TabOrder'#2
+#1#0#0#7'TBitBtn'#5'InBtn'#4'Left'#3#184#0#6'Height'#2''''#3'Top'#2'p'#5'Wid'
+'th'#2'&'#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('
+#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0
+#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0'!c$'#184#29'^ '#6#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'*p/8%i)'#247
+'!c$'#217#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'a'#190'm'
+#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'
+#145'I'#255';'#136'B'#255'5'#128';'#255'?'#136'E'#255'Y'#161'^'#255'D'#139'I'
+#255'!c$'#207#255#255#255#0#255#255#255#0#255#255#255#0'e'#195'q'#255#160#215
+#169#255#156#213#165#255#152#211#161#255#148#208#157#255#144#206#152#255#139
+#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'
+#190'|'#255'E'#140'J'#255'!c$'#196#255#255#255#0#255#255#255#0'h'#199't'#255
+#165#218#174#255#162#216#171#255#158#214#167#255#154#212#163#255#150#210#159
+#255#147#207#154#255#142#204#149#255#137#202#144#255#133#199#139#255#129#197
+#135#255'}'#194#130#255'J'#145'P'#255'%i)'#201#255#255#255#0#255#255#255#0'h'
+#199't'#255'h'#199't'#255'e'#195'q'#255'a'#190'm'#255']'#184'h'#255'X'#177'b'
+#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255'Z'#163'b'#255'U'
+#157'\'#255'/x5'#209#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'A'#145'I'#247';'#136'B'
+#219#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'G'#153'O'#187'A'#145'I'
+#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#10
,'InBtnClick'#8'TabOrder'#2#2#0#0#7'TBitBtn'#6'OutBtn'#4'Left'#3#184#0#6'Heig'
+'ht'#2''''#3'Top'#3#160#0#5'Width'#2'&'#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0
+'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4
+#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0'M'#161'V'#6'G'#153'O'#184#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0'S'#169'\'#217'M'#161'V'#247'G'#153'O8'#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0']'#184'h'#207
+'q'#190'{'#255'z'#193#131#255'['#170'd'#255'G'#153'O'#255'A'#145'I'#255';'
+#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255#255
+#255#255#0#255#255#255#0'e'#195'q'#196'{'#200#134#255#156#213#165#255#152#211
+#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142#255#130
+#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!c$'
+#255#255#255#255#0#255#255#255#0'h'#199't'#201#127#204#138#255#162#216#171
+#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255#142#204
+#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130#255'x'
+#192'~'#255'%i)'#255#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#209
+#128#205#139#255'|'#201#135#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'
+#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255
+'*p/'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'
+#219'e'#195'q'#247#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'
+#6'h'#199't'#187#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#11'OutBtnClick'#8'TabOrde'
+'r'#2#3#0#0#5'TEdit'#12'VariableEdit'#4'Left'#3#232#0#6'Height'#2#23#3'Top'#3
+#139#0#5'Width'#3#132#0#8'TabOrder'#2#4#4'Text'#6#12'VariableEdit'#0#0#6'TLa'
+'bel'#6'Label1'#4'Left'#3#185#0#6'Height'#2#16#3'Top'#3#214#0#5'Width'#2'e'#7
+'Caption'#6#17'Repeat smoothing '#11'ParentColor'#8#0#0#5'TEdit'#10'RepeatEd'
+'it'#4'Left'#3'('#1#6'Height'#2#23#3'Top'#3#207#0#5'Width'#2#31#8'TabOrder'#2
+#5#4'Text'#6#10'RepeatEdit'#0#0#6'TLabel'#6'Label3'#4'Left'#3'K'#1#6'Height'
+#2#16#3'Top'#3#214#0#5'Width'#2'!'#7'Caption'#6#6'times.'#11'ParentColor'#8#0
+#0#7'TButton'#8'ResetBtn'#4'Left'#3#26#1#6'Height'#2' '#3'Top'#3#8#1#5'Width'
+#2'P'#7'Caption'#6#5'Reset'#7'OnClick'#7#13'ResetBtnClick'#8'TabOrder'#2#6#0
+#0#7'TButton'#9'CancelBtn'#4'Left'#3#184#0#6'Height'#2#30#3'Top'#3'0'#1#5'Wi'
+'dth'#2'R'#7'Caption'#6#6'Cancel'#11'ModalResult'#2#2#8'TabOrder'#2#7#0#0#7
+'TButton'#10'ComputeBtn'#4'Left'#3#26#1#6'Height'#2#30#3'Top'#3'0'#1#5'Width'
,#2'P'#7'Caption'#6#7'Compute'#11'ModalResult'#2#1#7'OnClick'#7#15'ComputeBtn'
+'Click'#8'TabOrder'#2#8#0#0#7'TButton'#7'HelpBtn'#3'Tag'#2'w'#4'Left'#3#184#0
+#6'Height'#2' '#3'Top'#3#8#1#5'Width'#2'R'#7'Caption'#6#4'Help'#8'TabOrder'#2
+#9#0#0#0
]);

View File

@ -0,0 +1,122 @@
unit DataSmoothUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, Buttons, MainUnit, Globals, functionsLib, OutPutUnit, DataProcs,
DictionaryUnit, contexthelpunit;
type
{ TSmoothDataForm }
TSmoothDataForm = class(TForm)
CancelBtn: TButton;
HelpBtn: TButton;
Label3: TLabel;
ComputeBtn: TButton;
RepeatEdit: TEdit;
Label1: TLabel;
ResetBtn: TButton;
VariableEdit: TEdit;
InBtn: TBitBtn;
Label2: TLabel;
Memo1: TMemo;
OutBtn: TBitBtn;
VarList: TListBox;
procedure ComputeBtnClick(Sender: TObject);
procedure InBtnClick(Sender: TObject);
procedure OutBtnClick(Sender: TObject);
procedure ResetBtnClick(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
SmoothDataForm: TSmoothDataForm;
implementation
{ TSmoothDataForm }
procedure TSmoothDataForm.ResetBtnClick(Sender: TObject);
VAR i : integer;
begin
VarList.Clear;
for i := 1 to NoVariables do
VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]);
RepeatEdit.Text := '1';
VariableEdit.Text := '';
InBtn.Visible := true;
OutBtn.Visible := false;
end;
procedure TSmoothDataForm.InBtnClick(Sender: TObject);
VAR index : integer;
begin
index := VarList.ItemIndex;
VariableEdit.Text := VarList.Items.Strings[index];
VarList.Items.Delete(index);
InBtn.Visible := false;
OutBtn.Visible := true;
end;
procedure TSmoothDataForm.ComputeBtnClick(Sender: TObject);
VAR
DataPts, OutPts : DblDyneVec;
value, dblvalue, avg : double;
VarCol, result, N, Reps, intvalue, i, j, col : integer;
varlabel, strvalue : string;
begin
N := NoCases;
SetLength(DataPts,N);
SetLength(OutPts,N);
Reps := StrToInt(RepeatEdit.Text);
varlabel := VariableEdit.Text;
for i := 1 to NoVariables do
if varlabel = OS3MainFrm.DataGrid.Cells[i,0] then VarCol := i;
for i := 1 to N do
begin
value := StrToFloat(OS3MainFrm.DataGrid.Cells[VarCol,i]);
DataPts[i-1] := value;
end;
// repeat smoothing for Reps times
OutPts[0] := DataPts[0];
OutPts[N-1] := DataPts[N-1];
for j := 1 to Reps do
begin
for i := 1 to N-2 do
begin
avg := (DataPts[i-1] + DataPts[i] + DataPts[i+1]) / 3.0;
OutPts[i] := avg;
end;
if j < Reps then
for i := 0 to N-1 do DataPts[i] := OutPts[i];
end;
// Create a new variable and copy smoothed data into it.
strvalue := 'Smoothed';
col := NoVariables + 1;
DictionaryFrm.NewVar(NoVariables+1);
DictionaryFrm.DictGrid.Cells[1,NoVariables] := strvalue;
OS3MainFrm.DataGrid.Cells[NoVariables,0] := strvalue;
for i := 0 to N-1 do OS3MainFrm.DataGrid.Cells[col,i+1] := FloatToStr(OutPts[i]);
end;
procedure TSmoothDataForm.OutBtnClick(Sender: TObject);
begin
VarList.Items.Add(VariableEdit.Text);
VariableEdit.Text := '';
OutBtn.Visible := false;
InBtn.Visible := true;
end;
initialization
{$I datasmoothunit.lrs}
end.

View File

@ -0,0 +1,128 @@
object DblDeclineFrm: TDblDeclineFrm
Left = 120
Height = 214
Top = 126
Width = 300
Caption = 'Double Declining Value'
ClientHeight = 214
ClientWidth = 300
OnShow = FormShow
LCLVersion = '0.9.28.2'
object Label1: TLabel
Left = 9
Height = 14
Top = 16
Width = 52
Caption = 'Initial Cost'
ParentColor = False
end
object Label2: TLabel
Left = 9
Height = 14
Top = 56
Width = 77
Caption = 'Life Expectancy'
ParentColor = False
end
object Label3: TLabel
Left = 9
Height = 14
Top = 96
Width = 48
Caption = 'End Value'
ParentColor = False
end
object Label4: TLabel
Left = 9
Height = 14
Top = 136
Width = 94
Caption = 'Depreciation Period'
ParentColor = False
end
object Label5: TLabel
Left = 9
Height = 14
Top = 176
Width = 108
Caption = 'Obtained Depreciation'
ParentColor = False
end
object CostEdit: TEdit
Left = 121
Height = 21
Top = 9
Width = 60
TabOrder = 0
Text = 'CostEdit'
end
object LifeEdit: TEdit
Left = 120
Height = 21
Top = 49
Width = 60
TabOrder = 1
Text = 'Edit1'
end
object EndEdit: TEdit
Left = 120
Height = 21
Top = 89
Width = 60
TabOrder = 2
Text = 'Edit1'
end
object PeriodEdit: TEdit
Left = 120
Height = 21
Top = 129
Width = 60
TabOrder = 3
Text = 'Edit1'
end
object DeprecEdit: TEdit
Left = 120
Height = 21
Top = 169
Width = 60
TabOrder = 4
Text = 'Edit1'
end
object ResetBtn: TButton
Left = 200
Height = 29
Top = 56
Width = 80
Caption = 'Reset'
OnClick = ResetBtnClick
TabOrder = 5
end
object ComputeBtn: TButton
Left = 200
Height = 29
Top = 104
Width = 80
Caption = 'Compute'
OnClick = ComputeBtnClick
TabOrder = 6
end
object ReturnBtn: TButton
Left = 200
Height = 29
Top = 152
Width = 80
Caption = 'Return'
ModalResult = 1
TabOrder = 7
end
object HelpBtn: TButton
Tag = 118
Left = 200
Height = 32
Top = 9
Width = 82
Caption = 'Help'
OnClick = HelpBtnClick
TabOrder = 8
end
end

View File

@ -0,0 +1,32 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TDblDeclineFrm','FORMDATA',[
'TPF0'#14'TDblDeclineFrm'#13'DblDeclineFrm'#4'Left'#2'x'#6'Height'#3#214#0#3
+'Top'#2'~'#5'Width'#3','#1#7'Caption'#6#22'Double Declining Value'#12'Client'
+'Height'#3#214#0#11'ClientWidth'#3','#1#6'OnShow'#7#8'FormShow'#10'LCLVersio'
+'n'#6#8'0.9.28.2'#0#6'TLabel'#6'Label1'#4'Left'#2#9#6'Height'#2#14#3'Top'#2
+#16#5'Width'#2'4'#7'Caption'#6#12'Initial Cost'#11'ParentColor'#8#0#0#6'TLab'
+'el'#6'Label2'#4'Left'#2#9#6'Height'#2#14#3'Top'#2'8'#5'Width'#2'M'#7'Captio'
+'n'#6#15'Life Expectancy'#11'ParentColor'#8#0#0#6'TLabel'#6'Label3'#4'Left'#2
+#9#6'Height'#2#14#3'Top'#2'`'#5'Width'#2'0'#7'Caption'#6#9'End Value'#11'Par'
+'entColor'#8#0#0#6'TLabel'#6'Label4'#4'Left'#2#9#6'Height'#2#14#3'Top'#3#136
+#0#5'Width'#2'^'#7'Caption'#6#19'Depreciation Period'#11'ParentColor'#8#0#0#6
+'TLabel'#6'Label5'#4'Left'#2#9#6'Height'#2#14#3'Top'#3#176#0#5'Width'#2'l'#7
+'Caption'#6#21'Obtained Depreciation'#11'ParentColor'#8#0#0#5'TEdit'#8'CostE'
+'dit'#4'Left'#2'y'#6'Height'#2#21#3'Top'#2#9#5'Width'#2'<'#8'TabOrder'#2#0#4
+'Text'#6#8'CostEdit'#0#0#5'TEdit'#8'LifeEdit'#4'Left'#2'x'#6'Height'#2#21#3
+'Top'#2'1'#5'Width'#2'<'#8'TabOrder'#2#1#4'Text'#6#5'Edit1'#0#0#5'TEdit'#7'E'
+'ndEdit'#4'Left'#2'x'#6'Height'#2#21#3'Top'#2'Y'#5'Width'#2'<'#8'TabOrder'#2
+#2#4'Text'#6#5'Edit1'#0#0#5'TEdit'#10'PeriodEdit'#4'Left'#2'x'#6'Height'#2#21
+#3'Top'#3#129#0#5'Width'#2'<'#8'TabOrder'#2#3#4'Text'#6#5'Edit1'#0#0#5'TEdit'
+#10'DeprecEdit'#4'Left'#2'x'#6'Height'#2#21#3'Top'#3#169#0#5'Width'#2'<'#8'T'
+'abOrder'#2#4#4'Text'#6#5'Edit1'#0#0#7'TButton'#8'ResetBtn'#4'Left'#3#200#0#6
+'Height'#2#29#3'Top'#2'8'#5'Width'#2'P'#7'Caption'#6#5'Reset'#7'OnClick'#7#13
+'ResetBtnClick'#8'TabOrder'#2#5#0#0#7'TButton'#10'ComputeBtn'#4'Left'#3#200#0
+#6'Height'#2#29#3'Top'#2'h'#5'Width'#2'P'#7'Caption'#6#7'Compute'#7'OnClick'
+#7#15'ComputeBtnClick'#8'TabOrder'#2#6#0#0#7'TButton'#9'ReturnBtn'#4'Left'#3
+#200#0#6'Height'#2#29#3'Top'#3#152#0#5'Width'#2'P'#7'Caption'#6#6'Return'#11
+'ModalResult'#2#1#8'TabOrder'#2#7#0#0#7'TButton'#7'HelpBtn'#3'Tag'#2'v'#4'Le'
+'ft'#3#200#0#6'Height'#2' '#3'Top'#2#9#5'Width'#2'R'#7'Caption'#6#4'Help'#7
+'OnClick'#7#12'HelpBtnClick'#8'TabOrder'#2#8#0#0#0
]);

View File

@ -0,0 +1,125 @@
unit DblDeclineUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, Math, contexthelpunit;
type
{ TDblDeclineFrm }
TDblDeclineFrm = class(TForm)
HelpBtn: TButton;
ResetBtn: TButton;
ComputeBtn: TButton;
ReturnBtn: TButton;
CostEdit: TEdit;
LifeEdit: TEdit;
EndEdit: TEdit;
PeriodEdit: TEdit;
DeprecEdit: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
procedure ComputeBtnClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure HelpBtnClick(Sender: TObject);
procedure ResetBtnClick(Sender: TObject);
function DoubleDecliningBalance(Cost, Salvage: Extended; Life, Period: Integer): Extended;
private
{ private declarations }
public
{ public declarations }
end;
var
DblDeclineFrm: TDblDeclineFrm;
implementation
{ TDblDeclineFrm }
procedure TDblDeclineFrm.ResetBtnClick(Sender: TObject);
begin
CostEdit.Text := '';
LifeEdit.Text := '';
EndEdit.Text := '';
PeriodEdit.Text := '';
DeprecEdit.Text := '';
end;
procedure TDblDeclineFrm.FormShow(Sender: TObject);
begin
ResetBtnClick(self);
end;
procedure TDblDeclineFrm.HelpBtnClick(Sender: TObject);
begin
ContextHelpForm.HelpMessage((Sender as TButton).tag);
end;
procedure TDblDeclineFrm.ComputeBtnClick(Sender: TObject);
VAR
Depreciation, Cost, Salvage : Extended;
Life, Period : integer;
begin
Cost := StrToFloat(CostEdit.Text);
Salvage := StrToFloat(EndEdit.Text);
Life := StrToInt(LifeEdit.Text);
Period := StrToInt(PeriodEdit.Text);
Depreciation := DoubleDecliningBalance(Cost, Salvage, Life, Period);
DeprecEdit.Text := FloatToStr(Depreciation);
end;
function TDblDeclineFrm.DoubleDecliningBalance(Cost, Salvage: Extended; Life, Period: Integer): Extended;
{ dv := cost * (1 - 2/life)**(period - 1)
DDB = (2/life) * dv
if DDB > dv - salvage then DDB := dv - salvage
if DDB < 0 then DDB := 0
}
var
DepreciatedVal, Factor: Extended;
begin
Result := 0;
if (Period < 1) or (Life < Period) or (Life < 1) or (Cost <= Salvage) then
Exit;
{depreciate everything in period 1 if life is only one or two periods}
if ( Life <= 2 ) then
begin
if ( Period = 1 ) then
DoubleDecliningBalance:=Cost-Salvage
else
DoubleDecliningBalance:=0; {all depreciation occurred in first period}
exit;
end;
Factor := 2.0 / Life;
DepreciatedVal := Cost * IntPower((1.0 - Factor), Period - 1);
{DepreciatedVal is Cost-(sum of previous depreciation results)}
Result := Factor * DepreciatedVal;
{Nominal computed depreciation for this period. The rest of the
function applies limits to this nominal value. }
{Only depreciate until total depreciation equals cost-salvage.}
if Result > DepreciatedVal - Salvage then
Result := DepreciatedVal - Salvage;
{No more depreciation after salvage value is reached. This is mostly a nit.
If Result is negative at this point, it's very close to zero.}
if Result < 0.0 then
Result := 0.0;
end;
initialization
{$I dbldeclineunit.lrs}
end.

View File

@ -0,0 +1,241 @@
object DescriptiveFrm: TDescriptiveFrm
Left = 175
Height = 388
Top = 91
Width = 434
Caption = 'Descriptive Statistics'
ClientHeight = 388
ClientWidth = 434
OnShow = FormShow
LCLVersion = '0.9.30'
object Label1: TLabel
Left = 200
Height = 16
Top = 279
Width = 175
Caption = 'Confidence Interval for the Mean'
ParentColor = False
end
object Label2: TLabel
Left = 8
Height = 16
Top = 8
Width = 48
Caption = 'Variables'
ParentColor = False
end
object Label3: TLabel
Left = 239
Height = 16
Top = 8
Width = 45
Caption = 'Selected'
ParentColor = False
end
object VarList: TListBox
Left = 8
Height = 225
Top = 24
Width = 166
ItemHeight = 0
MultiSelect = True
TabOrder = 0
end
object SelList: TListBox
Left = 239
Height = 225
Top = 24
Width = 188
ItemHeight = 0
TabOrder = 1
end
object CIEdit: TEdit
Left = 379
Height = 23
Top = 272
Width = 41
TabOrder = 2
Text = '95.0'
end
object ResetBtn: TButton
Left = 312
Height = 32
Top = 304
Width = 80
Caption = 'Reset'
OnClick = ResetBtnClick
TabOrder = 3
end
object CancelBtn: TButton
Left = 200
Height = 30
Top = 344
Width = 82
Caption = 'Cancel'
ModalResult = 2
OnClick = CancelBtnClick
TabOrder = 4
end
object OKBtn: TButton
Left = 312
Height = 30
Top = 344
Width = 80
Caption = 'Continue'
ModalResult = 1
OnClick = OKBtnClick
TabOrder = 5
end
object InBtn: TBitBtn
Left = 184
Height = 39
Top = 24
Width = 38
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE
6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580
3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3
71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7
74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7
74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = InBtnClick
TabOrder = 6
end
object OutBtn: TBitBtn
Left = 184
Height = 39
Top = 72
Width = 38
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = OutBtnClick
TabOrder = 7
end
object AllBtn: TBitBtn
Left = 184
Height = 39
Top = 136
Width = 38
Caption = 'ALL'
NumGlyphs = 0
OnClick = AllBtnClick
TabOrder = 8
end
object GroupBox1: TGroupBox
Left = 12
Height = 88
Top = 264
Width = 162
Caption = 'Options'
ClientHeight = 70
ClientWidth = 158
TabOrder = 9
object CaseChk: TCheckBox
Left = 7
Height = 19
Top = 2
Width = 115
Caption = 'Casewise Deletion'
TabOrder = 0
end
object CheckBox1: TCheckBox
Left = 7
Height = 19
Top = 16
Width = 101
Caption = 'z Scores to Grid'
TabOrder = 1
end
object PcntileChk: TCheckBox
Left = 7
Height = 19
Top = 33
Width = 138
Caption = 'Show Percentile Ranks'
TabOrder = 2
end
object AltQrtilesChk: TCheckBox
Left = 6
Height = 19
Top = 50
Width = 116
Caption = 'Show All Quartiles'
TabOrder = 3
end
end
object HelpBtn: TButton
Tag = 119
Left = 200
Height = 32
Top = 304
Width = 82
Caption = 'Help'
OnClick = HelpBtnClick
TabOrder = 10
end
end

View File

@ -0,0 +1,141 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TDescriptiveFrm','FORMDATA',[
'TPF0'#15'TDescriptiveFrm'#14'DescriptiveFrm'#4'Left'#3#175#0#6'Height'#3#132
+#1#3'Top'#2'['#5'Width'#3#178#1#7'Caption'#6#22'Descriptive Statistics'#12'C'
+'lientHeight'#3#132#1#11'ClientWidth'#3#178#1#6'OnShow'#7#8'FormShow'#10'LCL'
+'Version'#6#6'0.9.30'#0#6'TLabel'#6'Label1'#4'Left'#3#200#0#6'Height'#2#16#3
+'Top'#3#23#1#5'Width'#3#175#0#7'Caption'#6' Confidence Interval for the Mean'
+#11'ParentColor'#8#0#0#6'TLabel'#6'Label2'#4'Left'#2#8#6'Height'#2#16#3'Top'
+#2#8#5'Width'#2'0'#7'Caption'#6#9'Variables'#11'ParentColor'#8#0#0#6'TLabel'
+#6'Label3'#4'Left'#3#239#0#6'Height'#2#16#3'Top'#2#8#5'Width'#2'-'#7'Caption'
+#6#8'Selected'#11'ParentColor'#8#0#0#8'TListBox'#7'VarList'#4'Left'#2#8#6'He'
+'ight'#3#225#0#3'Top'#2#24#5'Width'#3#166#0#10'ItemHeight'#2#0#11'MultiSelec'
+'t'#9#8'TabOrder'#2#0#0#0#8'TListBox'#7'SelList'#4'Left'#3#239#0#6'Height'#3
+#225#0#3'Top'#2#24#5'Width'#3#188#0#10'ItemHeight'#2#0#8'TabOrder'#2#1#0#0#5
+'TEdit'#6'CIEdit'#4'Left'#3'{'#1#6'Height'#2#23#3'Top'#3#16#1#5'Width'#2')'#8
+'TabOrder'#2#2#4'Text'#6#4'95.0'#0#0#7'TButton'#8'ResetBtn'#4'Left'#3'8'#1#6
+'Height'#2' '#3'Top'#3'0'#1#5'Width'#2'P'#7'Caption'#6#5'Reset'#7'OnClick'#7
+#13'ResetBtnClick'#8'TabOrder'#2#3#0#0#7'TButton'#9'CancelBtn'#4'Left'#3#200
+#0#6'Height'#2#30#3'Top'#3'X'#1#5'Width'#2'R'#7'Caption'#6#6'Cancel'#11'Moda'
+'lResult'#2#2#7'OnClick'#7#14'CancelBtnClick'#8'TabOrder'#2#4#0#0#7'TButton'
+#5'OKBtn'#4'Left'#3'8'#1#6'Height'#2#30#3'Top'#3'X'#1#5'Width'#2'P'#7'Captio'
+'n'#6#8'Continue'#11'ModalResult'#2#1#7'OnClick'#7#10'OKBtnClick'#8'TabOrder'
+#2#5#0#0#7'TBitBtn'#5'InBtn'#4'Left'#3#184#0#6'Height'#2''''#3'Top'#2#24#5'W'
+'idth'#2'&'#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0
+'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0
+#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0'!c$'#184#29'^ '#6#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'*p/8%i)'
+#247'!c$'#217#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'a'#190
+'m'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255
+'A'#145'I'#255';'#136'B'#255'5'#128';'#255'?'#136'E'#255'Y'#161'^'#255'D'#139
+'I'#255'!c$'#207#255#255#255#0#255#255#255#0#255#255#255#0'e'#195'q'#255#160
+#215#169#255#156#213#165#255#152#211#161#255#148#208#157#255#144#206#152#255
+#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255'z'#193#128
+#255'v'#190'|'#255'E'#140'J'#255'!c$'#196#255#255#255#0#255#255#255#0'h'#199
+'t'#255#165#218#174#255#162#216#171#255#158#214#167#255#154#212#163#255#150
+#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255#133#199#139#255
+#129#197#135#255'}'#194#130#255'J'#145'P'#255'%i)'#201#255#255#255#0#255#255
+#255#0'h'#199't'#255'h'#199't'#255'e'#195'q'#255'a'#190'm'#255']'#184'h'#255
+'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255'Z'#163
+'b'#255'U'#157'\'#255'/x5'#209#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'A'#145'I'#247
+';'#136'B'#219#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'G'#153'O'#187
+'A'#145'I'#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
,#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnCl'
+'ick'#7#10'InBtnClick'#8'TabOrder'#2#6#0#0#7'TBitBtn'#6'OutBtn'#4'Left'#3#184
+#0#6'Height'#2''''#3'Top'#2'H'#5'Width'#2'&'#10'Glyph.Data'#10':'#4#0#0'6'#4
+#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0
+#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0'M'#161'V'#6'G'#153'O'#184#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0'S'#169'\'#217'M'#161'V'#247'G'#153'O8'#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0']'#184'h'#207
+'q'#190'{'#255'z'#193#131#255'['#170'd'#255'G'#153'O'#255'A'#145'I'#255';'
+#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255#255
+#255#255#0#255#255#255#0'e'#195'q'#196'{'#200#134#255#156#213#165#255#152#211
+#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142#255#130
+#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!c$'
+#255#255#255#255#0#255#255#255#0'h'#199't'#201#127#204#138#255#162#216#171
+#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255#142#204
+#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130#255'x'
+#192'~'#255'%i)'#255#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#209
+#128#205#139#255'|'#201#135#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'
+#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255
+'*p/'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'
+#219'e'#195'q'#247#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'
+#6'h'#199't'#187#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#11'OutBtnClick'#8'TabOrde'
+'r'#2#7#0#0#7'TBitBtn'#6'AllBtn'#4'Left'#3#184#0#6'Height'#2''''#3'Top'#3#136
+#0#5'Width'#2'&'#7'Caption'#6#3'ALL'#9'NumGlyphs'#2#0#7'OnClick'#7#11'AllBtn'
+'Click'#8'TabOrder'#2#8#0#0#9'TGroupBox'#9'GroupBox1'#4'Left'#2#12#6'Height'
+#2'X'#3'Top'#3#8#1#5'Width'#3#162#0#7'Caption'#6#7'Options'#12'ClientHeight'
+#2'F'#11'ClientWidth'#3#158#0#8'TabOrder'#2#9#0#9'TCheckBox'#7'CaseChk'#4'Le'
,'ft'#2#7#6'Height'#2#19#3'Top'#2#2#5'Width'#2's'#7'Caption'#6#17'Casewise De'
+'letion'#8'TabOrder'#2#0#0#0#9'TCheckBox'#9'CheckBox1'#4'Left'#2#7#6'Height'
+#2#19#3'Top'#2#16#5'Width'#2'e'#7'Caption'#6#16'z Scores to Grid'#8'TabOrder'
+#2#1#0#0#9'TCheckBox'#10'PcntileChk'#4'Left'#2#7#6'Height'#2#19#3'Top'#2'!'#5
+'Width'#3#138#0#7'Caption'#6#21'Show Percentile Ranks'#8'TabOrder'#2#2#0#0#9
+'TCheckBox'#13'AltQrtilesChk'#4'Left'#2#6#6'Height'#2#19#3'Top'#2'2'#5'Width'
+#2't'#7'Caption'#6#18'Show All Quartiles'#8'TabOrder'#2#3#0#0#0#7'TButton'#7
+'HelpBtn'#3'Tag'#2'w'#4'Left'#3#200#0#6'Height'#2' '#3'Top'#3'0'#1#5'Width'#2
+'R'#7'Caption'#6#4'Help'#7'OnClick'#7#12'HelpBtnClick'#8'TabOrder'#2#10#0#0#0
]);

View File

@ -0,0 +1,404 @@
unit DescriptiveUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, ExtCtrls, Buttons, MainUnit, Globals, functionsLib, OutPutUnit, DataProcs,
DictionaryUnit, contexthelpunit;
type
{ TDescriptiveFrm }
TDescriptiveFrm = class(TForm)
CaseChk: TCheckBox;
CheckBox1: TCheckBox;
AltQrtilesChk: TCheckBox;
HelpBtn: TButton;
Label2: TLabel;
Label3: TLabel;
PcntileChk: TCheckBox;
GroupBox1: TGroupBox;
InBtn: TBitBtn;
OutBtn: TBitBtn;
AllBtn: TBitBtn;
ResetBtn: TButton;
CancelBtn: TButton;
OKBtn: TButton;
CIEdit: TEdit;
Label1: TLabel;
VarList: TListBox;
SelList: TListBox;
procedure AllBtnClick(Sender: TObject);
procedure CancelBtnClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure HelpBtnClick(Sender: TObject);
procedure InBtnClick(Sender: TObject);
procedure OKBtnClick(Sender: TObject);
procedure OutBtnClick(Sender: TObject);
procedure ResetBtnClick(Sender: TObject);
private
{ private declarations }
sum, variance, stddev, value, mean, min, max, range, skew, prob, df, CI : double;
kurtosis, z, semean, seskew, sekurtosis, deviation, devsqr, M2, M3, M4 : double;
Q1, Q2, Q3, Q12, Q13, Q14, Q15, Q16, Q17, Q18, Q22, Q23, Q24, Q25, Q26 : double;
Q27, Q28, Q32, Q33, Q34, Q35, Q36, Q37, Q38, IQrange : double;
ncases, noselected : integer;
cellstring, gridstring, outline : string;
selected : IntDyneVec;
public
{ public declarations }
end;
var
DescriptiveFrm: TDescriptiveFrm;
implementation
{ TDescriptiveFrm }
procedure TDescriptiveFrm.ResetBtnClick(Sender: TObject);
var
i : integer;
begin
VarList.Clear;
SelList.Clear;
for i := 1 to NoVariables do
VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]);
CaseChk.Checked := false;
OutBtn.Enabled := false;
CaseChk.Checked := false;
Selected := nil;
end;
procedure TDescriptiveFrm.FormShow(Sender: TObject);
begin
ResetBtnClick(self);
end;
procedure TDescriptiveFrm.HelpBtnClick(Sender: TObject);
begin
ContextHelpForm.HelpMessage((Sender as TButton).tag);
end;
procedure TDescriptiveFrm.InBtnClick(Sender: TObject);
var
index, i : integer;
begin
index := VarList.Items.Count;
i := 0;
while i < index do
begin
if (VarList.Selected[i]) then
begin
SelList.Items.Add(VarList.Items.Strings[i]);
VarList.Items.Delete(i);
index := index - 1;
i := 0;
end
else i := i + 1;
end;
OutBtn.Enabled := true;
end;
procedure TDescriptiveFrm.OKBtnClick(Sender: TObject);
var
i, j, k, m : integer;
num, den, cases : double;
values, pcntrank : DblDyneVec;
begin
noselected := SelList.Items.Count;
SetLength(Selected,noselected);
// Get selected variables
for i := 1 to noselected do
begin
cellstring := SelList.Items.Strings[i-1];
for j := 1 to NoVariables do
if cellstring = OS3MainFrm.DataGrid.Cells[j,0] then selected[i-1] := j;
end;
OutPutFrm.RichEdit.Clear;
// OutPutFrm.RichEdit.ParaGraph.Alignment := taLeftJustify;
OutPutFrm.RichEdit.Lines.Add('DISTRIBUTION PARAMETER ESTIMATES');
OutPutFrm.RichEdit.Lines.Add('');
SetLength(Values,NoCases);
SetLength(pcntrank,NoCases);
for j := 1 to noselected do
begin
deviation := 0.0;
devsqr := 0.0;
M2 := 0.0;
M3 := 0.0;
M4 := 0.0;
sum := 0.0;
variance := 0.0;
stddev := 0.0;
range := 0.0;
skew := 0.0;
kurtosis := 0.0;
ncases := 0;
df := 0.0;
seskew := 0.0;
kurtosis := 0.0;
sekurtosis := 0.0;
k := selected[j-1];
CI := StrToFloat(CIEdit.Text) / 100.0;
prob := CI;
CI := (1.0 - CI) / 2.0;
CI := 1.0 - CI;
if CheckBox1.Checked then // add a new column to the grid
begin
gridstring := OS3MainFrm.DataGrid.Cells[k,0];
gridstring := Gridstring + 'z';
DictionaryFrm.NewVar(NoVariables+1);
DictionaryFrm.DictGrid.Cells[1,NoVariables] := gridstring;
OS3MainFrm.DataGrid.Cells[NoVariables,0] := gridstring;
end;
// Accumulate sums of squares, sums, etc. for variable j
min := 1.0e20;
max := -1.0e20;
for i := 1 to NoCases do
begin
if not GoodRecord(i,noselected,selected) then continue;
if CaseChk.Checked then
begin
if not ValidValue(i,selected[j-1]) then continue;
end
else if not GoodRecord(i,noselected,selected) then continue;
value := StrToFloat(OS3MainFrm.DataGrid.Cells[k,i]);
ncases := ncases + 1;
values[ncases-1] := value;
df := df + 1.0;
sum := sum + value;
variance := variance + (value * value);
if (value < min) then min := value;
if (value > max) then max := value;
end;
{ for i := 0 to ncases - 1 do // this is for debugging
begin
outline := format('Value = %8.3f',[values[i]]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
OutPutFrm.ShowModal;
OutPutFrm.RichEdit.Clear; }
if ncases > 0 then
begin
mean := sum / ncases;
range := max - min;
end;
if ncases > 1 then
begin
variance := variance - (sum * sum) / ncases;
variance := variance / (ncases - 1);
stddev := sqrt(variance);
semean := sqrt(variance / ncases);
if ncases < 120 then CI := semean * inverset(CI,df)
else CI := semean * inversez(CI);
end;
if variance = 0.0 then
begin
cellstring := OS3MainFrm.DataGrid.Cells[k,0];
ShowMessage('No Variability in '+ cellstring + ' variable - ending analysis');
exit;
end;
if ncases > 3 then // obtain skew, kurtosis and z scores
begin
for i := 1 to NoCases do
begin
if CaseChk.Checked then
begin
if not ValidValue(i,selected[j-1]) then continue;
end
else if not GoodRecord(i,noselected,selected) then continue;
value := StrToFloat(OS3MainFrm.DataGrid.Cells[k,i]);
if stddev > 0.0 then
begin
deviation := value - mean;
devsqr := deviation * deviation;
M2 := M2 + devsqr;
M3 := M3 + (deviation * devsqr);
M4 := M4 + (devsqr * devsqr);
z := (value - mean) / stddev;
if CheckBox1.Checked then
begin
cellstring := format('%8.5f',[z]);
OS3MainFrm.DataGrid.Cells[NoVariables,i] := cellstring;
end;
end;
end;
if ncases > 2 then
begin
skew := (ncases * M3) /
((ncases - 1) * (ncases - 2) * stddev * variance);
cases := ncases;
num := 6.0 * cases * (cases - 1.0);
den := (cases - 2.0) * (cases + 1.0) * (cases + 3.0);
seskew := sqrt(num / den);
end;
if ncases > 3 then
begin
kurtosis := (ncases * (ncases + 1) * M4) -
(3 * M2 * M2 * (ncases - 1));
kurtosis := kurtosis /
( (ncases - 1) * (ncases - 2) * (ncases - 3) * (variance * variance) );
sekurtosis := sqrt( (4.0 * (ncases * ncases - 1) * (seskew * seskew) ) /
( (ncases - 3) * (ncases + 5) ) );
end;
end;
// output results for the kth variable
cellstring := OS3MainFrm.DataGrid.Cells[k,0];
outline := format('%s (N = %d) Sum = %14.3f',[cellstring,ncases,sum]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Mean = %10.3f Variance = %10.3f Std.Dev. = %10.3f',
[mean, variance, stddev]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Std.Error of Mean = %10.3f',[semean]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('%4.2f percent Confidence Interval for the mean = %8.3f to %8.3f',
[prob * 100.0, mean - CI, mean + CI]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Range = %10.3f Minimum = %10.3f Maximum = %10.3f',
[range, min, max]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Skewness = %10.3f Std. Error of Skew = %10.3f',
[skew, seskew]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Kurtosis = %10.3f Std. Error Kurtosis = %10.3f',
[kurtosis, sekurtosis]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add('');
if ncases > 4 then // get percentiles and quartiles
begin
// get percentile ranks
if pcntilechk.Checked then PRank(k,pcntrank);
// sort values and get quartiles
for i := 0 to ncases - 2 do
begin
for m := i + 1 to ncases -1 do
begin
if values[i] > values[m] then
begin
value := values[i];
values[i] := values[m];
values[m] := value;
end;
end;
end;
Q1 := Quartiles(2,0.25,ncases,values);
Q2 := Quartiles(2,0.5,ncases,values);
Q3 := Quartiles(2,0.75,ncases,values);
IQrange := Q3 - Q1;
outline := format('First Quartile = %8.3f',[Q1]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Median = %8.3f',[Q2]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Third Quartile = %8.3f',[Q3]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Interquartile range = %8.3f',[IQrange]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add('');
end;
if (AltQrtilesChk.Checked) then
begin
OutPutFrm.RichEdit.Lines.Add('Alternative Methods for Obtaining Quartiles');
OutPutFrm.RichEdit.Lines.Add(' Method 1 2 3 4 5 6 7 8');
OutPutFrm.RichEdit.Lines.Add('Pcntile');
Q1 := Quartiles(1,0.25,ncases,values);
Q12 := Quartiles(2,0.25,ncases,values);
Q13 := Quartiles(3,0.25,ncases,values);
Q14 := Quartiles(4,0.25,ncases,values);
Q15 := Quartiles(5,0.25,ncases,values);
Q16 := Quartiles(6,0.25,ncases,values);
Q17 := Quartiles(7,0.25,ncases,values);
Q18 := Quartiles(8,0.25,ncases,values);
outline := format('Q1 %8.3f%8.3f%8.3f%8.3f%8.3f%8.3f%8.3f%8.3f',
[Q1,Q12,Q13,Q14,Q15,Q16,Q17,Q18]);
OutPutFrm.RichEdit.Lines.Add(outline);
Q2 := Quartiles(1,0.5,ncases,values);
Q22 := Quartiles(2,0.5,ncases,values);
Q23 := Quartiles(3,0.5,ncases,values);
Q24 := Quartiles(4,0.5,ncases,values);
Q25 := Quartiles(5,0.5,ncases,values);
Q26 := Quartiles(6,0.5,ncases,values);
Q27 := Quartiles(7,0.5,ncases,values);
Q28 := Quartiles(8,0.5,ncases,values);
outline := format('Q2 %8.3f%8.3f%8.3f%8.3f%8.3f%8.3f%8.3f%8.3f',
[Q2,Q22,Q23,Q24,Q25,Q26,Q27,Q28]);
OutPutFrm.RichEdit.Lines.Add(outline);
Q3 := Quartiles(1,0.75,ncases,values);
Q32 := Quartiles(2,0.75,ncases,values);
Q33 := Quartiles(3,0.75,ncases,values);
Q34 := Quartiles(4,0.75,ncases,values);
Q35 := Quartiles(5,0.75,ncases,values);
Q36 := Quartiles(6,0.75,ncases,values);
Q37 := Quartiles(7,0.75,ncases,values);
Q38 := Quartiles(8,0.75,ncases,values);
outline := format('Q3 %8.3f%8.3f%8.3f%8.3f%8.3f%8.3f%8.3f%8.3f',
[Q3,Q32,Q33,Q34,Q35,Q36,Q37,Q38]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add('NOTES:');
OutPutFrm.RichEdit.Lines.Add('Method 1 is the weighted average at X[np] where n is no. of cases, p is percentile / 100');
OutPutFrm.RichEdit.Lines.Add('Method 2 is the weighted average at X[(n+1)p] This is used in this program.');
OutPutFrm.RichEdit.Lines.Add('Method 3 is the empirical distribution function.');
OutPutFrm.RichEdit.Lines.Add('Method 4 is called the empirical distribution function - averaging.');
OutPutFrm.RichEdit.Lines.Add('Method 5 is called the empirical distribution function = Interpolation.');
OutPutFrm.RichEdit.Lines.Add('Method 6 is the closest observation method.');
OutPutFrm.RichEdit.Lines.Add('Method 7 is from the TrueBasic Statistics Graphics Toolkit.');
OutPutFrm.RichEdit.Lines.Add('Method 8 was used in an older Microsoft Excel version.');
OutPutFrm.RichEdit.Lines.Add('See the internet site http://www.xycoon.com/ for the above.');
OutPutFrm.RichEdit.Lines.Add('========================================================');
OutPutFrm.RichEdit.Lines.Add('');
end; // end of experimental alternatives
end; // next j variable
OutPutFrm.ShowModal;
Selected := nil;
Values := nil;
pcntrank := nil;
end;
procedure TDescriptiveFrm.OutBtnClick(Sender: TObject);
var
index: integer;
begin
index := SelList.ItemIndex;
VarList.Items.Add(SelList.Items.Strings[index]);
SelList.Items.Delete(index);
InBtn.Enabled := true;
if SelList.Items.Count = 0 then OutBtn.Enabled := false;
end;
procedure TDescriptiveFrm.CancelBtnClick(Sender: TObject);
begin
selected := nil;
end;
procedure TDescriptiveFrm.AllBtnClick(Sender: TObject);
var
i : integer;
begin
for i := 0 to VarList.Items.Count-1 do
SelList.Items.Add(VarList.Items.Strings[i]);
VarList.Clear;
OutBtn.Enabled := true;
InBtn.Enabled := false;
end;
initialization
{$I descriptiveunit.lrs}
end.

View File

@ -0,0 +1,145 @@
object DictionaryFrm: TDictionaryFrm
Left = 95
Height = 477
Top = 97
Width = 656
Caption = 'Dictionary Form'
ClientHeight = 477
ClientWidth = 656
OnShow = FormShow
LCLVersion = '0.9.28.2'
object Label1: TLabel
Left = 8
Height = 14
Top = 15
Width = 310
Caption = 'Note: Pressing the down arrow key will add a new row (variable)'
ParentColor = False
end
object DictGrid: TStringGrid
Left = 0
Height = 249
Top = 88
Width = 642
ColCount = 7
Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goEditing, goRowSelect, goSmoothScroll]
RowCount = 2
TabOrder = 0
OnClick = DictGridClick
OnKeyDown = DictGridKeyDown
end
object Panel1: TPanel
Left = 0
Height = 47
Top = 430
Width = 656
Align = alBottom
ClientHeight = 47
ClientWidth = 656
TabOrder = 1
object Label2: TLabel
Left = 8
Height = 14
Top = -382
Width = 251
Caption = 'Note: Do NOT delete a row if the data column exists'
ParentColor = False
end
object ReturnBtn: TButton
Left = 536
Height = 32
Top = 2
Width = 93
Caption = 'OK'
ModalResult = 1
OnClick = ReturnBtnClick
TabOrder = 0
end
object RowInstBtn: TButton
Left = 96
Height = 32
Top = 2
Width = 111
Caption = 'Insert Row Before'
OnClick = RowInstBtnClick
TabOrder = 1
end
end
object CancelBtn: TButton
Left = 432
Height = 32
Top = 432
Width = 93
Caption = 'Cancel'
ModalResult = 2
OnClick = CancelBtnClick
TabOrder = 2
end
object TypeCombo: TComboBox
Left = 408
Height = 21
Top = 8
Width = 106
ItemHeight = 13
ItemIndex = 0
Items.Strings = (
'Type'
'(I)nteger'
'(F)loating Point'
'(S)tring'
'(M)oney'
'(D)ate'
)
OnSelect = TypeComboSelect
Style = csDropDownList
TabOrder = 3
Text = 'Type'
end
object JustCombo: TComboBox
Left = 536
Height = 21
Top = 8
Width = 104
ItemHeight = 13
ItemIndex = 0
Items.Strings = (
'Justification'
'(L)eft'
'(C)enter'
'(R)ight'
)
OnSelect = JustComboSelect
Style = csDropDownList
TabOrder = 4
Text = 'Justification'
end
object DescMemo: TMemo
Left = 6
Height = 82
Top = 342
Width = 632
Lines.Strings = (
'Memo2'
)
TabOrder = 5
end
object HelpBtn: TButton
Tag = 120
Left = 8
Height = 32
Top = 40
Width = 82
Caption = 'Help'
OnClick = HelpBtnClick
TabOrder = 6
end
object RowDelBtn: TButton
Left = 6
Height = 32
Top = 432
Width = 82
Caption = 'Delete Row'
OnClick = RowDelBtnClick
TabOrder = 7
end
end

View File

@ -0,0 +1,38 @@
LazarusResources.Add('TDictionaryFrm','FORMDATA',[
'TPF0'#14'TDictionaryFrm'#13'DictionaryFrm'#4'Left'#2'_'#6'Height'#3#221#1#3
+'Top'#2'a'#5'Width'#3#144#2#7'Caption'#6#15'Dictionary Form'#12'ClientHeight'
+#3#221#1#11'ClientWidth'#3#144#2#6'OnShow'#7#8'FormShow'#10'LCLVersion'#6#8
+'0.9.28.2'#0#6'TLabel'#6'Label1'#4'Left'#2#8#6'Height'#2#14#3'Top'#2#15#5'Wi'
+'dth'#3'6'#1#7'Caption'#6'?Note: Pressing the down arrow key will add a new '
+'row (variable)'#11'ParentColor'#8#0#0#11'TStringGrid'#8'DictGrid'#4'Left'#2
+#0#6'Height'#3#249#0#3'Top'#2'X'#5'Width'#3#130#2#8'ColCount'#2#7#7'Options'
+#11#15'goFixedVertLine'#15'goFixedHorzLine'#10'goVertLine'#10'goHorzLine'#13
+'goRangeSelect'#9'goEditing'#11'goRowSelect'#14'goSmoothScroll'#0#8'RowCount'
+#2#2#8'TabOrder'#2#0#7'OnClick'#7#13'DictGridClick'#9'OnKeyDown'#7#15'DictGr'
+'idKeyDown'#0#0#6'TPanel'#6'Panel1'#4'Left'#2#0#6'Height'#2'/'#3'Top'#3#174#1
+#5'Width'#3#144#2#5'Align'#7#8'alBottom'#12'ClientHeight'#2'/'#11'ClientWidt'
+'h'#3#144#2#8'TabOrder'#2#1#0#6'TLabel'#6'Label2'#4'Left'#2#8#6'Height'#2#14
+#3'Top'#3#130#254#5'Width'#3#251#0#7'Caption'#6'3Note: Do NOT delete a row i'
+'f the data column exists'#11'ParentColor'#8#0#0#7'TButton'#9'ReturnBtn'#4'L'
+'eft'#3#24#2#6'Height'#2' '#3'Top'#2#2#5'Width'#2']'#7'Caption'#6#2'OK'#11'M'
+'odalResult'#2#1#7'OnClick'#7#14'ReturnBtnClick'#8'TabOrder'#2#0#0#0#7'TButt'
+'on'#10'RowInstBtn'#4'Left'#2'`'#6'Height'#2' '#3'Top'#2#2#5'Width'#2'o'#7'C'
+'aption'#6#17'Insert Row Before'#7'OnClick'#7#15'RowInstBtnClick'#8'TabOrder'
+#2#1#0#0#0#7'TButton'#9'CancelBtn'#4'Left'#3#176#1#6'Height'#2' '#3'Top'#3
+#176#1#5'Width'#2']'#7'Caption'#6#6'Cancel'#11'ModalResult'#2#2#7'OnClick'#7
+#14'CancelBtnClick'#8'TabOrder'#2#2#0#0#9'TComboBox'#9'TypeCombo'#4'Left'#3
+#152#1#6'Height'#2#21#3'Top'#2#8#5'Width'#2'j'#10'ItemHeight'#2#13#9'ItemInd'
+'ex'#2#0#13'Items.Strings'#1#6#4'Type'#6#9'(I)nteger'#6#16'(F)loating Point'
+#6#8'(S)tring'#6#7'(M)oney'#6#6'(D)ate'#0#8'OnSelect'#7#15'TypeComboSelect'#5
+'Style'#7#14'csDropDownList'#8'TabOrder'#2#3#4'Text'#6#4'Type'#0#0#9'TComboB'
+'ox'#9'JustCombo'#4'Left'#3#24#2#6'Height'#2#21#3'Top'#2#8#5'Width'#2'h'#10
+'ItemHeight'#2#13#9'ItemIndex'#2#0#13'Items.Strings'#1#6#13'Justification'#6
+#6'(L)eft'#6#8'(C)enter'#6#7'(R)ight'#0#8'OnSelect'#7#15'JustComboSelect'#5
+'Style'#7#14'csDropDownList'#8'TabOrder'#2#4#4'Text'#6#13'Justification'#0#0
+#5'TMemo'#8'DescMemo'#4'Left'#2#6#6'Height'#2'R'#3'Top'#3'V'#1#5'Width'#3'x'
+#2#13'Lines.Strings'#1#6#5'Memo2'#0#8'TabOrder'#2#5#0#0#7'TButton'#7'HelpBtn'
+#3'Tag'#2'x'#4'Left'#2#8#6'Height'#2' '#3'Top'#2'('#5'Width'#2'R'#7'Caption'
+#6#4'Help'#7'OnClick'#7#12'HelpBtnClick'#8'TabOrder'#2#6#0#0#7'TButton'#9'Ro'
+'wDelBtn'#4'Left'#2#6#6'Height'#2' '#3'Top'#3#176#1#5'Width'#2'R'#7'Caption'
+#6#10'Delete Row'#7'OnClick'#7#14'RowDelBtnClick'#8'TabOrder'#2#7#0#0#0
]);

View File

@ -0,0 +1,352 @@
unit DictionaryUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, Grids, ExtCtrls, Globals, OptionsUnit, contexthelpunit;
type
{ TDictionaryFrm }
TDictionaryFrm = class(TForm)
HelpBtn: TButton;
Label2: TLabel;
DescMemo: TMemo;
RowDelBtn: TButton;
RowInstBtn: TButton;
JustCombo: TComboBox;
TypeCombo: TComboBox;
Label1: TLabel;
ReturnBtn: TButton;
CancelBtn: TButton;
DictGrid: TStringGrid;
Panel1: TPanel;
procedure CancelBtnClick(Sender: TObject);
procedure DictGridClick(Sender: TObject);
procedure DictGridKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState
);
procedure FormShow(Sender: TObject);
procedure HelpBtnClick(Sender: TObject);
procedure JustComboClick(Sender: TObject);
procedure JustComboSelect(Sender: TObject);
procedure ReturnBtnClick(Sender: TObject);
procedure RowDelBtnClick(Sender: TObject);
procedure RowInstBtnClick(Sender: TObject);
procedure Defaults(Sender: TObject; row : integer);
procedure TypeComboSelect(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
procedure DelRow(row : integer);
procedure NewVar(row : integer);
procedure PasteVar(row : integer);
procedure CopyVar(row : integer);
end;
var
DictionaryFrm: TDictionaryFrm;
implementation
{ TDictionaryFrm }
uses MainUnit;
procedure TDictionaryFrm.ReturnBtnClick(Sender: TObject);
var
i, j, count : integer;
NoRows : integer;
begin
// determine number of rows with complete data
NoRows := 0;
for i := 1 to DictGrid.RowCount - 1 do
begin
count := 0;
for j := 1 to 5 do
begin
if DictGrid.Cells[j,i] <> '' then count := count + 1;
end;
if count > 4 then NoRows := NoRows + 1;
end;
if NoRows < DictGrid.RowCount - 1 then
begin
ShowMessage('Error! A definition entry for one or more variables missing!');
DictGrid.SetFocus;
exit;
end;
// Place short labels in main grid
OS3MainFrm.DataGrid.ColCount := NoRows + 1;
for i := 1 to NoRows do OS3MainFrm.DataGrid.Cells[i,0] := DictGrid.Cells[1,i];
// Make sure integers have a 0 for decimals
for i := 1 to NoRows do
if DictGrid.Cells[4,i] = 'I' then DictGrid.Cells[5,i] := '0';
OS3MainFrm.NoVarsEdit.Text := IntToStr(OS3MainFrm.DataGrid.ColCount-1);
if OS3MainFrm.FileNameEdit.Text = '' then exit;
end;
procedure TDictionaryFrm.RowDelBtnClick(Sender: TObject);
var
index : integer;
i, j : integer;
begin
index := DictGrid.Row;
if index = DictGrid.RowCount-1 then // last row
begin
for i := 0 to 7 do DictGrid.Cells[i,index] := '';
DictGrid.RowCount := DictGrid.RowCount - 1;
VarDefined[index] := false;
end
else
begin // move lines below current lines up and delete last
for i := index+1 to DictGrid.RowCount - 1 do
begin
for j := 0 to 6 do DictGrid.Cells[j,i-1] := DictGrid.Cells[j,i];
VarDefined[i-1] := VarDefined[i];
end;
VarDefined[DictGrid.RowCount-1] := false;
DictGrid.RowCount := DictGrid.RowCount - 1;
for i := 1 to DictGrid.RowCount - 1 do // renumber rows
DictGrid.Cells[0,i] := IntToStr(i);
end;
end;
procedure TDictionaryFrm.RowInstBtnClick(Sender: TObject);
var
index : integer;
i, j : integer;
begin
index := DictGrid.Row;
DictGrid.RowCount := DictGrid.RowCount + 1; // add new row to grid
// move all rows from index down 1
for i := DictGrid.RowCount - 1 downto index+1 do
begin
for j := 1 to 6 do
begin
DictGrid.Cells[j,i] := DictGrid.Cells[j,i-1];
end;
VarDefined[i] := VarDefined[i-1];
end;
// place default values in new row
Defaults(Self,index);
VarDefined[index] := true;
end;
procedure TDictionaryFrm.FormShow(Sender: TObject);
begin
DictGrid.ColCount := 8;
if NoVariables = 0 then DictGrid.RowCount := 2
else DictGrid.RowCount := NoVariables + 1;
// insert headings
DictGrid.Cells[0,0] := 'VAR/CHAR.';
DictGrid.Cells[1,0] := 'Short Name';
DictGrid.Cells[2,0] := 'Long Name';
DictGrid.Cells[3,0] := 'Width';
DictGrid.Cells[4,0] := 'Type';
DictGrid.Cells[5,0] := 'Decimals';
DictGrid.Cells[6,0] := 'Missing';
DictGrid.Cells[7,0] := 'Justify';
DictGrid.Cells[0,1] := '1';
DictGrid.ColWidths[1] := 100;
DictGrid.ColWidths[2] := 200;
DictGrid.ColWidths[3] := 50;
DictGrid.ColWidths[4] := 50;
DictGrid.ColWidths[5] := 50;
DictGrid.ColWidths[6] := 50;
DictGrid.ColWidths[7] := 50;
// check for absence of a defined variable
if VarDefined[1] = false then
begin
// load defaults
Defaults(Self,1);
VarDefined[1] := true;
end;
end;
procedure TDictionaryFrm.HelpBtnClick(Sender: TObject);
begin
ContextHelpForm.HelpMessage((Sender as TButton).tag);
end;
procedure TDictionaryFrm.JustComboClick(Sender: TObject);
var
achar : char;
astr : string;
index : integer;
GRow : integer;
begin
index := JustCombo.ItemIndex;
astr := JustCombo.Items.Strings[index];
achar := astr[2];
GRow := DictGrid.Row;
DictGrid.Cells[7,GRow] := achar;
JustCombo.Text := 'Justification';
end;
procedure TDictionaryFrm.JustComboSelect(Sender: TObject);
var
achar : char;
astr : string;
index : integer;
GRow : integer;
begin
index := JustCombo.ItemIndex;
astr := JustCombo.Items.Strings[index];
achar := astr[2];
GRow := DictGrid.Row;
if GRow>0 then DictGrid.Cells[7,GRow] := achar;
JustCombo.Text := 'Justification';
DictGrid.SetFocus;
end;
procedure TDictionaryFrm.CancelBtnClick(Sender: TObject);
begin
DictionaryFrm.Hide;
end;
procedure TDictionaryFrm.DictGridClick(Sender: TObject);
begin
DictGrid.SelectedColor := clGray;
end;
procedure TDictionaryFrm.DictGridKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
x, y, v : integer;
begin
x := DictGrid.Row;
y := DictGrid.Col;
v := ord(Key);
case v of
13 : if y = 7 then DictGrid.Col := 1 else DictGrid.Col := DictGrid.Col + 1;
40 : begin // arrow down key
if x = DictGrid.RowCount - 1 then
begin
if DictGrid.RowCount < (x + 2) then
DictGrid.RowCount := DictGrid.RowCount + 1;
Defaults(Self,x+1);
VarDefined[x+1] := true;
end;
end;
end;
end;
procedure TDictionaryFrm.Defaults(Sender: TObject; row : integer);
var i : integer;
begin
DictGrid.Cells[0,row] := IntToStr(row);
DictGrid.Cells[1,row] := 'VAR.' + IntToStr(row);
DictGrid.Cells[2,row] := 'VARIABLE ' + IntToStr(row);
DictGrid.Cells[3,row] := '8';
DictGrid.Cells[4,row] := 'F';
DictGrid.Cells[5,row] := '2';
DictGrid.Cells[6,row] := ' ';
DictGrid.Cells[7,row] := 'L';
for i := 1 to DictGrid.RowCount - 1 do DictGrid.Cells[0,i] := IntToStr(i);
if OptionsFrm.DefaultMiss = 0 then DictGrid.Cells[6,row] := '';
if OptionsFrm.DefaultMiss = 1 then DictGrid.Cells[6,row] := '.';
if OptionsFrm.DefaultMiss = 2 then DictGrid.Cells[6,row] := '0';
If OptionsFrm.DefaultMiss = 3 then DictGrid.Cells[6,row] := '99999';
if OptionsFrm.DefaultJust <> 0 then
begin
if OptionsFrm.DefaultJust = 1 then DictGrid.Cells[7,row] := 'C'
else DictGrid.Cells[7,row] := 'R';
end;
end;
procedure TDictionaryFrm.TypeComboSelect(Sender: TObject);
var
achar : char;
astr : string;
index : integer;
GRow : integer;
begin
index := TypeCombo.ItemIndex;
astr := TypeCombo.Items.Strings[index];
achar := astr[2];
GRow := DictGrid.Row;
if GRow>0 then
begin
DictGrid.Cells[4,GRow] := achar;
if achar='F' then DictGrid.Cells[5,GRow] := '3' // set decimal digits
else DictGrid.Cells[5,GRow] := '0';
end;
TypeCombo.Text := 'Type';
DictGrid.SetFocus;
end;
procedure TDictionaryFrm.DelRow(row : integer);
begin
DictGrid.Row := row;
TempVarItm.Clear;
DictGrid.Rows[row].SaveToStream(TempVarItm);
RowDelBtnClick(Self);
end;
//-------------------------------------------------------------------
procedure TDictionaryFrm.NewVar(row : integer);
var
i, j : integer;
begin
DictGrid.RowCount := DictGrid.RowCount + 1; // add new row
NoVariables := NoVariables + 1;
if (row < NoVariables) AND (NoVariables > 1) then // move current rows down 1
begin
for i := NoVariables downto row + 1 do
begin
for j := 1 to 7 do DictGrid.Cells[j,i] := DictGrid.Cells[j,i-1];
VarDefined[i] := VarDefined[i-1];
end;
end;
// put default values in new variable
Defaults(Self,row);
VarDefined[row] := true;
// add to grid if grid column does not exist
if OS3MainFrm.DataGrid.ColCount < row then
begin
OS3MainFrm.DataGrid.ColCount := OS3MainFrm.DataGrid.ColCount + 1;
OS3MainFrm.DataGrid.Cells[row,0] := DictionaryFrm.DictGrid.Cells[1,row];
end;
ReturnBtnClick(Self);
end;
//-------------------------------------------------------------------
procedure TDictionaryFrm.PasteVar(row : integer);
var i : integer;
begin
TempVarItm.Position := 0;
DictGrid.Rows[row].LoadFromStream(TempVarItm);
for i := 1 to DictGrid.RowCount - 1 do DictGrid.Cells[0,i] := IntToStr(i);
// FormShow(Self);
end;
//-------------------------------------------------------------------
procedure TDictionaryFrm.CopyVar(row : integer);
begin
DictGrid.Row := row;
TempVarItm.Clear;
DictGrid.Rows[row].SaveToStream(TempVarItm);
end;
//-------------------------------------------------------------------
initialization
{$I dictionaryunit.lrs}
end.

View File

@ -0,0 +1,513 @@
object DIFFrm: TDIFFrm
Left = 140
Height = 455
Top = 99
Width = 537
Caption = 'DIF Specifications'
ClientHeight = 455
ClientWidth = 537
OnShow = FormShow
LCLVersion = '0.9.28.2'
object Label1: TLabel
Left = 8
Height = 14
Top = 16
Width = 90
Caption = 'Available Variables'
ParentColor = False
end
object Label2: TLabel
Left = 211
Height = 14
Top = 16
Width = 72
Caption = 'Items Selected'
ParentColor = False
end
object Label3: TLabel
Left = 214
Height = 14
Top = 208
Width = 85
Caption = 'Grouping Variable'
ParentColor = False
end
object Label4: TLabel
Left = 207
Height = 14
Top = 288
Width = 116
Caption = 'Reference Group Code?'
ParentColor = False
end
object Label5: TLabel
Left = 207
Height = 14
Top = 320
Width = 91
Caption = 'Focal Group Code?'
ParentColor = False
end
object Label6: TLabel
Left = 207
Height = 14
Top = 352
Width = 99
Caption = 'No. of Score Levels?'
ParentColor = False
end
object Label7: TLabel
Left = 376
Height = 14
Top = 264
Width = 119
Caption = 'Enter Bounds for Levels:'
ParentColor = False
end
object Label8: TLabel
Left = 376
Height = 14
Top = 296
Width = 28
Caption = 'Down'
ParentColor = False
end
object Label9: TLabel
Left = 448
Height = 14
Top = 296
Width = 14
Caption = 'Up'
ParentColor = False
end
object Label10: TLabel
Left = 488
Height = 14
Top = 296
Width = 26
Caption = 'Level'
ParentColor = False
end
object Label11: TLabel
Left = 377
Height = 14
Top = 351
Width = 63
Caption = 'Lower Bound'
ParentColor = False
end
object UpBoundlabel: TLabel
Left = 373
Height = 14
Top = 384
Width = 67
Caption = 'Upper Bound:'
ParentColor = False
end
object VarList: TListBox
Left = 8
Height = 296
Top = 35
Width = 157
ItemHeight = 0
MultiSelect = True
TabOrder = 0
end
object ItemInBtn: TBitBtn
Left = 173
Height = 27
Top = 40
Width = 30
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE
6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580
3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3
71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7
74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7
74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = ItemInBtnClick
TabOrder = 1
end
object ItemOutBtn: TBitBtn
Left = 173
Height = 27
Top = 72
Width = 30
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = ItemOutBtnClick
TabOrder = 2
end
object AllBtn: TBitBtn
Left = 173
Height = 27
Top = 120
Width = 30
Caption = 'ALL'
NumGlyphs = 0
OnClick = AllBtnClick
TabOrder = 3
end
object GrpInBtn: TBitBtn
Left = 173
Height = 27
Top = 208
Width = 30
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE
6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580
3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3
71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7
74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7
74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = GrpInBtnClick
TabOrder = 4
end
object GrpOutBtn: TBitBtn
Left = 173
Height = 27
Top = 240
Width = 30
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = GrpOutBtnClick
TabOrder = 5
end
object ItemsList: TListBox
Left = 211
Height = 149
Top = 35
Width = 148
ItemHeight = 0
TabOrder = 6
end
object GroupVarEdit: TEdit
Left = 211
Height = 21
Top = 224
Width = 147
TabOrder = 7
Text = 'GroupVarEdit'
end
object RefGrpEdit: TEdit
Left = 329
Height = 21
Top = 281
Width = 34
TabOrder = 8
Text = 'RefGrpEdit'
end
object TrgtGrpEdit: TEdit
Left = 329
Height = 21
Top = 310
Width = 34
TabOrder = 9
Text = 'Edit1'
end
object LevelsEdit: TEdit
Left = 329
Height = 21
Top = 344
Width = 34
OnExit = LevelsEditExit
TabOrder = 10
Text = 'Edit1'
end
object GroupBox1: TGroupBox
Left = 368
Height = 233
Top = 16
Width = 160
Caption = 'Options'
ClientHeight = 215
ClientWidth = 156
TabOrder = 11
object ItemStatsChk: TCheckBox
Left = 7
Height = 17
Top = 3
Width = 88
Caption = 'Item Statistics'
TabOrder = 0
end
object TestStatsChk: TCheckBox
Left = 7
Height = 17
Top = 23
Width = 87
Caption = 'Test Statistics'
TabOrder = 1
end
object ItemCorrsChk: TCheckBox
Left = 7
Height = 17
Top = 47
Width = 125
Caption = 'Item Intercorrelations'
TabOrder = 2
end
object ItemTestChk: TCheckBox
Left = 8
Height = 17
Top = 71
Width = 128
Caption = 'Item-Test Correlations'
TabOrder = 3
end
object AlphaChk: TCheckBox
Left = 8
Height = 17
Top = 95
Width = 95
Caption = 'Alpha Reliability'
TabOrder = 4
end
object MHChk: TCheckBox
Left = 7
Height = 17
Top = 119
Width = 99
Caption = 'Mantel-Haenszel'
TabOrder = 5
end
object LogisticChk: TCheckBox
Left = 8
Height = 17
Top = 143
Width = 111
Caption = 'Logistic Regression'
TabOrder = 6
end
object CurvesChk: TCheckBox
Left = 8
Height = 17
Top = 167
Width = 109
Caption = 'Item Char. Curves'
TabOrder = 7
end
object CountsChk: TCheckBox
Left = 7
Height = 17
Top = 191
Width = 82
Caption = 'Level Counts'
TabOrder = 8
end
end
object LevelScroll: TScrollBar
Left = 376
Height = 16
Top = 315
Width = 89
Min = 1
PageSize = 0
Position = 1
TabOrder = 12
OnScroll = LevelScrollScroll
end
object LevelNoEdit: TEdit
Left = 481
Height = 21
Top = 313
Width = 33
TabOrder = 13
Text = 'LevelNoEdit'
end
object LowBoundEdit: TEdit
Left = 480
Height = 21
Top = 344
Width = 33
OnExit = LowBoundEditExit
TabOrder = 14
Text = 'Edit4'
end
object UpBoundEdit: TEdit
Left = 480
Height = 21
Top = 376
Width = 33
OnExit = UpBoundEditExit
TabOrder = 15
Text = 'Edit4'
end
object ResetBtn: TButton
Left = 104
Height = 32
Top = 408
Width = 69
Caption = 'Reset'
OnClick = ResetBtnClick
TabOrder = 16
end
object CancelBtn: TButton
Left = 192
Height = 32
Top = 408
Width = 69
Caption = 'Cancel'
ModalResult = 2
TabOrder = 17
end
object ComputeBtn: TButton
Left = 280
Height = 32
Top = 408
Width = 77
Caption = 'Compute'
OnClick = ComputeBtnClick
TabOrder = 18
end
object ReturnBtn: TButton
Left = 373
Height = 32
Top = 408
Width = 72
Caption = 'Return'
ModalResult = 1
OnClick = ReturnBtnClick
TabOrder = 19
end
object HelpBtn: TButton
Tag = 122
Left = 8
Height = 32
Top = 408
Width = 82
Caption = 'Help'
OnClick = HelpBtnClick
TabOrder = 20
end
end

View File

@ -0,0 +1,285 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TDIFFrm','FORMDATA',[
'TPF0'#7'TDIFFrm'#6'DIFFrm'#4'Left'#3#140#0#6'Height'#3#199#1#3'Top'#2'c'#5'W'
+'idth'#3#25#2#7'Caption'#6#18'DIF Specifications'#12'ClientHeight'#3#199#1#11
+'ClientWidth'#3#25#2#6'OnShow'#7#8'FormShow'#10'LCLVersion'#6#8'0.9.28.2'#0#6
+'TLabel'#6'Label1'#4'Left'#2#8#6'Height'#2#14#3'Top'#2#16#5'Width'#2'Z'#7'Ca'
+'ption'#6#19'Available Variables'#11'ParentColor'#8#0#0#6'TLabel'#6'Label2'#4
+'Left'#3#211#0#6'Height'#2#14#3'Top'#2#16#5'Width'#2'H'#7'Caption'#6#14'Item'
+'s Selected'#11'ParentColor'#8#0#0#6'TLabel'#6'Label3'#4'Left'#3#214#0#6'Hei'
+'ght'#2#14#3'Top'#3#208#0#5'Width'#2'U'#7'Caption'#6#17'Grouping Variable'#11
+'ParentColor'#8#0#0#6'TLabel'#6'Label4'#4'Left'#3#207#0#6'Height'#2#14#3'Top'
+#3' '#1#5'Width'#2't'#7'Caption'#6#21'Reference Group Code?'#11'ParentColor'
+#8#0#0#6'TLabel'#6'Label5'#4'Left'#3#207#0#6'Height'#2#14#3'Top'#3'@'#1#5'Wi'
+'dth'#2'['#7'Caption'#6#17'Focal Group Code?'#11'ParentColor'#8#0#0#6'TLabel'
+#6'Label6'#4'Left'#3#207#0#6'Height'#2#14#3'Top'#3'`'#1#5'Width'#2'c'#7'Capt'
+'ion'#6#20'No. of Score Levels?'#11'ParentColor'#8#0#0#6'TLabel'#6'Label7'#4
+'Left'#3'x'#1#6'Height'#2#14#3'Top'#3#8#1#5'Width'#2'w'#7'Caption'#6#24'Ente'
+'r Bounds for Levels:'#11'ParentColor'#8#0#0#6'TLabel'#6'Label8'#4'Left'#3'x'
+#1#6'Height'#2#14#3'Top'#3'('#1#5'Width'#2#28#7'Caption'#6#4'Down'#11'Parent'
+'Color'#8#0#0#6'TLabel'#6'Label9'#4'Left'#3#192#1#6'Height'#2#14#3'Top'#3'('
+#1#5'Width'#2#14#7'Caption'#6#2'Up'#11'ParentColor'#8#0#0#6'TLabel'#7'Label1'
+'0'#4'Left'#3#232#1#6'Height'#2#14#3'Top'#3'('#1#5'Width'#2#26#7'Caption'#6#5
+'Level'#11'ParentColor'#8#0#0#6'TLabel'#7'Label11'#4'Left'#3'y'#1#6'Height'#2
+#14#3'Top'#3'_'#1#5'Width'#2'?'#7'Caption'#6#11'Lower Bound'#11'ParentColor'
+#8#0#0#6'TLabel'#12'UpBoundlabel'#4'Left'#3'u'#1#6'Height'#2#14#3'Top'#3#128
+#1#5'Width'#2'C'#7'Caption'#6#12'Upper Bound:'#11'ParentColor'#8#0#0#8'TList'
+'Box'#7'VarList'#4'Left'#2#8#6'Height'#3'('#1#3'Top'#2'#'#5'Width'#3#157#0#10
+'ItemHeight'#2#0#11'MultiSelect'#9#8'TabOrder'#2#0#0#0#7'TBitBtn'#9'ItemInBt'
+'n'#4'Left'#3#173#0#6'Height'#2#27#3'Top'#2'('#5'Width'#2#30#10'Glyph.Data'
+#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0
+#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'!c$'#184#29'^'
+' '#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'*p/8%i)'#247'!c$'#217#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0'a'#190'm'#255']'#184'h'#255'X'#177
+'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255
+'5'#128';'#255'?'#136'E'#255'Y'#161'^'#255'D'#139'I'#255'!c$'#207#255#255#255
+#0#255#255#255#0#255#255#255#0'e'#195'q'#255#160#215#169#255#156#213#165#255
+#152#211#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142
+#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'E'#140'J'
+#255'!c$'#196#255#255#255#0#255#255#255#0'h'#199't'#255#165#218#174#255#162
+#216#171#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255
+#142#204#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130
+#255'J'#145'P'#255'%i)'#201#255#255#255#0#255#255#255#0'h'#199't'#255'h'#199
+'t'#255'e'#195'q'#255'a'#190'm'#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255
+'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255'Z'#163'b'#255'U'#157'\'#255'/x5'
+#209#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'A'#145'I'#247';'#136'B'#219#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'G'#153'O'#187'A'#145'I'#6#255#255#255
,#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#14'ItemInBtnClick'
+#8'TabOrder'#2#1#0#0#7'TBitBtn'#10'ItemOutBtn'#4'Left'#3#173#0#6'Height'#2#27
+#3'Top'#2'H'#5'Width'#2#30#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0
+#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'
+#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'M'#161'V'#6'G'
+#153'O'#184#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'S'#169'\'#217'M'#161
+'V'#247'G'#153'O8'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0']'#184'h'#207'q'#190'{'#255'z'#193#131
+#255'['#170'd'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/'
+'x5'#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255#255#255#255#0#255#255#255#0'e'
+#195'q'#196'{'#200#134#255#156#213#165#255#152#211#161#255#148#208#157#255
+#144#206#152#255#139#203#147#255#135#201#142#255#130#198#137#255'~'#195#132
+#255'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!c$'#255#255#255#255#0#255
+#255#255#0'h'#199't'#201#127#204#138#255#162#216#171#255#158#214#167#255#154
+#212#163#255#150#210#159#255#147#207#154#255#142#204#149#255#137#202#144#255
+#133#199#139#255#129#197#135#255'}'#194#130#255'x'#192'~'#255'%i)'#255#255
+#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#209#128#205#139#255'|'#201
+#135#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'
+#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#219'e'#195'q'#247#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#6'h'#199't'#187#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#9'Num'
,'Glyphs'#2#0#7'OnClick'#7#15'ItemOutBtnClick'#8'TabOrder'#2#2#0#0#7'TBitBtn'
+#6'AllBtn'#4'Left'#3#173#0#6'Height'#2#27#3'Top'#2'x'#5'Width'#2#30#7'Captio'
+'n'#6#3'ALL'#9'NumGlyphs'#2#0#7'OnClick'#7#11'AllBtnClick'#8'TabOrder'#2#3#0
+#0#7'TBitBtn'#8'GrpInBtn'#4'Left'#3#173#0#6'Height'#2#27#3'Top'#3#208#0#5'Wi'
+'dth'#2#30#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('
+#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0
+#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0'!c$'#184#29'^ '#6#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'*p/8%i)'#247
+'!c$'#217#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'a'#190'm'
+#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'
+#145'I'#255';'#136'B'#255'5'#128';'#255'?'#136'E'#255'Y'#161'^'#255'D'#139'I'
+#255'!c$'#207#255#255#255#0#255#255#255#0#255#255#255#0'e'#195'q'#255#160#215
+#169#255#156#213#165#255#152#211#161#255#148#208#157#255#144#206#152#255#139
+#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'
+#190'|'#255'E'#140'J'#255'!c$'#196#255#255#255#0#255#255#255#0'h'#199't'#255
+#165#218#174#255#162#216#171#255#158#214#167#255#154#212#163#255#150#210#159
+#255#147#207#154#255#142#204#149#255#137#202#144#255#133#199#139#255#129#197
+#135#255'}'#194#130#255'J'#145'P'#255'%i)'#201#255#255#255#0#255#255#255#0'h'
+#199't'#255'h'#199't'#255'e'#195'q'#255'a'#190'm'#255']'#184'h'#255'X'#177'b'
+#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255'Z'#163'b'#255'U'
+#157'\'#255'/x5'#209#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'A'#145'I'#247';'#136'B'
+#219#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'G'#153'O'#187'A'#145'I'
+#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#13
+'GrpInBtnClick'#8'TabOrder'#2#4#0#0#7'TBitBtn'#9'GrpOutBtn'#4'Left'#3#173#0#6
+'Height'#2#27#3'Top'#3#240#0#5'Width'#2#30#10'Glyph.Data'#10':'#4#0#0'6'#4#0
+#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0
+#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
,#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0'M'#161'V'#6'G'#153'O'#184#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0'S'#169'\'#217'M'#161'V'#247'G'#153'O8'#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0']'#184'h'#207
+'q'#190'{'#255'z'#193#131#255'['#170'd'#255'G'#153'O'#255'A'#145'I'#255';'
+#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255#255
+#255#255#0#255#255#255#0'e'#195'q'#196'{'#200#134#255#156#213#165#255#152#211
+#161#255#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142#255#130
+#198#137#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!c$'
+#255#255#255#255#0#255#255#255#0'h'#199't'#201#127#204#138#255#162#216#171
+#255#158#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255#142#204
+#149#255#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130#255'x'
+#192'~'#255'%i)'#255#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#209
+#128#205#139#255'|'#201#135#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'
+#161'V'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255
+'*p/'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'
+#219'e'#195'q'#247#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'
+#6'h'#199't'#187#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#14'GrpOutBtnClick'#8'TabO'
+'rder'#2#5#0#0#8'TListBox'#9'ItemsList'#4'Left'#3#211#0#6'Height'#3#149#0#3
+'Top'#2'#'#5'Width'#3#148#0#10'ItemHeight'#2#0#8'TabOrder'#2#6#0#0#5'TEdit'
+#12'GroupVarEdit'#4'Left'#3#211#0#6'Height'#2#21#3'Top'#3#224#0#5'Width'#3
+#147#0#8'TabOrder'#2#7#4'Text'#6#12'GroupVarEdit'#0#0#5'TEdit'#10'RefGrpEdit'
+#4'Left'#3'I'#1#6'Height'#2#21#3'Top'#3#25#1#5'Width'#2'"'#8'TabOrder'#2#8#4
+'Text'#6#10'RefGrpEdit'#0#0#5'TEdit'#11'TrgtGrpEdit'#4'Left'#3'I'#1#6'Height'
+#2#21#3'Top'#3'6'#1#5'Width'#2'"'#8'TabOrder'#2#9#4'Text'#6#5'Edit1'#0#0#5'T'
+'Edit'#10'LevelsEdit'#4'Left'#3'I'#1#6'Height'#2#21#3'Top'#3'X'#1#5'Width'#2
+'"'#6'OnExit'#7#14'LevelsEditExit'#8'TabOrder'#2#10#4'Text'#6#5'Edit1'#0#0#9
+'TGroupBox'#9'GroupBox1'#4'Left'#3'p'#1#6'Height'#3#233#0#3'Top'#2#16#5'Widt'
+'h'#3#160#0#7'Caption'#6#7'Options'#12'ClientHeight'#3#215#0#11'ClientWidth'
+#3#156#0#8'TabOrder'#2#11#0#9'TCheckBox'#12'ItemStatsChk'#4'Left'#2#7#6'Heig'
+'ht'#2#17#3'Top'#2#3#5'Width'#2'X'#7'Caption'#6#15'Item Statistics'#8'TabOrd'
+'er'#2#0#0#0#9'TCheckBox'#12'TestStatsChk'#4'Left'#2#7#6'Height'#2#17#3'Top'
+#2#23#5'Width'#2'W'#7'Caption'#6#15'Test Statistics'#8'TabOrder'#2#1#0#0#9'T'
+'CheckBox'#12'ItemCorrsChk'#4'Left'#2#7#6'Height'#2#17#3'Top'#2'/'#5'Width'#2
+'}'#7'Caption'#6#22'Item Intercorrelations'#8'TabOrder'#2#2#0#0#9'TCheckBox'
+#11'ItemTestChk'#4'Left'#2#8#6'Height'#2#17#3'Top'#2'G'#5'Width'#3#128#0#7'C'
+'aption'#6#22'Item-Test Correlations'#8'TabOrder'#2#3#0#0#9'TCheckBox'#8'Alp'
+'haChk'#4'Left'#2#8#6'Height'#2#17#3'Top'#2'_'#5'Width'#2'_'#7'Caption'#6#17
+'Alpha Reliability'#8'TabOrder'#2#4#0#0#9'TCheckBox'#5'MHChk'#4'Left'#2#7#6
+'Height'#2#17#3'Top'#2'w'#5'Width'#2'c'#7'Caption'#6#15'Mantel-Haenszel'#8'T'
,'abOrder'#2#5#0#0#9'TCheckBox'#11'LogisticChk'#4'Left'#2#8#6'Height'#2#17#3
+'Top'#3#143#0#5'Width'#2'o'#7'Caption'#6#19'Logistic Regression'#8'TabOrder'
+#2#6#0#0#9'TCheckBox'#9'CurvesChk'#4'Left'#2#8#6'Height'#2#17#3'Top'#3#167#0
+#5'Width'#2'm'#7'Caption'#6#17'Item Char. Curves'#8'TabOrder'#2#7#0#0#9'TChe'
+'ckBox'#9'CountsChk'#4'Left'#2#7#6'Height'#2#17#3'Top'#3#191#0#5'Width'#2'R'
+#7'Caption'#6#12'Level Counts'#8'TabOrder'#2#8#0#0#0#10'TScrollBar'#11'Level'
+'Scroll'#4'Left'#3'x'#1#6'Height'#2#16#3'Top'#3';'#1#5'Width'#2'Y'#3'Min'#2#1
+#8'PageSize'#2#0#8'Position'#2#1#8'TabOrder'#2#12#8'OnScroll'#7#17'LevelScro'
+'llScroll'#0#0#5'TEdit'#11'LevelNoEdit'#4'Left'#3#225#1#6'Height'#2#21#3'Top'
+#3'9'#1#5'Width'#2'!'#8'TabOrder'#2#13#4'Text'#6#11'LevelNoEdit'#0#0#5'TEdit'
+#12'LowBoundEdit'#4'Left'#3#224#1#6'Height'#2#21#3'Top'#3'X'#1#5'Width'#2'!'
+#6'OnExit'#7#16'LowBoundEditExit'#8'TabOrder'#2#14#4'Text'#6#5'Edit4'#0#0#5
+'TEdit'#11'UpBoundEdit'#4'Left'#3#224#1#6'Height'#2#21#3'Top'#3'x'#1#5'Width'
+#2'!'#6'OnExit'#7#15'UpBoundEditExit'#8'TabOrder'#2#15#4'Text'#6#5'Edit4'#0#0
+#7'TButton'#8'ResetBtn'#4'Left'#2'h'#6'Height'#2' '#3'Top'#3#152#1#5'Width'#2
+'E'#7'Caption'#6#5'Reset'#7'OnClick'#7#13'ResetBtnClick'#8'TabOrder'#2#16#0#0
+#7'TButton'#9'CancelBtn'#4'Left'#3#192#0#6'Height'#2' '#3'Top'#3#152#1#5'Wid'
+'th'#2'E'#7'Caption'#6#6'Cancel'#11'ModalResult'#2#2#8'TabOrder'#2#17#0#0#7
+'TButton'#10'ComputeBtn'#4'Left'#3#24#1#6'Height'#2' '#3'Top'#3#152#1#5'Widt'
+'h'#2'M'#7'Caption'#6#7'Compute'#7'OnClick'#7#15'ComputeBtnClick'#8'TabOrder'
+#2#18#0#0#7'TButton'#9'ReturnBtn'#4'Left'#3'u'#1#6'Height'#2' '#3'Top'#3#152
+#1#5'Width'#2'H'#7'Caption'#6#6'Return'#11'ModalResult'#2#1#7'OnClick'#7#14
+'ReturnBtnClick'#8'TabOrder'#2#19#0#0#7'TButton'#7'HelpBtn'#3'Tag'#2'z'#4'Le'
+'ft'#2#8#6'Height'#2' '#3'Top'#3#152#1#5'Width'#2'R'#7'Caption'#6#4'Help'#7
+'OnClick'#7#12'HelpBtnClick'#8'TabOrder'#2#20#0#0#0
]);

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,596 @@
unit DISTRIBUNIT;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, BlankFrmUnit, OutPutUnit, FunctionsLib, Globals,
Printers, Math;
type
TwoCol = array[1..2,1..100] of double;
type
{ TDistribFrm }
TDistribFrm = class(TForm)
AlphaEdit: TEdit;
DF1Edit: TEdit;
DF2Edit: TEdit;
MeanEdit: TEdit;
ResetBtn: TButton;
CancelBtn: TButton;
ComputeBtn: TButton;
ReturnBtn: TButton;
GroupBox2: TGroupBox;
AlphaLabel: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
NDChk: TCheckBox;
ChiChk: TCheckBox;
FChk: TCheckBox;
GroupBox1: TGroupBox;
procedure ChiChkClick(Sender: TObject);
procedure ComputeBtnClick(Sender: TObject);
procedure FChkClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure NDChkClick(Sender: TObject);
procedure ResetBtnClick(Sender: TObject);
private
{ private declarations }
procedure NDPlot(Sender : TObject);
procedure ChiPlot(Sender : TObject);
procedure FPlot(Sender : TObject);
procedure Hscale(Xmin, Xmax : double; Nsteps : integer;
acolor : TColor; FontSize : integer;
X, Y, Xlength : integer;
charLabel : string; Sender : TObject);
procedure Vscale(Ymin, Ymax : double; Nsteps : integer;
acolor : TColor; FontSize : integer;
X, Y, Ylength : integer;
charLabel : string; Sender : TObject);
procedure NormPts(zMin, zMax : double; Npts : integer;
VAR realpts : TwoCol;
Sender : TObject);
procedure PltPts(realpts : TwoCol;
Xmax, Xmin, Ymax, Ymin : double;
Npts, XaxisStart, YaxisStart, XaxisRange : integer;
YaxisRange : integer;
acolor : TColor; Sender : TObject);
procedure ChiPts(cMin, cMax : double;
Npts, df : integer;
VAR realpts : TwoCol;
Sender : TObject);
procedure FPts(FMin, FMax : double;
Npts, df1, df2 : integer;
VAR realpts : TwoCol;
Sender : TObject);
function chi2func(chisqr, df : double) : double;
function Ffunc(F : double; df1, df2 : integer) : double;
public
{ public declarations }
end;
var
DistribFrm: TDistribFrm;
implementation
{ TDistribFrm }
procedure TDistribFrm.ResetBtnClick(Sender: TObject);
begin
NDChk.Checked := false;
ChiChk.Checked := false;
FChk.Checked := false;
AlphaEdit.Text := '0.05';
DF1Edit.Text := '';
DF2Edit.Text := '';
MeanEdit.Text := '';
GroupBox2.Visible := false;
end;
procedure TDistribFrm.FormShow(Sender: TObject);
begin
ResetBtnClick(self);
end;
procedure TDistribFrm.NDChkClick(Sender: TObject);
begin
if NDChk.Checked then
begin
GroupBox2.Visible := true;
AlphaLabel.Visible := true;
AlphaEdit.Visible := true;
DF1Edit.Visible := false;
Label2.Visible := false;
Label3.Visible := false;
Label4.Visible := false;
DF2Edit.Visible := false;
MeanEdit.Visible := false;
end
else GroupBox2.Visible := false;
end;
procedure TDistribFrm.ComputeBtnClick(Sender: TObject);
begin
if NDChk.Checked then
begin
NDPlot(self);
end;
if ChiChk.Checked then
begin
ChiPlot(self);
end;
if FChk.Checked then
begin
FPlot(self);
end;
end;
procedure TDistribFrm.FChkClick(Sender: TObject);
begin
if FChk.Checked then
begin
GroupBox2.Visible := true;
Label3.Visible := true;
AlphaLabel.Visible := true;
AlphaEdit.Visible := true;
DF1Edit.Visible := true;
DF2Edit.Visible := true;
Label2.Visible := true;
Label4.Visible := false;
MeanEdit.Visible := false;
end
else GroupBox2.Visible := false;
end;
procedure TDistribFrm.ChiChkClick(Sender: TObject);
begin
if ChiChk.Checked then
begin
GroupBox2.Visible := true;
Label2.Visible := true;
DF1Edit.Visible := true;
Label3.Visible := false;
Label4.Visible := false;
AlphaLabel.Visible := true;
AlphaEdit.Visible := true;
DF2Edit.Visible := false;
MeanEdit.Visible := false;
end
else
begin
GroupBox2.Visible := false;
end;
end;
procedure TDistribFrm.NDPlot(Sender: TObject);
var
charLabel : string;
Clwidth, Clheight,X, Y, XaxisStart, XaxisEnd, YaxisStart, YaxisEnd : integer;
i, Xrange, Yrange, t : integer;
alpha, h, z, hprop, zprop : double;
realpts : TwoCol;
begin
for i := 1 to 100 do realpts[1,i] := 0.0;
for i := 1 to 100 do realpts[2,i] := 0.0;
charLabel := 'Normal Distribution. Alpha = ';
BlankFrm.Image1.Canvas.Clear;
BlankFrm.Image1.Canvas.Pen.Color := clBlack;
BlankFrm.Image1.Canvas.Brush.Color := clWhite;
BlankFrm.Image1.Canvas.Clear;
BlankFrm.Image1.Canvas.FloodFill(1,1,clWhite,fsborder);
BlankFrm.Image1.Canvas.Pen.Width := 2;
Clwidth := BlankFrm.Image1.Width;
Clheight := BlankFrm.Image1.Height;
XaxisStart := Clwidth div 8;
XaxisEnd := Clwidth - (Clwidth div 8);
YaxisStart := (Clheight * 7) div 10;
YaxisEnd := Clheight div 10;
Xrange := XaxisEnd - XaxisStart;
Yrange := YaxisStart - YaxisEnd;
alpha := StrToFloat(AlphaEdit.Text);
BlankFrm.Show;
// Create values of normal curve
NormPts(-4.0, 4.0, 100, realpts, self);
PltPts(realpts, 4.0, -4.0, 0.5, 0.0, 100, XaxisStart, YaxisStart, Xrange,
Yrange, clBlack, self);
// Draw line for alpha z := 1.645
charLabel := charLabel + AlphaEdit.Text;
BlankFrm.Caption := charLabel;
z := inversez(1.0 - alpha);
zprop := (4.0 + z) / 8.0;
h := (1.0 / sqrt(2.0 * 3.1415)) * (1.0 / exp(z * z / 2.0));
hprop := (0.5 - h) / 0.5;
X := round( zprop * Xrange)+ XaxisStart;
Y := YaxisEnd + round( hprop * Yrange);
BlankFrm.Image1.Canvas.MoveTo(X,YaxisStart);
BlankFrm.Image1.Canvas.LineTo(X,Y-10); // alpha cutoff
// floodfill rejection section with red
BlankFrm.Image1.Canvas.Brush.Color := clRed;
BlankFrm.Image1.Canvas.Brush.Color := clWhite;
// create labeled axis
Hscale(-4.0, 4.0, 11, clWhite, 10, XaxisStart, YaxisStart, Xrange,'z SCALE',self);
Vscale(0.0, 0.5, 11, clWhite, 10, XaxisStart, YaxisStart, Yrange, 'DENSITY',self);
// Print Heading
t := BlankFrm.Image1.Canvas.TextWidth(charLabel);
X := (BlankFrm.Width div 2) - (t div 2);
BlankFrm.Image1.Canvas.TextOut(X,0,charLabel);
charLabel := 'Critical Value = ';
charLabel := charLabel + format('%6.3f',[z]);
t := BlankFrm.Image1.Canvas.TextWidth(charLabel);
X := (BlankFrm.Image1.Width div 2) - (t div 2);
BlankFrm.Image1.Canvas.TextOut(X,BlankFrm.Image1.Canvas.TextHeight(charLabel),charLabel);
end;
procedure TDistribFrm.ChiPlot(Sender: TObject);
var
charLabel : string;
Clwidth, Clheight, X, Y, XaxisStart, XaxisEnd, YaxisStart, YaxisEnd : integer;
i, Xrange, Yrange, df, t : integer;
alpha, h, z, hprop, zprop, MaxChi, MaxProb : double;
realpts : TwoCol;
begin
BlankFrm.Image1.Canvas.Clear;
for i := 1 to 100 do realpts[1,i] := 0.0;
for i := 1 to 100 do realpts[2,i] := 0.0;
charLabel := 'Chi Squared Distribution. Alpha = ';
MaxProb := 0.0;
BlankFrm.Image1.Canvas.Pen.Color := clBlack;
BlankFrm.Image1.Canvas.Brush.Color := clWhite;
BlankFrm.Image1.Canvas.Clear;
BlankFrm.Image1.Canvas.FloodFill(1,1,clWhite,fsborder);
BlankFrm.Image1.Canvas.Pen.Width := 2;
Clwidth := BlankFrm.Image1.Width;
Clheight := BlankFrm.Image1.Height;
XaxisStart := Clwidth div 8;
XaxisEnd := Clwidth - (Clwidth div 8);
YaxisStart := (Clheight * 7) div 10;
YaxisEnd := Clheight div 10;
Xrange := XaxisEnd - XaxisStart;
Yrange := YaxisStart - YaxisEnd;
alpha := StrToFloat(AlphaEdit.Text);
charLabel := charLabel + AlphaEdit.Text;
df := StrToInt(DF1Edit.Text);
if (df < 1) or (df > 100) then exit;
charLabel := charLabel + ' D.F. = ';
charLabel := charLabel + DF1Edit.Text;
BlankFrm.Caption := charLabel;
BlankFrm.Show;
// Create values of chi-squared curve
MaxChi := 125.0;
ChiPts(0.0, MaxChi, 100, df, realpts, self);
for i := 1 to 100 do
begin
if (realpts[2,i] > MaxProb) then MaxProb := realpts[2,i];
end;
PltPts(realpts, MaxChi, 0.0, MaxProb, 0.0, 100, XaxisStart, YaxisStart, Xrange,
Yrange, clBlack, self);
// Draw line for alpha
z := inversechi(1.0-alpha,df);
zprop := z / MaxChi;
h := chi2func(z,df);
hprop := (MaxProb - h) / MaxProb;
X := round( zprop * Xrange)+ XaxisStart;
Y := YaxisEnd + round( hprop * Yrange);
BlankFrm.Image1.Canvas.MoveTo(X,YaxisStart);
BlankFrm.Image1.Canvas.LineTo(X,Y); // alpha cutoff
// floodfill main section with blue
BlankFrm.Image1.Canvas.Brush.Color := clBlue;
BlankFrm.Image1.Canvas.Brush.Color := clWhite;
// create charLabeled axis
Hscale(0.0, MaxChi, 11, clWhite, 10, XaxisStart, YaxisStart,
Xrange,'CHI SQUARED SCALE',self);
Vscale(0.0, MaxProb, 11, clWhite, 10, XaxisStart, YaxisStart,
Yrange, 'DENSITY',self);
// Print Heading
t := BlankFrm.Image1.Canvas.TextWidth(charLabel);
X := (BlankFrm.Width div 2) - (t div 2);
BlankFrm.Image1.Canvas.TextOut(X,0,charLabel);
charLabel := 'Critical Value = ';
charLabel := charLabel + format('%6.3f',[z]);
t := BlankFrm.Image1.Canvas.TextWidth(charLabel);
X := (BlankFrm.Image1.Width div 2) - (t div 2);
BlankFrm.Image1.Canvas.TextOut(X,BlankFrm.Image1.Canvas.TextHeight(charLabel),charLabel);
end;
procedure TDistribFrm.FPlot(Sender: TObject);
var
charLabel : string;
Clwidth, Clheight, X, Y, XaxisStart, XaxisEnd, YaxisStart, YaxisEnd : integer;
i, Xrange, Yrange, t, df1, df2 : integer;
realpts : TwoCol;
alpha, h, F, hprop, Fprop, MaxProb, MaxF : double;
done : boolean;
begin
BlankFrm.Image1.Canvas.Clear;
for i := 1 to 100 do realpts[1,i] := 0.0;
for i := 1 to 100 do realpts[2,i] := 0.0;
MaxProb := 0.0;
charLabel := 'F Distribution. Alpha = ';
BlankFrm.Image1.Canvas.Pen.Color := clBlack;
BlankFrm.Image1.Canvas.Brush.Color := clWhite;
BlankFrm.Image1.Canvas.Clear;
BlankFrm.Image1.Canvas.FloodFill(1,1,clWhite,fsborder);
BlankFrm.Image1.Canvas.Pen.Width := 2;
Clwidth := BlankFrm.Image1.Width;
Clheight := BlankFrm.Image1.Height;
XaxisStart := Clwidth div 8;
XaxisEnd := Clwidth - (Clwidth div 8);
YaxisStart := (Clheight * 7) div 10;
YaxisEnd := Clheight div 10;
Xrange := XaxisEnd - XaxisStart;
Yrange := YaxisStart - YaxisEnd;
alpha := StrToFloat(AlphaEdit.Text);
charLabel := charLabel + AlphaEdit.Text;
df1 := StrToInt(DF1Edit.Text);
charLabel := charLabel + ' D.F.1 = ';
charLabel := charLabel + DF1Edit.Text;
df2 := StrToInt(DF2Edit.Text);
charLabel := charLabel + ' , D.F.2 = ';
charLabel := charLabel + DF2Edit.Text;
BlankFrm.Caption := charLabel;
BlankFrm.Show;
// Create values of F curve
MaxF := 20.0;
done := false;
while not done do
begin
h := Ffunc(MaxF, df1, df2);
if (h < 0.001) then MaxF := MaxF - 1.0
else done := true;
end;
FPts(0.0, MaxF, 100, df1, df2, realpts, self);
for i := 1 to 100 do
begin
if (realpts[2,i] > MaxProb) then MaxProb := realpts[2,i];
end;
PltPts(realpts, MaxF, 0.0, MaxProb, 0.0, 100, XaxisStart, YaxisStart, Xrange,
Yrange, clBlack, self);
// Draw line for alpha
F := fpercentpoint(1.0-alpha,df1,df2);
Fprop := F / MaxF;
h := Ffunc(F,df1,df2);
hprop := (MaxProb - h) / MaxProb;
X := round( Fprop * Xrange)+ XaxisStart;
Y := YaxisEnd + round( hprop * Yrange);
BlankFrm.Image1.Canvas.MoveTo(X,YaxisStart);
BlankFrm.Image1.Canvas.LineTo(X,Y); // alpha cutoff
// floodfill main section with blue
BlankFrm.Canvas.Brush.Color := clBlue;
// create charLabeled axis
Hscale(0.0, MaxF, 11, clWhite, 10, XaxisStart, YaxisStart,
Xrange,'F SCALE',self);
Vscale(0.0, MaxProb, 11, clWhite, 10, XaxisStart, YaxisStart,
Yrange, 'DENSITY',self);
// Print Heading
t := BlankFrm.Image1.Canvas.TextWidth(charLabel);
X := (BlankFrm.Image1.Width div 2) - (t div 2);
BlankFrm.Image1.Canvas.TextOut(X,0,charLabel);
charLabel := 'Critical Value = ';
charLabel := charLabel + format('%6.3f',[F]);
t := BlankFrm.Image1.Canvas.TextWidth(charLabel);
X := (BlankFrm.Image1.Width div 2) - (t div 2);
BlankFrm.Image1.Canvas.TextOut(X,BlankFrm.Image1.Canvas.TextHeight(charLabel),charLabel);
end;
procedure TDistribFrm.Hscale(Xmin, Xmax: double; Nsteps: integer;
acolor: TColor; FontSize: integer; X, Y, Xlength: integer; charLabel: string;
Sender: TObject);
var
i, TickEnd, Xpos, Ypos, TextX : integer;
Xincr, Xval : double;
Svalue, Ast : string;
begin
BlankFrm.Image1.Canvas.MoveTo(X,Y);
BlankFrm.Image1.Canvas.LineTo(X+Xlength,Y);
BlankFrm.Image1.Canvas.Font.Size := FontSize;
BlankFrm.Image1.Canvas.Brush.Color := acolor;
TickEnd := Y + 10;
Xincr := (Xmax - Xmin) / Nsteps;
for i := 0 to Nsteps do
begin
Xpos := round(((Xlength / Nsteps) * i) + X);
BlankFrm.Image1.Canvas.MoveTo(Xpos,Y);
BlankFrm.Image1.Canvas.LineTo(Xpos,TickEnd);
TextX := Xpos - 8;
Xval := Xmin + ( i * Xincr);
Svalue := format('%4.2f',[Xval]);
Ast := Svalue;
BlankFrm.Image1.Canvas.TextOut(TextX, Y+15, Ast);
end;
// print charLabel below X axis
Ypos := Y + 30;
Xpos := round((BlankFrm.Width / 2) - (BlankFrm.Image1.Canvas.TextWidth(charLabel) / 2));
BlankFrm.Image1.Canvas.TextOut(Xpos,Ypos,charLabel);
end;
procedure TDistribFrm.Vscale(Ymin, Ymax: double; Nsteps: integer;
acolor: TColor; FontSize: integer; X, Y, Ylength: integer; charLabel: string;
Sender: TObject);
var
TickEnd, Ypos, Xpos, TextY : integer;
Yincr, Yval : double;
Svalue, symbol, Ast : string;
chpixs, i : integer;
begin
BlankFrm.Image1.Canvas.MoveTo(X,Y);
BlankFrm.Image1.Canvas.LineTo(X,Y-Ylength);
BlankFrm.Image1.Canvas.Font.Size := FontSize;
BlankFrm.Image1.Canvas.Brush.Color := acolor;
TickEnd := X - 10;
Yincr := (Ymax - Ymin) / Nsteps;
TextY := 0;
for i := 0 to Nsteps do
begin
Ypos := round(Y - ((Ylength / Nsteps) * i));
BlankFrm.Image1.Canvas.MoveTo(X,Ypos);
BlankFrm.Image1.Canvas.LineTo(TickEnd,Ypos);
TextY := TickEnd - 30;
Yval := Ymin + ( i * Yincr);
Svalue := format('%4.2f',[Yval]);
Ast := Svalue;
BlankFrm.Image1.Canvas.TextOut(TextY, Ypos-8, Ast);
end;
// print charLabel vertically
Xpos := TextY - 15;
for i := 1 to Length(charLabel) do
begin
chpixs := BlankFrm.Image1.Canvas.TextHeight(charLabel);
Ypos := round(Y - (Ylength / 2) - ( (Length(charLabel) * chpixs) / 2 ) + (chpixs * i));
symbol := charLabel[i];
// symbol[2] := 0;
BlankFrm.Image1.Canvas.TextOut(Xpos,Ypos,symbol);
end;
end;
procedure TDistribFrm.NormPts(zMin, zMax: double; Npts: integer;
var realpts: TwoCol; Sender: TObject);
var
zIncr, z, h : double;
i : integer;
begin
zIncr := (zMax - zMin) / Npts;
for i := 1 to Npts do
begin
z := zMin + (zIncr * i);
h := (1.0 / sqrt(2.0 * 3.14159265358979)) *
( 1.0 / exp(z * z / 2.0));
realpts[1,i] := z;
realpts[2,i] := h;
end;
end;
procedure TDistribFrm.PltPts(realpts: TwoCol; Xmax, Xmin, Ymax, Ymin: double;
Npts, XaxisStart, YaxisStart, XaxisRange: integer; YaxisRange: integer;
acolor: TColor; Sender: TObject);
var
hprop, zprop, z, h : double;
i, X, Y : integer;
intpts : array[1..100] of TPoint;
begin
for i := 1 to Npts do
begin
z := realpts[1,i];
h := realpts[2,i];
zprop := (z - Xmin) / (Xmax - Xmin);
X := round((zprop * XaxisRange) + XaxisStart);
hprop := (h - Ymin) / (Ymax - Ymin);
Y := round(YaxisStart - (hprop * YaxisRange));
intpts[i] := Point(X,Y);
end;
BlankFrm.Image1.Canvas.Pen.Color := acolor;
BlankFrm.Image1.Canvas.Polyline(Slice(intpts,Npts - 1));
end;
procedure TDistribFrm.ChiPts(cMin, cMax: double; Npts, df: integer;
var realpts: TwoCol; Sender: TObject);
var
ratio1, ratio2, ratio3, cIncr, chi, h : double;
i : integer;
begin
ratio1 := df / 2.0;
ratio2 := (df - 2.0) / 2.0;
cIncr := (cMax - cMin) / Npts;
for i := 1 to Npts do
begin
chi := cMin + (cIncr * i);
// h := inversechi(chi, df);
ratio3 := chi / 2.0;
h := (1.0 / (power(2.0,ratio1) * exp(lngamma(ratio1)))) * power(chi,ratio2) * ( 1.0 / exp(ratio3));
realpts[1,i] := chi;
realpts[2,i] := h;
end;
end;
procedure TDistribFrm.FPts(FMin, FMax: double; Npts, df1, df2: integer;
var realpts: TwoCol; Sender: TObject);
var
FIncr, F, h : double;
i : integer;
begin
FIncr := (FMax - FMin) / Npts;
for i := 1 to Npts do
begin
F := FMin + (FIncr * i);
h := Ffunc(F, df1, df2);
realpts[1,i] := F;
realpts[2,i] := h;
end;
end;
function TDistribFrm.chi2func(chisqr, df: double): double;
var
ratio1, ratio2, ratio3, h : double;
begin
// Returns the height of the density curve for the chi-squared statistic
ratio1 := df / 2.0;
ratio2 := (df - 2.0) / 2.0;
ratio3 := chisqr / 2.0;
h := (1.0 / (power(2.0,ratio1) * exp(lngamma(ratio1)))) * power(chisqr,ratio2) * ( 1.0 / exp(ratio3));
Result := h;
end;
function TDistribFrm.Ffunc(F: double; df1, df2: integer): double;
var
ratio1, ratio2, ratio3, ratio4, h : double;
part1, part2, part3, part4, part5, part6, part7, part8, part9 : double;
begin
// Returns the height of the density curve for the F statistic
ratio1 := (df1 + df2) / 2.0;
ratio2 := (df1 - 2.0) / 2.0;
ratio3 := df1 / 2.0;
ratio4 := df2 / 2.0;
part1 := exp(lngamma(ratio1));
part2 := power(df1,ratio3);
part3 := power(df2,ratio4);
part4 := exp(lngamma(ratio3));
part5 := exp(lngamma(ratio4));
part6 := power(F,ratio2);
part7 := power((F*df1+df2),ratio1);
part8 := (part1 * part2 * part3) / (part4 * part5);
if (part7 = 0.0) then part9 := 0.0
else part9 := part6 / part7;
h := part8 * part9;
{
ratio1 := (df1 + df2) / 2.0;
ratio2 := (df1 - 2.0) / 2.0;
ratio3 := df1 / 2.0;
ratio4 := df2 / 2.0;
ffunc := ((gamma(ratio1) * realraise(df1,ratio3) *
realraise(df2,ratio4)) /
(gamma(ratio3) * gamma(ratio4))) *
(realraise(f,ratio2) / realraise((f*df1+df2),ratio1));
}
Result := h;
end;
initialization
{$I distribunit.lrs}
end.

View File

@ -0,0 +1,191 @@
object EquationForm: TEquationForm
Left = 244
Height = 396
Top = 138
Width = 592
Caption = 'Equation Editor'
ClientHeight = 396
ClientWidth = 592
OnShow = ResetBtnClick
LCLVersion = '0.9.30'
object Memo1: TMemo
Left = 7
Height = 184
Top = 8
Width = 569
Lines.Strings = (
'You can create a new variable as a combination of other existing variables with this procedure.'
'First, enter the name of the new variable in the area labeled "New Variable".'
'Next, enter up to three values for each entry in your equation by selecting an operation, function or'
'variable from the "drop-down" boxes. You can select:'
'(a) An operation code (+,-,* or /) except for the first one which should be a function or variable name.'
'(b) A function such as sin, cos, sqrt, etc. can be entered first followed by the variable to be acted upon.'
'(c) A variable name from the list of available variables in the drop-down list of variables.'
'(d) For each variable to be entered, click the "Next Entry" button. Following the first entry, an '
' operation code must be the first entry.'
'When done, click the "Finished" button followed by a click of the "Compute button". An image of the'
'completed function will be displayed before the new values are created.'
)
TabOrder = 0
end
object Label1: TLabel
Left = 8
Height = 16
Top = 250
Width = 108
Caption = 'New Variable Name:'
ParentColor = False
end
object NewVarEdit: TEdit
Left = 8
Height = 23
Top = 275
Width = 127
TabOrder = 1
Text = 'NewVarEdit'
end
object Label2: TLabel
Left = 145
Height = 16
Top = 278
Width = 9
Caption = '='
ParentColor = False
end
object OpEdit: TEdit
Left = 161
Height = 23
Top = 275
Width = 96
TabOrder = 2
Text = 'OpEdit'
end
object FuncEdit: TEdit
Left = 265
Height = 23
Top = 275
Width = 136
TabOrder = 3
Text = 'FuncEdit'
end
object VarEdit: TEdit
Left = 409
Height = 23
Top = 275
Width = 168
TabOrder = 4
Text = 'VarEdit'
end
object OpsCombo: TComboBox
Left = 162
Height = 23
Top = 227
Width = 94
AutoDropDown = True
ItemHeight = 15
Items.Strings = (
'+'
'-'
'*'
'/'
''
)
OnClick = OpsComboClick
OnSelect = OpsComboSelect
TabOrder = 5
end
object FunctionCombo: TComboBox
Left = 265
Height = 23
Top = 226
Width = 134
AutoDropDown = True
ItemHeight = 15
Items.Strings = (
'sqr'
'sqrt'
'sin'
'cos'
'tan'
'asin'
'acos'
'atan'
'log10'
'ln'
'exp'
'1 / X'
''
)
OnClick = FunctionComboClick
OnSelect = FunctionComboSelect
TabOrder = 6
end
object VarCombo: TComboBox
Left = 407
Height = 23
Top = 224
Width = 169
AutoDropDown = True
ItemHeight = 15
OnClick = VarComboClick
OnSelect = VarComboSelect
TabOrder = 7
Text = 'VarCombo'
end
object ResetBtn: TButton
Left = 10
Height = 32
Top = 354
Width = 87
Caption = 'Reset'
OnClick = ResetBtnClick
TabOrder = 8
end
object CancelBtn: TButton
Left = 161
Height = 32
Top = 354
Width = 87
Caption = 'Cancel'
ModalResult = 2
OnClick = CancelBtnClick
TabOrder = 9
end
object ComputeBtn: TButton
Left = 312
Height = 32
Top = 354
Width = 87
Caption = 'Compute'
OnClick = ComputeBtnClick
TabOrder = 10
end
object ReturnBnt: TButton
Left = 489
Height = 32
Top = 354
Width = 87
Caption = 'Return'
ModalResult = 1
OnClick = ReturnBntClick
TabOrder = 11
end
object NextBtn: TButton
Left = 115
Height = 29
Top = 313
Width = 140
Caption = 'Continue for next entry'
OnClick = NextBtnClick
TabOrder = 12
end
object FinishedBtn: TButton
Left = 297
Height = 29
Top = 312
Width = 132
Caption = 'Finished'
OnClick = FinishedBtnClick
TabOrder = 13
end
end

View File

@ -0,0 +1,57 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TEquationForm','FORMDATA',[
'TPF0'#13'TEquationForm'#12'EquationForm'#4'Left'#3#244#0#6'Height'#3#140#1#3
+'Top'#3#138#0#5'Width'#3'P'#2#7'Caption'#6#15'Equation Editor'#12'ClientHeig'
+'ht'#3#140#1#11'ClientWidth'#3'P'#2#6'OnShow'#7#13'ResetBtnClick'#10'LCLVers'
+'ion'#6#6'0.9.30'#0#5'TMemo'#5'Memo1'#4'Left'#2#7#6'Height'#3#184#0#3'Top'#2
+#8#5'Width'#3'9'#2#13'Lines.Strings'#1#6'_You can create a new variable as a'
+' combination of other existing variables with this procedure.'#6'MFirst, en'
+'ter the name of the new variable in the area labeled "New Variable".'#6'eNe'
+'xt, enter up to three values for each entry in your equation by selecting a'
+'n operation, function or'#6'6variable from the "drop-down" boxes. You can'
+' select:'#6'j(a) An operation code (+,-,* or /) except for the first one '
+'which should be a function or variable name.'#6'm(b) A function such as s'
+'in, cos, sqrt, etc. can be entered first followed by the variable to be act'
+'ed upon.'#6'^(c) A variable name from the list of available variables in '
+'the drop-down list of variables.'#6'e(d) For each variable to be entered,'
+' click the "Next Entry" button. Following the first entry, an '#6'/ '
+' operation code must be the first entry.'#6'dWhen done, click the "Finished'
+'" button followed by a click of the "Compute button". An image of the'#6'G'
+'completed function will be displayed before the new values are created.'#0#8
+'TabOrder'#2#0#0#0#6'TLabel'#6'Label1'#4'Left'#2#8#6'Height'#2#16#3'Top'#3
+#250#0#5'Width'#2'l'#7'Caption'#6#18'New Variable Name:'#11'ParentColor'#8#0
+#0#5'TEdit'#10'NewVarEdit'#4'Left'#2#8#6'Height'#2#23#3'Top'#3#19#1#5'Width'
+#2#127#8'TabOrder'#2#1#4'Text'#6#10'NewVarEdit'#0#0#6'TLabel'#6'Label2'#4'Le'
+'ft'#3#145#0#6'Height'#2#16#3'Top'#3#22#1#5'Width'#2#9#7'Caption'#6#1'='#11
+'ParentColor'#8#0#0#5'TEdit'#6'OpEdit'#4'Left'#3#161#0#6'Height'#2#23#3'Top'
+#3#19#1#5'Width'#2'`'#8'TabOrder'#2#2#4'Text'#6#6'OpEdit'#0#0#5'TEdit'#8'Fun'
+'cEdit'#4'Left'#3#9#1#6'Height'#2#23#3'Top'#3#19#1#5'Width'#3#136#0#8'TabOrd'
+'er'#2#3#4'Text'#6#8'FuncEdit'#0#0#5'TEdit'#7'VarEdit'#4'Left'#3#153#1#6'Hei'
+'ght'#2#23#3'Top'#3#19#1#5'Width'#3#168#0#8'TabOrder'#2#4#4'Text'#6#7'VarEdi'
+'t'#0#0#9'TComboBox'#8'OpsCombo'#4'Left'#3#162#0#6'Height'#2#23#3'Top'#3#227
+#0#5'Width'#2'^'#12'AutoDropDown'#9#10'ItemHeight'#2#15#13'Items.Strings'#1#6
+#1'+'#6#1'-'#6#1'*'#6#1'/'#6#0#0#7'OnClick'#7#13'OpsComboClick'#8'OnSelect'#7
+#14'OpsComboSelect'#8'TabOrder'#2#5#0#0#9'TComboBox'#13'FunctionCombo'#4'Lef'
+'t'#3#9#1#6'Height'#2#23#3'Top'#3#226#0#5'Width'#3#134#0#12'AutoDropDown'#9
+#10'ItemHeight'#2#15#13'Items.Strings'#1#6#3'sqr'#6#4'sqrt'#6#3'sin'#6#3'cos'
+#6#3'tan'#6#4'asin'#6#4'acos'#6#4'atan'#6#5'log10'#6#2'ln'#6#3'exp'#6#5'1 / '
+'X'#6#0#0#7'OnClick'#7#18'FunctionComboClick'#8'OnSelect'#7#19'FunctionCombo'
+'Select'#8'TabOrder'#2#6#0#0#9'TComboBox'#8'VarCombo'#4'Left'#3#151#1#6'Heig'
+'ht'#2#23#3'Top'#3#224#0#5'Width'#3#169#0#12'AutoDropDown'#9#10'ItemHeight'#2
+#15#7'OnClick'#7#13'VarComboClick'#8'OnSelect'#7#14'VarComboSelect'#8'TabOrd'
+'er'#2#7#4'Text'#6#8'VarCombo'#0#0#7'TButton'#8'ResetBtn'#4'Left'#2#10#6'Hei'
+'ght'#2' '#3'Top'#3'b'#1#5'Width'#2'W'#7'Caption'#6#5'Reset'#7'OnClick'#7#13
+'ResetBtnClick'#8'TabOrder'#2#8#0#0#7'TButton'#9'CancelBtn'#4'Left'#3#161#0#6
+'Height'#2' '#3'Top'#3'b'#1#5'Width'#2'W'#7'Caption'#6#6'Cancel'#11'ModalRes'
+'ult'#2#2#7'OnClick'#7#14'CancelBtnClick'#8'TabOrder'#2#9#0#0#7'TButton'#10
+'ComputeBtn'#4'Left'#3'8'#1#6'Height'#2' '#3'Top'#3'b'#1#5'Width'#2'W'#7'Cap'
+'tion'#6#7'Compute'#7'OnClick'#7#15'ComputeBtnClick'#8'TabOrder'#2#10#0#0#7
+'TButton'#9'ReturnBnt'#4'Left'#3#233#1#6'Height'#2' '#3'Top'#3'b'#1#5'Width'
+#2'W'#7'Caption'#6#6'Return'#11'ModalResult'#2#1#7'OnClick'#7#14'ReturnBntCl'
+'ick'#8'TabOrder'#2#11#0#0#7'TButton'#7'NextBtn'#4'Left'#2's'#6'Height'#2#29
+#3'Top'#3'9'#1#5'Width'#3#140#0#7'Caption'#6#23'Continue for next entry'#7'O'
+'nClick'#7#12'NextBtnClick'#8'TabOrder'#2#12#0#0#7'TButton'#11'FinishedBtn'#4
+'Left'#3')'#1#6'Height'#2#29#3'Top'#3'8'#1#5'Width'#3#132#0#7'Caption'#6#8'F'
+'inished'#7'OnClick'#7#16'FinishedBtnClick'#8'TabOrder'#2#13#0#0#0
]);

View File

@ -0,0 +1,289 @@
unit EquationUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, MainUnit, Globals, OutPutUnit, DataProcs,
DictionaryUnit, contexthelpunit, MatrixLib, Math;
type
{ TEquationForm }
TEquationForm = class(TForm)
FinishedBtn: TButton;
NextBtn: TButton;
ResetBtn: TButton;
CancelBtn: TButton;
ComputeBtn: TButton;
ReturnBnt: TButton;
VarCombo: TComboBox;
FunctionCombo: TComboBox;
OpsCombo: TComboBox;
VarEdit: TEdit;
FuncEdit: TEdit;
OpEdit: TEdit;
Label2: TLabel;
NewVarEdit: TEdit;
Label1: TLabel;
Memo1: TMemo;
procedure CancelBtnClick(Sender: TObject);
procedure ComputeBtnClick(Sender: TObject);
procedure FinishedBtnClick(Sender: TObject);
procedure FunctionComboClick(Sender: TObject);
procedure FunctionComboSelect(Sender: TObject);
procedure NextBtnClick(Sender: TObject);
procedure OpsComboClick(Sender: TObject);
procedure OpsComboSelect(Sender: TObject);
procedure ResetBtnClick(Sender: TObject);
procedure ReturnBntClick(Sender: TObject);
procedure VarComboClick(Sender: TObject);
procedure VarComboSelect(Sender: TObject);
private
{ private declarations }
operations, functions, variables : StrDyneVec;
NoEntries : integer;
selected : IntDyneVec;
public
{ public declarations }
end;
var
EquationForm: TEquationForm;
implementation
{ TEquationForm }
procedure TEquationForm.ResetBtnClick(Sender: TObject);
VAR i : integer;
begin
NewVarEdit.Text := '';
OpEdit.Text := '';
FuncEdit.Text := '';
VarEdit.Text := '';
OpsCombo.Text := 'Operations';
FunctionCombo.Text := 'Functions';
VarCombo.Clear;
for i := 1 to NoVariables do
VarCombo.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]);
VarCombo.Text := 'Variables';
VarCombo.DropDownCount := NoVariables;
SetLength(operations,NoVariables);
SetLength(functions,NoVariables);
SetLength(variables,NoVariables);
NoEntries := 0;
end;
procedure TEquationForm.ReturnBntClick(Sender: TObject);
begin
variables := nil;
functions := nil;
operations := nil;
end;
procedure TEquationForm.VarComboClick(Sender: TObject);
VAR index : integer;
begin
index := VarCombo.ItemIndex;
if index < 0 then exit;
VarEdit.Text := VarCombo.Items.Strings[index];
VarCombo.ItemIndex := -1;
end;
procedure TEquationForm.VarComboSelect(Sender: TObject);
VAR index : integer;
begin
index := VarCombo.ItemIndex;
if index < 0 then exit;
VarEdit.Text := VarCombo.Items.Strings[index];
VarCombo.ItemIndex := -1;
end;
procedure TEquationForm.NextBtnClick(Sender: TObject);
begin
operations[NoEntries] := OpEdit.Text;
if ((NoEntries > 0) and (operations[NoEntries] = '') )then
begin
ShowMessage('ERROR-No operation selected - enter again!');
exit;
end;
functions[NoEntries] := FuncEdit.Text;
variables[NoEntries] := VarEdit.Text;
if (variables[NoEntries] = '') then
begin
ShowMessage('ERROR-No variable entered - enter again!');
exit;
end;
NoEntries := NoEntries + 1;
OpEdit.Text := '';
FuncEdit.Text := '';
VarEdit.Text := '';
OpsCombo.Text := 'Operations';
FunctionCombo.Text := 'Functions';
VarCombo.Text := 'Variables';
end;
procedure TEquationForm.OpsComboClick(Sender: TObject);
VAR index : integer;
begin
index := OpsCombo.ItemIndex;
if index < 0 then exit;
OpEdit.Text := OpsCombo.Items.Strings[index];
OpsCombo.ItemIndex := -1;
end;
procedure TEquationForm.OpsComboSelect(Sender: TObject);
VAR index : integer;
begin
index := OpsCombo.ItemIndex;
if index < 0 then exit;
OpEdit.Text := OpsCombo.Items.Strings[index];
OpsCombo.ItemIndex := -1;
end;
procedure TEquationForm.FinishedBtnClick(Sender: TObject);
begin
operations[NoEntries] := OpEdit.Text;
if ((NoEntries > 0) and (operations[NoEntries] = '')) then
begin
ShowMessage('ERROR-No operation selected - enter again!');
exit;
end;
functions[NoEntries] := FuncEdit.Text;
variables[NoEntries] := VarEdit.Text;
if (variables[NoEntries] = '') then
begin
ShowMessage('ERROR-No variable entered - enter again!');
exit;
end;
NoEntries := NoEntries + 1;
OpsCombo.Text := 'Operations';
FunctionCombo.Text := 'Functions';
VarCombo.Text := 'Variables';
end;
procedure TEquationForm.FunctionComboClick(Sender: TObject);
VAR index : integer;
begin
index := FunctionCombo.ItemIndex;
if index < 0 then exit;
FuncEdit.Text := FunctionCombo.Items.Strings[index];
FunctionCombo.ItemIndex := -1;
end;
procedure TEquationForm.FunctionComboSelect(Sender: TObject);
VAR index : integer;
begin
index := FunctionCombo.ItemIndex;
if index < 0 then exit;
FuncEdit.Text := FunctionCombo.Items.Strings[index];
FunctionCombo.ItemIndex := -1;
end;
procedure TEquationForm.ComputeBtnClick(Sender: TObject);
VAR
cellstring, outline : string;
opsitem, funcsitem, col, newcol, i, j, k : integer;
newvalue, xvalue : double;
begin
// get position of selected variables from the main grid
SetLength(selected,NoEntries);
for i := 1 to NoVariables do
begin
cellstring := Trim(OS3MainFrm.DataGrid.Cells[i,0]);
for j := 0 to NoEntries - 1 do
if (cellstring = variables[j]) then selected[j] := i;
end;
// create a new variable in the main grid
col := NoVariables + 1;
newcol := col;
DictionaryFrm.NewVar(col);
OS3MainFrm.DataGrid.Cells[col,0] := NewVarEdit.Text;
DictionaryFrm.DictGrid.Cells[1,col] := NewVarEdit.Text;
// for each subject obtain selected variable values and add to newvalue
for i := 1 to NoCases do // subject loop
begin
newvalue := 0.0;
for j := 0 to NoEntries - 1 do // list loop
begin
col := selected[j];
xvalue := StrToFloat(Trim(OS3MainFrm.DataGrid.Cells[col,i]));
if (functions[j] <> '') then // do the function
begin
for k := 0 to 11 do // get function number
begin
if (functions[j] = FunctionCombo.Items.Strings[k]) then funcsitem := k;
end;
case (funcsitem) of
0: xvalue *= xvalue;
1: xvalue := sqrt(xvalue);
2: xvalue := sin(xvalue);
3: xvalue := cos(xvalue);
4: xvalue := tan(xvalue);
5: xvalue := arcsin(xvalue);
6: xvalue := arccos(xvalue);
7: xvalue := arctan(xvalue);
8: xvalue := log10(xvalue);
9: xvalue := ln(xvalue);
10: xvalue := exp(xvalue);
11: xvalue := 1.0 / xvalue;
end;
end; // end if function
if (operations[j] = '') then newvalue := newvalue + xvalue
else // find operation
begin
for k := 0 to 3 do
begin
if (operations[j] = OpsCombo.Items.Strings[k]) then opsitem := k;
end;
case (opsitem) of
0: newvalue += xvalue;
1: newvalue -= xvalue;
2: newvalue *= xvalue;
3: newvalue /= xvalue;
end;
end; // end else
end; // end jth variable
OS3MainFrm.DataGrid.Cells[newcol,i] := floattostr(newvalue);
FormatCell(newcol,i);
end; // next subject
OutPutFrm.RichEdit.Clear;
OutPutFrm.RichEdit.Lines.Add('Equation Used for the New Variable');
OutPutFrm.RichEdit.Lines.Add('');
outline := NewVarEdit.Text;
outline := outline +' = ';
for j := 0 to NoEntries - 1 do
begin
outline := outline + functions[j];
outline := outline + ' ';
outline := outline + variables[j];
outline := outline + ' ';
if (j < NoEntries-1) then
begin
outline := outline + operations[j+1];
outline := outline + ' ';
end;
end;
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.ShowModal;
end;
procedure TEquationForm.CancelBtnClick(Sender: TObject);
begin
variables := nil;
functions := nil;
operations := nil;
end;
initialization
{$I equationunit.lrs}
end.

View File

@ -0,0 +1,330 @@
unit ERRORCURVESUNIT;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, ExtCtrls, BlankFrmUnit, OutPutUnit, FunctionsLib, Globals;
type
TwoCol = array[1..2,1..100] of double;
type
{ TErrorCurvesFrm }
TErrorCurvesFrm = class(TForm)
NullType: TRadioGroup;
ResetBtn: TButton;
CancelBtn: TButton;
ComputeBtn: TButton;
ReturnBtn: TButton;
NullMeanEdit: TEdit;
AltMeanEdit: TEdit;
SDEdit: TEdit;
TypeIEdit: TEdit;
TypeIIEdit: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
procedure ComputeBtnClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure ResetBtnClick(Sender: TObject);
private
{ private declarations }
procedure PltPts(realpts : TwoCol;
Xmax, Xmin, Ymax, Ymin : double;
Npts, XaxisStart, YaxisStart, XaxisRange : integer;
YaxisRange : integer;
acolor : TColor; Sender : TObject);
procedure Hscale(Xmin, Xmax : double; Nsteps : integer;
acolor : TColor; FontSize : integer;
X, Y, Xlength : integer;
charLabel : string; Sender : TObject);
procedure Vscale(Ymin, Ymax : double; Nsteps : integer;
acolor : TColor; FontSize : integer;
X, Y, Ylength : integer;
charLabel : string; Sender : TObject);
procedure NormPts(zMin, zMax : double; Npts : integer;
VAR realpts : TwoCol;
Sender : TObject);
public
{ public declarations }
end;
var
ErrorCurvesFrm: TErrorCurvesFrm;
implementation
{ TErrorCurvesFrm }
procedure TErrorCurvesFrm.ResetBtnClick(Sender: TObject);
begin
NullMeanEdit.Text := '';
AltMeanEdit.Text := '';
SDEdit.Text := '';
TypeIEdit.Text := '0.05';
TypeIIEdit.Text := '0.05';
NullMeanEdit.SetFocus;
end;
procedure TErrorCurvesFrm.FormShow(Sender: TObject);
begin
ResetBtnClick(self);
end;
procedure TErrorCurvesFrm.ComputeBtnClick(Sender: TObject);
var
// generate a null and alternate hypothesis for a specified effect
// size, Type I error rate and Type II error rate using the normal
// distribution z-test. Estimate the N needed.
// Uses the Plot.h header file and form FrmPlot.
Clwidth,Clheight,X,Y,XaxisStart,XaxisEnd,YaxisStart,YaxisEnd : integer;
Xrange, Yrange, t, range, Nsize: integer;
alpha, beta, nullmean, altmean, Diff, StdDev, CriticalX, zalpha : double;
zbeta, Xprop, stderrmean, xlow, xhigh : double;
valuestr, charLabel : string;
realpts : TwoCol;
begin
BlankFrm.Show;
BlankFrm.Image1.Canvas.Clear;
BlankFrm.Image1.Canvas.Pen.Color := clBlack;
BlankFrm.Image1.Canvas.Brush.Color := clWhite;
BlankFrm.Image1.Canvas.Clear;
BlankFrm.Image1.Canvas.FloodFill(1,1,clWhite,fsborder);
alpha := StrToFloat(TypeIEdit.Text);
if NullType.ItemIndex = 1 then alpha := alpha / 2.0;
beta := StrToFloat(TypeIIEdit.Text);
nullmean := StrToFloat(NullMeanEdit.Text);
altmean := StrToFloat(AltMeanEdit.Text);
StdDev := StrToFloat(SDEdit.Text);
zalpha := inversez(1.0 - alpha);
zbeta := inversez(1.0 - beta);
Diff := abs(nullmean - altmean);
Nsize := round((StdDev / Diff) * abs(zbeta + zalpha));
Nsize := Nsize * Nsize;
CriticalX := zalpha * (StdDev / sqrt(Nsize)) + nullmean;
stderrmean := StdDev / sqrt(Nsize);
Clwidth := BlankFrm.Image1.Width;
Clheight := BlankFrm.Image1.Height;
// Determine X scale and print it
YaxisStart := (Clheight * 6) div 10;
YaxisEnd := Clheight div 10;
Yrange := YaxisStart - YaxisEnd;
xlow := nullmean - 4 * stderrmean;
xhigh := altmean + 4 * stderrmean;
XaxisStart := Clwidth div 8;
XaxisEnd := Clwidth - (Clwidth div 8);
Xrange := XaxisEnd - XaxisStart;
Hscale(xlow, xhigh, 9, clWhite, 8, XaxisStart, YaxisStart, Xrange,'X SCALE',BlankFrm);
// Create values of the alternative distribution
Xprop := ( (nullmean + 4*stderrmean) - xlow) / (xhigh - xlow);
range := round(Xprop * Xrange);
NormPts(-4.0, 4.0, 100, realpts, self);
Xprop := ((altmean - 4 * stderrmean) - xlow) / (xhigh - xlow);
X := round((Xprop * Xrange) + XaxisStart); // where to start curve
PltPts(realpts, 4.0, -4.0, 0.5, 0.0, 100, X, YaxisStart, range,
Yrange, clBlack, self);
//Draw vertical axis at the critical X value
Xprop := (CriticalX - xlow) / (xhigh - xlow);
X := round((Xprop * Xrange) + XaxisStart);
Y := YaxisStart;
BlankFrm.Image1.Canvas.MoveTo(X,Y);
BlankFrm.Image1.Canvas.LineTo(X,YaxisEnd);
charLabel := 'Critical X = ';
valuestr := format('%6.2f',[CriticalX]);
charLabel := charLabel + valuestr;
t := BlankFrm.Image1.Canvas.TextWidth(charLabel) div 2;
BlankFrm.Image1.Canvas.TextOut(X-t,YaxisEnd-15,charLabel);
// floodfill Alternate distribution area with blue
Xprop := (CriticalX - xlow) / (xhigh - xlow);
X := round((Xprop * Xrange) + XaxisStart);
Y := YaxisStart - 3;
BlankFrm.Image1.Canvas.Brush.Color := clBlue;
BlankFrm.Image1.Canvas.FloodFill(X-2,Y,clBlack,fsBorder );
BlankFrm.Image1.Canvas.Brush.Color := clWhite;
// Create values of normal curve for null distribution
NormPts(-4.0, 4.0, 100, realpts, self);
Xprop := ( (nullmean + 4*stderrmean) - xlow) / (xhigh - xlow);
range := round(Xprop * Xrange);
BlankFrm.Image1.Canvas.Brush.Color := clWhite;
PltPts(realpts, 4.0, -4.0, 0.5, 0.0, 100, XaxisStart, YaxisStart, range,
Yrange, clBlack, self);
//Draw vertical axis at null mean
Xprop := (nullmean - xlow) / (xhigh - xlow);
X := round((Xprop * Xrange) + XaxisStart);
Y := YaxisStart;
BlankFrm.Image1.Canvas.MoveTo(X,Y);
BlankFrm.Image1.Canvas.LineTo(X,YaxisEnd);
charLabel := 'Null Mean';
t := BlankFrm.Image1.Canvas.TextWidth(charLabel) div 2;
BlankFrm.Image1.Canvas.TextOut(X-t,YaxisEnd,charLabel);
// floodfill alpha area with red
Xprop := (CriticalX - xlow) / (xhigh - xlow);
X := round((Xprop * Xrange) + XaxisStart);
Y := YaxisStart - 3;
BlankFrm.Image1.Canvas.Brush.Color := clRed;
BlankFrm.Image1.Canvas.FloodFill(X+2,Y,clBlack,fsBorder );
BlankFrm.Image1.Canvas.Brush.Color := clWhite;
//Draw vertical axis at alternative mean
BlankFrm.Image1.Canvas.Pen.Color := clBlack;
Xprop := (altmean - xlow) / (xhigh - xlow);
X := round((Xprop * Xrange) + XaxisStart);
Y := YaxisStart;
BlankFrm.Image1.Canvas.MoveTo(X,Y);
BlankFrm.Image1.Canvas.LineTo(X,YaxisEnd);
charLabel := 'Alternative Mean';
t := BlankFrm.Image1.Canvas.TextWidth(charLabel) div 2;
BlankFrm.Image1.Canvas.TextOut(X-t,YaxisEnd,charLabel);
// draw the vertical density axis scale values
Vscale(0.0, 0.5, 11, clWhite, 10, XaxisStart, YaxisStart, Yrange, 'DENSITY', self);
// Print Heading
charLabel := 'Type I and II Error Areas';
BlankFrm.Caption := charLabel;
charLabel := 'Alpha := ';
charLabel := charLabel + TypeIEdit.Text;
charLabel := charLabel + ', Beta := ';
charLabel := charLabel + TypeIIEdit.Text;
charLabel := charLabel + ', N := ';
charLabel := charLabel + IntToStr(Nsize);
t := BlankFrm.Image1.Canvas.TextWidth(charLabel);
X := round((BlankFrm.Image1.Width / 2) - (t / 2));
BlankFrm.Image1.Canvas.TextOut(X,0,charLabel);
// print z scale for the null distribution
Xprop := ( (nullmean + 4*stderrmean) - xlow) / (xhigh - xlow);
range := round(Xprop * Xrange);
Hscale(-4.0, 4.0, 11, clWhite, 8, XaxisStart, YaxisStart+50, range,'NULL Z SCALE', self);
end;
procedure TErrorCurvesFrm.PltPts(realpts: TwoCol; Xmax, Xmin, Ymax,
Ymin: double; Npts, XaxisStart, YaxisStart, XaxisRange: integer;
YaxisRange: integer; acolor: TColor; Sender: TObject);
var
hprop, zprop, z, h : double;
i, X, Y : integer;
intpts : array[1..100] of TPoint;
begin
for i := 1 to Npts do
begin
z := realpts[1,i];
h := realpts[2,i];
zprop := (z - Xmin) / (Xmax - Xmin);
X := round((zprop * XaxisRange) + XaxisStart);
hprop := (h - Ymin) / (Ymax - Ymin);
Y := round(YaxisStart - (hprop * YaxisRange));
intpts[i] := Point(X,Y);
end;
BlankFrm.Image1.Canvas.Pen.Color := acolor;
BlankFrm.Image1.Canvas.Polyline(Slice(intpts,Npts - 1));
end;
procedure TErrorCurvesFrm.Hscale(Xmin, Xmax: double; Nsteps: integer;
acolor: TColor; FontSize: integer; X, Y, Xlength: integer; charLabel: string;
Sender: TObject);
var
i, TickEnd, Xpos, Ypos, TextX : integer;
Xincr, Xval : double;
Svalue, Ast : string;
begin
BlankFrm.Image1.Canvas.MoveTo(X,Y);
BlankFrm.Image1.Canvas.LineTo(X+Xlength,Y);
BlankFrm.Image1.Canvas.Font.Size := FontSize;
BlankFrm.Image1.Canvas.Brush.Color := acolor;
TickEnd := Y + 10;
Xincr := (Xmax - Xmin) / Nsteps;
for i := 0 to Nsteps + 1 do
begin
Xpos := round(((Xlength / Nsteps) * i) + X);
BlankFrm.Image1.Canvas.MoveTo(Xpos,Y);
BlankFrm.Image1.Canvas.LineTo(Xpos,TickEnd);
TextX := Xpos - 8;
Xval := Xmin + ( i * Xincr);
Svalue := format('%4.2f',[Xval]);
Ast := Svalue;
BlankFrm.Image1.Canvas.TextOut(TextX, Y+15, Ast);
end;
// print label below X axis
Ypos := Y + 30;
Xpos := round((BlankFrm.Image1.Width / 2) - (BlankFrm.Image1.Canvas.TextWidth(charLabel) / 2));
BlankFrm.Image1.Canvas.TextOut(Xpos,Ypos,charLabel);
end;
procedure TErrorCurvesFrm.Vscale(Ymin, Ymax: double; Nsteps: integer;
acolor: TColor; FontSize: integer; X, Y, Ylength: integer; charLabel: string;
Sender: TObject);
var
TickEnd, Ypos, Xpos, TextY : integer;
Yincr, Yval : double;
Svalue, symbol, Ast : string;
chpixs, i : integer;
begin
BlankFrm.Image1.Canvas.MoveTo(X,Y);
BlankFrm.Image1.Canvas.LineTo(X,Y-Ylength);
BlankFrm.Image1.Canvas.Font.Size := FontSize;
BlankFrm.Image1.Canvas.Brush.Color := acolor;
TickEnd := X - 10;
Yincr := (Ymax - Ymin) / Nsteps;
TextY := 0;
for i := 0 to Nsteps + 1 do
begin
Ypos := round(Y - ((Ylength / Nsteps) * i));
BlankFrm.Image1.Canvas.MoveTo(X,Ypos);
BlankFrm.Image1.Canvas.LineTo(TickEnd,Ypos);
TextY := TickEnd - 30;
Yval := Ymin + ( i * Yincr);
Svalue := format('%4.2f',[Yval]);
Ast := Svalue;
BlankFrm.Image1.Canvas.TextOut(TextY, Ypos-8, Ast);
end;
// print label vertically
Xpos := TextY - 15;
for i := 1 to Length(charLabel) do
begin
chpixs := BlankFrm.Image1.Canvas.TextHeight(charLabel);
Ypos := round(Y - (Ylength / 2) - ( (Length(charLabel) * chpixs) / 2 ) + (chpixs * i));
symbol := charLabel[i];
// symbol[2] := 0;
BlankFrm.Image1.Canvas.TextOut(Xpos,Ypos,symbol);
end;
end;
procedure TErrorCurvesFrm.NormPts(zMin, zMax: double; Npts: integer;
var realpts: TwoCol; Sender: TObject);
var
zIncr, z, h : double;
i : integer;
begin
zIncr := (zMax - zMin) / Npts;
for i := 1 to Npts do
begin
z := zMin + (zIncr * i);
h := (1.0 / sqrt(2.0 * 3.14159265358979)) *
( 1.0 / exp(z * z / 2.0));
realpts[1,i] := z;
realpts[2,i] := h;
end;
end;
initialization
{$I errorcurvesunit.lrs}
end.

View File

@ -0,0 +1,205 @@
object EssayItemForm: TEssayItemForm
Left = 207
Height = 499
Top = 116
Width = 641
Caption = 'Essay Item Creation and Editing'
ClientHeight = 499
ClientWidth = 641
OnShow = FormShow
LCLVersion = '0.9.30'
object jpegBrowseBtn: TButton
Left = 7
Height = 30
Top = 337
Width = 118
Caption = 'Browse jpeg Images'
OnClick = jpegBrowseBtnClick
TabOrder = 0
end
object SelectImageBtn: TButton
Left = 10
Height = 26
Top = 408
Width = 112
Caption = 'Select Shown Image'
OnClick = SelectImageBtnClick
TabOrder = 1
end
object Image1: TImage
Left = 138
Height = 151
Top = 337
Width = 211
end
object ItemSaveBtn: TButton
Left = 368
Height = 33
Top = 336
Width = 111
Caption = 'Save this item'
OnClick = ItemSaveBtnClick
TabOrder = 2
end
object PreviousBtn: TButton
Left = 498
Height = 32
Top = 337
Width = 110
Caption = 'Show Previous Item'
OnClick = PreviousBtnClick
TabOrder = 3
end
object ShowNextBtn: TButton
Left = 369
Height = 30
Top = 392
Width = 109
Caption = 'Show Next Item'
OnClick = ShowNextBtnClick
TabOrder = 4
end
object StartNewBtn: TButton
Left = 498
Height = 30
Top = 392
Width = 111
Caption = 'Start a new item'
OnClick = StartNewBtnClick
TabOrder = 5
end
object ReturnBtn: TButton
Left = 432
Height = 30
Top = 456
Width = 111
Caption = 'Return'
OnClick = ReturnBtnClick
TabOrder = 6
end
object jpeglabel: TLabel
Left = 10
Height = 16
Top = 299
Width = 225
Caption = 'jpeg photo to display prior to item (if any):'
ParentColor = False
end
object jpegnameEdit: TEdit
Left = 240
Height = 23
Top = 292
Width = 372
TabOrder = 7
Text = 'jpegnameEdit'
end
object TFItemNoLabel: TLabel
Left = 7
Height = 16
Top = 179
Width = 75
Caption = 'Item Number:'
ParentColor = False
end
object ItemNoEdit: TEdit
Left = 96
Height = 23
Top = 172
Width = 44
TabOrder = 8
Text = '1'
end
object ItemCodeLabel: TLabel
Left = 176
Height = 16
Top = 179
Width = 93
Caption = 'Item Major Code:'
ParentColor = False
end
object MajorCodeEdit: TEdit
Left = 280
Height = 23
Top = 172
Width = 41
TabOrder = 9
Text = '1'
end
object MinorCodeLabel: TLabel
Left = 336
Height = 16
Top = 177
Width = 94
Caption = 'Item Minor Code:'
ParentColor = False
end
object MinorCodeEdit: TEdit
Left = 440
Height = 23
Top = 172
Width = 45
TabOrder = 10
Text = '0'
end
object ItemStemLabel: TLabel
Left = 8
Height = 16
Top = 220
Width = 58
Caption = 'Item Stem:'
ParentColor = False
end
object ItemStemEdit: TEdit
Left = 73
Height = 23
Top = 213
Width = 539
TabOrder = 11
Text = 'ItemStemEdit'
end
object AnswerLabel: TLabel
Left = 8
Height = 16
Top = 256
Width = 74
Caption = 'Short Answer:'
ParentColor = False
end
object AnswerEdit: TEdit
Left = 96
Height = 23
Top = 249
Width = 516
TabOrder = 12
end
object Memo1: TMemo
Left = 20
Height = 133
Top = 11
Width = 592
Lines.Strings = (
'Directions: To create an Essay item, you will need to enter the number of an item code which contains'
'both a major code and a minor code. It is suggested you print all item codes from the options menu on the'
'main procedure page of the item banking program. You can however, browse the Essay items from this '
'form.'
'After you have selected an item code number, enter the item stem in the space provided. Your item can also'
'include a jpeg picture prior to the presentation of the item on a test. To find the image, click the jpeg browse'
'button until you see the image you wish to include. When that item is shown, click the Select button to save'
'the name of the image file.'
)
TabOrder = 13
end
object CodeBrowseBtn: TButton
Left = 502
Height = 28
Top = 165
Width = 106
Caption = 'Browse Items'
OnClick = CodeBrowseBtnClick
TabOrder = 14
end
object OpenPictureDialog1: TOpenPictureDialog
left = 412
top = 471
end
end

View File

@ -0,0 +1,60 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TEssayItemForm','FORMDATA',[
'TPF0'#14'TEssayItemForm'#13'EssayItemForm'#4'Left'#3#207#0#6'Height'#3#243#1
+#3'Top'#2't'#5'Width'#3#129#2#7'Caption'#6#31'Essay Item Creation and Editin'
+'g'#12'ClientHeight'#3#243#1#11'ClientWidth'#3#129#2#6'OnShow'#7#8'FormShow'
+#10'LCLVersion'#6#6'0.9.30'#0#7'TButton'#13'jpegBrowseBtn'#4'Left'#2#7#6'Hei'
+'ght'#2#30#3'Top'#3'Q'#1#5'Width'#2'v'#7'Caption'#6#18'Browse jpeg Images'#7
+'OnClick'#7#18'jpegBrowseBtnClick'#8'TabOrder'#2#0#0#0#7'TButton'#14'SelectI'
+'mageBtn'#4'Left'#2#10#6'Height'#2#26#3'Top'#3#152#1#5'Width'#2'p'#7'Caption'
+#6#18'Select Shown Image'#7'OnClick'#7#19'SelectImageBtnClick'#8'TabOrder'#2
+#1#0#0#6'TImage'#6'Image1'#4'Left'#3#138#0#6'Height'#3#151#0#3'Top'#3'Q'#1#5
+'Width'#3#211#0#0#0#7'TButton'#11'ItemSaveBtn'#4'Left'#3'p'#1#6'Height'#2'!'
+#3'Top'#3'P'#1#5'Width'#2'o'#7'Caption'#6#14'Save this item'#7'OnClick'#7#16
+'ItemSaveBtnClick'#8'TabOrder'#2#2#0#0#7'TButton'#11'PreviousBtn'#4'Left'#3
+#242#1#6'Height'#2' '#3'Top'#3'Q'#1#5'Width'#2'n'#7'Caption'#6#18'Show Previ'
+'ous Item'#7'OnClick'#7#16'PreviousBtnClick'#8'TabOrder'#2#3#0#0#7'TButton'
+#11'ShowNextBtn'#4'Left'#3'q'#1#6'Height'#2#30#3'Top'#3#136#1#5'Width'#2'm'#7
+'Caption'#6#14'Show Next Item'#7'OnClick'#7#16'ShowNextBtnClick'#8'TabOrder'
+#2#4#0#0#7'TButton'#11'StartNewBtn'#4'Left'#3#242#1#6'Height'#2#30#3'Top'#3
+#136#1#5'Width'#2'o'#7'Caption'#6#16'Start a new item'#7'OnClick'#7#16'Start'
+'NewBtnClick'#8'TabOrder'#2#5#0#0#7'TButton'#9'ReturnBtn'#4'Left'#3#176#1#6
+'Height'#2#30#3'Top'#3#200#1#5'Width'#2'o'#7'Caption'#6#6'Return'#7'OnClick'
+#7#14'ReturnBtnClick'#8'TabOrder'#2#6#0#0#6'TLabel'#9'jpeglabel'#4'Left'#2#10
+#6'Height'#2#16#3'Top'#3'+'#1#5'Width'#3#225#0#7'Caption'#6'-jpeg photo to d'
+'isplay prior to item (if any):'#11'ParentColor'#8#0#0#5'TEdit'#12'jpegnameE'
+'dit'#4'Left'#3#240#0#6'Height'#2#23#3'Top'#3'$'#1#5'Width'#3't'#1#8'TabOrde'
+'r'#2#7#4'Text'#6#12'jpegnameEdit'#0#0#6'TLabel'#13'TFItemNoLabel'#4'Left'#2
+#7#6'Height'#2#16#3'Top'#3#179#0#5'Width'#2'K'#7'Caption'#6#12'Item Number:'
+#11'ParentColor'#8#0#0#5'TEdit'#10'ItemNoEdit'#4'Left'#2'`'#6'Height'#2#23#3
+'Top'#3#172#0#5'Width'#2','#8'TabOrder'#2#8#4'Text'#6#1'1'#0#0#6'TLabel'#13
+'ItemCodeLabel'#4'Left'#3#176#0#6'Height'#2#16#3'Top'#3#179#0#5'Width'#2']'#7
+'Caption'#6#16'Item Major Code:'#11'ParentColor'#8#0#0#5'TEdit'#13'MajorCode'
+'Edit'#4'Left'#3#24#1#6'Height'#2#23#3'Top'#3#172#0#5'Width'#2')'#8'TabOrder'
+#2#9#4'Text'#6#1'1'#0#0#6'TLabel'#14'MinorCodeLabel'#4'Left'#3'P'#1#6'Height'
+#2#16#3'Top'#3#177#0#5'Width'#2'^'#7'Caption'#6#16'Item Minor Code:'#11'Pare'
+'ntColor'#8#0#0#5'TEdit'#13'MinorCodeEdit'#4'Left'#3#184#1#6'Height'#2#23#3
+'Top'#3#172#0#5'Width'#2'-'#8'TabOrder'#2#10#4'Text'#6#1'0'#0#0#6'TLabel'#13
+'ItemStemLabel'#4'Left'#2#8#6'Height'#2#16#3'Top'#3#220#0#5'Width'#2':'#7'Ca'
+'ption'#6#10'Item Stem:'#11'ParentColor'#8#0#0#5'TEdit'#12'ItemStemEdit'#4'L'
+'eft'#2'I'#6'Height'#2#23#3'Top'#3#213#0#5'Width'#3#27#2#8'TabOrder'#2#11#4
+'Text'#6#12'ItemStemEdit'#0#0#6'TLabel'#11'AnswerLabel'#4'Left'#2#8#6'Height'
+#2#16#3'Top'#3#0#1#5'Width'#2'J'#7'Caption'#6#13'Short Answer:'#11'ParentCol'
+'or'#8#0#0#5'TEdit'#10'AnswerEdit'#4'Left'#2'`'#6'Height'#2#23#3'Top'#3#249#0
+#5'Width'#3#4#2#8'TabOrder'#2#12#0#0#5'TMemo'#5'Memo1'#4'Left'#2#20#6'Height'
+#3#133#0#3'Top'#2#11#5'Width'#3'P'#2#13'Lines.Strings'#1#6'fDirections: To '
+'create an Essay item, you will need to enter the number of an item code whi'
+'ch contains'#6'jboth a major code and a minor code. It is suggested you pr'
+'int all item codes from the options menu on the'#6'emain procedure page of '
+'the item banking program. You can however, browse the Essay items from th'
+'is '#6#5'form.'#6'kAfter you have selected an item code number, enter the i'
+'tem stem in the space provided. Your item can also'#6'qinclude a jpeg pict'
+'ure prior to the presentation of the item on a test. To find the image, cl'
+'ick the jpeg browse'#6'mbutton until you see the image you wish to include.'
+' When that item is shown, click the Select button to save'#6#27'the name o'
+'f the image file.'#0#8'TabOrder'#2#13#0#0#7'TButton'#13'CodeBrowseBtn'#4'Le'
+'ft'#3#246#1#6'Height'#2#28#3'Top'#3#165#0#5'Width'#2'j'#7'Caption'#6#12'Bro'
+'wse Items'#7'OnClick'#7#18'CodeBrowseBtnClick'#8'TabOrder'#2#14#0#0#18'TOpe'
+'nPictureDialog'#18'OpenPictureDialog1'#4'left'#3#156#1#3'top'#3#215#1#0#0#0
]);

View File

@ -0,0 +1,260 @@
unit EssayItemUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, ExtCtrls, ExtDlgs, outputunit;
type
{ TEssayItemForm }
TEssayItemForm = class(TForm)
AnswerEdit: TEdit;
AnswerLabel: TLabel;
CodeBrowseBtn: TButton;
Image1: TImage;
ItemCodeLabel: TLabel;
ItemSaveBtn: TButton;
ItemStemEdit: TEdit;
ItemStemLabel: TLabel;
jpegBrowseBtn: TButton;
jpeglabel: TLabel;
jpegnameEdit: TEdit;
MajorCodeEdit: TEdit;
Memo1: TMemo;
MinorCodeEdit: TEdit;
MinorCodeLabel: TLabel;
OpenPictureDialog1: TOpenPictureDialog;
PreviousBtn: TButton;
ReturnBtn: TButton;
SelectImageBtn: TButton;
ShowNextBtn: TButton;
StartNewBtn: TButton;
ItemNoEdit: TEdit;
TFItemNoLabel: TLabel;
procedure CodeBrowseBtnClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure ItemSaveBtnClick(Sender: TObject);
procedure jpegBrowseBtnClick(Sender: TObject);
procedure PreviousBtnClick(Sender: TObject);
procedure ReturnBtnClick(Sender: TObject);
procedure SelectImageBtnClick(Sender: TObject);
procedure ShowNextBtnClick(Sender: TObject);
procedure StartNewBtnClick(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
EssayItemForm: TEssayItemForm;
implementation
uses ItemBankingUnit;
{ TEssayItemForm }
procedure TEssayItemForm.ReturnBtnClick(Sender: TObject);
begin
EssayItemForm.Hide;
Close;
end;
procedure TEssayItemForm.SelectImageBtnClick(Sender: TObject);
begin
jpegnameEdit.Text := OpenPictureDialog1.FileName;
end;
procedure TEssayItemForm.ShowNextBtnClick(Sender: TObject);
var
count : integer;
itemno : integer;
JPEG : TJPEGImage;
begin
itemno := StrToInt(ItemNoEdit.Text) + 1;
count := ItemBankFrm.BankInfo.NEssayItems;
if count <= itemno then
begin
ItemNoEdit.Text := IntToStr(ItemBankFrm.EssayInfo[itemno].ItemNumber);
MajorCodeEdit.Text := IntToStr(ItemBankFrm.EssayInfo[itemno].majorcode) ;
MinorCodeEdit.Text := IntToStr(ItemBankFrm.EssayInfo[itemno].minorcode);
ItemStemEdit.Text := ItemBankFrm.EssayInfo[itemno].ItemStem;
AnswerEdit.Text := ItemBankFrm.EssayInfo[itemno].Answer;
jpegnameEdit.Text := ItemBankFrm.EssayInfo[itemno].PicName;
if jpegnameEdit.Text <> 'none' then
begin
JPEG := TJPEGImage.Create;
try
JPEG.LoadFromFile(jpegnameEdit.Text);
Image1.Picture.Assign(JPEG);
finally
JPEG.Free;
Image1.Proportional := true;
end;
end;
end;
end;
procedure TEssayItemForm.StartNewBtnClick(Sender: TObject);
var
currentno : integer;
begin
currentno := ItemBankFrm.BankInfo.NEssayItems + 1;
ItemNoEdit.Text := IntToStr(currentno);
currentno := StrToInt(MinorCodeEdit.Text);
MinorCodeEdit.Text := IntToStr(currentno + 1);
ItemStemEdit.Text := '';
AnswerEdit.Text := '';
jpegnameEdit.Text := 'none';
Image1.Canvas.Clear;
end;
procedure TEssayItemForm.ItemSaveBtnClick(Sender: TObject);
var
currentno : integer;
count : integer;
begin
count := ItemBankFrm.BankInfo.NEssayItems;
currentno := StrToInt(ItemNoEdit.Text);
if currentno > count then
begin
ItemBankFrm.BankInfo.NEssayItems := currentno;
ItemBankFrm.NEssayText.Text := IntToStr(currentno);
end;
ItemBankFrm.EssayInfo[currentno].ItemNumber := currentno;
ItemBankFrm.EssayInfo[currentno].majorcode := StrToInt(MajorCodeEdit.Text);
ItemBankFrm.EssayInfo[currentno].minorcode := StrToInt(MinorCodeEdit.Text);
ItemBankFrm.EssayInfo[currentno].ItemStem := ItemStemEdit.Text;
ItemBankFrm.EssayInfo[currentno].Answer := AnswerEdit.text;
ItemBankFrm.EssayInfo[currentno].PicName := jpegnameEdit.Text;
end;
procedure TEssayItemForm.FormShow(Sender: TObject);
Var
nitems : integer;
JPEG : TJPEGImage;
begin
if ItemBankFrm.BankInfo.NEssayItems > 0 then
begin
nitems := ItemBankFrm.BankInfo.NEssayItems;
ItemNoEdit.Text := '1'; //IntToStr(ItemBankFrm.TFItemInfo[1].ItemNumber);
MajorCodeEdit.Text := IntToStr(ItemBankFrm.EssayInfo[1].majorcode) ;
MinorCodeEdit.Text := IntToStr(ItemBankFrm.EssayInfo[1].minorcode);
ItemStemEdit.Text := ItemBankFrm.EssayInfo[1].ItemStem;
AnswerEdit.Text := ItemBankFrm.EssayInfo[1].Answer;
jpegnameEdit.Text := ItemBankFrm.EssayInfo[1].PicName;
if jpegnameEdit.Text <> 'none' then
begin
JPEG := TJPEGImage.Create;
try
JPEG.LoadFromFile(jpegnameEdit.Text);
Image1.Picture.Assign(JPEG);
finally
JPEG.Free;
Image1.Proportional := true;
end;
end;
end else
begin
ItemNoEdit.Text := '1';
MajorCodeEdit.Text := '1';
MinorCodeEdit.Text := '0';
ItemStemEdit.Text := '';
AnswerEdit.Text := '';
jpegnameEdit.Text := 'none';
Image1.Canvas.Clear;
end;
end;
procedure TEssayItemForm.CodeBrowseBtnClick(Sender: TObject);
var
count : integer;
i : integer;
outline : string;
begin
OutPutFrm.RichEdit.Clear;
count := ItemBankFrm.BankInfo.NTFItems;
OutPutFrm.RichEdit.Lines.Add('Current Items');
OutPutFrm.RichEdit.Lines.Add('');
for i := 1 to count do
begin
outline := format('Item number %3d',[ItemBankFrm.EssayInfo[i].itemnumber]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Major Code %3d',[ItemBankFrm.EssayInfo[i].majorcode]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Minor Code %3d',[ItemBankFrm.EssayInfo[i].minorcode]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Item Stem %s',[ItemBankFrm.EssayInfo[i].ItemStem]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Breif Answer %s',[ItemBankFrm.EssayInfo[i].Answer]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Graphic Image %s',[ItemBankFrm.EssayInfo[i].PicName]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add('');
end;
OutPutFrm.ShowModal;
end;
procedure TEssayItemForm.jpegBrowseBtnClick(Sender: TObject);
VAR
JPEG : TJPEGImage;
begin
OpenPictureDialog1.Options := OpenPictureDialog1.Options+[ofFileMustExist];
if not OpenPictureDialog1.Execute then exit;
try
JPEG := TJPEGImage.Create;
try
JPEG.LoadFromFile(OpenPictureDialog1.FileName);
Image1.Picture.Assign(JPEG);
finally
JPEG.Free;
end;
except
on E: Exception do begin
MessageDlg('Error','Error: '+E.Message,mtError,[mbOk],0);
end;
end;
Image1.Proportional := true;
end;
procedure TEssayItemForm.PreviousBtnClick(Sender: TObject);
Var
response : string;
itemno : integer;
JPEG : TJPEGImage;
begin
response := InputBox('Code Number:','Number:','1');
itemno := StrToInt(response);
if itemno <= ItemBankFrm.BankInfo.NEssayItems then
begin
ItemNoEdit.Text := IntToStr(ItemBankFrm.EssayInfo[itemno].ItemNumber);
MajorCodeEdit.Text := IntToStr(ItemBankFrm.EssayInfo[itemno].majorcode);
MinorCodeEdit.Text := IntToStr(ItemBankFrm.EssayInfo[itemno].minorcode);
ItemStemEdit.Text := ItemBankFrm.EssayInfo[itemno].ItemStem ;
AnswerEdit.Text := ItemBankFrm.EssayInfo[itemno].Answer;
jpegnameEdit.Text := ItemBankFrm.EssayInfo[itemno].PicName;
if jpegnameEdit.Text <> 'none' then
begin
JPEG := TJPEGImage.Create;
try
JPEG.LoadFromFile(jpegnameEdit.Text);
Image1.Picture.Assign(JPEG);
finally
JPEG.Free;
Image1.Proportional := true;
end;
end;
end;
end;
initialization
{$I essayitemunit.lrs}
end.

View File

@ -0,0 +1,112 @@
object FForm: TFForm
Left = 288
Height = 232
Top = 161
Width = 322
Caption = 'Probability of a larger F value'
ClientHeight = 232
ClientWidth = 322
OnShow = ResetBtnClick
LCLVersion = '0.9.30'
object Label1: TLabel
Left = 8
Height = 16
Top = 16
Width = 118
Caption = 'Given: An F statistic = '
ParentColor = False
end
object FEdit: TEdit
Left = 128
Height = 23
Top = 8
Width = 70
TabOrder = 0
Text = 'FEdit'
end
object Label2: TLabel
Left = 8
Height = 16
Top = 50
Width = 118
Caption = 'with Deg. Freedom of '
ParentColor = False
end
object DF1Edit: TEdit
Left = 129
Height = 23
Top = 41
Width = 68
TabOrder = 1
Text = 'DF1Edit'
end
object Label3: TLabel
Left = 208
Height = 16
Top = 48
Width = 24
Caption = 'and '
ParentColor = False
end
object DF2Edit: TEdit
Left = 240
Height = 23
Top = 39
Width = 64
TabOrder = 2
Text = 'DF2Edit'
end
object Label4: TLabel
Left = 7
Height = 16
Top = 82
Width = 206
Caption = 'then the probability of a larger value = '
ParentColor = False
end
object ProbEdit: TEdit
Left = 239
Height = 23
Top = 75
Width = 64
TabOrder = 3
Text = 'ProbEdit'
end
object CancelBtn: TButton
Left = 7
Height = 33
Top = 120
Width = 82
Cancel = True
Caption = 'Cancel'
ModalResult = 2
TabOrder = 4
end
object ResetBtn: TButton
Left = 112
Height = 33
Top = 120
Width = 82
Caption = 'Reset'
OnClick = ResetBtnClick
TabOrder = 5
end
object ComputeBtn: TButton
Left = 221
Height = 33
Top = 120
Width = 82
Caption = 'Compute'
OnClick = ComputeBtnClick
TabOrder = 6
end
object ReturnBtn: TButton
Left = 112
Height = 33
Top = 176
Width = 77
Caption = 'Return'
ModalResult = 1
TabOrder = 7
end
end

View File

@ -0,0 +1,29 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TFForm','FORMDATA',[
'TPF0'#6'TFForm'#5'FForm'#4'Left'#3' '#1#6'Height'#3#232#0#3'Top'#3#161#0#5'W'
+'idth'#3'B'#1#7'Caption'#6#31'Probability of a larger F value'#12'ClientHeig'
+'ht'#3#232#0#11'ClientWidth'#3'B'#1#6'OnShow'#7#13'ResetBtnClick'#10'LCLVers'
+'ion'#6#6'0.9.30'#0#6'TLabel'#6'Label1'#4'Left'#2#8#6'Height'#2#16#3'Top'#2
+#16#5'Width'#2'v'#7'Caption'#6#24'Given: An F statistic = '#11'ParentColor'#8
+#0#0#5'TEdit'#5'FEdit'#4'Left'#3#128#0#6'Height'#2#23#3'Top'#2#8#5'Width'#2
+'F'#8'TabOrder'#2#0#4'Text'#6#5'FEdit'#0#0#6'TLabel'#6'Label2'#4'Left'#2#8#6
+'Height'#2#16#3'Top'#2'2'#5'Width'#2'v'#7'Caption'#6#21'with Deg. Freedom of'
+' '#11'ParentColor'#8#0#0#5'TEdit'#7'DF1Edit'#4'Left'#3#129#0#6'Height'#2#23
+#3'Top'#2')'#5'Width'#2'D'#8'TabOrder'#2#1#4'Text'#6#7'DF1Edit'#0#0#6'TLabel'
+#6'Label3'#4'Left'#3#208#0#6'Height'#2#16#3'Top'#2'0'#5'Width'#2#24#7'Captio'
+'n'#6#4'and '#11'ParentColor'#8#0#0#5'TEdit'#7'DF2Edit'#4'Left'#3#240#0#6'He'
+'ight'#2#23#3'Top'#2''''#5'Width'#2'@'#8'TabOrder'#2#2#4'Text'#6#7'DF2Edit'#0
+#0#6'TLabel'#6'Label4'#4'Left'#2#7#6'Height'#2#16#3'Top'#2'R'#5'Width'#3#206
+#0#7'Caption'#6')then the probability of a larger value = '#11'ParentColor'#8
+#0#0#5'TEdit'#8'ProbEdit'#4'Left'#3#239#0#6'Height'#2#23#3'Top'#2'K'#5'Width'
+#2'@'#8'TabOrder'#2#3#4'Text'#6#8'ProbEdit'#0#0#7'TButton'#9'CancelBtn'#4'Le'
+'ft'#2#7#6'Height'#2'!'#3'Top'#2'x'#5'Width'#2'R'#6'Cancel'#9#7'Caption'#6#6
+'Cancel'#11'ModalResult'#2#2#8'TabOrder'#2#4#0#0#7'TButton'#8'ResetBtn'#4'Le'
+'ft'#2'p'#6'Height'#2'!'#3'Top'#2'x'#5'Width'#2'R'#7'Caption'#6#5'Reset'#7'O'
+'nClick'#7#13'ResetBtnClick'#8'TabOrder'#2#5#0#0#7'TButton'#10'ComputeBtn'#4
+'Left'#3#221#0#6'Height'#2'!'#3'Top'#2'x'#5'Width'#2'R'#7'Caption'#6#7'Compu'
+'te'#7'OnClick'#7#15'ComputeBtnClick'#8'TabOrder'#2#6#0#0#7'TButton'#9'Retur'
+'nBtn'#4'Left'#2'p'#6'Height'#2'!'#3'Top'#3#176#0#5'Width'#2'M'#7'Caption'#6
+#6'Return'#11'ModalResult'#2#1#8'TabOrder'#2#7#0#0#0
]);

View File

@ -0,0 +1,68 @@
unit FProbUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, functionslib;
type
{ TFForm }
TFForm = class(TForm)
CancelBtn: TButton;
ComputeBtn: TButton;
DF1Edit: TEdit;
DF2Edit: TEdit;
ProbEdit: TEdit;
FEdit: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
ResetBtn: TButton;
ReturnBtn: TButton;
procedure ComputeBtnClick(Sender: TObject);
procedure ResetBtnClick(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
FForm: TFForm;
implementation
{ TFForm }
procedure TFForm.ResetBtnClick(Sender: TObject);
begin
FEdit.Text := '';
DF1Edit.Text := '';
DF2Edit.Text := '';
ProbEdit.Text := '';
end;
procedure TFForm.ComputeBtnClick(Sender: TObject);
VAR
F, df1, df2, prob : extended;
outvalue : string;
begin
F := StrToFloat(FEdit.Text);
df1 := StrToFloat(DF1Edit.Text);
df2 := StrToFloat(DF2Edit.Text);
prob := probf(F,df1,df2);
outvalue := format('%6.4f',[prob]);
ProbEdit.Text := outvalue;
end;
initialization
{$I fprobunit.lrs}
end.

View File

@ -0,0 +1,143 @@
object FreqSpecsFrm: TFreqSpecsFrm
Left = 281
Height = 358
Top = 107
Width = 300
Caption = 'Frequency Specifications'
ClientHeight = 358
ClientWidth = 300
LCLVersion = '0.9.30'
object Label1: TLabel
Left = 11
Height = 16
Top = 119
Width = 56
Caption = 'VARIABLE:'
ParentColor = False
end
object Label2: TLabel
Left = 11
Height = 16
Top = 151
Width = 46
Caption = 'MINIUM'
ParentColor = False
end
object Label3: TLabel
Left = 11
Height = 16
Top = 183
Width = 60
Caption = 'MAXIMUM'
ParentColor = False
end
object Label4: TLabel
Left = 11
Height = 16
Top = 215
Width = 39
Caption = 'RANGE'
ParentColor = False
end
object Label5: TLabel
Left = 11
Height = 16
Top = 247
Width = 79
Caption = 'INTERVAL SIZE'
ParentColor = False
end
object Label6: TLabel
Left = 11
Height = 16
Top = 279
Width = 84
Caption = 'NO. INTERVALS'
ParentColor = False
end
object VarName: TEdit
Left = 112
Height = 23
Top = 112
Width = 169
TabOrder = 0
end
object Minimum: TEdit
Left = 112
Height = 23
Top = 144
Width = 169
TabOrder = 1
end
object Maximum: TEdit
Left = 112
Height = 23
Top = 176
Width = 169
TabOrder = 2
end
object Range: TEdit
Left = 112
Height = 23
Top = 208
Width = 169
TabOrder = 3
end
object IntSize: TEdit
Left = 112
Height = 23
Top = 240
Width = 169
OnKeyPress = IntSizeKeyPress
TabOrder = 4
end
object NoInts: TEdit
Left = 112
Height = 23
Top = 272
Width = 169
TabOrder = 5
end
object CancelBtn: TButton
Left = 104
Height = 32
Top = 311
Width = 81
Caption = 'Cancel'
ModalResult = 2
TabOrder = 6
end
object OKBtn: TButton
Left = 200
Height = 31
Top = 311
Width = 81
Caption = 'OK'
ModalResult = 1
TabOrder = 7
end
object HelpBtn: TButton
Tag = 123
Left = 11
Height = 32
Top = 311
Width = 82
Caption = 'Help'
OnClick = HelpBtnClick
TabOrder = 8
end
object Memo1: TMemo
Left = 7
Height = 87
Top = 1
Width = 277
Lines.Strings = (
'The number of intervals must be less than or '
'equal to the number of cases. To change the'
'number of intervals, change the interval size'
'to a larger value. Press the Enter key to make'
'the number of intervals smaller.'
)
TabOrder = 9
end
end

View File

@ -0,0 +1,36 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TFreqSpecsFrm','FORMDATA',[
'TPF0'#13'TFreqSpecsFrm'#12'FreqSpecsFrm'#4'Left'#3#25#1#6'Height'#3'f'#1#3'T'
+'op'#2'k'#5'Width'#3','#1#7'Caption'#6#24'Frequency Specifications'#12'Clien'
+'tHeight'#3'f'#1#11'ClientWidth'#3','#1#10'LCLVersion'#6#6'0.9.30'#0#6'TLabe'
+'l'#6'Label1'#4'Left'#2#11#6'Height'#2#16#3'Top'#2'w'#5'Width'#2'8'#7'Captio'
+'n'#6#9'VARIABLE:'#11'ParentColor'#8#0#0#6'TLabel'#6'Label2'#4'Left'#2#11#6
+'Height'#2#16#3'Top'#3#151#0#5'Width'#2'.'#7'Caption'#6#6'MINIUM'#11'ParentC'
+'olor'#8#0#0#6'TLabel'#6'Label3'#4'Left'#2#11#6'Height'#2#16#3'Top'#3#183#0#5
+'Width'#2'<'#7'Caption'#6#7'MAXIMUM'#11'ParentColor'#8#0#0#6'TLabel'#6'Label'
+'4'#4'Left'#2#11#6'Height'#2#16#3'Top'#3#215#0#5'Width'#2''''#7'Caption'#6#5
+'RANGE'#11'ParentColor'#8#0#0#6'TLabel'#6'Label5'#4'Left'#2#11#6'Height'#2#16
+#3'Top'#3#247#0#5'Width'#2'O'#7'Caption'#6#13'INTERVAL SIZE'#11'ParentColor'
+#8#0#0#6'TLabel'#6'Label6'#4'Left'#2#11#6'Height'#2#16#3'Top'#3#23#1#5'Width'
+#2'T'#7'Caption'#6#13'NO. INTERVALS'#11'ParentColor'#8#0#0#5'TEdit'#7'VarNam'
+'e'#4'Left'#2'p'#6'Height'#2#23#3'Top'#2'p'#5'Width'#3#169#0#8'TabOrder'#2#0
+#0#0#5'TEdit'#7'Minimum'#4'Left'#2'p'#6'Height'#2#23#3'Top'#3#144#0#5'Width'
+#3#169#0#8'TabOrder'#2#1#0#0#5'TEdit'#7'Maximum'#4'Left'#2'p'#6'Height'#2#23
+#3'Top'#3#176#0#5'Width'#3#169#0#8'TabOrder'#2#2#0#0#5'TEdit'#5'Range'#4'Lef'
+'t'#2'p'#6'Height'#2#23#3'Top'#3#208#0#5'Width'#3#169#0#8'TabOrder'#2#3#0#0#5
+'TEdit'#7'IntSize'#4'Left'#2'p'#6'Height'#2#23#3'Top'#3#240#0#5'Width'#3#169
+#0#10'OnKeyPress'#7#15'IntSizeKeyPress'#8'TabOrder'#2#4#0#0#5'TEdit'#6'NoInt'
+'s'#4'Left'#2'p'#6'Height'#2#23#3'Top'#3#16#1#5'Width'#3#169#0#8'TabOrder'#2
+#5#0#0#7'TButton'#9'CancelBtn'#4'Left'#2'h'#6'Height'#2' '#3'Top'#3'7'#1#5'W'
+'idth'#2'Q'#7'Caption'#6#6'Cancel'#11'ModalResult'#2#2#8'TabOrder'#2#6#0#0#7
+'TButton'#5'OKBtn'#4'Left'#3#200#0#6'Height'#2#31#3'Top'#3'7'#1#5'Width'#2'Q'
+#7'Caption'#6#2'OK'#11'ModalResult'#2#1#8'TabOrder'#2#7#0#0#7'TButton'#7'Hel'
+'pBtn'#3'Tag'#2'{'#4'Left'#2#11#6'Height'#2' '#3'Top'#3'7'#1#5'Width'#2'R'#7
+'Caption'#6#4'Help'#7'OnClick'#7#12'HelpBtnClick'#8'TabOrder'#2#8#0#0#5'TMem'
+'o'#5'Memo1'#4'Left'#2#7#6'Height'#2'W'#3'Top'#2#1#5'Width'#3#21#1#13'Lines.'
+'Strings'#1#6'-The number of intervals must be less than or '#6',equal to th'
+'e number of cases. To change the'#6'-number of intervals, change the inter'
+'val size'#6'/to a larger value. Press the Enter key to make'#6' the number'
+' of intervals smaller.'#0#8'TabOrder'#2#9#0#0#0
]);

View File

@ -0,0 +1,67 @@
unit FreqSpecsUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, contexthelpunit;
type
{ TFreqSpecsFrm }
TFreqSpecsFrm = class(TForm)
CancelBtn: TButton;
HelpBtn: TButton;
Memo1: TMemo;
OKBtn: TButton;
VarName: TEdit;
Minimum: TEdit;
Maximum: TEdit;
Range: TEdit;
IntSize: TEdit;
NoInts: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
procedure HelpBtnClick(Sender: TObject);
procedure IntSizeKeyPress(Sender: TObject; var Key: char);
private
{ private declarations }
public
{ public declarations }
end;
var
FreqSpecsFrm: TFreqSpecsFrm;
implementation
{ TFreqSpecsFrm }
procedure TFreqSpecsFrm.IntSizeKeyPress(Sender: TObject; var Key: char);
var
rangeval : double;
increment : double;
begin
if ord(Key) <> 13 then exit;
rangeval := StrToFloat(Range.Text);
increment := StrToFloat(IntSize.Text);
NoInts.Text := FloatToStr(rangeval / increment);
end;
procedure TFreqSpecsFrm.HelpBtnClick(Sender: TObject);
begin
ContextHelpForm.HelpMessage((Sender as TButton).tag);
end;
initialization
{$I freqspecsunit.lrs}
end.

View File

@ -0,0 +1,235 @@
object FreqFrm: TFreqFrm
Left = 154
Height = 337
Top = 92
Width = 615
Caption = 'Frequency Distribution'
ClientHeight = 337
ClientWidth = 615
OnShow = FormShow
LCLVersion = '0.9.30'
object Label1: TLabel
Left = 9
Height = 16
Top = 9
Width = 121
Caption = 'AVAILABLE VARIABLES'
ParentColor = False
end
object Label2: TLabel
Left = 208
Height = 16
Top = 9
Width = 132
Caption = 'VARIABLES TO ANALYZE'
ParentColor = False
end
object VarList: TListBox
Left = 8
Height = 235
Top = 23
Width = 147
ItemHeight = 0
MultiSelect = True
TabOrder = 0
end
object ListBox1: TListBox
Left = 208
Height = 234
Top = 25
Width = 153
ItemHeight = 0
TabOrder = 1
end
object InBtn: TBitBtn
Left = 168
Height = 30
Top = 24
Width = 31
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00216324B81D5E2006FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF002A702F38256929F7216324D9FFFFFF00FFFFFF00FFFFFF00FFFFFF0061BE
6DFF5DB868FF58B162FF53A95CFF4DA156FF47994FFF419149FF3B8842FF3580
3BFF3F8845FF59A15EFF448B49FF216324CFFFFFFF00FFFFFF00FFFFFF0065C3
71FFA0D7A9FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF458C4AFF216324C4FFFFFF00FFFFFF0068C7
74FFA5DAAEFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF4A9150FF256929C9FFFFFF00FFFFFF0068C7
74FF68C774FF65C371FF61BE6DFF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF5AA362FF559D5CFF2F7835D1FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00419149F73B8842DBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0047994FBB41914906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = InBtnClick
TabOrder = 2
end
object OutBtn: TBitBtn
Left = 168
Height = 30
Top = 72
Width = 31
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004DA1560647994FB8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0053A95CD94DA156F747994F38FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF005DB868CF71BE7BFF7AC183FF5BAA64FF47994FFF419149FF3B8842FF3580
3BFF2F7835FF2A702FFF256929FF216324FF1D5E20FFFFFFFF00FFFFFF0065C3
71C47BC886FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
89FF7EC384FF7AC180FF76BE7CFF72BD78FF216324FFFFFFFF00FFFFFF0068C7
74C97FCC8AFFA2D8ABFF9ED6A7FF9AD4A3FF96D29FFF93CF9AFF8ECC95FF89CA
90FF85C78BFF81C587FF7DC282FF78C07EFF256929FFFFFFFF00FFFFFF00FFFF
FF0068C774D180CD8BFF7CC987FF5DB868FF58B162FF53A95CFF4DA156FF4799
4FFF419149FF3B8842FF35803BFF2F7835FF2A702FFFFFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C774DB65C371F7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0068C7740668C774BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
}
NumGlyphs = 0
OnClick = OutBtnClick
TabOrder = 3
end
object AllBtn: TBitBtn
Left = 168
Height = 30
Top = 120
Width = 31
Caption = 'ALL'
NumGlyphs = 0
OnClick = AllBtnClick
TabOrder = 4
end
object NormPltChk: TCheckBox
Left = 400
Height = 19
Top = 232
Width = 149
Caption = 'Plot Normal Distribution'
TabOrder = 5
end
object RadioGroup1: TRadioGroup
Left = 390
Height = 219
Top = 8
Width = 208
AutoFill = True
Caption = 'Plot Options'
ChildSizing.LeftRightSpacing = 6
ChildSizing.TopBottomSpacing = 6
ChildSizing.EnlargeHorizontal = crsHomogenousChildResize
ChildSizing.EnlargeVertical = crsHomogenousChildResize
ChildSizing.ShrinkHorizontal = crsScaleChilds
ChildSizing.ShrinkVertical = crsScaleChilds
ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 1
ClientHeight = 201
ClientWidth = 204
Items.Strings = (
'2D Vertical Bars'
'3D Vertical Bars'
'2D Pie Chart'
'Exploded Pie Chart'
'2D Line Chart'
'3D Line Chart'
'Plot 2D Points'
'Plot 3D Points'
'2D Horizontal Bars'
'3D Horizontal Bars'
)
TabOrder = 6
end
object RadioGroup2: TRadioGroup
Left = 392
Height = 62
Top = 264
Width = 206
AutoFill = True
Caption = 'Plot Type'
ChildSizing.LeftRightSpacing = 6
ChildSizing.TopBottomSpacing = 6
ChildSizing.EnlargeHorizontal = crsHomogenousChildResize
ChildSizing.EnlargeVertical = crsHomogenousChildResize
ChildSizing.ShrinkHorizontal = crsScaleChilds
ChildSizing.ShrinkVertical = crsScaleChilds
ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 1
ClientHeight = 44
ClientWidth = 202
Items.Strings = (
'Bar Chart'
'Histogram'
)
TabOrder = 7
end
object ResetBtn: TButton
Left = 153
Height = 24
Top = 279
Width = 71
Caption = 'Reset'
OnClick = ResetBtnClick
TabOrder = 8
end
object CancelBtn: TButton
Left = 232
Height = 24
Top = 280
Width = 71
Caption = 'Cancel'
ModalResult = 2
OnClick = CancelBtnClick
TabOrder = 9
end
object OKBtn: TButton
Left = 312
Height = 24
Top = 279
Width = 71
Caption = 'OK'
ModalResult = 1
OnClick = OKBtnClick
TabOrder = 10
end
end

View File

@ -0,0 +1,148 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TFreqFrm','FORMDATA',[
'TPF0'#8'TFreqFrm'#7'FreqFrm'#4'Left'#3#154#0#6'Height'#3'Q'#1#3'Top'#2'\'#5
+'Width'#3'g'#2#7'Caption'#6#22'Frequency Distribution'#12'ClientHeight'#3'Q'
+#1#11'ClientWidth'#3'g'#2#6'OnShow'#7#8'FormShow'#10'LCLVersion'#6#6'0.9.30'
+#0#6'TLabel'#6'Label1'#4'Left'#2#9#6'Height'#2#16#3'Top'#2#9#5'Width'#2'y'#7
+'Caption'#6#19'AVAILABLE VARIABLES'#11'ParentColor'#8#0#0#6'TLabel'#6'Label2'
+#4'Left'#3#208#0#6'Height'#2#16#3'Top'#2#9#5'Width'#3#132#0#7'Caption'#6#20
+'VARIABLES TO ANALYZE'#11'ParentColor'#8#0#0#8'TListBox'#7'VarList'#4'Left'#2
+#8#6'Height'#3#235#0#3'Top'#2#23#5'Width'#3#147#0#10'ItemHeight'#2#0#11'Mult'
+'iSelect'#9#8'TabOrder'#2#0#0#0#8'TListBox'#8'ListBox1'#4'Left'#3#208#0#6'He'
+'ight'#3#234#0#3'Top'#2#25#5'Width'#3#153#0#10'ItemHeight'#2#0#8'TabOrder'#2
+#1#0#0#7'TBitBtn'#5'InBtn'#4'Left'#3#168#0#6'Height'#2#30#3'Top'#2#24#5'Widt'
+'h'#2#31#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0
+#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0
+#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0'!c$'#184#29'^ '#6#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'*p/8%i)'#247
+'!c$'#217#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'a'#190'm'
+#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'
+#145'I'#255';'#136'B'#255'5'#128';'#255'?'#136'E'#255'Y'#161'^'#255'D'#139'I'
+#255'!c$'#207#255#255#255#0#255#255#255#0#255#255#255#0'e'#195'q'#255#160#215
+#169#255#156#213#165#255#152#211#161#255#148#208#157#255#144#206#152#255#139
+#203#147#255#135#201#142#255#130#198#137#255'~'#195#132#255'z'#193#128#255'v'
+#190'|'#255'E'#140'J'#255'!c$'#196#255#255#255#0#255#255#255#0'h'#199't'#255
+#165#218#174#255#162#216#171#255#158#214#167#255#154#212#163#255#150#210#159
+#255#147#207#154#255#142#204#149#255#137#202#144#255#133#199#139#255#129#197
+#135#255'}'#194#130#255'J'#145'P'#255'%i)'#201#255#255#255#0#255#255#255#0'h'
+#199't'#255'h'#199't'#255'e'#195'q'#255'a'#190'm'#255']'#184'h'#255'X'#177'b'
+#255'S'#169'\'#255'M'#161'V'#255'G'#153'O'#255'A'#145'I'#255'Z'#163'b'#255'U'
+#157'\'#255'/x5'#209#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'A'#145'I'#247';'#136'B'
+#219#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'G'#153'O'#187'A'#145'I'
+#6#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#10
+'InBtnClick'#8'TabOrder'#2#2#0#0#7'TBitBtn'#6'OutBtn'#4'Left'#3#168#0#6'Heig'
+'ht'#2#30#3'Top'#2'H'#5'Width'#2#31#10'Glyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'
+#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0
,'d'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+'M'#161'V'#6'G'#153'O'#184#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'S'#169
+'\'#217'M'#161'V'#247'G'#153'O8'#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0']'#184'h'#207'q'#190'{'
+#255'z'#193#131#255'['#170'd'#255'G'#153'O'#255'A'#145'I'#255';'#136'B'#255
+'5'#128';'#255'/x5'#255'*p/'#255'%i)'#255'!c$'#255#29'^ '#255#255#255#255#0
+#255#255#255#0'e'#195'q'#196'{'#200#134#255#156#213#165#255#152#211#161#255
+#148#208#157#255#144#206#152#255#139#203#147#255#135#201#142#255#130#198#137
+#255'~'#195#132#255'z'#193#128#255'v'#190'|'#255'r'#189'x'#255'!c$'#255#255
+#255#255#0#255#255#255#0'h'#199't'#201#127#204#138#255#162#216#171#255#158
+#214#167#255#154#212#163#255#150#210#159#255#147#207#154#255#142#204#149#255
+#137#202#144#255#133#199#139#255#129#197#135#255'}'#194#130#255'x'#192'~'#255
+'%i)'#255#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#209#128#205#139
+#255'|'#201#135#255']'#184'h'#255'X'#177'b'#255'S'#169'\'#255'M'#161'V'#255
+'G'#153'O'#255'A'#145'I'#255';'#136'B'#255'5'#128';'#255'/x5'#255'*p/'#255
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#219'e'#195
+'q'#247#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'h'#199't'#6'h'#199't'
+#187#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#9'NumGlyphs'#2#0#7'OnClick'#7#11'OutBtnClick'#8'TabOrder'#2#3#0#0
+#7'TBitBtn'#6'AllBtn'#4'Left'#3#168#0#6'Height'#2#30#3'Top'#2'x'#5'Width'#2
+#31#7'Caption'#6#3'ALL'#9'NumGlyphs'#2#0#7'OnClick'#7#11'AllBtnClick'#8'TabO'
+'rder'#2#4#0#0#9'TCheckBox'#10'NormPltChk'#4'Left'#3#144#1#6'Height'#2#19#3
+'Top'#3#232#0#5'Width'#3#149#0#7'Caption'#6#24'Plot Normal Distribution'#8'T'
+'abOrder'#2#5#0#0#11'TRadioGroup'#11'RadioGroup1'#4'Left'#3#134#1#6'Height'#3
+#219#0#3'Top'#2#8#5'Width'#3#208#0#8'AutoFill'#9#7'Caption'#6#12'Plot Option'
+'s'#28'ChildSizing.LeftRightSpacing'#2#6#28'ChildSizing.TopBottomSpacing'#2#6
+#29'ChildSizing.EnlargeHorizontal'#7#24'crsHomogenousChildResize'#27'ChildSi'
+'zing.EnlargeVertical'#7#24'crsHomogenousChildResize'#28'ChildSizing.ShrinkH'
+'orizontal'#7#14'crsScaleChilds'#26'ChildSizing.ShrinkVertical'#7#14'crsScal'
+'eChilds'#18'ChildSizing.Layout'#7#29'cclLeftToRightThenTopToBottom'#27'Chil'
+'dSizing.ControlsPerLine'#2#1#12'ClientHeight'#3#201#0#11'ClientWidth'#3#204
+#0#13'Items.Strings'#1#6#16'2D Vertical Bars'#6#16'3D Vertical Bars'#6#12'2D'
+' Pie Chart'#6#18'Exploded Pie Chart'#6#13'2D Line Chart'#6#13'3D Line Chart'
+#6#14'Plot 2D Points'#6#14'Plot 3D Points'#6#18'2D Horizontal Bars'#6#18'3D '
,'Horizontal Bars'#0#8'TabOrder'#2#6#0#0#11'TRadioGroup'#11'RadioGroup2'#4'Le'
+'ft'#3#136#1#6'Height'#2'>'#3'Top'#3#8#1#5'Width'#3#206#0#8'AutoFill'#9#7'Ca'
+'ption'#6#9'Plot Type'#28'ChildSizing.LeftRightSpacing'#2#6#28'ChildSizing.T'
+'opBottomSpacing'#2#6#29'ChildSizing.EnlargeHorizontal'#7#24'crsHomogenousCh'
+'ildResize'#27'ChildSizing.EnlargeVertical'#7#24'crsHomogenousChildResize'#28
+'ChildSizing.ShrinkHorizontal'#7#14'crsScaleChilds'#26'ChildSizing.ShrinkVer'
+'tical'#7#14'crsScaleChilds'#18'ChildSizing.Layout'#7#29'cclLeftToRightThenT'
+'opToBottom'#27'ChildSizing.ControlsPerLine'#2#1#12'ClientHeight'#2','#11'Cl'
+'ientWidth'#3#202#0#13'Items.Strings'#1#6#9'Bar Chart'#6#9'Histogram'#0#8'Ta'
+'bOrder'#2#7#0#0#7'TButton'#8'ResetBtn'#4'Left'#3#153#0#6'Height'#2#24#3'Top'
+#3#23#1#5'Width'#2'G'#7'Caption'#6#5'Reset'#7'OnClick'#7#13'ResetBtnClick'#8
+'TabOrder'#2#8#0#0#7'TButton'#9'CancelBtn'#4'Left'#3#232#0#6'Height'#2#24#3
+'Top'#3#24#1#5'Width'#2'G'#7'Caption'#6#6'Cancel'#11'ModalResult'#2#2#7'OnCl'
+'ick'#7#14'CancelBtnClick'#8'TabOrder'#2#9#0#0#7'TButton'#5'OKBtn'#4'Left'#3
+'8'#1#6'Height'#2#24#3'Top'#3#23#1#5'Width'#2'G'#7'Caption'#6#2'OK'#11'Modal'
+'Result'#2#1#7'OnClick'#7#10'OKBtnClick'#8'TabOrder'#2#10#0#0#0
]);

View File

@ -0,0 +1,455 @@
unit FreqUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, Buttons, ExtCtrls, Globals, MainUnit, OutPutUnit, FunctionsLib,
GraphLib, DataProcs;
type
{ TFreqFrm }
TFreqFrm = class(TForm)
ResetBtn: TButton;
CancelBtn: TButton;
OKBtn: TButton;
NormPltChk: TCheckBox;
InBtn: TBitBtn;
OutBtn: TBitBtn;
AllBtn: TBitBtn;
Label1: TLabel;
Label2: TLabel;
ListBox1: TListBox;
RadioGroup1: TRadioGroup;
RadioGroup2: TRadioGroup;
VarList: TListBox;
procedure AllBtnClick(Sender: TObject);
procedure CancelBtnClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure InBtnClick(Sender: TObject);
procedure OKBtnClick(Sender: TObject);
procedure OutBtnClick(Sender: TObject);
procedure ResetBtnClick(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
FreqFrm: TFreqFrm;
implementation
{ TFreqFrm }
uses FreqSpecsUnit;
procedure TFreqFrm.ResetBtnClick(Sender: TObject);
var
i : integer;
begin
VarList.Clear;
ListBox1.Clear;
for i := 1 to NoVariables do
begin
VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]);
end;
RadioGroup2.ItemIndex := -1;
InBtn.Enabled := true;
OutBtn.Enabled := false;
RadioGroup1.ItemIndex := -1;
NormPltChk.Checked := false;
end;
procedure TFreqFrm.CancelBtnClick(Sender: TObject);
begin
FreqFrm.Hide;
end;
procedure TFreqFrm.FormShow(Sender: TObject);
begin
ResetBtnClick(self);
end;
procedure TFreqFrm.AllBtnClick(Sender: TObject);
var
count, index : integer;
begin
count := VarList.Items.Count;
for index := 0 to count-1 do
begin
ListBox1.Items.Add(VarList.Items.Strings[index]);
end;
VarList.Clear;
end;
procedure TFreqFrm.InBtnClick(Sender: TObject);
var
index, i : integer;
begin
index := VarList.Items.Count;
i := 0;
while i < index do
begin
if (VarList.Selected[i]) then
begin
ListBox1.Items.Add(VarList.Items.Strings[i]);
VarList.Items.Delete(i);
index := index - 1;
i := 0;
end
else i := i + 1;
end;
OutBtn.Enabled := true;
end;
procedure TFreqFrm.OKBtnClick(Sender: TObject);
label again, cleanup;
var
i, j, k : integer;
freq : DblDyneVec;
pcnt : DblDyneVec;
cumpcnt : DblDyneVec;
pcntilerank : DblDyneVec;
cumfreq : DblDyneVec;
XValue : DblDyneVec;
value : double;
NoVars : integer;
plottype : integer;
cellval : string;
col : integer;
min, max : double;
range : double;
incrsize : double;
nointervals : double;
nints : integer;
outline : string;
// ColNoSelected : IntDyneVec;
NoSelected : integer;
NormDist : boolean;
Histogram : boolean;
Sumx, Sumx2, Mean, Variance, StdDev, zlow, zhi : double;
X, zproplow, zprophi, zfreq : double;
Ncases : integer;
begin
if RadioGroup2.ItemIndex = 1 then Histogram := true else Histogram := false;
if NormPltChk.Checked = true then NormDist := true else NormDist := false;
SetLength(freq,NoCases);
SetLength(pcnt,NoCases);
SetLength(cumpcnt,NoCases);
SetLength(pcntilerank,NoCases);
SetLength(cumfreq,NoCases);
SetLength(XValue,NoCases);
OutPutFrm.RichEdit.Clear;
OutPutFrm.RichEdit.Lines.Add('FREQUENCY ANALYSIS BY BILL MILLER');
OutPutFrm.RichEdit.Lines.Add('');
// OutPutFrm.RichEdit.ParaGraph.Alignment := taLeftJustify;
{ Analyze each variable }
NoVars := ListBox1.Items.Count;
for i := 1 to NoVars do
begin
{ get column no. of variable }
col := 1;
cellval := ListBox1.Items.Strings[i-1];
for j := 1 to NoVariables do
begin
if OS3MainFrm.DataGrid.Cells[j,0] = cellval then
begin
col := j;
outline := format('Frequency Analysis for %s',[cellval]);
OutPutFrm.RichEdit.Lines.Add(outline);
break;
end;
end;
NoSelected := 1;
{ get min and max values for variable in col }
min := 1.0e32;
max := -1.0e32;
for j := 1 to NoCases do
begin
if Not ValidValue(j,col) then continue;
value := StrToFloat(OS3MainFrm.DataGrid.Cells[col,j]);
if value > max then max := value;
if value < min then min := value;
end;
range := max - min + 1.0;
incrsize := 1.0;
{ if too many increments, set increment size for 15 increments }
if range > 200.0 then incrsize := range / 15;
nointervals := range / incrsize;
nints := round(nointervals);
{ Get user's approval and / or changes }
FreqSpecsFrm.VarName.Text := cellval;
FreqSpecsFrm.Minimum.Text := FloatToStr(min);
FreqSpecsFrm.Maximum.Text := FloatToStr(max);
FreqSpecsFrm.range.Text := FloatToStr(range);
FreqSpecsFrm.IntSize.Text := FloatToStr(incrsize);
FreqSpecsFrm.NoInts.Text := IntToStr(nints);
again: FreqSpecsFrm.ShowModal;
incrsize := StrToFloat(FreqSpecsFrm.IntSize.Text);
nointervals := StrToFloat(FreqSpecsFrm.NoInts.Text);
nints := round(nointervals);
if nints+1 > NoCases then
begin
ShowMessage('ERROR! No. of intervals cannot be greater than no. of cases!');
goto again;
end;
if nints > 200 then
begin
nints := 200;
// Application.MessageBox('Max. increments set to 200','Exceeded Maximum!',MB_OK);
end;
{Now, get frequency of cases in each interval }
for j := 1 to nints+1 do freq[j-1] := 0;
Ncases := 0;
for j := 1 to NoCases do
begin
if Not ValidValue(j,col) then continue;
Ncases := Ncases + 1;
value := StrToFloat(OS3MainFrm.DataGrid.Cells[col,j]);
for k := 1 to nints do
begin
if (value >= min + ((k-1) * incrsize)) and
(value < min + (k * incrsize)) then freq[k-1] := freq[k-1] + 1;
end;
end;
for j := 1 to nints+1 do XValue[j-1] := min + (j-1) * incrsize;
{ get cumulative frequencies and percents to midpoints }
cumfreq[0] := freq[0];
pcnt[0] := freq[0] / Ncases;
cumpcnt[0] := cumfreq[0] / Ncases;
pcntilerank[0] := (freq[0] / 2.0) / Ncases;
for k := 2 to nints do
begin
cumfreq[k-1] := cumfreq[k-2] + freq[k-1];
pcnt[k-1] := freq[k-1] / Ncases;
cumpcnt[k-1] := cumfreq[k-1] / Ncases;
pcntilerank[k-1] := (cumfreq[k-2] + freq[k-1] / 2.0) / Ncases;
end;
{ Now, print results }
OutPutFrm.RichEdit.Lines.Add(' FROM TO FREQ. PCNT CUM.FREQ. CUM.PCNT. %ILE RANK');
OutPutFrm.RichEdit.Lines.Add('');
for k := 1 to nints do
begin
outline := format('%8.2f%8.2f%8.0f%8.2f %8.2f %8.2f %8.2f',
[min+(k-1)*incrsize, // from
min+k*incrsize, // to
freq[k-1], // freq
pcnt[k-1], // pcnt
cumfreq[k-1], // cum.freq.
cumpcnt[k-1], // cum.pcnt.
pcntilerank[k-1]]); // %ile rank
OutPutFrm.RichEdit.Lines.Add(outline);
end;
OutPutFrm.ShowModal;
OutPutFrm.RichEdit.Clear;
{ Now, plot values as indicated in options list }
plottype := RadioGroup1.ItemIndex + 1;
if Histogram = true then GraphFrm.barwideprop := 1.0 else
GraphFrm.barwideprop := 0.5;
if NormDist = true then GraphFrm.nosets := 2 else GraphFrm.nosets := 1;
GraphFrm.nbars := nints+1;
GraphFrm.Heading := cellval;
GraphFrm.XTitle := 'Lower Limit Values';
GraphFrm.YTitle := 'Frequency';
if NormDist = false then
SetLength(GraphFrm.Ypoints,1,nints+1)
else SetLength(GraphFrm.Ypoints,2,nints+1);
SetLength(GraphFrm.Xpoints,1,nints+1);
for k := 1 to nints+1 do
begin
GraphFrm.Ypoints[0,k-1] := freq[k-1];
GraphFrm.Xpoints[0,k-1] := XValue[k-1];
end;
// Create ND plot if checked
if NormDist = true then
begin
OutPutFrm.RichEdit.Lines.Add('Interval ND Freq.');
// Only use 3Dvertical plots when normal curve desired
RadioGroup1.ItemIndex := 3;
// get mean and standard deviation of xvalues, then height of
// the normal curve for each Normally distributed corresponding
// z score
sumx := 0.0;
sumx2 := 0.0;
for k := 1 to nints do
begin
sumx := sumx + (XValue[k-1] * freq[k-1]);
sumx2 := sumx2 + ((XValue[k-1] * XValue[k-1]) * freq[k-1]);
end;
Mean := sumx / Ncases;
Variance := sumx2 - ((sumx * sumx) / Ncases);
Variance := Variance / (Ncases - 1);
StdDev := sqrt(Variance);
for k := 1 to nints+1 do
begin
X := XValue[k-1] - (incrsize / 2.0);
if StdDev > 0.0 then zlow := (X - Mean) / StdDev
else zlow := 0.0;
X := XValue[k-1] + (incrsize / 2.0);
if StdDev > 0.0 then zhi := (X - Mean) / StdDev
else zhi := 0.0;
// get cum. prop. for this z and translate to frequency
zproplow := probz(zlow);
zprophi := probz(zhi);
zfreq := NoCases * abs(zprophi - zproplow);
GraphFrm.Ypoints[1,k-1] := zfreq;
outline := format(' %2d %6.2f',[k,GraphFrm.Ypoints[1,k-1]]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
OutPutFrm.ShowModal;
OutPutFrm.RichEdit.Clear;
end;
if plottype = 1 then
begin
GraphFrm.AutoScale := true;
GraphFrm.GraphType := plottype; // 2d Vertical Bar Chart
GraphFrm.BackColor := clYellow;
GraphFrm.WallColor := clBlack;
GraphFrm.FloorColor := clLtGray;
GraphFrm.ShowBackWall := true;
GraphFrm.ShowModal;
end;
if plottype = 2 then // 3D vertical bars
begin
{ enter parameters for 2 dimension bars in graph package }
GraphFrm.GraphType := plottype; // 3d vertical bars
GraphFrm.AutoScale := true;
GraphFrm.ShowLeftWall := true;
GraphFrm.ShowRightWall := true;
GraphFrm.ShowBottomWall := true;
GraphFrm.ShowBackWall := true;
GraphFrm.BackColor := clYellow;
GraphFrm.WallColor := clBlack;
GraphFrm.ShowModal;
end;
if plottype = 3 then
begin
GraphFrm.AutoScale := true;
GraphFrm.GraphType := plottype; // 2d pie chart
GraphFrm.BackColor := clYellow;
GraphFrm.WallColor := clBlack;
GraphFrm.ShowBackWall := true;
GraphFrm.ShowModal;
end;
if plottype = 4 then
begin
GraphFrm.AutoScale := true;
GraphFrm.GraphType := plottype; // 3d pie chart
GraphFrm.BackColor := clYellow;
GraphFrm.WallColor := clBlack;
GraphFrm.ShowLeftWall := true;
GraphFrm.ShowRightWall := true;
GraphFrm.ShowBottomWall := true;
GraphFrm.ShowBackWall := true;
GraphFrm.ShowModal;
end;
if plottype = 5 then // 2D Line Graph
begin
GraphFrm.AutoScale := true;
GraphFrm.GraphType := plottype; // 2d Lines
GraphFrm.BackColor := clYellow;
GraphFrm.WallColor := clBlack;
GraphFrm.ShowBackWall := true;
GraphFrm.ShowModal;
end;
if plottype = 6 then // 3D Line Chart
begin
GraphFrm.AutoScale := true;
GraphFrm.GraphType := plottype; // 3d Lines
GraphFrm.BackColor := clYellow;
GraphFrm.WallColor := clBlack;
GraphFrm.ShowLeftWall := true;
GraphFrm.ShowRightWall := true;
GraphFrm.ShowBottomWall := true;
GraphFrm.ShowBackWall := true;
GraphFrm.ShowModal;
end;
if plottype = 7 then
begin
GraphFrm.AutoScale := true;
GraphFrm.GraphType := plottype; // 2D Plot
GraphFrm.BackColor := clYellow;
GraphFrm.WallColor := clBlack;
GraphFrm.ShowBackWall := true;
GraphFrm.ShowModal;
end;
if plottype = 8 then
begin
GraphFrm.AutoScale := true;
GraphFrm.GraphType := plottype; // 3D Plot
GraphFrm.BackColor := clYellow;
GraphFrm.WallColor := clBlack;
GraphFrm.ShowLeftWall := true;
GraphFrm.ShowRightWall := true;
GraphFrm.ShowBottomWall := true;
GraphFrm.ShowBackWall := true;
GraphFrm.ShowModal;
end;
if plottype = 9 then
begin
GraphFrm.AutoScale := true;
GraphFrm.GraphType := plottype; // 2d Horizontal Bar Chart
GraphFrm.BackColor := clYellow;
GraphFrm.WallColor := clBlack;
GraphFrm.FloorColor := clLtGray;
GraphFrm.ShowBackWall := true;
GraphFrm.ShowModal;
end;
if plottype = 10 then
begin
GraphFrm.AutoScale := true;
GraphFrm.GraphType := plottype; // 3d Horizontal Bar Chart
GraphFrm.BackColor := clYellow;
GraphFrm.WallColor := clBlack;
GraphFrm.ShowLeftWall := true;
GraphFrm.ShowRightWall := true;
GraphFrm.ShowBottomWall := true;
GraphFrm.FloorColor := clLtGray;
GraphFrm.ShowBackWall := true;
GraphFrm.ShowModal;
end;
GraphFrm.Xpoints := nil;
GraphFrm.Ypoints := nil;
end; // for novars list
cleanup:
XValue := nil;
cumfreq := nil;
pcntilerank := nil;
cumpcnt := nil;
pcnt := nil;
freq := nil;
FreqFrm.Hide;
end;
procedure TFreqFrm.OutBtnClick(Sender: TObject);
var
index: integer;
begin
index := ListBox1.ItemIndex;
VarList.Items.Add(ListBox1.Items.Strings[index]);
ListBox1.Items.Delete(index);
InBtn.Enabled := true;
if ListBox1.Items.Count = 0 then OutBtn.Enabled := false;
end;
initialization
{$I frequnit.lrs}
end.

View File

@ -0,0 +1,919 @@
object PicViewFrm: TPicViewFrm
Left = 0
Height = 0
Top = 716
Width = 0
HorzScrollBar.Page = 871
HorzScrollBar.Range = 165
VertScrollBar.Page = 615
VertScrollBar.Range = 23
ActiveControl = LBFiles
Caption = 'Image viewer'
ClientHeight = 0
ClientWidth = 0
Font.Height = -13
Font.Name = 'MS Sans Serif'
Menu = MainMenu1
OnKeyDown = FormKeyDown
OnShow = FormShow
LCLVersion = '0.9.28.2'
object SPImage: TSplitter
Left = 161
Height = 0
Top = 23
Width = 4
Beveled = True
end
object ToolBar1: TToolBar
Left = 0
Height = 29
Top = 0
Width = 165
ButtonHeight = 23
Caption = 'ToolBar1'
Images = ILMain
ParentShowHint = False
ShowHint = True
TabOrder = 0
object TBOPen: TToolButton
Left = 1
Top = 2
Action = AOpen
end
object TBOpenDir: TToolButton
Left = 24
Top = 2
Action = AOpenDir
end
object TBOpenDirRec: TToolButton
Left = 47
Top = 2
Action = OpenDirRecursively
end
object ToolButton4: TToolButton
Left = 70
Top = 2
Width = 8
Caption = 'ToolButton4'
ImageIndex = 3
Style = tbsSeparator
end
object TBPRev: TToolButton
Left = 78
Top = 2
Action = APreviousImage
end
object TBNext: TToolButton
Left = 101
Top = 2
Action = ANextImage
end
object TBPRevDir: TToolButton
Left = 124
Top = 2
Action = APrevImageDir
end
object TBNextDir: TToolButton
Left = 1
Top = 25
Action = ANextImageDir
end
object TBDoubleSize: TToolButton
Left = 24
Top = 25
Action = ADoubleSize
end
object TBHalfSize: TToolButton
Left = 47
Top = 25
Action = AHalfSize
end
object ToolButton3: TToolButton
Left = 70
Top = 25
Width = 8
Caption = 'ToolButton3'
ImageIndex = 10
Style = tbsSeparator
end
end
object LBFiles: TListBox
Left = 0
Height = 0
Top = 23
Width = 161
Align = alLeft
ClickOnSelChange = False
Font.Color = clBlack
Font.Height = 15
Font.Name = 'Arial'
Font.Pitch = fpVariable
ItemHeight = 0
OnClick = LBFilesClick
OnKeyDown = FormKeyDown
ParentFont = False
TabOrder = 1
end
object PImage: TPanel
Left = 165
Height = 0
Top = 23
Width = 0
Align = alClient
ClientHeight = 0
ClientWidth = 0
FullRepaint = False
TabOrder = 2
object ScrollBox1: TScrollBox
Left = 0
Height = 0
Top = 0
Width = 0
Align = alClient
BorderStyle = bsNone
ClientHeight = 0
ClientWidth = 0
TabOrder = 0
object IMain: TImage
Left = 0
Height = 0
Top = 0
Width = 0
Align = alClient
Transparent = True
end
end
end
object MainMenu1: TMainMenu
Images = ILMain
left = 32
top = 32
object File1: TMenuItem
Caption = '&File'
object MIOpen: TMenuItem
Action = AOpen
Bitmap.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF292429FF4A48
4AFF524C52FF4A4C4AFF524C52FF4A4C4AFF524C52FF4A484AFF4A444AFF4140
41FF393439FF202020FF808080FF808080FF808080FF808080FF18304AFFC5BE
C5FFA4A5A4FFACAEACFFACAEACFFB4B2B4FFACAAACFFACAAACFF9C999CFF9495
9CFF8B8D8BFF4A484AFF808080FF808080FF808080FF808080FF203452FF5255
5AFFD5D2D5FFBDBEC5FFCDC6CDFFCDC6CDFFCDC6CDFFC5C2C5FFB4B2B4FFA4A5
ACFFA4A1A4FF737173FF181418FF808080FF808080FF808080FF18304AFF1830
4AFFCDCECDFFCDCECDFFD5D6D5FFDED6DEFFD5D2D5FFD5CED5FFBDBABDFFB4B2
B4FFA4A1A4FF9C959CFF4A484AFF808080FF808080FF808080FF203452FF417D
BDFF52555AFFDEDADEFFE6DEE6FFE6E2E6FFE6E2E6FFDED6DEFFC5C6C5FFB4B6
BDFFACAEB4FFA4A1A4FF6A696AFF202020FF808080FF808080FF18304AFF83C6
FFFF18304AFF808080FFDEDEE6FFEEEAEEFFE6E6E6FFE6E2E6FFC5C6CDFFBDBE
BDFFACAEACFFA4A1A4FF949594FF4A484AFF808080FF808080FF203452FF83C2
FFFF5289CDFF4A5052FFFFFAFFFFFFF6FFFFF6EEF6FFE6E6E6FFDED6DEFFCDCE
CDFFCDC6CDFFBDBEBDFFBDBABDFFB4B6B4FF313031FF808080FF18304AFF9CD6
FFFF8BC6FFFF83C6FFFF62AEFFFF62AEFFFF62AEFFFF62AEFFFF62AEFFFF62AE
FFFF62AEFFFF000000FF808080FF808080FF808080FF808080FF203452FF6AA5
E6FFA4D6FFFF8BC6FFFF6AAAEEFF183452FF203452FF183452FF203452FF1834
52FF203452FF808080FF808080FF808080FF808080FF808080FF808080FF2034
52FF18304AFF183452FF18304AFF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF0000
00FF000000FF000000FF000000FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF000000FF000000FF000000FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF000000FF808080FF808080FF808080FF808080FF0000
00FF000000FF000000FF000000FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF000000FF000000FF808080FF000000FF0000
00FF000000FF808080FF000000FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF000000FF000000FF000000FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF
}
OnClick = AOpenExecute
end
object MIOPenDir: TMenuItem
Action = AOpenDir
Bitmap.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
00FF000000FF000000FF000000FF000000FF808080FF808080FF808080FF8080
80FF000000FF808080FF00FFFFFF808080FF00FFFFFF808080FF00FFFFFF8080
80FF00FFFFFF808080FF00FFFFFF000000FF808080FF808080FF808080FF8080
80FF000000FF00FFFFFF808080FF00FFFFFF830000FF00FFFFFF830000FF00FF
FFFF830000FF00FFFFFF808080FF000000FF808080FF808080FF808080FF8080
80FF000000FF808080FF00FFFFFF808080FF00FFFFFF830000FF830000FF8300
00FF00FFFFFF808080FF00FFFFFF000000FF808080FF808080FF808080FF8080
80FF000000FF00FFFFFF808080FF00FFFFFF830000FF830000FF00FFFFFF8300
00FF830000FF00FFFFFF808080FF000000FF808080FF808080FF808080FF8080
80FF000000FF808080FF00FFFFFF808080FF00FFFFFF830000FF830000FF8300
00FF00FFFFFF808080FF00FFFFFF000000FF808080FF808080FF808080FF8080
80FF000000FF00FFFFFF808080FF00FFFFFF830000FF00FFFFFF830000FF00FF
FFFF830000FF00FFFFFF808080FF000000FF808080FF808080FF808080FF8080
80FF000000FF808080FF00FFFFFF808080FF00FFFFFF808080FF00FFFFFF8080
80FF00FFFFFF808080FF00FFFFFF000000FF808080FF808080FF808080FF8080
80FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
00FF000000FF000000FF000000FF000000FF808080FF808080FF808080FF8080
80FF808080FF000000FF00FFFFFF808080FF00FFFFFF808080FF000000FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF000000FF000000FF000000FF000000FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF
}
OnClick = AOpenDirExecute
end
object MIOpenDirRec: TMenuItem
Action = OpenDirRecursively
Bitmap.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000808080FF8385
83FF000808FF808080FF000000FF101010FF000000FF000408FF000000FF0004
08FF000000FF808080FF808080FF808080FF808080FF808080FF808080FF8B89
8BFF808080FFCDBEC5FFDECED5FFC5B2B4FFE6D2DEFFCDC6CDFFC5C2C5FFC5C6
C5FF000000FF808080FF808080FF808080FF808080FF808080FF808080FF948D
8BFFFFFAFFFFD5C6CDFFDECACDFFE6CED5FFD5BEBDFFD5C6CDFFCDC6C5FFDED2
D5FF080000FF808080FF808080FF808080FF808080FF808080FF808080FF7B7D
7BFF808080FFCDCECDFFD5CED5FFC5BABDFFDECED5FFDEC6CDFFE6CED5FFD5BE
C5FF100000FF080000FF201010FF808080FF808080FF808080FF808080FF838D
8BFF808080FFC5C6C5FFC5CACDFFCDCACDFFCDCACDFFD5C2C5FFDECACDFFD5C2
C5FF080000FFE6DADEFF000000FF808080FF808080FF808080FF808080FF7B85
83FF808080FFC5C6C5FFCDD2D5FFCDCECDFFCDC6CDFFCDCACDFFC5C2C5FFC5CA
C5FF000400FFB4BEBDFF000800FF808080FF808080FF808080FF808080FF8B89
8BFFFFFAFFFF808080FF808080FF808080FF808080FFFFFAFFFF808080FFFFFA
FFFF000000FFC5CECDFF000000FF000400FF000000FF808080FF808080FF9C81
83FF18008BFF10008BFF1800D5FF1000CDFF1800FFFF1000FFFF1800FFFF1000
FFFF200808FFD5C6CDFF080000FFCDCACDFF000400FF808080FF808080FF9C81
83FF948983FF9C898BFF948983FF9C898BFF948983FF9C898BFF948983FF9C89
8BFF200000FFF6CED5FF100000FFD5CACDFF000000FF808080FF808080FF8080
80FF808080FFAC7D83FFFFFAFFFFFFF2FFFFFFFAFFFFFFF6FFFFFFFAFFFFFFFA
FFFF808080FFFFF2F6FF200000FFDEC2C5FF100008FF808080FF808080FF8080
80FF808080FFAC8D94FF10008BFF18008BFF1000CDFF1000D5FF1000FFFF1800
FFFF1000FFFF1000FFFF180000FFD5C2C5FF080000FF808080FF808080FF8080
80FF808080FF83797BFF948183FF9C858BFF9C858BFF948983FF9C898BFF9485
83FF94898BFF837D7BFF080400FFDED6D5FF000400FF808080FF808080FF8080
80FF808080FF808080FF808080FF94898BFFFFFAFFFF808080FF808080FFFFFA
F6FF808080FF808080FFFFFAF6FF808080FF000000FF808080FF808080FF8080
80FF808080FF808080FF808080FF9C898BFF18008BFF10008BFF1800D5FF1000
CDFF1800FFFF1000FFFF1800FFFF1000FFFF180000FF808080FF808080FF8080
80FF808080FF808080FF808080FF947D83FF9C8183FF9C898BFF948983FF9C89
8BFF948983FF9C898BFF948983FF9C898BFF100000FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF
}
OnClick = OpenDirRecursivelyExecute
end
object MIClear: TMenuItem
Action = AClear
OnClick = AClearExecute
end
object N1: TMenuItem
Caption = '-'
end
object MIQuit: TMenuItem
Action = AExit
OnClick = AExitExecute
end
end
object MImage: TMenuItem
Caption = '&Image'
object D1: TMenuItem
Action = ADoubleSize
Bitmap.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF000000FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF000000FF000000FF000000FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF000000FF000000FF000000FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF000000FF000000FF000000FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF000000FF000000FF000000FF808080FF808080FF808080FF808080FF8080
80FF808080FF838183FF000000FF000000FF000000FF838183FF808080FF00FF
FFFF838183FF000000FF808080FF808080FF808080FF808080FF808080FF8080
80FF000000FF838183FF837D83FF838183FF7B7D7BFF838183FF000000FF0000
00FF00FFFFFF808080FF808080FF808080FF808080FF808080FF808080FF0000
00FF838183FF808080FFC5C2C5FF808080FFC5C2C5FF808080FF838183FF0000
00FF808080FF808080FF808080FF808080FF808080FF808080FF7B7D7BFF8381
83FF808080FFC5C2C5FF808080FF0000FFFF808080FFC5C2C5FF808080FF8381
83FF837D83FF808080FF808080FF808080FF808080FF808080FF000000FF8381
83FFC5C2C5FF808080FFC5C2C5FF0000FFFFC5C2C5FF808080FFC5C2C5FF8381
83FF000000FF808080FF808080FF808080FF808080FF808080FF000000FF8381
83FF808080FF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF808080FF8381
83FF000000FF808080FF808080FF808080FF808080FF808080FF000000FF8381
83FFC5C2C5FF808080FFC5C2C5FF0000FFFFC5C2C5FF808080FFC5C2C5FF8381
83FF000000FF808080FF808080FF808080FF808080FF808080FF7B7D7BFF8381
83FF808080FFC5C2C5FF808080FF0000FFFF808080FFC5C2C5FF808080FF8381
83FF837D83FF808080FF808080FF808080FF808080FF808080FF808080FF0000
00FF838183FF808080FFC5C2C5FF808080FFC5C2C5FF808080FF838183FF0000
00FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF000000FF838183FF837D83FF838183FF7B7D7BFF838183FF000000FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF838183FF000000FF000000FF000000FF838183FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF
}
OnClick = ADoubleSizeExecute
end
object MIHalfSize: TMenuItem
Action = AHalfSize
Bitmap.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF000000FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF000000FF000000FF000000FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF000000FF000000FF000000FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF000000FF000000FF000000FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF000000FF000000FF000000FF808080FF808080FF808080FF808080FF8080
80FF808080FF838183FF000000FF000000FF000000FF838183FF808080FF00FF
FFFF838183FF000000FF808080FF808080FF808080FF808080FF808080FF8080
80FF000000FF838183FF837D83FF838183FF7B7D7BFF838183FF000000FF0000
00FF00FFFFFF808080FF808080FF808080FF808080FF808080FF808080FF0000
00FF838183FFC5C2C5FF808080FFC5C2C5FF808080FFC5C2C5FF838183FF0000
00FF808080FF808080FF808080FF808080FF808080FF808080FF7B7D7BFF8381
83FFC5BEC5FF808080FFBDBEBDFF808080FFC5BEC5FF808080FFBDBEBDFF8381
83FF837D83FF808080FF808080FF808080FF808080FF808080FF000000FF8381
83FF808080FFC5C2C5FF808080FFC5C2C5FF808080FFC5C2C5FF808080FF8381
83FF000000FF808080FF808080FF808080FF808080FF808080FF000000FF8381
83FFBDBEBDFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFFC5BEC5FF8381
83FF000000FF808080FF808080FF808080FF808080FF808080FF000000FF8381
83FF808080FFC5C2C5FF808080FFC5C2C5FF808080FFC5C2C5FF808080FF8381
83FF000000FF808080FF808080FF808080FF808080FF808080FF7B7D7BFF8381
83FFC5BEC5FF808080FFBDBEBDFF808080FFC5BEC5FF808080FFBDBEBDFF8381
83FF837D83FF808080FF808080FF808080FF808080FF808080FF808080FF0000
00FF838183FFC5C2C5FF808080FFC5C2C5FF808080FFC5C2C5FF838183FF0000
00FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF000000FF838183FF837D83FF838183FF7B7D7BFF838183FF000000FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF838183FF000000FF000000FF000000FF838183FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF
}
OnClick = AHalfSizeExecute
end
object N2: TMenuItem
Caption = '-'
end
object MINextImage: TMenuItem
Action = ANextImage
Bitmap.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF000000FF000000FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF000000FF0000FFFF000000FF0000
00FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF000000FF0000FFFF0000FFFF0000
FFFF000000FF000000FF808080FF808080FF808080FF808080FF000000FF0000
00FF000000FF000000FF000000FF000000FF000000FF0000FFFF0000FFFF0000
FFFF0000FFFF0000FFFF000000FF000000FF808080FF808080FF000000FF0000
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
FFFF0000FFFF0000FFFF0000FFFF0000FFFF000000FF000000FF000000FF0000
00FF000000FF000000FF000000FF000000FF000000FF0000FFFF0000FFFF0000
FFFF0000FFFF0000FFFF000000FF000000FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF000000FF0000FFFF0000FFFF0000
FFFF000000FF000000FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF000000FF0000FFFF000000FF0000
00FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF000000FF000000FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF
}
ShortCut = 36882
OnClick = ANextImageExecute
end
object PreviousImage1: TMenuItem
Action = APreviousImage
Bitmap.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF000000FF0000
00FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF000000FF000000FF0000FFFF0000
00FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF000000FF000000FF0000FFFF0000FFFF0000FFFF0000
00FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF000000FF000000FF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
00FF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF000000FF808080FF8080
80FF000000FF000000FF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
00FF000000FF000000FF000000FF000000FF000000FF000000FF808080FF8080
80FF808080FF808080FF000000FF000000FF0000FFFF0000FFFF0000FFFF0000
00FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF000000FF000000FF0000FFFF0000
00FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF000000FF0000
00FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF
}
ShortCut = 36884
OnClick = APreviousImageExecute
end
object Nextimagedirectory1: TMenuItem
Action = ANextImageDir
Bitmap.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FFFFFF00FFFFFF
00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF
00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF808080FFFFFF00FF0000
00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
00FF000000FF000000FF000000FF000000FFFFFF00FF808080FFFFFF00FF0000
00FF808080FF838183FF838183FF838183FF838183FF838183FF838183FF8381
83FF838183FF838183FF838183FF000000FFFFFF00FF808080FFFFFF00FF0000
00FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF7B7D7BFF000000FFFFFF00FF808080FFFFFF00FF0000
00FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF838183FF000000FFFFFF00FF808080FFFFFF00FF0000
00FF808080FF808080FF808080FF000000FF000000FF808080FF000000FF8080
80FF808080FF808080FF837D83FF000000FFFFFF00FF808080FFFFFF00FF0000
00FF808080FF808080FF808080FF000000FF000000FF808080FF000000FF0000
00FF808080FF808080FF838183FF000000FFFFFF00FF808080FFFFFF00FF0000
00FF808080FF808080FF808080FF000000FF000000FF808080FF000000FF0000
00FF000000FF808080FF7B7D7BFF000000FFFFFF00FF808080FFFFFF00FF0000
00FF808080FF808080FF808080FF000000FF000000FF808080FF000000FF0000
00FF808080FF808080FF838183FF000000FFFFFF00FF808080FFFFFF00FF0000
00FF808080FF808080FF808080FF000000FF000000FF808080FF000000FF8080
80FF808080FF808080FF837D83FF000000FFFFFF00FF808080FFFFFF00FF0000
00FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF838183FF000000FFFFFF00FF808080FFFFFF00FF0000
00FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF7B7D7BFF000000FFFFFF00FF808080FFFFFF00FF0000
00FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF000000FFFFFF00FF808080FFFFFF00FF0000
00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
00FF000000FF000000FF000000FF000000FFFFFF00FF808080FFFFFF00FFFFFF
00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF
00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF808080FF
}
OnClick = ANextImageDirExecute
end
object Previousimagedirectory1: TMenuItem
Action = APrevImageDir
Bitmap.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000064000000640000000000000000000000808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FFFFFF00FFFFFF
00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF
00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF808080FFFFFF00FF0000
00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
00FF000000FF000000FF000000FF000000FFFFFF00FF808080FFFFFF00FF0000
00FF808080FF838183FF838183FF838183FF838183FF838183FF838183FF8381
83FF838183FF838183FF838183FF000000FFFFFF00FF808080FFFFFF00FF0000
00FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF7B7D7BFF000000FFFFFF00FF808080FFFFFF00FF0000
00FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF838183FF000000FFFFFF00FF808080FFFFFF00FF0000
00FF808080FF808080FF808080FF808080FF000000FF808080FF000000FF0000
00FF808080FF808080FF837D83FF000000FFFFFF00FF808080FFFFFF00FF0000
00FF808080FF808080FF808080FF000000FF000000FF808080FF000000FF0000
00FF808080FF808080FF838183FF000000FFFFFF00FF808080FFFFFF00FF0000
00FF808080FF808080FF000000FF000000FF000000FF808080FF000000FF0000
00FF808080FF808080FF7B7D7BFF000000FFFFFF00FF808080FFFFFF00FF0000
00FF808080FF808080FF808080FF000000FF000000FF808080FF000000FF0000
00FF808080FF808080FF838183FF000000FFFFFF00FF808080FFFFFF00FF0000
00FF808080FF808080FF808080FF808080FF000000FF808080FF000000FF0000
00FF808080FF808080FF837D83FF000000FFFFFF00FF808080FFFFFF00FF0000
00FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF838183FF000000FFFFFF00FF808080FFFFFF00FF0000
00FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF7B7D7BFF000000FFFFFF00FF808080FFFFFF00FF0000
00FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF000000FFFFFF00FF808080FFFFFF00FF0000
00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
00FF000000FF000000FF000000FF000000FFFFFF00FF808080FFFFFF00FFFFFF
00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF
00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FF808080FF
}
OnClick = APrevImageDirExecute
end
end
end
object ActionList1: TActionList
Images = ILMain
left = 72
top = 32
object AOpen: TAction
Caption = '&Open'
HelpType = htKeyword
ImageIndex = 0
OnExecute = AOpenExecute
ShortCut = 16463
end
object AOpenDir: TAction
Caption = 'Open &Directory'
HelpType = htKeyword
ImageIndex = 1
OnExecute = AOpenDirExecute
ShortCut = 16452
end
object AExit: TAction
Caption = '&Quit'
HelpType = htKeyword
OnExecute = AExitExecute
ShortCut = 16465
end
object AClear: TAction
Caption = '&Clear list'
HelpType = htKeyword
OnExecute = AClearExecute
ShortCut = 16460
end
object OpenDirRecursively: TAction
Caption = 'Open Directory &Recursively'
HelpType = htKeyword
ImageIndex = 2
OnExecute = OpenDirRecursivelyExecute
ShortCut = 16466
end
object ADoubleSize: TAction
Caption = '&Double size'
HelpType = htKeyword
ImageIndex = 5
OnExecute = ADoubleSizeExecute
ShortCut = 16427
end
object AHalfSize: TAction
Caption = '&Half Size'
HelpType = htKeyword
ImageIndex = 6
OnExecute = AHalfSizeExecute
ShortCut = 16429
end
object ANextImage: TAction
Caption = '&Next image'
HelpType = htKeyword
ImageIndex = 4
OnExecute = ANextImageExecute
end
object APreviousImage: TAction
Caption = '&Previous Image'
HelpType = htKeyword
ImageIndex = 3
OnExecute = APreviousImageExecute
end
object ANextImageDir: TAction
Caption = 'N&ext image directory'
HelpType = htKeyword
ImageIndex = 8
OnExecute = ANextImageDirExecute
ShortCut = 32846
end
object APrevImageDir: TAction
Caption = 'Pre&vious image directory'
HelpType = htKeyword
Hint = 'Jump to last image of previous directory'
ImageIndex = 7
OnExecute = APrevImageDirExecute
ShortCut = 32848
end
end
object ILMain: TImageList
left = 32
top = 64
Bitmap = {
4C69090000001000000010000000808080FF808080FF808080FF808080FF8080
80FF808080FF000000FF000000FF000000FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF000000FF000000FF808080FF000000FF000000FF000000FF808080FF0000
00FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF0000
00FF808080FF808080FF808080FF808080FF000000FF000000FF000000FF0000
00FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF000000FF000000FF0000
00FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF000000FF000000FF000000FF0000
00FF808080FF808080FF808080FF808080FF203452FF18304AFF183452FF1830
4AFF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF203452FF6AA5E6FFA4D6FFFF8BC6FFFF6AAA
EEFF183452FF203452FF183452FF203452FF183452FF203452FF808080FF8080
80FF808080FF808080FF808080FF18304AFF9CD6FFFF8BC6FFFF83C6FFFF62AE
FFFF62AEFFFF62AEFFFF62AEFFFF62AEFFFF62AEFFFF62AEFFFF000000FF8080
80FF808080FF808080FF808080FF203452FF83C2FFFF5289CDFF4A5052FFFFFA
FFFFFFF6FFFFF6EEF6FFE6E6E6FFDED6DEFFCDCECDFFCDC6CDFFBDBEBDFFBDBA
BDFFB4B6B4FF313031FF808080FF18304AFF83C6FFFF18304AFF808080FFDEDE
E6FFEEEAEEFFE6E6E6FFE6E2E6FFC5C6CDFFBDBEBDFFACAEACFFA4A1A4FF9495
94FF4A484AFF808080FF808080FF203452FF417DBDFF52555AFFDEDADEFFE6DE
E6FFE6E2E6FFE6E2E6FFDED6DEFFC5C6C5FFB4B6BDFFACAEB4FFA4A1A4FF6A69
6AFF202020FF808080FF808080FF18304AFF18304AFFCDCECDFFCDCECDFFD5D6
D5FFDED6DEFFD5D2D5FFD5CED5FFBDBABDFFB4B2B4FFA4A1A4FF9C959CFF4A48
4AFF808080FF808080FF808080FF203452FF52555AFFD5D2D5FFBDBEC5FFCDC6
CDFFCDC6CDFFCDC6CDFFC5C2C5FFB4B2B4FFA4A5ACFFA4A1A4FF737173FF1814
18FF808080FF808080FF808080FF18304AFFC5BEC5FFA4A5A4FFACAEACFFACAE
ACFFB4B2B4FFACAAACFFACAAACFF9C999CFF94959CFF8B8D8BFF4A484AFF8080
80FF808080FF808080FF808080FF292429FF4A484AFF524C52FF4A4C4AFF524C
52FF4A4C4AFF524C52FF4A484AFF4A444AFF414041FF393439FF202020FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF0000
00FF000000FF000000FF000000FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF000000FF00FF
FFFF808080FF00FFFFFF808080FF000000FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF000000FF000000FF0000
00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
00FF000000FF808080FF808080FF808080FF808080FF000000FF808080FF00FF
FFFF808080FF00FFFFFF808080FF00FFFFFF808080FF00FFFFFF808080FF00FF
FFFF000000FF808080FF808080FF808080FF808080FF000000FF00FFFFFF8080
80FF00FFFFFF830000FF00FFFFFF830000FF00FFFFFF830000FF00FFFFFF8080
80FF000000FF808080FF808080FF808080FF808080FF000000FF808080FF00FF
FFFF808080FF00FFFFFF830000FF830000FF830000FF00FFFFFF808080FF00FF
FFFF000000FF808080FF808080FF808080FF808080FF000000FF00FFFFFF8080
80FF00FFFFFF830000FF830000FF00FFFFFF830000FF830000FF00FFFFFF8080
80FF000000FF808080FF808080FF808080FF808080FF000000FF808080FF00FF
FFFF808080FF00FFFFFF830000FF830000FF830000FF00FFFFFF808080FF00FF
FFFF000000FF808080FF808080FF808080FF808080FF000000FF00FFFFFF8080
80FF00FFFFFF830000FF00FFFFFF830000FF00FFFFFF830000FF00FFFFFF8080
80FF000000FF808080FF808080FF808080FF808080FF000000FF808080FF00FF
FFFF808080FF00FFFFFF808080FF00FFFFFF808080FF00FFFFFF808080FF00FF
FFFF000000FF808080FF808080FF808080FF808080FF000000FF000000FF0000
00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
00FF000000FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF947D83FF9C8183FF9C898BFF948983FF9C898BFF948983FF9C898BFF9489
83FF9C898BFF100000FF808080FF808080FF808080FF808080FF808080FF8080
80FF9C898BFF18008BFF10008BFF1800D5FF1000CDFF1800FFFF1000FFFF1800
FFFF1000FFFF180000FF808080FF808080FF808080FF808080FF808080FF8080
80FF94898BFFFFFAFFFF808080FF808080FFFFFAF6FF808080FF808080FFFFFA
F6FF808080FF000000FF808080FF808080FF808080FF808080FF83797BFF9481
83FF9C858BFF9C858BFF948983FF9C898BFF948583FF94898BFF837D7BFF0804
00FFDED6D5FF000400FF808080FF808080FF808080FF808080FFAC8D94FF1000
8BFF18008BFF1000CDFF1000D5FF1000FFFF1800FFFF1000FFFF1000FFFF1800
00FFD5C2C5FF080000FF808080FF808080FF808080FF808080FFAC7D83FFFFFA
FFFFFFF2FFFFFFFAFFFFFFF6FFFFFFFAFFFFFFFAFFFF808080FFFFF2F6FF2000
00FFDEC2C5FF100008FF808080FF808080FF9C8183FF948983FF9C898BFF9489
83FF9C898BFF948983FF9C898BFF948983FF9C898BFF200000FFF6CED5FF1000
00FFD5CACDFF000000FF808080FF808080FF9C8183FF18008BFF10008BFF1800
D5FF1000CDFF1800FFFF1000FFFF1800FFFF1000FFFF200808FFD5C6CDFF0800
00FFCDCACDFF000400FF808080FF808080FF8B898BFFFFFAFFFF808080FF8080
80FF808080FF808080FFFFFAFFFF808080FFFFFAFFFF000000FFC5CECDFF0000
00FF000400FF000000FF808080FF808080FF7B8583FF808080FFC5C6C5FFCDD2
D5FFCDCECDFFCDC6CDFFCDCACDFFC5C2C5FFC5CAC5FF000400FFB4BEBDFF0008
00FF808080FF808080FF808080FF808080FF838D8BFF808080FFC5C6C5FFC5CA
CDFFCDCACDFFCDCACDFFD5C2C5FFDECACDFFD5C2C5FF080000FFE6DADEFF0000
00FF808080FF808080FF808080FF808080FF7B7D7BFF808080FFCDCECDFFD5CE
D5FFC5BABDFFDECED5FFDEC6CDFFE6CED5FFD5BEC5FF100000FF080000FF2010
10FF808080FF808080FF808080FF808080FF948D8BFFFFFAFFFFD5C6CDFFDECA
CDFFE6CED5FFD5BEBDFFD5C6CDFFCDC6C5FFDED2D5FF080000FF808080FF8080
80FF808080FF808080FF808080FF808080FF8B898BFF808080FFCDBEC5FFDECE
D5FFC5B2B4FFE6D2DEFFCDC6CDFFC5C2C5FFC5C6C5FF000000FF808080FF8080
80FF808080FF808080FF808080FF808080FF838583FF000808FF808080FF0000
00FF101010FF000000FF000408FF000000FF000408FF000000FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF000000FF000000FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF000000FF000000FF0000FFFF000000FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF0000
00FF000000FF0000FFFF0000FFFF0000FFFF000000FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF000000FF000000FF0000
FFFF0000FFFF0000FFFF0000FFFF0000FFFF000000FF000000FF000000FF0000
00FF000000FF000000FF000000FF000000FF000000FF0000FFFF0000FFFF0000
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
FFFF0000FFFF0000FFFF000000FF808080FF808080FF000000FF000000FF0000
FFFF0000FFFF0000FFFF0000FFFF0000FFFF000000FF000000FF000000FF0000
00FF000000FF000000FF000000FF808080FF808080FF808080FF808080FF0000
00FF000000FF0000FFFF0000FFFF0000FFFF000000FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF000000FF000000FF0000FFFF000000FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF000000FF000000FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF000000FF000000FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF000000FF0000FFFF000000FF000000FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF000000FF0000FFFF0000FFFF0000FFFF000000FF000000FF8080
80FF808080FF808080FF808080FF000000FF000000FF000000FF000000FF0000
00FF000000FF000000FF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
00FF000000FF808080FF808080FF000000FF0000FFFF0000FFFF0000FFFF0000
FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
FFFF0000FFFF000000FF000000FF000000FF000000FF000000FF000000FF0000
00FF000000FF000000FF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000
00FF000000FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF000000FF0000FFFF0000FFFF0000FFFF000000FF000000FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF000000FF0000FFFF000000FF000000FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF000000FF000000FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF838183FF0000
00FF000000FF000000FF838183FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF000000FF838183FF837D
83FF838183FF7B7D7BFF838183FF000000FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF000000FF838183FF808080FFC5C2
C5FF808080FFC5C2C5FF808080FF838183FF000000FF808080FF808080FF8080
80FF808080FF808080FF808080FF7B7D7BFF838183FF808080FFC5C2C5FF8080
80FF0000FFFF808080FFC5C2C5FF808080FF838183FF837D83FF808080FF8080
80FF808080FF808080FF808080FF000000FF838183FFC5C2C5FF808080FFC5C2
C5FF0000FFFFC5C2C5FF808080FFC5C2C5FF838183FF000000FF808080FF8080
80FF808080FF808080FF808080FF000000FF838183FF808080FF0000FFFF0000
FFFF0000FFFF0000FFFF0000FFFF808080FF838183FF000000FF808080FF8080
80FF808080FF808080FF808080FF000000FF838183FFC5C2C5FF808080FFC5C2
C5FF0000FFFFC5C2C5FF808080FFC5C2C5FF838183FF000000FF808080FF8080
80FF808080FF808080FF808080FF7B7D7BFF838183FF808080FFC5C2C5FF8080
80FF0000FFFF808080FFC5C2C5FF808080FF838183FF837D83FF808080FF8080
80FF808080FF808080FF808080FF808080FF000000FF838183FF808080FFC5C2
C5FF808080FFC5C2C5FF808080FF838183FF000000FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF000000FF838183FF837D
83FF838183FF7B7D7BFF838183FF000000FF000000FF00FFFFFF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF838183FF0000
00FF000000FF000000FF838183FF808080FF00FFFFFF838183FF000000FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF000000FF000000FF0000
00FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF000000FF0000
00FF000000FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF0000
00FF000000FF000000FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF000000FF000000FF000000FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF000000FF808080FF808080FF808080FF808080FF838183FF0000
00FF000000FF000000FF838183FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF000000FF838183FF837D
83FF838183FF7B7D7BFF838183FF000000FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF000000FF838183FFC5C2C5FF8080
80FFC5C2C5FF808080FFC5C2C5FF838183FF000000FF808080FF808080FF8080
80FF808080FF808080FF808080FF7B7D7BFF838183FFC5BEC5FF808080FFBDBE
BDFF808080FFC5BEC5FF808080FFBDBEBDFF838183FF837D83FF808080FF8080
80FF808080FF808080FF808080FF000000FF838183FF808080FFC5C2C5FF8080
80FFC5C2C5FF808080FFC5C2C5FF808080FF838183FF000000FF808080FF8080
80FF808080FF808080FF808080FF000000FF838183FFBDBEBDFF0000FFFF0000
FFFF0000FFFF0000FFFF0000FFFFC5BEC5FF838183FF000000FF808080FF8080
80FF808080FF808080FF808080FF000000FF838183FF808080FFC5C2C5FF8080
80FFC5C2C5FF808080FFC5C2C5FF808080FF838183FF000000FF808080FF8080
80FF808080FF808080FF808080FF7B7D7BFF838183FFC5BEC5FF808080FFBDBE
BDFF808080FFC5BEC5FF808080FFBDBEBDFF838183FF837D83FF808080FF8080
80FF808080FF808080FF808080FF808080FF000000FF838183FFC5C2C5FF8080
80FFC5C2C5FF808080FFC5C2C5FF838183FF000000FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF000000FF838183FF837D
83FF838183FF7B7D7BFF838183FF000000FF000000FF00FFFFFF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF838183FF0000
00FF000000FF000000FF838183FF808080FF00FFFFFF838183FF000000FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF000000FF000000FF0000
00FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF000000FF0000
00FF000000FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF0000
00FF000000FF000000FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF000000FF000000FF000000FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF000000FF808080FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF
00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF
00FFFFFF00FFFFFF00FF808080FFFFFF00FF000000FF000000FF000000FF0000
00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
00FF000000FFFFFF00FF808080FFFFFF00FF000000FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF000000FFFFFF00FF808080FFFFFF00FF000000FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF7B7D
7BFF000000FFFFFF00FF808080FFFFFF00FF000000FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8381
83FF000000FFFFFF00FF808080FFFFFF00FF000000FF808080FF808080FF8080
80FF808080FF000000FF808080FF000000FF000000FF808080FF808080FF837D
83FF000000FFFFFF00FF808080FFFFFF00FF000000FF808080FF808080FF8080
80FF000000FF000000FF808080FF000000FF000000FF808080FF808080FF8381
83FF000000FFFFFF00FF808080FFFFFF00FF000000FF808080FF808080FF0000
00FF000000FF000000FF808080FF000000FF000000FF808080FF808080FF7B7D
7BFF000000FFFFFF00FF808080FFFFFF00FF000000FF808080FF808080FF8080
80FF000000FF000000FF808080FF000000FF000000FF808080FF808080FF8381
83FF000000FFFFFF00FF808080FFFFFF00FF000000FF808080FF808080FF8080
80FF808080FF000000FF808080FF000000FF000000FF808080FF808080FF837D
83FF000000FFFFFF00FF808080FFFFFF00FF000000FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8381
83FF000000FFFFFF00FF808080FFFFFF00FF000000FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF7B7D
7BFF000000FFFFFF00FF808080FFFFFF00FF000000FF808080FF838183FF8381
83FF838183FF838183FF838183FF838183FF838183FF838183FF838183FF8381
83FF000000FFFFFF00FF808080FFFFFF00FF000000FF000000FF000000FF0000
00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
00FF000000FFFFFF00FF808080FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF
00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF
00FFFFFF00FFFFFF00FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF
00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF
00FFFFFF00FFFFFF00FF808080FFFFFF00FF000000FF000000FF000000FF0000
00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
00FF000000FFFFFF00FF808080FFFFFF00FF000000FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF000000FFFFFF00FF808080FFFFFF00FF000000FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF7B7D
7BFF000000FFFFFF00FF808080FFFFFF00FF000000FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8381
83FF000000FFFFFF00FF808080FFFFFF00FF000000FF808080FF808080FF8080
80FF000000FF000000FF808080FF000000FF808080FF808080FF808080FF837D
83FF000000FFFFFF00FF808080FFFFFF00FF000000FF808080FF808080FF8080
80FF000000FF000000FF808080FF000000FF000000FF808080FF808080FF8381
83FF000000FFFFFF00FF808080FFFFFF00FF000000FF808080FF808080FF8080
80FF000000FF000000FF808080FF000000FF000000FF000000FF808080FF7B7D
7BFF000000FFFFFF00FF808080FFFFFF00FF000000FF808080FF808080FF8080
80FF000000FF000000FF808080FF000000FF000000FF808080FF808080FF8381
83FF000000FFFFFF00FF808080FFFFFF00FF000000FF808080FF808080FF8080
80FF000000FF000000FF808080FF000000FF808080FF808080FF808080FF837D
83FF000000FFFFFF00FF808080FFFFFF00FF000000FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8381
83FF000000FFFFFF00FF808080FFFFFF00FF000000FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF7B7D
7BFF000000FFFFFF00FF808080FFFFFF00FF000000FF808080FF838183FF8381
83FF838183FF838183FF838183FF838183FF838183FF838183FF838183FF8381
83FF000000FFFFFF00FF808080FFFFFF00FF000000FF000000FF000000FF0000
00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000
00FF000000FFFFFF00FF808080FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF
00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF
00FFFFFF00FFFFFF00FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080
80FF808080FF808080FF808080FF
}
end
object ODImage: TOpenDialog
FilterIndex = 0
Options = [ofAllowMultiSelect, ofEnableSizing, ofViewDetail]
left = 72
top = 64
end
object OpenDialog1: TOpenDialog
FilterIndex = 0
left = 72
top = 104
end
end

View File

@ -0,0 +1,990 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TPicViewFrm','FORMDATA',[
'TPF0'#11'TPicViewFrm'#10'PicViewFrm'#4'Left'#2#0#6'Height'#2#0#3'Top'#3#204#2
+#5'Width'#2#0#18'HorzScrollBar.Page'#3'g'#3#19'HorzScrollBar.Range'#3#165#0
+#18'VertScrollBar.Page'#3'g'#2#19'VertScrollBar.Range'#2#23#13'ActiveControl'
+#7#7'LBFiles'#7'Caption'#6#12'Image viewer'#12'ClientHeight'#2#0#11'ClientWi'
+'dth'#2#0#11'Font.Height'#2#243#9'Font.Name'#6#13'MS Sans Serif'#4'Menu'#7#9
+'MainMenu1'#9'OnKeyDown'#7#11'FormKeyDown'#6'OnShow'#7#8'FormShow'#10'LCLVer'
+'sion'#6#8'0.9.28.2'#0#9'TSplitter'#7'SPImage'#4'Left'#3#161#0#6'Height'#2#0
+#3'Top'#2#23#5'Width'#2#4#7'Beveled'#9#0#0#8'TToolBar'#8'ToolBar1'#4'Left'#2
+#0#6'Height'#2#29#3'Top'#2#0#5'Width'#3#165#0#12'ButtonHeight'#2#23#7'Captio'
+'n'#6#8'ToolBar1'#6'Images'#7#6'ILMain'#14'ParentShowHint'#8#8'ShowHint'#9#8
+'TabOrder'#2#0#0#11'TToolButton'#6'TBOPen'#4'Left'#2#1#3'Top'#2#2#6'Action'#7
+#5'AOpen'#0#0#11'TToolButton'#9'TBOpenDir'#4'Left'#2#24#3'Top'#2#2#6'Action'
+#7#8'AOpenDir'#0#0#11'TToolButton'#12'TBOpenDirRec'#4'Left'#2'/'#3'Top'#2#2#6
+'Action'#7#18'OpenDirRecursively'#0#0#11'TToolButton'#11'ToolButton4'#4'Left'
+#2'F'#3'Top'#2#2#5'Width'#2#8#7'Caption'#6#11'ToolButton4'#10'ImageIndex'#2#3
+#5'Style'#7#12'tbsSeparator'#0#0#11'TToolButton'#6'TBPRev'#4'Left'#2'N'#3'To'
+'p'#2#2#6'Action'#7#14'APreviousImage'#0#0#11'TToolButton'#6'TBNext'#4'Left'
+#2'e'#3'Top'#2#2#6'Action'#7#10'ANextImage'#0#0#11'TToolButton'#9'TBPRevDir'
+#4'Left'#2'|'#3'Top'#2#2#6'Action'#7#13'APrevImageDir'#0#0#11'TToolButton'#9
+'TBNextDir'#4'Left'#2#1#3'Top'#2#25#6'Action'#7#13'ANextImageDir'#0#0#11'TTo'
+'olButton'#12'TBDoubleSize'#4'Left'#2#24#3'Top'#2#25#6'Action'#7#11'ADoubleS'
+'ize'#0#0#11'TToolButton'#10'TBHalfSize'#4'Left'#2'/'#3'Top'#2#25#6'Action'#7
+#9'AHalfSize'#0#0#11'TToolButton'#11'ToolButton3'#4'Left'#2'F'#3'Top'#2#25#5
+'Width'#2#8#7'Caption'#6#11'ToolButton3'#10'ImageIndex'#2#10#5'Style'#7#12't'
+'bsSeparator'#0#0#0#8'TListBox'#7'LBFiles'#4'Left'#2#0#6'Height'#2#0#3'Top'#2
+#23#5'Width'#3#161#0#5'Align'#7#6'alLeft'#16'ClickOnSelChange'#8#10'Font.Col'
+'or'#7#7'clBlack'#11'Font.Height'#2#15#9'Font.Name'#6#5'Arial'#10'Font.Pitch'
+#7#10'fpVariable'#10'ItemHeight'#2#0#7'OnClick'#7#12'LBFilesClick'#9'OnKeyDo'
+'wn'#7#11'FormKeyDown'#10'ParentFont'#8#8'TabOrder'#2#1#0#0#6'TPanel'#6'PIma'
+'ge'#4'Left'#3#165#0#6'Height'#2#0#3'Top'#2#23#5'Width'#2#0#5'Align'#7#8'alC'
+'lient'#12'ClientHeight'#2#0#11'ClientWidth'#2#0#11'FullRepaint'#8#8'TabOrde'
+'r'#2#2#0#10'TScrollBox'#10'ScrollBox1'#4'Left'#2#0#6'Height'#2#0#3'Top'#2#0
+#5'Width'#2#0#5'Align'#7#8'alClient'#11'BorderStyle'#7#6'bsNone'#12'ClientHe'
+'ight'#2#0#11'ClientWidth'#2#0#8'TabOrder'#2#0#0#6'TImage'#5'IMain'#4'Left'#2
+#0#6'Height'#2#0#3'Top'#2#0#5'Width'#2#0#5'Align'#7#8'alClient'#11'Transpare'
+'nt'#9#0#0#0#0#9'TMainMenu'#9'MainMenu1'#6'Images'#7#6'ILMain'#4'left'#2' '#3
+'top'#2' '#0#9'TMenuItem'#5'File1'#7'Caption'#6#5'&File'#0#9'TMenuItem'#6'MI'
+'Open'#6'Action'#7#5'AOpen'#11'Bitmap.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0
+#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0
+'d'#0#0#0#0#0#0#0#0#0#0#0#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255')$)'#255'JHJ'#255'RLR'
+#255'JLJ'#255'RLR'#255'JLJ'#255'RLR'#255'JHJ'#255'JDJ'#255'A@A'#255'949'#255
+' '#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#24
+'0J'#255#197#190#197#255#164#165#164#255#172#174#172#255#172#174#172#255#180
+#178#180#255#172#170#172#255#172#170#172#255#156#153#156#255#148#149#156#255
+#139#141#139#255'JHJ'#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255' 4R'#255'RUZ'#255#213#210#213#255#189#190#197#255#205#198#205
+#255#205#198#205#255#205#198#205#255#197#194#197#255#180#178#180#255#164#165
+#172#255#164#161#164#255'sqs'#255#24#20#24#255#128#128#128#255#128#128#128
+#255#128#128#128#255#24'0J'#255#24'0J'#255#205#206#205#255#205#206#205#255
+#213#214#213#255#222#214#222#255#213#210#213#255#213#206#213#255#189#186#189
+#255#180#178#180#255#164#161#164#255#156#149#156#255'JHJ'#255#128#128#128#255
+#128#128#128#255#128#128#128#255' 4R'#255'A}'#189#255'RUZ'#255#222#218#222
+#255#230#222#230#255#230#226#230#255#230#226#230#255#222#214#222#255#197#198
+#197#255#180#182#189#255#172#174#180#255#164#161#164#255'jij'#255' '#255
+#128#128#128#255#128#128#128#255#24'0J'#255#131#198#255#255#24'0J'#255#128
+#128#128#255#222#222#230#255#238#234#238#255#230#230#230#255#230#226#230#255
+#197#198#205#255#189#190#189#255#172#174#172#255#164#161#164#255#148#149#148
+#255'JHJ'#255#128#128#128#255#128#128#128#255' 4R'#255#131#194#255#255'R'#137
+#205#255'JPR'#255#255#250#255#255#255#246#255#255#246#238#246#255#230#230#230
+#255#222#214#222#255#205#206#205#255#205#198#205#255#189#190#189#255#189#186
+#189#255#180#182#180#255'101'#255#128#128#128#255#24'0J'#255#156#214#255#255
,#139#198#255#255#131#198#255#255'b'#174#255#255'b'#174#255#255'b'#174#255#255
+'b'#174#255#255'b'#174#255#255'b'#174#255#255'b'#174#255#255#0#0#0#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255' 4R'#255'j'#165
+#230#255#164#214#255#255#139#198#255#255'j'#170#238#255#24'4R'#255' 4R'#255
+#24'4R'#255' 4R'#255#24'4R'#255' 4R'#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255' 4R'#255#24'0J'
+#255#24'4R'#255#24'0J'#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#0#0#0#255#0#0#0#255#0#0#0#255#0
+#0#0#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#0#0#0#255#0
+#0#0#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#0#0#0#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#0#0#0#255#0#0#0#255
+#0#0#0#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#0#0
+#0#255#0#0#0#255#128#128#128#255#0#0#0#255#0#0#0#255#0#0#0#255#128#128#128
+#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#0#0#0#255#0#0#0#255#0#0#0#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#7'OnClick'#7#12'AOpenExecute'#0#0#9'TMenuItem'#9'MIOPenDir'#6'Action'#7#8'A'
+'OpenDir'#11'Bitmap.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('
+#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0
+#0#0#0#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#0#0#0#255#0#0#0#255#0#0#0
+#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0
+#0#0#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#0#0#0#255#128#128#128#255#0#255#255#255#128#128#128#255#0#255#255
+#255#128#128#128#255#0#255#255#255#128#128#128#255#0#255#255#255#128#128#128
+#255#0#255#255#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#0#0#0#255#0#255#255#255#128#128#128#255#0#255#255#255#131#0
+#0#255#0#255#255#255#131#0#0#255#0#255#255#255#131#0#0#255#0#255#255#255#128
+#128#128#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#0#0#0#255#128#128#128#255#0#255#255#255#128#128#128#255#0#255
+#255#255#131#0#0#255#131#0#0#255#131#0#0#255#0#255#255#255#128#128#128#255#0
+#255#255#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#0#0#0#255#0#255#255#255#128#128#128#255#0#255#255#255#131#0#0
+#255#131#0#0#255#0#255#255#255#131#0#0#255#131#0#0#255#0#255#255#255#128#128
+#128#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#0#0#0#255#128#128#128#255#0#255#255#255#128#128#128#255#0#255#255
+#255#131#0#0#255#131#0#0#255#131#0#0#255#0#255#255#255#128#128#128#255#0#255
+#255#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#0#0#0#255#0#255#255#255#128#128#128#255#0#255#255#255#131#0#0#255#0
+#255#255#255#131#0#0#255#0#255#255#255#131#0#0#255#0#255#255#255#128#128#128
+#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#0#0#0#255#128#128#128#255#0#255#255#255#128#128#128#255#0#255#255#255
+#128#128#128#255#0#255#255#255#128#128#128#255#0#255#255#255#128#128#128#255
+#0#255#255#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0
+#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#0#0#0#255#0#255
,#255#255#128#128#128#255#0#255#255#255#128#128#128#255#0#0#0#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#7'OnClick'#7#15'AOpenDirExecute'#0#0#9'TMenuItem'#12'MIOpenDirRec'#6
+'Action'#7#18'OpenDirRecursively'#11'Bitmap.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4
+#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'
+#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#128#128#128#255#131#133#131#255#0#8#8#255#128
+#128#128#255#0#0#0#255#16#16#16#255#0#0#0#255#0#4#8#255#0#0#0#255#0#4#8#255#0
+#0#0#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#139#137#139#255#128#128#128#255#205#190#197#255
+#222#206#213#255#197#178#180#255#230#210#222#255#205#198#205#255#197#194#197
+#255#197#198#197#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#148#141#139#255#255#250
+#255#255#213#198#205#255#222#202#205#255#230#206#213#255#213#190#189#255#213
+#198#205#255#205#198#197#255#222#210#213#255#8#0#0#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+'{}{'#255#128#128#128#255#205#206#205#255#213#206#213#255#197#186#189#255#222
+#206#213#255#222#198#205#255#230#206#213#255#213#190#197#255#16#0#0#255#8#0#0
+#255' '#16#16#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#131#141#139#255#128#128#128#255#197#198#197#255#197#202#205#255#205#202
+#205#255#205#202#205#255#213#194#197#255#222#202#205#255#213#194#197#255#8#0
+#0#255#230#218#222#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255'{'#133#131#255#128#128#128#255#197#198#197#255#205#210
+#213#255#205#206#205#255#205#198#205#255#205#202#205#255#197#194#197#255#197
+#202#197#255#0#4#0#255#180#190#189#255#0#8#0#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#139#137#139#255#255#250#255#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#255#250#255#255#128
+#128#128#255#255#250#255#255#0#0#0#255#197#206#205#255#0#0#0#255#0#4#0#255#0
+#0#0#255#128#128#128#255#128#128#128#255#156#129#131#255#24#0#139#255#16#0
+#139#255#24#0#213#255#16#0#205#255#24#0#255#255#16#0#255#255#24#0#255#255#16
+#0#255#255' '#8#8#255#213#198#205#255#8#0#0#255#205#202#205#255#0#4#0#255#128
+#128#128#255#128#128#128#255#156#129#131#255#148#137#131#255#156#137#139#255
+#148#137#131#255#156#137#139#255#148#137#131#255#156#137#139#255#148#137#131
+#255#156#137#139#255' '#0#0#255#246#206#213#255#16#0#0#255#213#202#205#255#0
+#0#0#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#172
+'}'#131#255#255#250#255#255#255#242#255#255#255#250#255#255#255#246#255#255
+#255#250#255#255#255#250#255#255#128#128#128#255#255#242#246#255' '#0#0#255
+#222#194#197#255#16#0#8#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#172#141#148#255#16#0#139#255#24#0#139#255#16#0#205#255#16#0
+#213#255#16#0#255#255#24#0#255#255#16#0#255#255#16#0#255#255#24#0#0#255#213
+#194#197#255#8#0#0#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#131'y{'#255#148#129#131#255#156#133#139#255#156#133#139#255#148
+#137#131#255#156#137#139#255#148#133#131#255#148#137#139#255#131'}{'#255#8#4
+#0#255#222#214#213#255#0#4#0#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#148#137#139#255#255#250
+#255#255#128#128#128#255#128#128#128#255#255#250#246#255#128#128#128#255#128
+#128#128#255#255#250#246#255#128#128#128#255#0#0#0#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#156#137#139#255#24#0#139#255#16#0#139#255#24#0#213#255#16#0#205#255#24#0#255
+#255#16#0#255#255#24#0#255#255#16#0#255#255#24#0#0#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#148'}'#131#255#156#129#131#255#156#137#139#255#148#137#131#255#156#137#139
+#255#148#137#131#255#156#137#139#255#148#137#131#255#156#137#139#255#16#0#0
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
,#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#7'OnClick'#7#25'OpenDirRecu'
+'rsivelyExecute'#0#0#9'TMenuItem'#7'MIClear'#6'Action'#7#6'AClear'#7'OnClick'
+#7#13'AClearExecute'#0#0#9'TMenuItem'#2'N1'#7'Caption'#6#1'-'#0#0#9'TMenuIte'
+'m'#6'MIQuit'#6'Action'#7#5'AExit'#7'OnClick'#7#12'AExitExecute'#0#0#0#9'TMe'
+'nuItem'#6'MImage'#7'Caption'#6#6'&Image'#0#9'TMenuItem'#2'D1'#6'Action'#7#11
+'ADoubleSize'#11'Bitmap.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0
+#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0
+#0#0#0#0#0#0#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#0#0#0#255#0#0#0#255#0#0#0#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#0#0#0#255#0#0#0#255#0#0#0#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#0#0#0#255#0#0#0#255#0#0#0#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#0#0#0#255#0#0#0#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#131#129#131#255#0#0
+#0#255#0#0#0#255#0#0#0#255#131#129#131#255#128#128#128#255#0#255#255#255#131
+#129#131#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#0#0#0#255#131#129#131#255#131'}'
+#131#255#131#129#131#255'{}{'#255#131#129#131#255#0#0#0#255#0#0#0#255#0#255
+#255#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#0#0#0#255#131#129#131#255#128#128#128#255#197
+#194#197#255#128#128#128#255#197#194#197#255#128#128#128#255#131#129#131#255
+#0#0#0#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255'{}{'#255#131#129#131#255#128#128#128#255#197
+#194#197#255#128#128#128#255#0#0#255#255#128#128#128#255#197#194#197#255#128
+#128#128#255#131#129#131#255#131'}'#131#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#0#0#0#255#131#129#131#255
+#197#194#197#255#128#128#128#255#197#194#197#255#0#0#255#255#197#194#197#255
+#128#128#128#255#197#194#197#255#131#129#131#255#0#0#0#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#0#0#0#255
+#131#129#131#255#128#128#128#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255
+#255#0#0#255#255#128#128#128#255#131#129#131#255#0#0#0#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#0#0#0#255
+#131#129#131#255#197#194#197#255#128#128#128#255#197#194#197#255#0#0#255#255
+#197#194#197#255#128#128#128#255#197#194#197#255#131#129#131#255#0#0#0#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255'{}{'#255#131#129#131#255#128#128#128#255#197#194#197#255#128#128#128#255
+#0#0#255#255#128#128#128#255#197#194#197#255#128#128#128#255#131#129#131#255
+#131'}'#131#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#0#0#0#255#131#129#131#255#128#128#128
+#255#197#194#197#255#128#128#128#255#197#194#197#255#128#128#128#255#131#129
+#131#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#0#0
+#0#255#131#129#131#255#131'}'#131#255#131#129#131#255'{}{'#255#131#129#131
+#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#131#129#131#255#0#0#0#255#0#0#0#255#0#0#0#255#131
+#129#131#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#7'OnClick'#7
+#18'ADoubleSizeExecute'#0#0#9'TMenuItem'#10'MIHalfSize'#6'Action'#7#9'AHalfS'
+'ize'#11'Bitmap.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0
+#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0
+#0#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
,#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#0#0#0#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#0#0#0#255#0#0#0#255#0#0#0#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#0#0#0#255#0#0#0#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#0#0#0#255#0#0#0#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#0#0
+#0#255#0#0#0#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#131#129#131#255#0#0#0#255#0
+#0#0#255#0#0#0#255#131#129#131#255#128#128#128#255#0#255#255#255#131#129#131
+#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#0#0#0#255#131#129#131#255#131'}'#131#255
+#131#129#131#255'{}{'#255#131#129#131#255#0#0#0#255#0#0#0#255#0#255#255#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#0#0#0#255#131#129#131#255#197#194#197#255#128#128#128
+#255#197#194#197#255#128#128#128#255#197#194#197#255#131#129#131#255#0#0#0
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255'{}{'#255#131#129#131#255#197#190#197#255#128#128#128
+#255#189#190#189#255#128#128#128#255#197#190#197#255#128#128#128#255#189#190
+#189#255#131#129#131#255#131'}'#131#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#0#0#0#255#131#129#131#255#128
+#128#128#255#197#194#197#255#128#128#128#255#197#194#197#255#128#128#128#255
+#197#194#197#255#128#128#128#255#131#129#131#255#0#0#0#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#0#0#0#255
+#131#129#131#255#189#190#189#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255
+#255#0#0#255#255#197#190#197#255#131#129#131#255#0#0#0#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#0#0#0#255
+#131#129#131#255#128#128#128#255#197#194#197#255#128#128#128#255#197#194#197
+#255#128#128#128#255#197#194#197#255#128#128#128#255#131#129#131#255#0#0#0
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255'{}{'#255#131#129#131#255#197#190#197#255#128#128#128#255#189#190#189
+#255#128#128#128#255#197#190#197#255#128#128#128#255#189#190#189#255#131#129
+#131#255#131'}'#131#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#0#0#0#255#131#129#131#255#197
+#194#197#255#128#128#128#255#197#194#197#255#128#128#128#255#197#194#197#255
+#131#129#131#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#0#0#0#255#131#129#131#255#131'}'#131#255#131#129#131#255'{}{'#255#131
+#129#131#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#131#129#131#255#0#0#0#255#0#0#0#255#0#0#0
+#255#131#129#131#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#7'O'
+'nClick'#7#16'AHalfSizeExecute'#0#0#9'TMenuItem'#2'N2'#7'Caption'#6#1'-'#0#0
+#9'TMenuItem'#11'MINextImage'#6'Action'#7#10'ANextImage'#11'Bitmap.Data'#10
+':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0
+' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
,#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#0#0#0#255#0#0#0#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#0#0#0#255#0#0#255#255#0
+#0#0#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#0#0#0#255#0#0
+#255#255#0#0#255#255#0#0#255#255#0#0#0#255#0#0#0#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0
+#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0
+#255#255#0#0#255#255#0#0#0#255#0#0#0#255#128#128#128#255#128#128#128#255#0#0
+#0#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255
+#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255
+#0#0#255#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0
+#0#255#0#0#0#255#0#0#0#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0
+#0#255#255#0#0#0#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#0#0#0#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#0#255#0#0#0#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#0#0#0#255#0#0#255#255#0#0#0#255#0#0#0#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#0#0#0#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#8'ShortCut'#4#18#144#0#0#7'OnClick'#7#17'ANextImageExec'
+'ute'#0#0#9'TMenuItem'#14'PreviousImage1'#6'Action'#7#14'APreviousImage'#11
+'Bitmap.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0
+#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#0#0#0#255#0#0#0#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#0#0#0#255#0#0#0#255#0#0#255#255#0#0
+#0#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#0#0#0#255#0#0#0#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0
+#0#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#0#0#0#255#0#0#0
+#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#0#255#0
+#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0
,#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255
+#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0
+#255#255#0#0#0#255#128#128#128#255#128#128#128#255#0#0#0#255#0#0#0#255#0#0
+#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#0#255#0#0#0#255
+#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#0#0#0#255#0#0#0#255#0#0#255#255#0#0
+#255#255#0#0#255#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#0#0
+#0#255#0#0#0#255#0#0#255#255#0#0#0#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#0#0#0#255#0#0#0#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#8'ShortCut'#4#20#144#0#0#7'OnClick'#7#21
+'APreviousImageExecute'#0#0#9'TMenuItem'#19'Nextimagedirectory1'#6'Action'#7
+#13'ANextImageDir'#11'Bitmap.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'
+#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0
+#0#0#0#0#0#0#0#0#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#128#128#128#255#255#255#0#255#0#0#0#255#0#0#0
+#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0
+#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#255#255#0#255#128#128#128#255#255#255
+#0#255#0#0#0#255#128#128#128#255#131#129#131#255#131#129#131#255#131#129#131
+#255#131#129#131#255#131#129#131#255#131#129#131#255#131#129#131#255#131#129
+#131#255#131#129#131#255#131#129#131#255#0#0#0#255#255#255#0#255#128#128#128
+#255#255#255#0#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255'{}{'#255#0#0#0#255#255#255#0#255#128#128
+#128#255#255#255#0#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#131#129#131#255#0#0#0#255#255#255#0
+#255#128#128#128#255#255#255#0#255#0#0#0#255#128#128#128#255#128#128#128#255
+#128#128#128#255#0#0#0#255#0#0#0#255#128#128#128#255#0#0#0#255#128#128#128
+#255#128#128#128#255#128#128#128#255#131'}'#131#255#0#0#0#255#255#255#0#255
+#128#128#128#255#255#255#0#255#0#0#0#255#128#128#128#255#128#128#128#255#128
+#128#128#255#0#0#0#255#0#0#0#255#128#128#128#255#0#0#0#255#0#0#0#255#128#128
+#128#255#128#128#128#255#131#129#131#255#0#0#0#255#255#255#0#255#128#128#128
+#255#255#255#0#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128#128#255
+#0#0#0#255#0#0#0#255#128#128#128#255#0#0#0#255#0#0#0#255#0#0#0#255#128#128
+#128#255'{}{'#255#0#0#0#255#255#255#0#255#128#128#128#255#255#255#0#255#0#0#0
+#255#128#128#128#255#128#128#128#255#128#128#128#255#0#0#0#255#0#0#0#255#128
+#128#128#255#0#0#0#255#0#0#0#255#128#128#128#255#128#128#128#255#131#129#131
+#255#0#0#0#255#255#255#0#255#128#128#128#255#255#255#0#255#0#0#0#255#128#128
+#128#255#128#128#128#255#128#128#128#255#0#0#0#255#0#0#0#255#128#128#128#255
+#0#0#0#255#128#128#128#255#128#128#128#255#128#128#128#255#131'}'#131#255#0#0
+#0#255#255#255#0#255#128#128#128#255#255#255#0#255#0#0#0#255#128#128#128#255
,#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#131#129
+#131#255#0#0#0#255#255#255#0#255#128#128#128#255#255#255#0#255#0#0#0#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255'{}{'#255#0#0#0#255#255#255#0#255#128#128#128#255#255#255#0#255#0#0#0#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#0#0#0#255#255#255#0#255#128#128#128#255#255#255#0
+#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0
+#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#255#255#0#255#128
+#128#128#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#128
+#128#128#255#7'OnClick'#7#20'ANextImageDirExecute'#0#0#9'TMenuItem'#23'Previ'
+'ousimagedirectory1'#6'Action'#7#13'APrevImageDir'#11'Bitmap.Data'#10':'#4#0
+#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0
+#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#128#128#128#255
+#255#255#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0
+#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#255#255
+#0#255#128#128#128#255#255#255#0#255#0#0#0#255#128#128#128#255#131#129#131
+#255#131#129#131#255#131#129#131#255#131#129#131#255#131#129#131#255#131#129
+#131#255#131#129#131#255#131#129#131#255#131#129#131#255#131#129#131#255#0#0
+#0#255#255#255#0#255#128#128#128#255#255#255#0#255#0#0#0#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255'{}{'#255
+#0#0#0#255#255#255#0#255#128#128#128#255#255#255#0#255#0#0#0#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#131
+#129#131#255#0#0#0#255#255#255#0#255#128#128#128#255#255#255#0#255#0#0#0#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#0#0#0#255
+#128#128#128#255#0#0#0#255#0#0#0#255#128#128#128#255#128#128#128#255#131'}'
+#131#255#0#0#0#255#255#255#0#255#128#128#128#255#255#255#0#255#0#0#0#255#128
+#128#128#255#128#128#128#255#128#128#128#255#0#0#0#255#0#0#0#255#128#128#128
+#255#0#0#0#255#0#0#0#255#128#128#128#255#128#128#128#255#131#129#131#255#0#0
+#0#255#255#255#0#255#128#128#128#255#255#255#0#255#0#0#0#255#128#128#128#255
+#128#128#128#255#0#0#0#255#0#0#0#255#0#0#0#255#128#128#128#255#0#0#0#255#0#0
+#0#255#128#128#128#255#128#128#128#255'{}{'#255#0#0#0#255#255#255#0#255#128
+#128#128#255#255#255#0#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128
+#128#255#0#0#0#255#0#0#0#255#128#128#128#255#0#0#0#255#0#0#0#255#128#128#128
+#255#128#128#128#255#131#129#131#255#0#0#0#255#255#255#0#255#128#128#128#255
+#255#255#0#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#0#0#0#255#128#128#128#255#0#0#0#255#0#0#0#255#128#128#128#255
+#128#128#128#255#131'}'#131#255#0#0#0#255#255#255#0#255#128#128#128#255#255
+#255#0#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#131#129#131#255#0#0#0#255#255#255#0#255#128#128
+#128#255#255#255#0#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255'{}{'#255#0#0#0#255#255#255#0#255#128
+#128#128#255#255#255#0#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#0#0#0#255#255
+#255#0#255#128#128#128#255#255#255#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0
+#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0
+#0#0#255#0#0#0#255#255#255#0#255#128#128#128#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
,#255#255#255#0#255#255#255#0#255#128#128#128#255#7'OnClick'#7#20'APrevImageD'
+'irExecute'#0#0#0#0#11'TActionList'#11'ActionList1'#6'Images'#7#6'ILMain'#4
+'left'#2'H'#3'top'#2' '#0#7'TAction'#5'AOpen'#7'Caption'#6#5'&Open'#8'HelpTy'
+'pe'#7#9'htKeyword'#10'ImageIndex'#2#0#9'OnExecute'#7#12'AOpenExecute'#8'Sho'
+'rtCut'#3'O@'#0#0#7'TAction'#8'AOpenDir'#7'Caption'#6#15'Open &Directory'#8
+'HelpType'#7#9'htKeyword'#10'ImageIndex'#2#1#9'OnExecute'#7#15'AOpenDirExecu'
+'te'#8'ShortCut'#3'D@'#0#0#7'TAction'#5'AExit'#7'Caption'#6#5'&Quit'#8'HelpT'
+'ype'#7#9'htKeyword'#9'OnExecute'#7#12'AExitExecute'#8'ShortCut'#3'Q@'#0#0#7
+'TAction'#6'AClear'#7'Caption'#6#11'&Clear list'#8'HelpType'#7#9'htKeyword'#9
+'OnExecute'#7#13'AClearExecute'#8'ShortCut'#3'L@'#0#0#7'TAction'#18'OpenDirR'
+'ecursively'#7'Caption'#6#27'Open Directory &Recursively'#8'HelpType'#7#9'ht'
+'Keyword'#10'ImageIndex'#2#2#9'OnExecute'#7#25'OpenDirRecursivelyExecute'#8
+'ShortCut'#3'R@'#0#0#7'TAction'#11'ADoubleSize'#7'Caption'#6#12'&Double size'
+#8'HelpType'#7#9'htKeyword'#10'ImageIndex'#2#5#9'OnExecute'#7#18'ADoubleSize'
+'Execute'#8'ShortCut'#3'+@'#0#0#7'TAction'#9'AHalfSize'#7'Caption'#6#11'&Hal'
+'f Size'#8'HelpType'#7#9'htKeyword'#10'ImageIndex'#2#6#9'OnExecute'#7#16'AH'
+'alfSizeExecute'#8'ShortCut'#3'-@'#0#0#7'TAction'#10'ANextImage'#7'Caption'#6
+#11'&Next image'#8'HelpType'#7#9'htKeyword'#10'ImageIndex'#2#4#9'OnExecute'#7
+#17'ANextImageExecute'#0#0#7'TAction'#14'APreviousImage'#7'Caption'#6#15'&Pr'
+'evious Image'#8'HelpType'#7#9'htKeyword'#10'ImageIndex'#2#3#9'OnExecute'#7
+#21'APreviousImageExecute'#0#0#7'TAction'#13'ANextImageDir'#7'Caption'#6#21
+'N&ext image directory'#8'HelpType'#7#9'htKeyword'#10'ImageIndex'#2#8#9'OnEx'
+'ecute'#7#20'ANextImageDirExecute'#8'ShortCut'#4'N'#128#0#0#0#0#7'TAction'#13
+'APrevImageDir'#7'Caption'#6#25'Pre&vious image directory'#8'HelpType'#7#9'h'
+'tKeyword'#4'Hint'#6'(Jump to last image of previous directory'#10'ImageInde'
+'x'#2#7#9'OnExecute'#7#20'APrevImageDirExecute'#8'ShortCut'#4'P'#128#0#0#0#0
+#0#10'TImageList'#6'ILMain'#4'left'#2' '#3'top'#2'@'#6'Bitmap'#10#14'$'#0#0
+'Li'#9#0#0#0#16#0#0#0#16#0#0#0#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#0#0#0#255#0#0#0#255#0#0
+#0#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#0#0#0#255#0#0#0#255#128#128
+#128#255#0#0#0#255#0#0#0#255#0#0#0#255#128#128#128#255#0#0#0#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#0#0#0#255#0#0#0#255#0#0#0#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255' 4R'#255
+#24'0J'#255#24'4R'#255#24'0J'#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255' 4R'#255'j'#165#230
+#255#164#214#255#255#139#198#255#255'j'#170#238#255#24'4R'#255' 4R'#255#24'4'
+'R'#255' 4R'#255#24'4R'#255' 4R'#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#24'0J'#255#156#214#255#255#139#198
+#255#255#131#198#255#255'b'#174#255#255'b'#174#255#255'b'#174#255#255'b'#174
+#255#255'b'#174#255#255'b'#174#255#255'b'#174#255#255#0#0#0#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255' 4R'#255#131#194#255#255
+'R'#137#205#255'JPR'#255#255#250#255#255#255#246#255#255#246#238#246#255#230
+#230#230#255#222#214#222#255#205#206#205#255#205#198#205#255#189#190#189#255
+#189#186#189#255#180#182#180#255'101'#255#128#128#128#255#24'0J'#255#131#198
+#255#255#24'0J'#255#128#128#128#255#222#222#230#255#238#234#238#255#230#230
+#230#255#230#226#230#255#197#198#205#255#189#190#189#255#172#174#172#255#164
+#161#164#255#148#149#148#255'JHJ'#255#128#128#128#255#128#128#128#255' 4R'
+#255'A}'#189#255'RUZ'#255#222#218#222#255#230#222#230#255#230#226#230#255#230
+#226#230#255#222#214#222#255#197#198#197#255#180#182#189#255#172#174#180#255
+#164#161#164#255'jij'#255' '#255#128#128#128#255#128#128#128#255#24'0J'#255
+#24'0J'#255#205#206#205#255#205#206#205#255#213#214#213#255#222#214#222#255
+#213#210#213#255#213#206#213#255#189#186#189#255#180#178#180#255#164#161#164
+#255#156#149#156#255'JHJ'#255#128#128#128#255#128#128#128#255#128#128#128#255
,' 4R'#255'RUZ'#255#213#210#213#255#189#190#197#255#205#198#205#255#205#198
+#205#255#205#198#205#255#197#194#197#255#180#178#180#255#164#165#172#255#164
+#161#164#255'sqs'#255#24#20#24#255#128#128#128#255#128#128#128#255#128#128
+#128#255#24'0J'#255#197#190#197#255#164#165#164#255#172#174#172#255#172#174
+#172#255#180#178#180#255#172#170#172#255#172#170#172#255#156#153#156#255#148
+#149#156#255#139#141#139#255'JHJ'#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255')$)'#255'JHJ'#255'RLR'#255'JLJ'#255'RLR'#255'JLJ'
+#255'RLR'#255'JHJ'#255'JDJ'#255'A@A'#255'949'#255' '#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#0#0#0#255#0#0#0#255#0#0#0#255#0
+#0#0#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#0#0#0#255#0#255#255#255#128#128#128#255#0
+#255#255#255#128#128#128#255#0#0#0#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0
+#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#0#0#0#255
+#128#128#128#255#0#255#255#255#128#128#128#255#0#255#255#255#128#128#128#255
+#0#255#255#255#128#128#128#255#0#255#255#255#128#128#128#255#0#255#255#255#0
+#0#0#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#0#0
+#0#255#0#255#255#255#128#128#128#255#0#255#255#255#131#0#0#255#0#255#255#255
+#131#0#0#255#0#255#255#255#131#0#0#255#0#255#255#255#128#128#128#255#0#0#0
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#0#0#0
+#255#128#128#128#255#0#255#255#255#128#128#128#255#0#255#255#255#131#0#0#255
+#131#0#0#255#131#0#0#255#0#255#255#255#128#128#128#255#0#255#255#255#0#0#0
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#0#0#0
+#255#0#255#255#255#128#128#128#255#0#255#255#255#131#0#0#255#131#0#0#255#0
+#255#255#255#131#0#0#255#131#0#0#255#0#255#255#255#128#128#128#255#0#0#0#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#0#0#0#255
+#128#128#128#255#0#255#255#255#128#128#128#255#0#255#255#255#131#0#0#255#131
+#0#0#255#131#0#0#255#0#255#255#255#128#128#128#255#0#255#255#255#0#0#0#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#0#0#0#255#0
+#255#255#255#128#128#128#255#0#255#255#255#131#0#0#255#0#255#255#255#131#0#0
+#255#0#255#255#255#131#0#0#255#0#255#255#255#128#128#128#255#0#0#0#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#0#0#0#255#128
+#128#128#255#0#255#255#255#128#128#128#255#0#255#255#255#128#128#128#255#0
+#255#255#255#128#128#128#255#0#255#255#255#128#128#128#255#0#255#255#255#0#0
+#0#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#0#0#0
+#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0
+#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
,#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#148'}'#131#255#156#129#131#255#156#137
+#139#255#148#137#131#255#156#137#139#255#148#137#131#255#156#137#139#255#148
+#137#131#255#156#137#139#255#16#0#0#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#156#137#139#255
+#24#0#139#255#16#0#139#255#24#0#213#255#16#0#205#255#24#0#255#255#16#0#255
+#255#24#0#255#255#16#0#255#255#24#0#0#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#148#137#139#255
+#255#250#255#255#128#128#128#255#128#128#128#255#255#250#246#255#128#128#128
+#255#128#128#128#255#255#250#246#255#128#128#128#255#0#0#0#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#131'y{'#255#148#129#131
+#255#156#133#139#255#156#133#139#255#148#137#131#255#156#137#139#255#148#133
+#131#255#148#137#139#255#131'}{'#255#8#4#0#255#222#214#213#255#0#4#0#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#172#141#148#255
+#16#0#139#255#24#0#139#255#16#0#205#255#16#0#213#255#16#0#255#255#24#0#255
+#255#16#0#255#255#16#0#255#255#24#0#0#255#213#194#197#255#8#0#0#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#172'}'#131#255#255
+#250#255#255#255#242#255#255#255#250#255#255#255#246#255#255#255#250#255#255
+#255#250#255#255#128#128#128#255#255#242#246#255' '#0#0#255#222#194#197#255
+#16#0#8#255#128#128#128#255#128#128#128#255#156#129#131#255#148#137#131#255
+#156#137#139#255#148#137#131#255#156#137#139#255#148#137#131#255#156#137#139
+#255#148#137#131#255#156#137#139#255' '#0#0#255#246#206#213#255#16#0#0#255
+#213#202#205#255#0#0#0#255#128#128#128#255#128#128#128#255#156#129#131#255#24
+#0#139#255#16#0#139#255#24#0#213#255#16#0#205#255#24#0#255#255#16#0#255#255
+#24#0#255#255#16#0#255#255' '#8#8#255#213#198#205#255#8#0#0#255#205#202#205
+#255#0#4#0#255#128#128#128#255#128#128#128#255#139#137#139#255#255#250#255
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#255#250
+#255#255#128#128#128#255#255#250#255#255#0#0#0#255#197#206#205#255#0#0#0#255
+#0#4#0#255#0#0#0#255#128#128#128#255#128#128#128#255'{'#133#131#255#128#128
+#128#255#197#198#197#255#205#210#213#255#205#206#205#255#205#198#205#255#205
+#202#205#255#197#194#197#255#197#202#197#255#0#4#0#255#180#190#189#255#0#8#0
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#131#141
+#139#255#128#128#128#255#197#198#197#255#197#202#205#255#205#202#205#255#205
+#202#205#255#213#194#197#255#222#202#205#255#213#194#197#255#8#0#0#255#230
+#218#222#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255'{}{'#255#128#128#128#255#205#206#205#255#213#206#213#255#197#186
+#189#255#222#206#213#255#222#198#205#255#230#206#213#255#213#190#197#255#16#0
+#0#255#8#0#0#255' '#16#16#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#148#141#139#255#255#250#255#255#213#198#205#255#222#202#205
+#255#230#206#213#255#213#190#189#255#213#198#205#255#205#198#197#255#222#210
+#213#255#8#0#0#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#139#137#139#255#128#128#128#255#205
+#190#197#255#222#206#213#255#197#178#180#255#230#210#222#255#205#198#205#255
+#197#194#197#255#197#198#197#255#0#0#0#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#131#133#131
+#255#0#8#8#255#128#128#128#255#0#0#0#255#16#16#16#255#0#0#0#255#0#4#8#255#0#0
+#0#255#0#4#8#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#0#0#0#255#0#0#0#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
,#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#0#0#0#255#0#0#0#255#0#0#255#255#0#0#0#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#0#0#0#255#0#0#0#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#0#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#0#0#0#255#0#0#0#255#0#0#255
+#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#0#255#0#0#0#255#0#0
+#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#255
+#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255
+#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0
+#0#255#128#128#128#255#128#128#128#255#0#0#0#255#0#0#0#255#0#0#255#255#0#0
+#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#0#255#0#0#0#255#0#0#0#255#0
+#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#0#0#0#255#0#0#0#255#0#0#255#255#0#0#255#255#0#0
+#255#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#0#0#0#255#0#0#0
+#255#0#0#255#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#0#0#0#255#0#0#0#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#0#0#0#255#0#0#0#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#0#0#0#255#0#0#255#255#0#0#0#255#0#0
+#0#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#0#0#0#255#0#0#255#255#0#0
+#255#255#0#0#255#255#0#0#0#255#0#0#0#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0
+#255#0#0#0#255#0#0#0#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0
+#255#255#0#0#0#255#0#0#0#255#128#128#128#255#128#128#128#255#0#0#0#255#0#0
+#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255
+#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255
+#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0
+#255#0#0#0#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0
+#0#0#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#0#0
+#0#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#0#255#0#0#0#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#0#0
,#0#255#0#0#255#255#0#0#0#255#0#0#0#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#0#0#0#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#131#129#131#255#0#0#0#255#0#0#0#255#0#0#0#255#131#129#131#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#0#0#0#255#131#129#131#255#131'}'#131#255#131#129#131#255'{}{'#255#131
+#129#131#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#0#0#0#255#131#129#131#255#128#128#128#255#197#194#197#255#128#128#128#255
+#197#194#197#255#128#128#128#255#131#129#131#255#0#0#0#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255'{}{'#255#131#129#131#255#128#128#128#255#197#194#197#255#128#128#128#255
+#0#0#255#255#128#128#128#255#197#194#197#255#128#128#128#255#131#129#131#255
+#131'}'#131#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#0#0#0#255#131#129#131#255#197#194#197#255#128#128#128
+#255#197#194#197#255#0#0#255#255#197#194#197#255#128#128#128#255#197#194#197
+#255#131#129#131#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#0#0#0#255#131#129#131#255#128#128#128
+#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#128#128#128
+#255#131#129#131#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#0#0#0#255#131#129#131#255#197#194#197
+#255#128#128#128#255#197#194#197#255#0#0#255#255#197#194#197#255#128#128#128
+#255#197#194#197#255#131#129#131#255#0#0#0#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255'{}{'#255#131#129#131#255
+#128#128#128#255#197#194#197#255#128#128#128#255#0#0#255#255#128#128#128#255
+#197#194#197#255#128#128#128#255#131#129#131#255#131'}'#131#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#0#0#0#255#131#129#131#255#128#128#128#255#197#194#197#255#128#128
+#128#255#197#194#197#255#128#128#128#255#131#129#131#255#0#0#0#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#0#0#0#255#131#129#131#255#131'}'
+#131#255#131#129#131#255'{}{'#255#131#129#131#255#0#0#0#255#0#0#0#255#0#255
+#255#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#131#129#131#255
+#0#0#0#255#0#0#0#255#0#0#0#255#131#129#131#255#128#128#128#255#0#255#255#255
+#131#129#131#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#0#0#0#255#0#0#0#255#0#0#0#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#0#0#0#255#0#0#0#255#0#0
+#0#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#0#0#0#255#0#0#0#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
,#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#0#0#0#255#0#0#0#255#0#0#0#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#0#0#0#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#131#129#131#255
+#0#0#0#255#0#0#0#255#0#0#0#255#131#129#131#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#0#0#0#255#131#129
+#131#255#131'}'#131#255#131#129#131#255'{}{'#255#131#129#131#255#0#0#0#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#0#0#0#255#131#129#131
+#255#197#194#197#255#128#128#128#255#197#194#197#255#128#128#128#255#197#194
+#197#255#131#129#131#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255'{}{'#255#131#129#131
+#255#197#190#197#255#128#128#128#255#189#190#189#255#128#128#128#255#197#190
+#197#255#128#128#128#255#189#190#189#255#131#129#131#255#131'}'#131#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#0#0#0#255#131#129#131#255#128#128#128#255#197#194#197#255#128#128#128#255
+#197#194#197#255#128#128#128#255#197#194#197#255#128#128#128#255#131#129#131
+#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#0#0#0#255#131#129#131#255#189#190#189#255#0#0#255#255#0
+#0#255#255#0#0#255#255#0#0#255#255#0#0#255#255#197#190#197#255#131#129#131
+#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#0#0#0#255#131#129#131#255#128#128#128#255#197#194#197
+#255#128#128#128#255#197#194#197#255#128#128#128#255#197#194#197#255#128#128
+#128#255#131#129#131#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255'{}{'#255#131#129#131#255#197#190#197
+#255#128#128#128#255#189#190#189#255#128#128#128#255#197#190#197#255#128#128
+#128#255#189#190#189#255#131#129#131#255#131'}'#131#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#0#0#0#255#131#129#131#255#197#194#197#255#128#128#128#255#197#194#197#255
+#128#128#128#255#197#194#197#255#131#129#131#255#0#0#0#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#0#0#0#255#131#129#131#255#131'}'#131#255
+#131#129#131#255'{}{'#255#131#129#131#255#0#0#0#255#0#0#0#255#0#255#255#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#131#129#131#255#0#0#0
+#255#0#0#0#255#0#0#0#255#131#129#131#255#128#128#128#255#0#255#255#255#131
+#129#131#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#0#0#0#255#0#0#0#255#0#0#0#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#0#0#0#255#0#0#0#255#0#0#0
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#0#0#0#255#0#0#0#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#0#0#0#255#0#0#0#255#0#0#0#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#0#0#0#255#128#128
+#128#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#128
+#128#128#255#255#255#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255
+#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0
+#255#255#255#0#255#128#128#128#255#255#255#0#255#0#0#0#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
,#128#255#0#0#0#255#255#255#0#255#128#128#128#255#255#255#0#255#0#0#0#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255'{}{'#255#0#0#0#255#255#255#0#255#128#128#128#255#255#255#0#255#0#0#0#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#131#129#131#255#0#0#0#255#255#255#0#255#128#128#128#255#255#255#0
+#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#0#0#0#255#128#128#128#255#0#0#0#255#0#0#0#255#128#128#128#255#128#128
+#128#255#131'}'#131#255#0#0#0#255#255#255#0#255#128#128#128#255#255#255#0#255
+#0#0#0#255#128#128#128#255#128#128#128#255#128#128#128#255#0#0#0#255#0#0#0
+#255#128#128#128#255#0#0#0#255#0#0#0#255#128#128#128#255#128#128#128#255#131
+#129#131#255#0#0#0#255#255#255#0#255#128#128#128#255#255#255#0#255#0#0#0#255
+#128#128#128#255#128#128#128#255#0#0#0#255#0#0#0#255#0#0#0#255#128#128#128
+#255#0#0#0#255#0#0#0#255#128#128#128#255#128#128#128#255'{}{'#255#0#0#0#255
+#255#255#0#255#128#128#128#255#255#255#0#255#0#0#0#255#128#128#128#255#128
+#128#128#255#128#128#128#255#0#0#0#255#0#0#0#255#128#128#128#255#0#0#0#255#0
+#0#0#255#128#128#128#255#128#128#128#255#131#129#131#255#0#0#0#255#255#255#0
+#255#128#128#128#255#255#255#0#255#0#0#0#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#0#0#0#255#128#128#128#255#0#0#0#255#0#0#0
+#255#128#128#128#255#128#128#128#255#131'}'#131#255#0#0#0#255#255#255#0#255
+#128#128#128#255#255#255#0#255#0#0#0#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#131#129#131#255#0#0#0#255
+#255#255#0#255#128#128#128#255#255#255#0#255#0#0#0#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255'{}{'#255#0#0
+#0#255#255#255#0#255#128#128#128#255#255#255#0#255#0#0#0#255#128#128#128#255
+#131#129#131#255#131#129#131#255#131#129#131#255#131#129#131#255#131#129#131
+#255#131#129#131#255#131#129#131#255#131#129#131#255#131#129#131#255#131#129
+#131#255#0#0#0#255#255#255#0#255#128#128#128#255#255#255#0#255#0#0#0#255#0#0
+#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255
+#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#255#255#0#255#128#128#128#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#128#128#128#255#255#255#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0
+#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0
+#0#0#255#0#0#0#255#255#255#0#255#128#128#128#255#255#255#0#255#0#0#0#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#0#0#0#255#255#255#0#255#128#128#128#255#255#255#0#255#0
+#0#0#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255'{}{'#255#0#0#0#255#255#255#0#255#128#128#128#255#255#255#0
+#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#131#129#131#255#0#0#0#255#255#255#0#255#128#128#128
+#255#255#255#0#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128#128#255
+#0#0#0#255#0#0#0#255#128#128#128#255#0#0#0#255#128#128#128#255#128#128#128
+#255#128#128#128#255#131'}'#131#255#0#0#0#255#255#255#0#255#128#128#128#255
+#255#255#0#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128#128#255#0#0
+#0#255#0#0#0#255#128#128#128#255#0#0#0#255#0#0#0#255#128#128#128#255#128#128
+#128#255#131#129#131#255#0#0#0#255#255#255#0#255#128#128#128#255#255#255#0
+#255#0#0#0#255#128#128#128#255#128#128#128#255#128#128#128#255#0#0#0#255#0#0
+#0#255#128#128#128#255#0#0#0#255#0#0#0#255#0#0#0#255#128#128#128#255'{}{'#255
+#0#0#0#255#255#255#0#255#128#128#128#255#255#255#0#255#0#0#0#255#128#128#128
+#255#128#128#128#255#128#128#128#255#0#0#0#255#0#0#0#255#128#128#128#255#0#0
,#0#255#0#0#0#255#128#128#128#255#128#128#128#255#131#129#131#255#0#0#0#255
+#255#255#0#255#128#128#128#255#255#255#0#255#0#0#0#255#128#128#128#255#128
+#128#128#255#128#128#128#255#0#0#0#255#0#0#0#255#128#128#128#255#0#0#0#255
+#128#128#128#255#128#128#128#255#128#128#128#255#131'}'#131#255#0#0#0#255#255
+#255#0#255#128#128#128#255#255#255#0#255#0#0#0#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#131#129#131#255
+#0#0#0#255#255#255#0#255#128#128#128#255#255#255#0#255#0#0#0#255#128#128#128
+#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255'{}{'
+#255#0#0#0#255#255#255#0#255#128#128#128#255#255#255#0#255#0#0#0#255#128#128
+#128#255#131#129#131#255#131#129#131#255#131#129#131#255#131#129#131#255#131
+#129#131#255#131#129#131#255#131#129#131#255#131#129#131#255#131#129#131#255
+#131#129#131#255#0#0#0#255#255#255#0#255#128#128#128#255#255#255#0#255#0#0#0
+#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0
+#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#255#255#0#255#128#128#128
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#128#128
+#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128
+#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255
+#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128#255#128#128#128
+#255#128#128#128#255#128#128#128#255#0#0#11'TOpenDialog'#7'ODImage'#11'Filte'
+'rIndex'#2#0#7'Options'#11#18'ofAllowMultiSelect'#14'ofEnableSizing'#12'ofVi'
+'ewDetail'#0#4'left'#2'H'#3'top'#2'@'#0#0#11'TOpenDialog'#11'OpenDialog1'#11
+'FilterIndex'#2#0#4'left'#2'H'#3'top'#2'h'#0#0#0
]);

View File

@ -0,0 +1,500 @@
{
***************************************************************************
* *
* This source is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This code is distributed in the hope that it will be useful, but *
* WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
* General Public License for more details. *
* *
* A copy of the GNU General Public License is available on the World *
* Wide Web at <http://www.gnu.org/copyleft/gpl.html>. You can also *
* obtain it by writing to the Free Software Foundation, *
* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
* *
***************************************************************************
}
unit frmmain;
{$MODE Delphi}
interface
uses
LCLIntf,SysUtils, Classes, Graphics, Controls, Forms, FileUtil,
Dialogs, StdCtrls, ComCtrls, ExtCtrls, ActnList, Menus,
LResources, LCLType;
type
TPicViewFrm = class(TForm)
MainMenu1: TMainMenu;
ToolBar1: TToolBar;
ActionList1: TActionList;
AOpen: TAction;
AOpenDir: TAction;
AExit: TAction;
LBFiles: TListBox;
SPImage: TSplitter;
File1: TMenuItem;
MIOpen: TMenuItem;
MIOPenDir: TMenuItem;
N1: TMenuItem;
MIQuit: TMenuItem;
TBOPen: TToolButton;
TBOpenDir: TToolButton;
ILMain: TImageList;
ODImage: TOpenDialog;
AClear: TAction;
MIOpenDirRec: TMenuItem;
MIClear: TMenuItem;
OpenDirRecursively: TAction;
TBOpenDirRec: TToolButton;
ADoubleSize: TAction;
MImage: TMenuItem;
D1: TMenuItem;
AHalfSize: TAction;
MIHalfSize: TMenuItem;
PImage: TPanel;
ScrollBox1: TScrollBox;
IMain: TImage;
ANextImage: TAction;
APreviousImage: TAction;
ANextImageDir: TAction;
APrevImageDir: TAction;
MINextImage: TMenuItem;
PreviousImage1: TMenuItem;
Nextimagedirectory1: TMenuItem;
Previousimagedirectory1: TMenuItem;
ToolButton4: TToolButton;
TBPRev: TToolButton;
TBNext: TToolButton;
TBPRevDir: TToolButton;
TBNextDir: TToolButton;
TBDoubleSize: TToolButton;
TBHalfSize: TToolButton;
ToolButton3: TToolButton;
N2: TMenuItem;
OpenDialog1: TOpenDialog;
procedure AOpenExecute(Sender: TObject);
procedure LBFilesClick(Sender: TObject);
procedure AOpenDirExecute(Sender: TObject);
procedure AExitExecute(Sender: TObject);
procedure OpenDirRecursivelyExecute(Sender: TObject);
procedure AClearExecute(Sender: TObject);
procedure ADoubleSizeExecute(Sender: TObject);
procedure AHalfSizeExecute(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormShow(Sender: TObject);
procedure ANextImageExecute(Sender: TObject);
procedure APreviousImageExecute(Sender: TObject);
procedure ANextImageDirExecute(Sender: TObject);
procedure APrevImageDirExecute(Sender: TObject);
private
FImageScale : Double;
procedure AddFile(FileName: String; ShowFile: Boolean);
procedure ShowFile(Index: Integer);
procedure AddDir(Directory: String; Recurse: Boolean);
procedure RescaleImage(NewScale: Double);
procedure NextImage;
procedure PreviousImage;
procedure NextImageDir;
procedure PreviousImageDir;
Function NextDirIndex(Direction : Integer) : Integer;
procedure ShiftImageIndex(MoveBy: Integer);
procedure ProcessCommandLine;
procedure DoError(Msg: String; Args: array of const);
{ Private declarations }
public
{ Public declarations }
end;
var
PicViewFrm: TPicViewFrm;
implementation
Const
ImageTypes = '.jpg.jpeg.bmp.xpm.png';
resourcestring
SSelectImageDir = 'Select directory to add images from';
SSelectImageDirRec = 'Select directory to recursively add images from';
SImageViewer = 'Image viewer';
SErrNeedArgument = 'Option at position%d (%s) needs an argument';
{ [] }
procedure TPicViewFrm.AOpenExecute(Sender: TObject);
Var
I : Integer;
begin
With ODImage do
begin
If Execute then
for I:=0 to Files.Count-1 do
AddFile(Files[I],(I=0))
end;
end;
procedure TPicViewFrm.AddFile(FileName :String; ShowFile : Boolean);
Var
Index : Integer;
begin
ShowFile:=ShowFile or (LBFiles.Items.Count=0);
Index:=LBFiles.Items.Add(FileName);
If ShowFile then
self.ShowFile(Index);
end;
procedure TPicViewFrm.ShowFile(Index : Integer);
Var
LoadOK : Boolean;
begin
If Index=-1 then
begin
IMain.Picture:=Nil;
Caption:=SImageViewer;
end
else
Repeat
Try
LoadOK:=False;
IMain.Align:=AlClient;
Imain.Stretch:=False;
FImageScale:=1.0;
IMain.Picture.LoadFromFile(LBFiles.Items[Index]);
Caption:=SImageViewer+'('+LBFiles.Items[Index]+')';
LoadOK:=True;
Except
If Index<LBFiles.Items.Count-1 then
inc(Index)
else
Index:=-1;
end
Until LoadOK or (Index=-1);
With LBFiles do
begin
If Index<>ItemIndex then
LBFiles.Itemindex:=Index;
{ If Not ItemVisible(ItemIndex) then
MakeCurrentVisible;}
end;
end;
procedure TPicViewFrm.LBFilesClick(Sender: TObject);
begin
ShowFile(LBFiles.ItemIndex);
end;
procedure TPicViewFrm.AOpenDirExecute(Sender: TObject);
Var
Dir : String;
begin
if SelectDirectory(SSelectImageDir,'/',Dir) then
// if SelectDirectory(SSelectImageDir,'/',Dir,True) then
AddDir(Dir,False);
end;
procedure TPicViewFrm.AddDir(Directory :String; Recurse : Boolean);
Var
Info : TSearchRec;
Ext : String;
begin
LBFiles.Items.BeginUpdate;
Try
Directory:=IncludeTrailingBackslash(Directory);
if FindFirstUTF8(Directory+'*.*',0,Info)=0 then
try
Repeat
Ext:=ExtractFileExt(Info.Name);
If Pos(Ext,ImageTypes)<>0 then
AddFile(Directory+Info.Name,False);
until (FindNextUTF8(Info)<>0)
Finally
FindCloseUTF8(Info);
end;
If Recurse then
if FindFirstUTF8(Directory+'*',faDirectory,Info)=0 then
try
Repeat
If (Info.Name<>'.') and (Info.Name<>'') and (info.name<>'..') and
((Info.Attr and faDirectory)<>0) then
AddDir(Directory+Info.name,True);
until (FindNextUTF8(Info)<>0)
finally
FindCloseUTF8(Info);
end;
Finally
LBFiles.Items.EndUpdate;
end;
end;
procedure TPicViewFrm.AExitExecute(Sender: TObject);
begin
Close;
end;
procedure TPicViewFrm.OpenDirRecursivelyExecute(Sender: TObject);
Var
Dir : String;
begin
if SelectDirectory(SSelectImageDirRec,'/',Dir) then
AddDir(Dir,True);
end;
procedure TPicViewFrm.AClearExecute(Sender: TObject);
begin
LBFiles.ItemIndex:=-1;
ShowFile(-1);
LBFiles.Items.Clear;
end;
procedure TPicViewFrm.ADoubleSizeExecute(Sender: TObject);
begin
RescaleImage(2.0);
end;
procedure TPicViewFrm.RescaleImage(NewScale : Double);
Var
OrgWidth,OrgHeight : Integer;
Rect : TRect;
begin
OrgWidth:=IMain.Picture.Bitmap.Width;
OrgHeight:=IMain.Picture.Bitmap.Height;
FImageScale:=FImageScale*NewScale;
Rect:=IMain.BoundsRect;
Rect.Right:=Rect.Left+Round(OrgWidth*FImageScale);
Rect.Bottom:=Rect.Top+Round(OrgHeight*FImageScale);
Imain.Align:=AlNone;
IMain.BoundsRect:=Rect;
Imain.Stretch:=True;
end;
procedure TPicViewFrm.AHalfSizeExecute(Sender: TObject);
begin
RescaleImage(0.5);
end;
procedure TPicViewFrm.NextImage;
begin
ShiftImageIndex(1);
end;
procedure TPicViewFrm.PreviousImage;
begin
ShiftImageIndex(-1);
end;
procedure TPicViewFrm.ShiftImageIndex(MoveBy : Integer);
Var
ImageIndex : Integer;
begin
ImageIndex:=LBFiles.ItemIndex;
ImageIndex:=ImageIndex+MoveBy;
If ImageIndex<0 then
ImageIndex:=LBFiles.Items.Count-1;
If ImageIndex>=LBFiles.Items.Count then
begin
ImageIndex:=0;
If LBFiles.Items.Count=0 then
ImageIndex:=-1;
end;
ShowFile(ImageIndex);
end;
procedure TPicViewFrm.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (shift=[ssShift]) or (shift=[ssAlt]) then
begin
if (key=VK_Prior) then
begin
RescaleImage(2.0);
Key:=0;
end
else if (key=VK_Next) then
begin
RescaleImage(0.5);
Key:=0;
end
else if (key=VK_Left) then
begin
PreviousImage;
Key:=0;
end
else if (key=VK_right) then
begin
NextImage;
Key:=0;
end
end
else if (shift=[]) then
begin
if Key=VK_UP then
Previousimage
else if Key=VK_DOWN then
NextImage;
end;
end;
procedure TPicViewFrm.DoError(Msg : String; Args : Array Of const);
begin
ShowMessage(Format(Msg,Args));
end;
procedure TPicViewFrm.ProcessCommandLine;
Function CheckOption(Index : Integer;Short,Long : String): Boolean;
var
O : String;
begin
O:=ParamStrUTF8(Index);
Result:=(O='-'+short) or (copy(O,1,Length(Long)+3)=('--'+long+'='));
end;
Function OptionArg(Var Index : Integer) : String;
Var
P : Integer;
begin
if (Length(ParamStrUTF8(Index))>1) and (ParamStrUTF8(Index)[2]<>'-') then
begin
If Index<ParamCount then
begin
Inc(Index);
Result:=ParamStrUTF8(Index);
end
else
DoError(SErrNeedArgument,[Index,ParamStrUTF8(Index)]);
end
else If length(ParamStrUTF8(Index))>2 then
begin
P:=Pos('=',ParamStrUTF8(Index));
If (P=0) then
DoError(SErrNeedArgument,[Index,ParamStrUTF8(Index)])
else
begin
Result:=ParamStrUTF8(Index);
Delete(Result,1,P);
end;
end;
end;
Var
I : Integer;
S : String;
FRecursive : Boolean;
begin
FRecursive:=False;
I:=0;
While (I<ParamCount) do
begin
Inc(I);
If CheckOption(I,'r','recursive') then
FRecursive:=True
else
begin
S:=ParamStrUTF8(I);
If DirectoryExistsUTF8(S) then
AddDir(ExpandFileNameUTF8(S),FRecursive)
else if FileExistsUTF8(S) then
AddFile(ExpandFileNameUTF8(S),LBFiles.Items.Count=0);
end;
end;
end;
procedure TPicViewFrm.FormShow(Sender: TObject);
begin
ProcessCommandLine;
end;
procedure TPicViewFrm.NextImageDir;
Var
Index : Integer;
begin
Index:=NextDirIndex(1);
If (Index<>-1) then
ShowFile(Index);
end;
Function TPicViewFrm.NextDirIndex(Direction: Integer) : integer;
Var
Dir : String;
begin
Result:=-1;
If LBFiles.Itemindex=-1 then
Exit;
Result:=LBFiles.Itemindex;
Dir:=ExtractFilePath(LBFiles.Items[Result]);
Repeat
Result:=Result+Direction;
Until ((Result=-1) or (Result>=LBFiles.Items.Count)) or (Dir<>ExtractFilePath(LBFiles.Items[Result]));
If Result>=LBFiles.Items.Count then
Result:=-1;
end;
procedure TPicViewFrm.PreviousImageDir;
Var
Index : Integer;
begin
Index:=NextDirIndex(-1);
If (Index<>-1) then
ShowFile(Index);
end;
procedure TPicViewFrm.ANextImageExecute(Sender: TObject);
begin
NextImage;
end;
procedure TPicViewFrm.APreviousImageExecute(Sender: TObject);
begin
PreviousImage
end;
procedure TPicViewFrm.ANextImageDirExecute(Sender: TObject);
begin
NextImageDir;
end;
procedure TPicViewFrm.APrevImageDirExecute(Sender: TObject);
begin
PreviousImageDir;
end;
initialization
{$i frmmain.lrs}
end.

File diff suppressed because it is too large Load Diff