Lazstats: Less hints and warnings.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@7917 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2020-12-02 23:51:03 +00:00
parent 013f93a05f
commit ed98904144
4 changed files with 81 additions and 76 deletions

View File

@ -1,41 +1,41 @@
inherited ABCLogLinearForm: TABCLogLinearForm inherited ABCLogLinearForm: TABCLogLinearForm
Left = 596 Left = 596
Height = 408 Height = 414
Top = 216 Top = 216
Width = 854 Width = 854
HelpType = htKeyword HelpType = htKeyword
HelpKeyword = 'html/html/AxBxCLogLinear.htm' HelpKeyword = 'html/html/AxBxCLogLinear.htm'
Caption = 'Log Linear Analysis for AxBxC Classification Table' Caption = 'Log Linear Analysis for AxBxC Classification Table'
ClientHeight = 408 ClientHeight = 414
ClientWidth = 854 ClientWidth = 854
inherited ParamsPanel: TPanel inherited ParamsPanel: TPanel
Height = 392 Height = 398
Width = 376 Width = 376
ClientHeight = 392 ClientHeight = 398
ClientWidth = 376 ClientWidth = 376
inherited CloseBtn: TButton inherited CloseBtn: TButton
Left = 321 Left = 321
Top = 367 Top = 373
TabOrder = 5 TabOrder = 5
end end
inherited ComputeBtn: TButton inherited ComputeBtn: TButton
Left = 237 Left = 237
Top = 367 Top = 373
TabOrder = 4 TabOrder = 4
end end
inherited ResetBtn: TButton inherited ResetBtn: TButton
Left = 175 Left = 175
Top = 367 Top = 373
TabOrder = 3 TabOrder = 3
end end
inherited HelpBtn: TButton inherited HelpBtn: TButton
Tag = 101 Tag = 101
Left = 116 Left = 116
Top = 367 Top = 373
TabOrder = 2 TabOrder = 2
end end
inherited ButtonBevel: TBevel inherited ButtonBevel: TBevel
Top = 351 Top = 357
Width = 376 Width = 376
end end
object FileFromGrp: TRadioGroup[5] object FileFromGrp: TRadioGroup[5]
@ -77,10 +77,10 @@ inherited ABCLogLinearForm: TABCLogLinearForm
AnchorSideRight.Side = asrBottom AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = ButtonBevel AnchorSideBottom.Control = ButtonBevel
Left = 0 Left = 0
Height = 284 Height = 290
Top = 67 Top = 67
Width = 376 Width = 376
PageIndex = 1 PageIndex = 0
Anchors = [akTop, akLeft, akRight, akBottom] Anchors = [akTop, akLeft, akRight, akBottom]
BorderSpacing.Top = 16 BorderSpacing.Top = 16
TabOrder = 1 TabOrder = 1
@ -140,7 +140,7 @@ inherited ABCLogLinearForm: TABCLogLinearForm
AnchorSideBottom.Control = Page1 AnchorSideBottom.Control = Page1
AnchorSideBottom.Side = asrBottom AnchorSideBottom.Side = asrBottom
Left = 0 Left = 0
Height = 292 Height = 290
Top = 0 Top = 0
Width = 166 Width = 166
Anchors = [akTop, akLeft, akRight, akBottom] Anchors = [akTop, akLeft, akRight, akBottom]
@ -460,6 +460,6 @@ inherited ABCLogLinearForm: TABCLogLinearForm
end end
inherited ParamsSplitter: TSplitter inherited ParamsSplitter: TSplitter
Left = 388 Left = 388
Height = 408 Height = 414
end end
end end

View File

