Lazstats: Merge LatinSpecsUnit with LatinSqrsUnit. Inherit from BasicStatsReportFormUnit. Remove LatinSpecsUnit from project, delete files. Less hints and warnings.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@7922 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz 2020-12-04 23:58:20 +00:00
parent 77d3a8e70f
commit d2ffe083b1
9 changed files with 1436 additions and 1721 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,581 +0,0 @@
object LatinSpecsFrm: TLatinSpecsFrm
Left = 887
Height = 519
Top = 260
Width = 420
AutoSize = True
Caption = 'Latin Squares Analysis Specification Form'
ClientHeight = 519
ClientWidth = 420
OnActivate = FormActivate
OnCreate = FormCreate
OnShow = FormShow
Position = poMainFormCenter
LCLVersion = '2.1.0.0'
object Label1: TLabel
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = Owner
Left = 8
Height = 15
Top = 8
Width = 67
BorderSpacing.Left = 8
BorderSpacing.Top = 8
Caption = 'File Variables'
ParentColor = False
end
object Label8: TLabel
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = nPerCellEdit
AnchorSideTop.Side = asrCenter
Left = 8
Height = 15
Top = 491
Width = 99
BorderSpacing.Left = 8
Caption = 'No. Cases per cell: '
ParentColor = False
end
object VarList: TListBox
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = Label1
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = Panel7
AnchorSideBottom.Control = Bevel1
Left = 8
Height = 445
Top = 25
Width = 240
Anchors = [akTop, akLeft, akRight, akBottom]
BorderSpacing.Left = 8
BorderSpacing.Top = 2
BorderSpacing.Right = 8
Constraints.MinWidth = 150
ItemHeight = 0
OnSelectionChange = VarListSelectionChange
TabOrder = 0
end
object ResetBtn: TButton
AnchorSideRight.Control = CancelBtn
AnchorSideBottom.Control = Owner
AnchorSideBottom.Side = asrBottom
Left = 226
Height = 25
Top = 486
Width = 54
Anchors = [akRight, akBottom]
AutoSize = True
BorderSpacing.Left = 12
BorderSpacing.Top = 8
BorderSpacing.Right = 12
BorderSpacing.Bottom = 8
Caption = 'Reset'
OnClick = ResetBtnClick
TabOrder = 3
end
object CancelBtn: TButton
AnchorSideRight.Control = OKBtn
AnchorSideBottom.Control = Owner
AnchorSideBottom.Side = asrBottom
Left = 292
Height = 25
Top = 486
Width = 62
Anchors = [akRight, akBottom]
AutoSize = True
BorderSpacing.Left = 12
BorderSpacing.Top = 8
BorderSpacing.Right = 12
BorderSpacing.Bottom = 8
Caption = 'Cancel'
ModalResult = 2
TabOrder = 4
end
object OKBtn: TButton
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = Owner
AnchorSideBottom.Side = asrBottom
Left = 366
Height = 25
Top = 486
Width = 42
Anchors = [akRight, akBottom]
AutoSize = True
BorderSpacing.Left = 12
BorderSpacing.Top = 8
BorderSpacing.Right = 12
BorderSpacing.Bottom = 8
Caption = 'OK'
ModalResult = 1
OnClick = OKBtnClick
TabOrder = 5
end
object nPerCellEdit: TEdit
AnchorSideLeft.Control = Label8
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = OKBtn
AnchorSideTop.Side = asrCenter
AnchorSideRight.Side = asrBottom
Left = 115
Height = 23
Top = 487
Width = 48
Alignment = taRightJustify
BorderSpacing.Left = 8
BorderSpacing.Right = 12
TabOrder = 2
Text = 'nPerCellEdit'
end
object Bevel1: TBevel
AnchorSideLeft.Control = Owner
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = OKBtn
Left = 0
Height = 8
Top = 470
Width = 420
Anchors = [akLeft, akRight, akBottom]
Shape = bsBottomLine
end
object Panel7: TPanel
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = VarList
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = Bevel1
Left = 256
Height = 440
Top = 25
Width = 156
Anchors = [akTop, akRight]
AutoSize = True
BorderSpacing.Right = 8
BevelOuter = bvNone
ChildSizing.VerticalSpacing = 16
ChildSizing.EnlargeHorizontal = crsHomogenousChildResize
ChildSizing.ShrinkHorizontal = crsHomogenousChildResize
ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 1
ClientHeight = 440
ClientWidth = 156
TabOrder = 1
object PanelA: TPanel
AnchorSideRight.Side = asrBottom
Left = 0
Height = 60
Top = 0
Width = 156
AutoSize = True
BevelOuter = bvNone
ClientHeight = 60
ClientWidth = 156
TabOrder = 0
object ACodeLabel: TLabel
AnchorSideLeft.Control = ACodeEdit
AnchorSideBottom.Control = ACodeEdit
Left = 37
Height = 15
Top = 8
Width = 119
Anchors = [akLeft, akBottom]
BorderSpacing.Bottom = 2
Caption = 'Factor A Code Variable'
ParentColor = False
end
object AInBtn: TBitBtn
AnchorSideLeft.Control = PanelA
AnchorSideTop.Control = PanelA
Left = 0
Height = 28
Top = 0
Width = 29
Images = MainDataModule.ImageList
ImageIndex = 1
OnClick = AInBtnClick
Spacing = 0
TabOrder = 0
end
object AOutBtn: TBitBtn
AnchorSideLeft.Control = PanelA
AnchorSideTop.Control = AInBtn
AnchorSideTop.Side = asrBottom
Left = 0
Height = 28
Top = 32
Width = 29
BorderSpacing.Top = 4
Images = MainDataModule.ImageList
ImageIndex = 0
OnClick = AOutBtnClick
Spacing = 0
TabOrder = 1
end
object ACodeEdit: TEdit
AnchorSideLeft.Control = AInBtn
AnchorSideLeft.Side = asrBottom
AnchorSideRight.Control = PanelA
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = AOutBtn
AnchorSideBottom.Side = asrBottom
Left = 37
Height = 23
Top = 25
Width = 119
Anchors = [akLeft, akRight, akBottom]
BorderSpacing.Left = 8
BorderSpacing.Bottom = 12
NumbersOnly = True
TabOrder = 2
Text = 'ACodeEdit'
end
end
object PanelB: TPanel
Left = 0
Height = 60
Top = 76
Width = 156
AutoSize = True
BevelOuter = bvNone
ClientHeight = 60
ClientWidth = 156
TabOrder = 1
object BCodeLabel: TLabel
AnchorSideLeft.Control = BCodeEdit
AnchorSideTop.Side = asrBottom
AnchorSideBottom.Control = BCodeEdit
Left = 37
Height = 15
Top = 8
Width = 118
Anchors = [akLeft, akBottom]
BorderSpacing.Bottom = 2
Caption = 'Factor B Code Variable'
ParentColor = False
end
object BInBtn: TBitBtn
AnchorSideLeft.Control = PanelB
AnchorSideTop.Control = PanelB
Left = 0
Height = 28
Top = 0
Width = 29
Images = MainDataModule.ImageList
ImageIndex = 1
OnClick = BInBtnClick
Spacing = 0
TabOrder = 0
end
object BOutBtn: TBitBtn
AnchorSideLeft.Control = PanelB
AnchorSideTop.Control = BInBtn
AnchorSideTop.Side = asrBottom
Left = 0
Height = 28
Top = 32
Width = 29
BorderSpacing.Top = 4
Images = MainDataModule.ImageList
ImageIndex = 0
OnClick = BOutBtnClick
Spacing = 0
TabOrder = 1
end
object BCodeEdit: TEdit
AnchorSideLeft.Control = BInBtn
AnchorSideLeft.Side = asrBottom
AnchorSideRight.Control = PanelB
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = BOutBtn
AnchorSideBottom.Side = asrBottom
Left = 37
Height = 23
Top = 25
Width = 119
Anchors = [akLeft, akRight, akBottom]
BorderSpacing.Left = 8
BorderSpacing.Bottom = 12
NumbersOnly = True
TabOrder = 2
Text = 'BCodeEdit'
end
end
object PanelC: TPanel
Left = 0
Height = 60
Top = 152
Width = 156
AutoSize = True
BevelOuter = bvNone
ClientHeight = 60
ClientWidth = 156
TabOrder = 2
object CCodeLabel: TLabel
AnchorSideLeft.Control = CCodeEdit
AnchorSideBottom.Control = CCodeEdit
Left = 37
Height = 15
Top = 8
Width = 119
Anchors = [akLeft, akBottom]
BorderSpacing.Bottom = 2
Caption = 'Factor C Code Variable'
ParentColor = False
end
object CInBtn: TBitBtn
AnchorSideLeft.Control = PanelC
AnchorSideTop.Control = PanelC
Left = 0
Height = 28
Top = 0
Width = 29
Images = MainDataModule.ImageList
ImageIndex = 1
OnClick = CInBtnClick
Spacing = 0
TabOrder = 0
end
object COutBtn: TBitBtn
AnchorSideLeft.Control = PanelC
AnchorSideTop.Control = CInBtn
AnchorSideTop.Side = asrBottom
Left = 0
Height = 28
Top = 32
Width = 29
BorderSpacing.Top = 4
Images = MainDataModule.ImageList
ImageIndex = 0
OnClick = COutBtnClick
Spacing = 0
TabOrder = 1
end
object CCodeEdit: TEdit
AnchorSideLeft.Control = CInBtn
AnchorSideLeft.Side = asrBottom
AnchorSideRight.Control = PanelC
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = COutBtn
AnchorSideBottom.Side = asrBottom
Left = 37
Height = 23
Top = 25
Width = 119
Anchors = [akLeft, akRight, akBottom]
BorderSpacing.Left = 8
BorderSpacing.Bottom = 12
NumbersOnly = True
TabOrder = 2
Text = 'CCodeEdit'
end
end
object PanelD: TPanel
Left = 0
Height = 60
Top = 228
Width = 156
AutoSize = True
BevelOuter = bvNone
ClientHeight = 60
ClientWidth = 156
TabOrder = 3
object DCodeLabel: TLabel
AnchorSideLeft.Control = DCodeEdit
AnchorSideBottom.Control = DCodeEdit
Left = 37
Height = 15
Top = 8
Width = 119
Anchors = [akLeft, akBottom]
BorderSpacing.Bottom = 2
Caption = 'Factor D Code Variable'
ParentColor = False
end
object DInBtn: TBitBtn
AnchorSideLeft.Control = PanelD
AnchorSideTop.Control = PanelD
Left = 0
Height = 28
Top = 0
Width = 29
Images = MainDataModule.ImageList
ImageIndex = 1
OnClick = DInBtnClick
Spacing = 0
TabOrder = 0
end
object DOutBtn: TBitBtn
AnchorSideLeft.Control = PanelD
AnchorSideTop.Control = DInBtn
AnchorSideTop.Side = asrBottom
Left = 0
Height = 28
Top = 32
Width = 29
BorderSpacing.Top = 4
Images = MainDataModule.ImageList
ImageIndex = 0
OnClick = DOutBtnClick
Spacing = 0
TabOrder = 1
end
object DCodeEdit: TEdit
AnchorSideLeft.Control = DInBtn
AnchorSideLeft.Side = asrBottom
AnchorSideRight.Control = PanelD
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = DOutBtn
AnchorSideBottom.Side = asrBottom
Left = 37
Height = 23
Top = 25
Width = 119
Anchors = [akLeft, akRight, akBottom]
BorderSpacing.Left = 8
BorderSpacing.Bottom = 12
NumbersOnly = True
TabOrder = 2
Text = 'DCodeEdit'
end
end
object PanelGrp: TPanel
Left = 0
Height = 60
Top = 304
Width = 156
AutoSize = True
BevelOuter = bvNone
ClientHeight = 60
ClientWidth = 156
TabOrder = 4
object GrpCodeLabel: TLabel
AnchorSideLeft.Control = GrpCodeEdit
AnchorSideBottom.Control = GrpCodeEdit
Left = 37
Height = 15
Top = 8
Width = 108
Anchors = [akLeft, akBottom]
BorderSpacing.Bottom = 2
Caption = 'Group Code Variable'
ParentColor = False
end
object GrpInBtn: TBitBtn
AnchorSideLeft.Control = PanelGrp
AnchorSideTop.Control = PanelGrp
Left = 0
Height = 28
Top = 0
Width = 29
Images = MainDataModule.ImageList
ImageIndex = 1
OnClick = GrpInBtnClick
Spacing = 0
TabOrder = 0
end
object GrpOutBtn: TBitBtn
AnchorSideLeft.Control = PanelGrp
AnchorSideTop.Control = GrpInBtn
AnchorSideTop.Side = asrBottom
Left = 0
Height = 28
Top = 32
Width = 29
BorderSpacing.Top = 4
Images = MainDataModule.ImageList
ImageIndex = 0
OnClick = GrpOutBtnClick
Spacing = 0
TabOrder = 1
end
object GrpCodeEdit: TEdit
AnchorSideLeft.Control = GrpInBtn
AnchorSideLeft.Side = asrBottom
AnchorSideRight.Control = PanelGrp
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = GrpOutBtn
AnchorSideBottom.Side = asrBottom
Left = 37
Height = 23
Top = 25
Width = 119
Anchors = [akLeft, akRight, akBottom]
BorderSpacing.Left = 8
BorderSpacing.Bottom = 12
NumbersOnly = True
TabOrder = 2
Text = 'GrpCodeEdit'
end
end
object PanelDep: TPanel
Left = 0
Height = 60
Top = 380
Width = 156
AutoSize = True
BevelOuter = bvNone
ClientHeight = 60
ClientWidth = 156
TabOrder = 5
object DepVarLabel: TLabel
AnchorSideLeft.Control = DepVarEdit
AnchorSideBottom.Control = DepVarEdit
Left = 37
Height = 15
Top = 8
Width = 102
Anchors = [akLeft, akBottom]
BorderSpacing.Bottom = 2
Caption = 'Dependent Variable'
ParentColor = False
end
object DataInBtn: TBitBtn
AnchorSideLeft.Control = PanelDep
AnchorSideTop.Control = PanelDep
Left = 0
Height = 28
Top = 0
Width = 29
Images = MainDataModule.ImageList
ImageIndex = 1
OnClick = DataInBtnClick
Spacing = 0
TabOrder = 0
end
object DataOutBtn: TBitBtn
AnchorSideLeft.Control = PanelDep
AnchorSideTop.Control = DataInBtn
AnchorSideTop.Side = asrBottom
Left = 0
Height = 28
Top = 32
Width = 29
BorderSpacing.Top = 4
Images = MainDataModule.ImageList
ImageIndex = 0
OnClick = DataOutBtnClick
Spacing = 0
TabOrder = 1
end
object DepVarEdit: TEdit
AnchorSideLeft.Control = DataInBtn
AnchorSideLeft.Side = asrBottom
AnchorSideRight.Control = PanelDep
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = DataOutBtn
AnchorSideBottom.Side = asrBottom
Left = 37
Height = 23
Top = 25
Width = 119
Anchors = [akLeft, akRight, akBottom]
BorderSpacing.Left = 8
BorderSpacing.Bottom = 12
NumbersOnly = True
TabOrder = 2
Text = 'DepVarEdit'
end
end
end
end