@ -9,7 +9,7 @@ interface
uses uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, Classes, SysUtils, Forms, Controls, Graphics, Dialogs,
ExtCtrls, StdCtrls, Buttons, Grids, ExtCtrls, StdCtrls, Buttons, Grids,
MainUnit, Globals, DataProcs, BasicStatsReportFormUnit; MainUnit, Globals, BasicStatsReportFormUnit;
type type
@ -69,16 +69,14 @@ type
var Total: double; Model: integer; AReport: TStrings); var Total: double; Model: integer; AReport: TStrings);
procedure Iterate( procedure Iterate(
Nrows, Ncols, Nslices: integer; Nrows, Ncols, Nslices: integer;
const Data: DblDyneCube;
const RowMarg, ColMarg, SliceMarg: DblDyneVec; const RowMarg, ColMarg, SliceMarg: DblDyneVec;
var Total: double;
const Expected: DblDyneCube; const Expected: DblDyneCube;
const NewRowMarg, NewColMarg, NewSliceMarg: DblDyneVec; const NewRowMarg, NewColMarg, NewSliceMarg: DblDyneVec;
var NewTotal: double); var NewTotal: double);
procedure PrintTable(Nrows, Ncols, Nslices: integer; procedure PrintTable(Nrows, Ncols, Nslices: integer;
const Data: DblDyneCube; const RowMarg, ColMarg, SliceMarg: DblDyneVec; const Data: DblDyneCube; const RowMarg, ColMarg, SliceMarg: DblDyneVec;
Total: double; AReport: TStrings); AReport: TStrings);
procedure PrintLamdas(Nrows,Ncols,Nslices: integer; procedure PrintLamdas(Nrows,Ncols,Nslices: integer;
const CellLambdas: DblDyneQuad; mu: double; AReport: TStrings); const CellLambdas: DblDyneQuad; mu: double; AReport: TStrings);
procedure PrintMatrix(const X: DblDyneMat; procedure PrintMatrix(const X: DblDyneMat;
@ -358,7 +356,7 @@ begin
// print observed matrix // print observed matrix
astr := 'Observed Frequencies'; astr := 'Observed Frequencies';
lReport.Add(astr); lReport.Add(astr);
PrintTable(Nrows,Ncols,Nslices,Data,RowMarg,ColMarg,SliceMarg,Total, lReport); PrintTable(Nrows,Ncols,Nslices,Data,RowMarg,ColMarg,SliceMarg, lReport);
lReport.Add(''); lReport.Add('');
// Print sub-matrices // Print sub-matrices
@ -388,16 +386,23 @@ procedure TABCLogLinearForm.ModelEffect(
Model: integer; Model: integer;
AReport: TStrings); AReport: TStrings);
var var
i, j, k: integer; i, j, k: integer;
CellLambdas : DblDyneQuad; CellLambdas: DblDyneQuad = nil;
LogData, Expected : DblDyneCube; LogData: DblDyneCube = nil;
Title, astr : string; Expected: DblDyneCube = nil;
NewRowMarg,NewColMarg,NewSliceMarg : DblDyneVec; Title, astr : string;
LogRowMarg, LogColMarg, LogSliceMarg : DblDyneVec; NewRowMarg: DblDyneVec = nil;
NewTotal: double = 0.0; NewColMarg: DblDyneVec = nil;
ABLogs, ACLogs, BCLogs : DblDyneMat; NewSliceMarg: DblDyneVec = nil;
LogTotal, mu, Ysqr : double; LogRowMarg: DblDyneVec = nil;
DF : integer; LogColMarg: DblDyneVec = nil;
LogSliceMarg: DblDyneVec = nil;
NewTotal: double = 0.0;
ABLogs: DblDyneMat = nil;
ACLogs: DblDyneMat = nil;
BCLogs: DblDyneMat = nil;
LogTotal, mu, Ysqr: double;
DF: integer;
begin begin
// Get expected values for chosen model // Get expected values for chosen model
SetLength(Expected,Nrows+1, Ncols+1, Nslices+1); SetLength(Expected,Nrows+1, Ncols+1, Nslices+1);
@ -425,8 +430,8 @@ begin
if Model = 2 then // independence if Model = 2 then // independence
begin begin
Title := 'Model of Independence'; Title := 'Model of Independence';
Iterate(Nrows, Ncols, Nslices, Data, RowMarg, ColMarg, SliceMarg, Iterate(Nrows, Ncols, Nslices, RowMarg, ColMarg, SliceMarg,
Total, Expected, NewRowMarg, NewColMarg, NewSliceMarg, NewTotal); Expected, NewRowMarg, NewColMarg, NewSliceMarg, NewTotal);
end; end;
if Model = 3 then // no AB effect if Model = 3 then // no AB effect
@ -437,6 +442,7 @@ begin
for k := 1 to Nslices do for k := 1 to Nslices do
Expected[i,j,k] := AC[i,k] * BC[j,k] / SliceMarg[k]; Expected[i,j,k] := AC[i,k] * BC[j,k] / SliceMarg[k];
end; end;
if Model = 4 then // no AC effect if Model = 4 then // no AC effect
begin begin
Title := 'No AC Effect'; Title := 'No AC Effect';
@ -445,6 +451,7 @@ begin
for k := 1 to Nslices do for k := 1 to Nslices do
Expected[i,j,k] := AB[i,j] * BC[j,k] / ColMarg[j]; Expected[i,j,k] := AB[i,j] * BC[j,k] / ColMarg[j];
end; end;
if Model = 5 then // no BC effect if Model = 5 then // no BC effect
begin begin
Title := 'No BC Effect'; Title := 'No BC Effect';
@ -453,6 +460,7 @@ begin
for k := 1 to Nslices do for k := 1 to Nslices do
Expected[i,j,k] := AB[i,j] * AC[i,k] / RowMarg[i]; Expected[i,j,k] := AB[i,j] * AC[i,k] / RowMarg[i];
end; end;
if Model = 6 then // no C effect if Model = 6 then // no C effect
begin begin
Title := 'Model of No Slice (C) effect'; Title := 'Model of No Slice (C) effect';
@ -607,13 +615,12 @@ begin
astr := 'Expected Frequencies'; astr := 'Expected Frequencies';
AReport.Add(astr); AReport.Add(astr);
PrintTable(Nrows,Ncols,Nslices,Expected,NewRowMarg,NewColMarg, PrintTable(Nrows,Ncols,Nslices,Expected,NewRowMarg,NewColMarg, NewSliceMarg,AReport);
NewSliceMarg,NewTotal, AReport);
AReport.Add(''); AReport.Add('');
astr := 'Log Frequencies'; astr := 'Log Frequencies';
AReport.Add(astr); AReport.Add(astr);
PrintTable(Nrows,Ncols,Nslices,LogData,LogRowMarg,LogColMarg,LogSliceMarg,LogTotal, AReport); PrintTable(Nrows,Ncols,Nslices,LogData,LogRowMarg,LogColMarg,LogSliceMarg,AReport);
AReport.Add(''); AReport.Add('');
AReport.Add('======================================================================'); AReport.Add('======================================================================');
@ -660,20 +667,18 @@ end;
procedure TABCLogLinearForm.Iterate( procedure TABCLogLinearForm.Iterate(
Nrows, Ncols, Nslices: integer; Nrows, Ncols, Nslices: integer;
const Data: DblDyneCube; const RowMarg, ColMarg, SliceMarg: DblDyneVec; const RowMarg, ColMarg, SliceMarg: DblDyneVec;
var Total: double;
const Expected: DblDyneCube; const NewRowMarg, NewColMarg, NewSliceMarg: DblDyneVec; const Expected: DblDyneCube; const NewRowMarg, NewColMarg, NewSliceMarg: DblDyneVec;
var NewTotal: double); var NewTotal: double);
Label Step; Label Step;
var var
Aprevious : DblDyneCube; Aprevious: DblDyneCube = nil;
i, j, k : integer; i, j, k: integer;
delta : double; delta: double;
difference : double; difference: double;
begin begin
SetLength(Aprevious,Nrows+1,Ncols+1,Nslices+1); SetLength(Aprevious ,Nrows+1,Ncols+1,Nslices+1);
delta := 0.1; delta := 0.1;
difference := 0.0; difference := 0.0;
for i := 1 to Nrows do newrowmarg[i] := 0.0; for i := 1 to Nrows do newrowmarg[i] := 0.0;
@ -753,30 +758,32 @@ Step:
end; end;
Aprevious := nil; Aprevious := nil;
end; end;
//-------------------------------------------------------------------
procedure TABCLogLinearForm.PrintTable( procedure TABCLogLinearForm.PrintTable(
Nrows, Ncols, Nslices: integer; Nrows, Ncols, Nslices: integer;
const Data: DblDyneCube; const RowMarg, ColMarg, SliceMarg: DblDyneVec; const Data: DblDyneCube; const RowMarg, ColMarg, SliceMarg: DblDyneVec;
Total: double;
AReport: TStrings); AReport: TStrings);
var var
i, j, k: integer; i, j, k: integer;
begin begin
AReport.Add(' A B C VALUE '); AReport.Add(' A B C VALUE');
for i := 1 to Nrows do for i := 1 to Nrows do
for j := 1 to Ncols do for j := 1 to Ncols do
for k := 1 to Nslices do for k := 1 to Nslices do
AReport.Add('%3d %3d %3d %8.3f', [i, j, k, Data[i,j,k]]); AReport.Add('%3d %3d %3d %8.3f', [i, j, k, Data[i,j,k]]);
AReport.Add('');
AReport.Add('Totals for Dimension A'); AReport.Add('Totals for Dimension A');
for i := 1 to Nrows do for i := 1 to Nrows do
AReport.Add('Row %d %8.3f', [i, RowMarg[i]]); AReport.Add('Row %d %8.3f', [i, RowMarg[i]]);
AReport.Add('');
AReport.Add('Totals for Dimension B'); AReport.Add('Totals for Dimension B');
for j := 1 to Ncols do for j := 1 to Ncols do
AReport.Add('Col %d %8.3f', [j, ColMarg[j]]); AReport.Add('Col %d %8.3f', [j, ColMarg[j]]);
AReport.Add('');
AReport.Add('Totals for Dimension C'); AReport.Add('Totals for Dimension C');
for k := 1 to Nslices do for k := 1 to Nslices do
AReport.Add('Slice %d %8.3f', [k, SliceMarg[k]]); AReport.Add('Slice %d %8.3f', [k, SliceMarg[k]]);
@ -851,8 +858,6 @@ end;
procedure TABCLogLinearForm.Reset; procedure TABCLogLinearForm.Reset;
var
i: integer;
begin begin
inherited; inherited;

View File

@ -1,4 +1,4 @@
object LogLinScreenFrm: TLogLinScreenFrm object LogLinScreenForm: TLogLinScreenForm
Left = 417 Left = 417
Height = 379 Height = 379
Top = 130 Top = 130

View File

@ -21,9 +21,9 @@ uses
type type
{ TLogLinScreenFrm } { TLogLinScreenForm }
TLogLinScreenFrm = class(TForm) TLogLinScreenForm = class(TForm)
Bevel1: TBevel; Bevel1: TBevel;
Bevel2: TBevel; Bevel2: TBevel;
HelpBtn: TButton; HelpBtn: TButton;
@ -115,16 +115,16 @@ type
end; end;
var var
LogLinScreenFrm: TLogLinScreenFrm; LogLinScreenForm: TLogLinScreenForm;
implementation implementation
uses uses
Math, LCLIntf, LCLType, Utils; Math, LCLIntf, LCLType, Utils;
{ TLogLinScreenFrm } { TLogLinScreenForm }
procedure TLogLinScreenFrm.ResetBtnClick(Sender: TObject); procedure TLogLinScreenForm.ResetBtnClick(Sender: TObject);
var var
i : integer; i : integer;
begin begin
@ -135,13 +135,13 @@ begin
UpdateMinMaxGrid; UpdateMinMaxGrid;
end; end;
procedure TLogLinScreenFrm.SelectListSelectionChange(Sender: TObject; procedure TLogLinScreenForm.SelectListSelectionChange(Sender: TObject;
User: boolean); User: boolean);
begin begin
UpdateBtnStates; UpdateBtnStates;
end; end;
procedure TLogLinScreenFrm.InBtnClick(Sender: TObject); procedure TLogLinScreenForm.InBtnClick(Sender: TObject);
var var
i: integer; i: integer;
begin begin
@ -160,7 +160,7 @@ begin
UpdateBtnStates; UpdateBtnStates;
end; end;
procedure TLogLinScreenFrm.FormActivate(Sender: TObject); procedure TLogLinScreenForm.FormActivate(Sender: TObject);
var var
w: Integer; w: Integer;
begin begin
@ -185,24 +185,24 @@ begin
FAutoSized := true; FAutoSized := true;
end; end;
procedure TLogLinScreenFrm.FormCreate(Sender: TObject); procedure TLogLinScreenForm.FormCreate(Sender: TObject);
begin begin
Assert(OS3MainFrm <> nil); Assert(OS3MainFrm <> nil);
end; end;
procedure TLogLinScreenFrm.FormShow(Sender: TObject); procedure TLogLinScreenForm.FormShow(Sender: TObject);
begin begin
ResetBtnClick(Self); ResetBtnClick(Self);
end; end;
procedure TLogLinScreenFrm.HelpBtnClick(Sender: TObject); procedure TLogLinScreenForm.HelpBtnClick(Sender: TObject);
begin begin
if ContextHelpForm = nil then if ContextHelpForm = nil then
Application.CreateForm(TContextHelpForm, ContextHelpForm); Application.CreateForm(TContextHelpForm, ContextHelpForm);
ContextHelpForm.HelpMessage((Sender as TButton).Tag); ContextHelpForm.HelpMessage((Sender as TButton).Tag);
end; end;
procedure TLogLinScreenFrm.AllBtnClick(Sender: TObject); procedure TLogLinScreenForm.AllBtnClick(Sender: TObject);
var var
i: integer; i: integer;
begin begin
@ -213,7 +213,7 @@ begin
UpdateMinMaxGrid; UpdateMinMaxGrid;
end; end;
procedure TLogLinScreenFrm.ComputeBtnClick(Sender: TObject); procedure TLogLinScreenForm.ComputeBtnClick(Sender: TObject);
var var
ArraySize : integer; ArraySize : integer;
N : integer; N : integer;
@ -607,7 +607,7 @@ begin
end; end;
end; end;
procedure TLogLinScreenFrm.OutBtnClick(Sender: TObject); procedure TLogLinScreenForm.OutBtnClick(Sender: TObject);
var var
i: integer; i: integer;
begin begin
@ -626,7 +626,7 @@ begin
UpdateMinMaxGrid; UpdateMinMaxGrid;
end; end;
procedure TLogLinScreenFrm.Screen(var NVAR: integer; var MP: integer; procedure TLogLinScreenForm.Screen(var NVAR: integer; var MP: integer;
var MM: integer; var NTAB: integer; var TABLE: DblDyneVec; var MM: integer; var NTAB: integer; var TABLE: DblDyneVec;
var DIM: IntDyneVec; var GSQ: DblDyneVec; var DGFR: IntDyneVec; var DIM: IntDyneVec; var GSQ: DblDyneVec; var DGFR: IntDyneVec;
var PART: DblDyneMat; var MARG: DblDyneMat; var DFS: IntDyneMat; var PART: DblDyneMat; var MARG: DblDyneMat; var DFS: IntDyneMat;
@ -775,7 +775,7 @@ begin
end; // 200 CONTINUE end; // 200 CONTINUE
end; end;
procedure TLogLinScreenFrm.CONF(var N: integer; var M: integer; procedure TLogLinScreenForm.CONF(var N: integer; var M: integer;
var MP: integer; var MM: integer; var ISET: IntDyneVec; var JSET: IntDyneVec; var MP: integer; var MM: integer; var ISET: IntDyneVec; var JSET: IntDyneVec;
var IP: IntDyneMat; var IM: IntDyneMat; var NP: integer); var IP: IntDyneMat; var IM: IntDyneMat; var NP: integer);
Label 100, 120; Label 100, 120;
@ -824,12 +824,12 @@ begin
GOTO 120; GOTO 120;
end; end;
procedure TLogLinScreenFrm.CountVarChkChange(Sender: TObject); procedure TLogLinScreenForm.CountVarChkChange(Sender: TObject);
begin begin
UpdateMinMaxGrid; UpdateMinMaxGrid;
end; end;
procedure TLogLinScreenFrm.COMBO(var ISET: IntDyneVec; N, M: Integer; procedure TLogLinScreenForm.COMBO(var ISET: IntDyneVec; N, M: Integer;
var LAST: boolean); var LAST: boolean);
label 100, 110, 130, 150; label 100, 110, 130, 150;
VAR VAR
@ -879,7 +879,7 @@ begin
end; //160 CONTINUE end; //160 CONTINUE
end; end;
procedure TLogLinScreenFrm.EVAL(var IAR: IntDyneMat; NC, NV, IBEG, NVAR, procedure TLogLinScreenForm.EVAL(var IAR: IntDyneMat; NC, NV, IBEG, NVAR,
MAX: integer; var CONFIG: IntDyneMat; var DIM: IntDyneVec; var DF: integer); MAX: integer; var CONFIG: IntDyneMat; var DIM: IntDyneVec; var DF: integer);
VAR I, J, K, KK, L : integer; VAR I, J, K, KK, L : integer;
// SUBROUTINE EVAL(IAR, NC, NV, IBEG, NVAR, MAX, CONFIG, DIM, DF) // SUBROUTINE EVAL(IAR, NC, NV, IBEG, NVAR, MAX, CONFIG, DIM, DF)
@ -913,7 +913,7 @@ begin
end; // 110 CONTINUE end; // 110 CONTINUE
end; end;
procedure TLogLinScreenFrm.RESET(var FIT: DblDyneVec; NTAB: Integer; AVG: Double procedure TLogLinScreenForm.RESET(var FIT: DblDyneVec; NTAB: Integer; AVG: Double
); );
VAR I : integer; VAR I : integer;
@ -933,7 +933,7 @@ begin
end; // 100 CONTINUE end; // 100 CONTINUE
end; end;
procedure TLogLinScreenFrm.LIKE(var GSQ: Double; var FIT: DblDyneVec; procedure TLogLinScreenForm.LIKE(var GSQ: Double; var FIT: DblDyneVec;
var TABLE: DblDyneVec; NTAB: integer); var TABLE: DblDyneVec; NTAB: integer);
VAR I : integer; VAR I : integer;
ZERO, TWO : Double; ZERO, TWO : Double;
@ -959,7 +959,7 @@ begin
GSQ := TWO * GSQ; GSQ := TWO * GSQ;
end; end;
procedure TLogLinScreenFrm.LOGFIT(NVAR, NTAB, NCON: integer; procedure TLogLinScreenForm.LOGFIT(NVAR, NTAB, NCON: integer;
var DIM: IntDyneVec; var CONFIG: IntDyneMat; var TABLE: DblDyneVec; var DIM: IntDyneVec; var CONFIG: IntDyneMat; var TABLE: DblDyneVec;
var FIT: DblDyneVec; var SIZE: IntDyneVec; var COORD: IntDyneVec; var FIT: DblDyneVec; var SIZE: IntDyneVec; var COORD: IntDyneVec;
var X: DblDyneVec; var Y: DblDyneVec); var X: DblDyneVec; var Y: DblDyneVec);
@ -1070,7 +1070,7 @@ begin
end; // 230 CONTINUE end; // 230 CONTINUE
end; end;
procedure TLogLinScreenFrm.MaxCombos(NumDims: integer; out MM, MP: integer); procedure TLogLinScreenForm.MaxCombos(NumDims: integer; out MM, MP: integer);
var var
combos: integer; combos: integer;
i,j: integer; i,j: integer;
@ -1096,7 +1096,7 @@ begin
end; end;
end; end;
function TLogLinScreenFrm.ArrayPosition(NumDims: integer; function TLogLinScreenForm.ArrayPosition(NumDims: integer;
const Data: DblDyneVec; const Subscripts, DimSize: IntDyneVec): integer; const Data: DblDyneVec; const Subscripts, DimSize: IntDyneVec): integer;
var var
Pos : integer; Pos : integer;
@ -1121,7 +1121,7 @@ begin
PriorSizes := nil; PriorSizes := nil;
end; end;
procedure TLogLinScreenFrm.Marginals(NumDims, ArraySize: integer; procedure TLogLinScreenForm.Marginals(NumDims, ArraySize: integer;
const Indexes: IntDyneMat; const Data: DblDyneVec; const Margins: IntDyneMat); const Indexes: IntDyneMat; const Data: DblDyneVec; const Margins: IntDyneMat);
var var
i, j, category: integer; i, j, category: integer;
@ -1136,14 +1136,14 @@ begin
end; end;
end; end;
procedure TLogLinScreenFrm.UpdateBtnStates; procedure TLogLinScreenForm.UpdateBtnStates;
begin begin
InBtn.Enabled := AnySelected(VarList); InBtn.Enabled := AnySelected(VarList);
OutBtn.Enabled := AnySelected(SelectList); OutBtn.Enabled := AnySelected(SelectList);
AllBtn.Enabled := VarList.Items.Count > 0; AllBtn.Enabled := VarList.Items.Count > 0;
end; end;
procedure TLogLinScreenFrm.UpdateMinMaxGrid; procedure TLogLinScreenForm.UpdateMinMaxGrid;
var var
NumDims, j: Integer; NumDims, j: Integer;
begin begin
@ -1161,7 +1161,7 @@ begin
end; end;
end; end;
procedure TLogLinScreenFrm.VarListSelectionChange(Sender: TObject; User: boolean); procedure TLogLinScreenForm.VarListSelectionChange(Sender: TObject; User: boolean);
begin begin
UpdateBtnStates; UpdateBtnStates;
end; end;