View File

@ -1,415 +0,0 @@
unit LatinSpecsUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, ExtCtrls, Buttons,
MainUnit, Globals;
type
{ TLatinSpecsFrm }
TLatinSpecsFrm = class(TForm)
AInBtn: TBitBtn;
nPerCellEdit: TEdit;
GrpOutBtn: TBitBtn;
DataInBtn: TBitBtn;
DataOutBtn: TBitBtn;
AOutBtn: TBitBtn;
BInBtn: TBitBtn;
BOutBtn: TBitBtn;
CInBtn: TBitBtn;
COutBtn: TBitBtn;
DInBtn: TBitBtn;
DOutBtn: TBitBtn;
GrpInBtn: TBitBtn;
Label8: TLabel;
PanelA: TPanel;
PanelB: TPanel;
PanelC: TPanel;
PanelD: TPanel;
PanelGrp: TPanel;
PanelDep: TPanel;
Panel7: TPanel;
ResetBtn: TButton;
CancelBtn: TButton;
OKBtn: TButton;
ACodeEdit: TEdit;
BCodeEdit: TEdit;
CCodeEdit: TEdit;
DCodeEdit: TEdit;
GrpCodeEdit: TEdit;
DepVarEdit: TEdit;
Label1: TLabel;
ACodeLabel: TLabel;
BCodeLabel: TLabel;
CCodeLabel: TLabel;
DCodeLabel: TLabel;
GrpCodeLabel: TLabel;
DepVarLabel: TLabel;
VarList: TListBox;
Bevel1: TBevel;
procedure AInBtnClick(Sender: TObject);
procedure AOutBtnClick(Sender: TObject);
procedure BInBtnClick(Sender: TObject);
procedure BOutBtnClick(Sender: TObject);
procedure CInBtnClick(Sender: TObject);
procedure COutBtnClick(Sender: TObject);
procedure DataInBtnClick(Sender: TObject);
procedure DataOutBtnClick(Sender: TObject);
procedure DInBtnClick(Sender: TObject);
procedure DOutBtnClick(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure GrpInBtnClick(Sender: TObject);
procedure GrpOutBtnClick(Sender: TObject);
procedure OKBtnClick(Sender: TObject);
procedure ResetBtnClick(Sender: TObject);
procedure VarListSelectionChange(Sender: TObject; {%H-}User: boolean);
private
{ private declarations }
FAutoSized: Boolean;
procedure UpdateBtnStates;
function Validate(out AMsg: String; out AControl: TWinControl): Boolean;
public
{ public declarations }
procedure PrepareForPlan(APlan: integer);
end;
var
LatinSpecsFrm: TLatinSpecsFrm;
implementation
uses
Math,
Utils, LatinSqrsUnit;
{ TLatinSpecsFrm }
procedure TLatinSpecsFrm.PrepareForPlan(APlan: Integer);
begin
ResetBtnClick(nil);
case APlan of
1: begin
PanelD.Visible := false;
PanelGrp.Visible := false;
end;
2: begin
PanelD.Visible := true;
PanelGrp.Visible := false;
end;
3: begin
PanelD.Visible := true;
PanelGrp.Visible := false;
end;
4: begin
PanelD.Visible := true;
PanelGrp.Visible := false;
end;
5: begin
PanelD.Visible := false;
PanelGrp.Visible := true;
end;
6: begin
PanelD.Visible := false;
PanelGrp.Visible := true;
end;
7: begin
PanelD.Visible := true;
PanelGrp.Visible := true;
end;
9: begin
PanelD.Visible := true;
PanelGrp.Visible := true;
end;
end;
end;
procedure TLatinSpecsFrm.ResetBtnClick(Sender: TObject);
var
i: integer;
begin
VarList.Clear;
for i := 1 to NoVariables do
VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]);
ACodeEdit.Text := '';
BCodeEdit.Text := '';
CCodeEdit.Text := '';
DCodeEdit.Text := '';
GrpCodeEdit.Text := '';
DepVarEdit.Text := '';
nPerCellEdit.Text := '';
UpdatebtnStates;
end;
procedure TLatinSpecsFrm.FormActivate(Sender: TObject);
var
w: Integer;
begin
if FAutoSized then
exit;
w := MaxValue([ResetBtn.Width, CancelBtn.Width, OKBtn.Width]);
ResetBtn.Constraints.MinWidth := w;
CancelBtn.Constraints.MinWidth := w;
OKBtn.Constraints.MinWidth := w;
VarList.Constraints.MinHeight := Panel7.Height;
Constraints.MinWidth := nPerCellEdit.Left + nPerCellEdit.Width + Width - ResetBtn.Left + ResetBtn.BorderSpacing.Left;
Constraints.MinHeight := Height;
FAutoSized := true;
end;
procedure TLatinSpecsFrm.FormCreate(Sender: TObject);
begin
Assert(OS3MainFrm <> nil);
end;
procedure TLatinSpecsFrm.FormShow(Sender: TObject);
begin
ResetBtnClick(Self);
end;
procedure TLatinSpecsFrm.AInBtnClick(Sender: TObject);
var
index: integer;
begin
index := VarList.ItemIndex;
if (index > -1) and (ACodeEdit.Text = '') then
begin
ACodeEdit.Text := VarList.Items[index];
VarList.Items.Delete(index);
UpdateBtnStates;
end;
end;
procedure TLatinSpecsFrm.AOutBtnClick(Sender: TObject);
begin
if ACodeEdit.Text <> '' then
begin
VarList.Items.Add(ACodeEdit.Text);
ACodeEdit.Text := '';
UpdateBtnStates;
end;
end;
procedure TLatinSpecsFrm.BInBtnClick(Sender: TObject);
var
index: integer;
begin
index := VarList.ItemIndex;
if (index > -1) and (BCodeEdit.Text = '') then
begin
BCodeEdit.Text := VarList.Items[index];
VarList.Items.Delete(index);
UpdateBtnStates;
end;
end;
procedure TLatinSpecsFrm.BOutBtnClick(Sender: TObject);
begin
if BCodeEdit.Text <> '' then
begin
VarList.Items.Add(BCodeEdit.Text);
BCodeEdit.Text := '';
UpdateBtnStates;
end;
end;
procedure TLatinSpecsFrm.CInBtnClick(Sender: TObject);
var
index: integer;
begin
index := VarList.ItemIndex;
if (index > -1) and (CCodeEdit.Text = '') then
begin
CCodeEdit.Text := VarList.Items[index];
VarList.Items.Delete(index);
UpdateBtnStates;
end;
end;
procedure TLatinSpecsFrm.COutBtnClick(Sender: TObject);
begin
if CCodeEdit.Text <> '' then
begin
VarList.Items.Add(CCodeEdit.Text);
CCodeEdit.Text := '';
UpdateBtnStates;
end;
end;
procedure TLatinSpecsFrm.DataInBtnClick(Sender: TObject);
var
index: integer;
begin
index := VarList.ItemIndex;
if (index > -1) and (DepVarEdit.Text = '') then
begin
DepVarEdit.Text := VarList.Items[index];
VarList.Items.Delete(index);
UpdateBtnStates;
end;
end;
procedure TLatinSpecsFrm.DataOutBtnClick(Sender: TObject);
begin
if DepVarEdit.Text <> '' then
begin
VarList.Items.Add(DepVarEdit.Text);
DepVarEdit.Text := '';
UpdateBtnStates;
end;
end;
procedure TLatinSpecsFrm.DInBtnClick(Sender: TObject);
var
index: integer;
begin
index := VarList.ItemIndex;
if (index > -1) and (DCodeEdit.Text = '') then
begin
DCodeEdit.Text := VarList.Items[index];
VarList.Items.Delete(index);
UpdateBtnStates;
end;
end;
procedure TLatinSpecsFrm.DOutBtnClick(Sender: TObject);
begin
if DCodeEdit.Text <> '' then
begin
VarList.Items.Add(DCodeEdit.Text);
DCodeEdit.Text := '';
UpdateBtnStates;
end;
end;
procedure TLatinSpecsFrm.GrpInBtnClick(Sender: TObject);
var
index: integer;
begin
index := VarList.ItemIndex;
if (index > -1) and (GrpCodeEdit.Text = '') then
begin
GrpCodeEdit.Text := VarList.Items[index];
VarList.Items.Delete(index);
UpdateBtnStates;
end;
end;
procedure TLatinSpecsFrm.GrpOutBtnClick(Sender: TObject);
begin
if GrpCodeEdit.Text <> '' then
begin
VarList.Items.Add(GrpCodeEdit.Text);
GrpCodeEdit.Text := '';
UpdateBtnStates;
end;
end;
procedure TLatinSpecsFrm.OKBtnClick(Sender: TObject);
var
C: TWinControl;
msg: String;
begin
if not Validate(msg, C) then begin
C.SetFocus;
ErrorMsg(msg);
ModalResult := mrNone;
end;
end;
procedure TLatinSpecsFrm.UpdateBtnStates;
begin
AInBtn.Enabled := (VarList.ItemIndex > -1) and (ACodeEdit.Text = '');
BInBtn.Enabled := (VarList.ItemIndex > -1) and (BCodeEdit.Text = '');
CInBtn.Enabled := (VarList.ItemIndex > -1) and (CCodeEdit.Text = '');
DInBtn.Enabled := (VarList.ItemIndex > -1) and (DCodeEdit.Text = '');
GrpInBtn.Enabled := (VarList.ItemIndex > -1) and (GrpCodeEdit.Text = '');
DataInBtn.Enabled := (VarList.ItemIndex > -1) and (DepVarEdit.Text = '');
AOutBtn.Enabled := (ACodeEdit.Text <> '');
BOutBtn.Enabled := (BCodeEdit.Text <> '');
COutBtn.Enabled := (CCodeEdit.Text <> '');
DOutBtn.Enabled := (DCodeEdit.Text <> '');
GrpOutBtn.Enabled := (GrpCodeEdit.Text <> '');
DataOutBtn.Enabled := (DepVarEdit.Text <> '');
end;
function TLatinSpecsFrm.Validate(out AMsg: String; out AControl: TWinControl): Boolean;
var
n: Integer;
begin
Result := false;
if (nPerCellEdit.Text = '') then begin
AMsg := 'Please specify the number of cases per cell.';
AControl := nPercellEdit;
exit;
end;
if not TryStrToInt(nPerCellEdit.Text, n) or (n <= 0) then begin
AMsg := 'Please specify a valid (positive) number for the cases per cell.';
AControl := nPercellEdit;
exit;
end;
if PanelA.Visible and (ACodeEdit.Text = '') then
begin
AMsg := 'Factor A code variable is not specified.';
AControl := ACodeEdit;
exit;
end;
if PanelB.Visible and (BCodeEdit.Text = '') then
begin
AMsg := 'Factor B code variable is not specified.';
Acontrol := BCodeEdit;
exit;
end;
if PanelC.Visible and (CCodeEdit.Text = '') then
begin
AMsg := 'Factor C code variable is not specified.';
Acontrol := CCodeEdit;
exit;
end;
if PanelD.Visible and (DCodeEdit.Text = '') then
begin
AMsg := 'Factor D code variable is not specified.';
Acontrol := DCodeEdit;
exit;
end;
if PanelGrp.Visible and (GrpCodeEdit.Text = '') then
begin
AMsg := 'Group code variable is not specified.';
Acontrol := GrpCodeEdit;
exit;
end;
if PanelDep.Visible and (DepVarEdit.Text = '') then
begin
AMsg := 'Dependent variable is not specified.';
Acontrol := DepVarEdit;
exit;
end;
Result := true;
end;
procedure TLatinSpecsFrm.VarListSelectionChange(Sender: TObject; User: boolean);
begin
UpdateBtnStates;
end;
initialization
{$I latinspecsunit.lrs}
end.

View File

@ -1,109 +1,538 @@
object LatinSqrsFrm: TLatinSqrsFrm inherited LatinSqrsForm: TLatinSqrsForm
Left = 199 Left = 225
Height = 248 Height = 573
Top = 108 Top = 168
Width = 523 Width = 914
HelpType = htKeyword HelpType = htKeyword
HelpKeyword = 'html/LatinandGreco-LatinSquares.htm' HelpKeyword = 'html/LatinandGreco-LatinSquares.htm'
ActiveControl = Plan
AutoSize = True
BorderStyle = bsDialog
Caption = 'Latin and Greco-Latin Squares Analyses' Caption = 'Latin and Greco-Latin Squares Analyses'
ClientHeight = 248 ClientHeight = 573
ClientWidth = 523 ClientWidth = 914
OnActivate = FormActivate inherited ParamsPanel: TPanel
OnCreate = FormCreate Height = 557
Position = poMainFormCenter Width = 355
LCLVersion = '2.1.0.0' ClientHeight = 557
object ComputeBtn: TButton ClientWidth = 355
AnchorSideLeft.Side = asrCenter inherited CloseBtn: TButton
AnchorSideTop.Control = Plan Left = 300
AnchorSideTop.Side = asrBottom Top = 532
AnchorSideRight.Control = CloseBtn
Left = 372
Height = 25
Top = 214
Width = 76
Anchors = [akTop, akRight]
AutoSize = True
BorderSpacing.Top = 8
BorderSpacing.Right = 12
BorderSpacing.Bottom = 8
Caption = 'Compute'
OnClick = ComputeBtnClick
TabOrder = 2
end end
object CloseBtn: TButton inherited ComputeBtn: TButton
AnchorSideTop.Control = Plan Left = 216
AnchorSideTop.Side = asrBottom Top = 532
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
Left = 460
Height = 25
Top = 214
Width = 55
Anchors = [akTop, akRight]
AutoSize = True
BorderSpacing.Top = 8
BorderSpacing.Right = 8
BorderSpacing.Bottom = 8
Caption = 'Close'
ModalResult = 11
TabOrder = 3
end end
object Plan: TRadioGroup inherited ResetBtn: TButton
AnchorSideLeft.Control = Owner Left = 154
AnchorSideTop.Control = Owner Top = 532
Left = 8 end
Height = 198 inherited HelpBtn: TButton
Top = 8 Tag = 130
Width = 515 Left = 95
AutoFill = True Top = 532
AutoSize = True end
BorderSpacing.Left = 8 inherited ButtonBevel: TBevel
BorderSpacing.Top = 8 Top = 516
BorderSpacing.Right = 8 Width = 355
end
object PlanLabel: TLabel[5]
AnchorSideLeft.Control = ParamsPanel
AnchorSideTop.Control = ParamsPanel
Left = 0
Height = 15
Top = 0
Width = 73
Caption = 'Winer''s Plans:' Caption = 'Winer''s Plans:'
ChildSizing.LeftRightSpacing = 12 ParentColor = False
ChildSizing.TopBottomSpacing = 6 end
ChildSizing.VerticalSpacing = 2 object PlanCombo: TComboBox[6]
ChildSizing.EnlargeHorizontal = crsHomogenousChildResize AnchorSideLeft.Control = ParamsPanel
ChildSizing.EnlargeVertical = crsHomogenousChildResize AnchorSideTop.Control = PlanLabel
ChildSizing.ShrinkHorizontal = crsScaleChilds AnchorSideTop.Side = asrBottom
ChildSizing.ShrinkVertical = crsScaleChilds AnchorSideRight.Control = ParamsPanel
ChildSizing.Layout = cclLeftToRightThenTopToBottom AnchorSideRight.Side = asrBottom
ChildSizing.ControlsPerLine = 1 Left = 0
ClientHeight = 178 Height = 23
ClientWidth = 511 Top = 17
Width = 355
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Top = 2
BorderSpacing.Bottom = 8
DropDownCount = 16
ItemHeight = 15
Items.Strings = ( Items.Strings = (
'Plan 1. Three Factors (A,B,C) with no interactions.' 'Plan 1. Three Factors (A,B,C) with no interactions.'
'Plan 2. Four Factors (A,B,C,D) with partial interactions.' 'Plan 2. Four Factors (A,B,C,D) with partial interactions.'
'Plan 3. Like Plan 2 but different assumptions (Partial confounding of interaction ABC.)' 'Plan 3. Like Plan 2 but different assumptions (Partial confounding of interaction ABC.)'
'The Greco-Latin with no interactions assumed.' 'Plan 4. The Greco-Latin with no interactions assumed.'
'Plan 5. Repeated measures Latin Square (random assignment of groups to rows.)' 'Plan 5. Repeated measures Latin Square (random assignment of groups to rows.)'
'Plan 6. Fractional replication of a three factor factorial experiment in incomplete blocks.' 'Plan 6. Fractional replication of a three factor factorial experiment in incomplete blocks.'
'Plan 7. Plan 5 with superimposing of an orthogonal Latin square.' 'Plan 7. Plan 5 with superimposing of an orthogonal Latin square.'
'Plan 9. AxBxC (same square used for all levels of Factor C.)' 'Plan 9. AxBxC (same square used for all levels of Factor C.)'
) )
OnChange = PlanComboChange
Style = csDropDownList
TabOrder = 4
end
object PlanPanel: TPanel[7]
AnchorSideLeft.Control = ParamsPanel
AnchorSideTop.Control = PlanCombo
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = ParamsPanel
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = ButtonBevel
Left = 0
Height = 468
Top = 48
Width = 355
Anchors = [akTop, akLeft, akRight, akBottom]
BevelOuter = bvNone
ClientHeight = 468
ClientWidth = 355
TabOrder = 5
Visible = False
object Label1: TLabel
AnchorSideLeft.Control = PlanPanel
AnchorSideTop.Control = PlanPanel
Left = 0
Height = 15
Top = 0
Width = 67
Caption = 'File Variables'
ParentColor = False
end
object VarList: TListBox
AnchorSideLeft.Control = ParamsPanel
AnchorSideTop.Control = Label1
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = AInBtn
AnchorSideBottom.Control = nPerCellEdit
Left = 0
Height = 416
Top = 17
Width = 158
Anchors = [akTop, akLeft, akRight, akBottom]
BorderSpacing.Top = 2
BorderSpacing.Right = 6
BorderSpacing.Bottom = 12
ItemHeight = 0
OnDblClick = VarListDblClick
OnSelectionChange = VarListSelectionChange
TabOrder = 0 TabOrder = 0
end end
object HelpBtn: TButton object AInBtn: TBitBtn
Tag = 130 AnchorSideLeft.Control = PlanPanel
AnchorSideTop.Control = Plan AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = VarList
Left = 164
Height = 26
Top = 17
Width = 26
Images = MainDataModule.ImageList
ImageIndex = 1
OnClick = AInBtnClick
Spacing = 0
TabOrder = 1
end
object AOutBtn: TBitBtn
AnchorSideLeft.Control = PlanPanel
AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = AInBtn
AnchorSideTop.Side = asrBottom AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = ComputeBtn Left = 164
Left = 313 Height = 26
Height = 25 Top = 47
Top = 214 Width = 26
Width = 51 BorderSpacing.Top = 4
Anchors = [akTop, akRight] Images = MainDataModule.ImageList
AutoSize = True ImageIndex = 0
OnClick = AOutBtnClick
Spacing = 0
TabOrder = 2
end
object ACodeLabel: TLabel
AnchorSideLeft.Control = ACodeEdit
AnchorSideBottom.Control = ACodeEdit
Left = 198
Height = 15
Top = 21
Width = 119
Anchors = [akLeft, akBottom]
BorderSpacing.Bottom = 2
Caption = 'Factor A Code Variable'
ParentColor = False
end
object ACodeEdit: TEdit
AnchorSideLeft.Control = AInBtn
AnchorSideLeft.Side = asrBottom
AnchorSideRight.Control = PlanPanel
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = AOutBtn
AnchorSideBottom.Side = asrBottom
Left = 198
Height = 23
Top = 38
Width = 157
Anchors = [akLeft, akRight, akBottom]
BorderSpacing.Left = 8 BorderSpacing.Left = 8
BorderSpacing.Top = 8 BorderSpacing.Bottom = 12
BorderSpacing.Right = 8 NumbersOnly = True
BorderSpacing.Bottom = 8 TabOrder = 3
Caption = 'Help' Text = 'ACodeEdit'
OnClick = HelpBtnClick end
object BInBtn: TBitBtn
AnchorSideLeft.Control = PlanPanel
AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = AOutBtn
AnchorSideTop.Side = asrBottom
Left = 164
Height = 26
Top = 89
Width = 26
BorderSpacing.Top = 16
Images = MainDataModule.ImageList
ImageIndex = 1
OnClick = BInBtnClick
Spacing = 0
TabOrder = 4
end
object BOutBtn: TBitBtn
AnchorSideLeft.Control = PlanPanel
AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = BInBtn
AnchorSideTop.Side = asrBottom
Left = 164
Height = 26
Top = 119
Width = 26
BorderSpacing.Top = 4
Images = MainDataModule.ImageList
ImageIndex = 0
OnClick = BOutBtnClick
Spacing = 0
TabOrder = 5
end
object BCodeLabel: TLabel
AnchorSideLeft.Control = BCodeEdit
AnchorSideTop.Side = asrBottom
AnchorSideBottom.Control = BCodeEdit
Left = 198
Height = 15
Top = 93
Width = 118
Anchors = [akLeft, akBottom]
BorderSpacing.Bottom = 2
Caption = 'Factor B Code Variable'
ParentColor = False
end
object BCodeEdit: TEdit
AnchorSideLeft.Control = BInBtn
AnchorSideLeft.Side = asrBottom
AnchorSideRight.Control = PlanPanel
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = BOutBtn
AnchorSideBottom.Side = asrBottom
Left = 198
Height = 23
Top = 110
Width = 157
Anchors = [akLeft, akRight, akBottom]
BorderSpacing.Left = 8
BorderSpacing.Bottom = 12
NumbersOnly = True
TabOrder = 6
Text = 'BCodeEdit'
end
object CCodeLabel: TLabel
AnchorSideLeft.Control = CCodeEdit
AnchorSideBottom.Control = CCodeEdit
Left = 198
Height = 15
Top = 165
Width = 119
Anchors = [akLeft, akBottom]
BorderSpacing.Bottom = 2
Caption = 'Factor C Code Variable'
ParentColor = False
end
object CCodeEdit: TEdit
AnchorSideLeft.Control = CInBtn
AnchorSideLeft.Side = asrBottom
AnchorSideRight.Control = PlanPanel
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = COutBtn
AnchorSideBottom.Side = asrBottom
Left = 198
Height = 23
Top = 182
Width = 157
Anchors = [akLeft, akRight, akBottom]
BorderSpacing.Left = 8
BorderSpacing.Bottom = 12
NumbersOnly = True
TabOrder = 7
Text = 'CCodeEdit'
end
object CInBtn: TBitBtn
AnchorSideLeft.Control = PlanPanel
AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = BOutBtn
AnchorSideTop.Side = asrBottom
Left = 164
Height = 26
Top = 161
Width = 26
BorderSpacing.Top = 16
Images = MainDataModule.ImageList
ImageIndex = 1
OnClick = CInBtnClick
Spacing = 0
TabOrder = 8
end
object COutBtn: TBitBtn
AnchorSideLeft.Control = PlanPanel
AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = CInBtn
AnchorSideTop.Side = asrBottom
Left = 164
Height = 26
Top = 191
Width = 26
BorderSpacing.Top = 4
Images = MainDataModule.ImageList
ImageIndex = 0
OnClick = COutBtnClick
Spacing = 0
TabOrder = 9
end
object DInBtn: TBitBtn
AnchorSideLeft.Control = PlanPanel
AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = COutBtn
AnchorSideTop.Side = asrBottom
Left = 164
Height = 26
Top = 233
Width = 26
BorderSpacing.Top = 16
Images = MainDataModule.ImageList
ImageIndex = 1
OnClick = DInBtnClick
Spacing = 0
TabOrder = 10
end
object DOutBtn: TBitBtn
AnchorSideLeft.Control = PlanPanel
AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = DInBtn
AnchorSideTop.Side = asrBottom
Left = 164
Height = 26
Top = 263
Width = 26
BorderSpacing.Top = 4
Images = MainDataModule.ImageList
ImageIndex = 0
OnClick = DOutBtnClick
Spacing = 0
TabOrder = 11
end
object DCodeLabel: TLabel
AnchorSideLeft.Control = DCodeEdit
AnchorSideBottom.Control = DCodeEdit
Left = 198
Height = 15
Top = 237
Width = 119
Anchors = [akLeft, akBottom]
BorderSpacing.Bottom = 2
Caption = 'Factor D Code Variable'
ParentColor = False
end
object DCodeEdit: TEdit
AnchorSideLeft.Control = DInBtn
AnchorSideLeft.Side = asrBottom
AnchorSideRight.Control = PlanPanel
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = DOutBtn
AnchorSideBottom.Side = asrBottom
Left = 198
Height = 23
Top = 254
Width = 157
Anchors = [akLeft, akRight, akBottom]
BorderSpacing.Left = 8
BorderSpacing.Bottom = 12
NumbersOnly = True
TabOrder = 12
Text = 'DCodeEdit'
end
object GrpInBtn: TBitBtn
AnchorSideLeft.Control = PlanPanel
AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = DOutBtn
AnchorSideTop.Side = asrBottom
Left = 164
Height = 26
Top = 305
Width = 26
BorderSpacing.Top = 16
Images = MainDataModule.ImageList
ImageIndex = 1
OnClick = GrpInBtnClick
Spacing = 0
TabOrder = 13
end
object GrpOutBtn: TBitBtn
AnchorSideLeft.Control = PlanPanel
AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = GrpInBtn
AnchorSideTop.Side = asrBottom
Left = 164
Height = 26
Top = 335
Width = 26
BorderSpacing.Top = 4
Images = MainDataModule.ImageList
ImageIndex = 0
OnClick = GrpOutBtnClick
Spacing = 0
TabOrder = 14
end
object GrpCodeLabel: TLabel
AnchorSideLeft.Control = GrpCodeEdit
AnchorSideBottom.Control = GrpCodeEdit
Left = 198
Height = 15
Top = 309
Width = 108
Anchors = [akLeft, akBottom]
BorderSpacing.Bottom = 2
Caption = 'Group Code Variable'
ParentColor = False
end
object GrpCodeEdit: TEdit
AnchorSideLeft.Control = GrpInBtn
AnchorSideLeft.Side = asrBottom
AnchorSideRight.Control = PlanPanel
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = GrpOutBtn
AnchorSideBottom.Side = asrBottom
Left = 198
Height = 23
Top = 326
Width = 157
Anchors = [akLeft, akRight, akBottom]
BorderSpacing.Left = 8
BorderSpacing.Bottom = 12
NumbersOnly = True
TabOrder = 15
Text = 'GrpCodeEdit'
end
object DataInBtn: TBitBtn
AnchorSideLeft.Control = PlanPanel
AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = GrpOutBtn
AnchorSideTop.Side = asrBottom
Left = 164
Height = 26
Top = 377
Width = 26
BorderSpacing.Top = 16
Images = MainDataModule.ImageList
ImageIndex = 1
OnClick = DataInBtnClick
Spacing = 0
TabOrder = 16
end
object DataOutBtn: TBitBtn
AnchorSideLeft.Control = PlanPanel
AnchorSideLeft.Side = asrCenter
AnchorSideTop.Control = DataInBtn
AnchorSideTop.Side = asrBottom
AnchorSideBottom.Side = asrBottom
Left = 164
Height = 26
Top = 407
Width = 26
BorderSpacing.Top = 4
Images = MainDataModule.ImageList
ImageIndex = 0
OnClick = DataOutBtnClick
Spacing = 0
TabOrder = 17
end
object DepVarLabel: TLabel
AnchorSideLeft.Control = DepVarEdit
AnchorSideBottom.Control = DepVarEdit
Left = 198
Height = 15
Top = 381
Width = 102
Anchors = [akLeft, akBottom]
BorderSpacing.Bottom = 2
Caption = 'Dependent Variable'
ParentColor = False
end
object DepVarEdit: TEdit
AnchorSideLeft.Control = DataInBtn
AnchorSideLeft.Side = asrBottom
AnchorSideRight.Control = PlanPanel
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = DataOutBtn
AnchorSideBottom.Side = asrBottom
Left = 198
Height = 23
Top = 398
Width = 157
Anchors = [akLeft, akRight, akBottom]
BorderSpacing.Left = 8
BorderSpacing.Bottom = 12
NumbersOnly = True
TabOrder = 18
Text = 'DepVarEdit'
end
object Label8: TLabel
AnchorSideLeft.Control = PlanPanel
AnchorSideTop.Control = nPerCellEdit
AnchorSideTop.Side = asrCenter
Left = 8
Height = 15
Top = 449
Width = 138
BorderSpacing.Left = 8
Caption = 'Number of Cases per cell: '
ParentColor = False
end
object nPerCellEdit: TEdit
AnchorSideLeft.Control = Label8
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Side = asrCenter
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = PlanPanel
AnchorSideBottom.Side = asrBottom
Left = 154
Height = 23
Top = 445
Width = 48
Alignment = taRightJustify
Anchors = [akLeft, akBottom]
BorderSpacing.Left = 8
BorderSpacing.Right = 12
TabOrder = 19
Text = 'nPerCellEdit'
end
end
end
inherited ParamsSplitter: TSplitter
Left = 367
Height = 573
end
inherited PageControl: TPageControl
Left = 376
Height = 557
Width = 530
ActivePage = ReportPage
TabIndex = 0
TabOrder = 1 TabOrder = 1
end end
end end

View File

@ -963,8 +963,12 @@ Label
const const
ZERO = 0.0; ZERO = 0.0;
var var
ISZ, MAX, LIM, I, J, NV1, M, M1, ITP, NP, NP1, L3, DF: integer; ISZ, MAX, LIM, I, J, NV1, M, M1, ITP, NP, NP1, L3: integer;
G21, G22, G23, AVG: double; DF: Integer = 0;
G21: Double = 0.0;
G22: Double = 0.0;
G23: Double = 0.0;
AVG: double;
begin begin
// //

View File

@ -239,7 +239,6 @@ var
NoSelected : integer; NoSelected : integer;
ColNoSelected : IntDyneVec = nil; ColNoSelected : IntDyneVec = nil;
finished : boolean; finished : boolean;
error : integer;
lReport: TStrings; lReport: TStrings;
begin begin
SetLength(ColNoSelected,NoVariables); SetLength(ColNoSelected,NoVariables);

View File

@ -1844,9 +1844,9 @@ end;
// Menu "Analysis" > "Comparisons" > "Latin and Greco-Latin Squares" // Menu "Analysis" > "Comparisons" > "Latin and Greco-Latin Squares"
procedure TOS3MainFrm.mnuAnalysisComp_LatinSquaresClick(Sender: TObject); procedure TOS3MainFrm.mnuAnalysisComp_LatinSquaresClick(Sender: TObject);
begin begin
if LatinSqrsFrm = nil then if LatinSqrsForm = nil then
Application.CreateForm(TLatinSqrsFrm, LatinSqrsFrm); Application.CreateForm(TLatinSqrsForm, LatinSqrsForm);
LatinSqrsFrm.ShowModal; LatinSqrsForm.Show;
end; end;
// Menu "Analysis" > "Comparisons" > "ABC Anova with B Nested in A" // Menu "Analysis" > "Comparisons" > "ABC Anova with B Nested in A"

View File

@ -120,10 +120,10 @@ label
var var
// vtimesw, v, ainverse : matrix; // vtimesw, v, ainverse : matrix;
// w : vector; // w : vector;
ainverse : array of array of double; ainverse : array of array of double = nil;
m, nm,l,k,j,its,i: integer; m, nm,l,k,j,its,i: integer;
z,y,x,scale,s,h,g,f,c,anorm: double; z,y,x,scale,s,h,g,f,c,anorm: double;
rv1: array of double; rv1: array of double = nil;
BEGIN BEGIN
setlength(rv1,n); setlength(rv1,n);
@ -930,7 +930,9 @@ procedure SVDinverse(VAR a : DblDyneMat; N : integer);
// a shorter version of the matinv routine that ignores v, w, and vtimes w // a shorter version of the matinv routine that ignores v, w, and vtimes w
// matrices in the singular value decompensation inverse procedure // matrices in the singular value decompensation inverse procedure
var var
v, w, vtimesw : DblDyneMat; v: DblDyneMat = nil;
w: DblDyneMat = nil;
vtimesw: DblDyneMat = nil;
begin begin
SetLength(v,N,N); SetLength(v,N,N);
SetLength(w,N,N); SetLength(w,N,N);
@ -1387,8 +1389,9 @@ end; // End ord function
procedure Rank(v1col : integer; VAR Values : DblDyneVec); procedure Rank(v1col : integer; VAR Values : DblDyneVec);
// calculates the ranks for values stored in the data grid in column v1col // calculates the ranks for values stored in the data grid in column v1col
var var
pcntiles, CatValues : DblDyneVec; pcntiles: DblDyneVec = nil;
freq : IntDyneVec; CatValues : DblDyneVec = nil;
freq : IntDyneVec = nil;
i, j, nocats : integer; i, j, nocats : integer;
Temp, cumfreq, upper, lower : double; Temp, cumfreq, upper, lower : double;
@ -1463,8 +1466,11 @@ procedure PRank(v1col: integer; var Values: DblDyneVec; AReport: TStrings);
// computes the percentile ranks of values stored in the data grid // computes the percentile ranks of values stored in the data grid
// at column v1col // at column v1col
var var
pcntiles, cumfm, CatValues: DblDyneVec; pcntiles: DblDyneVec = nil;
freq, cumf: IntDyneVec; cumfm: DblDyneVec = nil;
CatValues: DblDyneVec = nil;
freq: IntDyneVec = nil;
cumf: IntDyneVec = nil;
Temp: double; Temp: double;
i, j, nocats, ncases: integer; i, j, nocats, ncases: integer;
begin begin