Files
lazarus-ccr/applications/lazstats/source_orig/twocorrsunit.pas

659 lines
24 KiB
ObjectPascal
Raw Normal View History

unit TwoCorrsUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
ExtCtrls, StdCtrls, MainUnit, Globals, FunctionsLib, OutPutUnit, DataProcs,
contexthelpunit;
type
{ TTwoCorrsFrm }
TTwoCorrsFrm = class(TForm)
HelpBtn: TButton;
ResetBtn: TButton;
CancelBtn: TButton;
ComputeBtn: TButton;
ReturnBtn: TButton;
CInterval: TEdit;
Label14: TLabel;
Xvar: TEdit;
Yvar: TEdit;
Zvar: TEdit;
GroupVar: TEdit;
xlabel: TLabel;
ylabel: TLabel;
zlabel: TLabel;
GroupLabel: TLabel;
SelVarLabel: TLabel;
VarList: TListBox;
Panel2: TPanel;
rxy1: TEdit;
Size1: TEdit;
rxy2: TEdit;
Size2: TEdit;
firstcorlabel: TLabel;
size1label: TLabel;
SecdCorLabel: TLabel;
Size2Label: TLabel;
rxy: TEdit;
rxz: TEdit;
ryz: TEdit;
SampSize: TEdit;
corxylabel: TLabel;
corxzlabel: TLabel;
coryzlabel: TLabel;
sampsizelabel: TLabel;
Panel1: TPanel;
RadioGroup1: TRadioGroup;
RadioGroup2: TRadioGroup;
procedure ComputeBtnClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure HelpBtnClick(Sender: TObject);
procedure RadioGroup1Click(Sender: TObject);
procedure RadioGroup2Click(Sender: TObject);
procedure ResetBtnClick(Sender: TObject);
procedure VarListClick(Sender: TObject);
private
{ private declarations }
independent : boolean;
griddata : boolean;
public
{ public declarations }
end;
var
TwoCorrsFrm: TTwoCorrsFrm;
implementation
{ TTwoCorrsFrm }
procedure TTwoCorrsFrm.ResetBtnClick(Sender: TObject);
VAR i : integer;
begin
RadioGroup1.ItemIndex := 0;
RadioGroup2.ItemIndex := 0;
Panel1.Visible := true;
Panel2.Visible := false;
VarList.Clear;
Xvar.Text := '';
Yvar.Text := '';
Zvar.Text := '';
Xvar.Visible := false;
Yvar.Visible := false;
Zvar.Visible := false;
corxylabel.Visible := false;
corxzlabel.Visible := false;
coryzlabel.Visible := false;
GroupVar.Text := '';
GroupVar.Visible := false;
sampsizelabel.Visible := false;
rxy.Text := '';
rxz.Text := '';
ryz.Text := '';
SampSize.Text := '';
rxy1.Text := '';
rxy2.Text := '';
Size1.Text := '';
Size2.Text := '';
firstcorlabel.Visible := true;
size1label.Visible := true;
SecdCorLabel.Visible := true;
Size2Label.Visible := true;
rxy.Visible := false;
rxz.Visible := false;
ryz.Visible := false;
rxy1.Visible := true;
rxy2.Visible := true;
Size1.Visible := true;
Size2.Visible := true;
SelVarLabel.Visible := true;
xlabel.Visible := true;
ylabel.Visible := true;
zlabel.Visible := false;
Zvar.Visible := false;
GroupLabel.Visible := true;
independent := true;
griddata := false;
CInterval.Text := '95.0';
for i := 1 to NoVariables do
VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]);
end;
procedure TTwoCorrsFrm.VarListClick(Sender: TObject);
VAR index : integer;
begin
index := VarList.ItemIndex;
if Xvar.Text = '' then
begin
Xvar.Text := VarList.Items.Strings[index];
exit;
end;
if Yvar.Text = '' then
begin
Yvar.Text := VarList.Items.Strings[index];
exit;
end;
if not independent then
begin
if Zvar.Text = '' then
begin
Zvar.Text := VarList.Items.Strings[index];
exit;
end;
end;
if independent then
begin
if GroupVar.Text = '' then
begin
GroupVar.Text := VarList.Items.Strings[index];
exit;
end;
end;
end;
procedure TTwoCorrsFrm.FormShow(Sender: TObject);
begin
ResetBtnClick(self);
end;
procedure TTwoCorrsFrm.HelpBtnClick(Sender: TObject);
begin
ContextHelpForm.HelpMessage((Sender as TButton).tag);
end;
procedure TTwoCorrsFrm.ComputeBtnClick(Sender: TObject);
var
Corxy, Corxz, Coryz, Cor1, Cor2, alpha, tvalue, df1, df2 : double;
CorDif, zOne, zTwo, zDif, StdErr, zValue, zprobability : double;
UCL, LCL, ztest, ConfLevel, tprobability, ttest : double;
mean1, mean2, mean3, variance1, variance2, variance3 : double;
stddev1, stddev2, stddev3, value1, value2, value3 : double;
meanx1, meanx2, meany1, meany2, varx1, varx2, vary1, vary2 : double;
sdx1, sdx2, sdy1, sdy2, value : double;
SSize1, SSize2, SSize, v1, v2, v3, grp, ncases, NoSelected: integer;
min, max, grpval, ncases1, ncases2, i : integer;
cellstring, outline : string;
ColNoSelected : IntDyneVec;
begin
SetLength(ColNoSelected,NoVariables);
Corxy := 0.0;
Corxz := 0.0;
Coryz := 0.0;
Cor1 := 0.0;
Cor2 := 0.0;
mean1 := 0.0;
mean2 := 0.0;
mean3 := 0.0;
variance1 := 0.0;
variance2 := 0.0;
variance3 := 0.0;
meanx1 := 0.0;
meanx2 := 0.0;
meany1 := 0.0;
if not griddata then // use data on the form
begin
if independent then // read data from form and obtain results
begin
Cor1 := StrToFloat(rxy1.Text);
Cor2 := StrToFloat(rxy2.Text);
SSize1 := StrToInt(Size1.Text);
SSize2 := StrToInt(Size2.Text);
ConfLevel := StrToFloat(CInterval.Text) / 100.0;
CorDif := Cor1 - Cor2;
zOne := 0.5 * ln((1.0 + Cor1) / (1.0 - Cor1));
zTwo := 0.5 * ln((1.0 + Cor2) / (1.0 - Cor2));
zDif := zOne - zTwo;
StdErr := sqrt((1.0 / (SSize1 - 3.0)) + (1.0 / (SSize2 -3.0)));
zValue := zDif / StdErr;
alpha := (1.0 - ConfLevel) / 2.0;
zTest := inversez(1.0 - alpha);
zprobability := 1.0 - probz(zValue);
UCL := zDif + StdErr * zTest;
LCL := zDif - StdErr * zTest;
UCL := (exp(2.0 * UCL) - 1.0) / (exp(2.0 * UCL) + 1.0);
LCL := (exp(2.0 * LCL) - 1.0) / (exp(2.0 * LCL) + 1.0);
end;
if not independent then // obtain data from form and obtain results
begin
Corxy := StrToFloat(rxy.Text);
Corxz := StrToFloat(rxz.Text);
Coryz := StrToFloat(ryz.Text);
SSize := StrToInt(SampSize.Text);
ConfLevel := StrToFloat(CInterval.Text) / 100.0;
CorDif := Corxy - Corxz;
alpha := (1.0 - ConfLevel) / 2.0;
tvalue := (CorDif * sqrt((SSize - 3.0) * (1.0 + Coryz))) /
sqrt(2.0 * (1.0 - (Corxy * Corxy) - (Corxz * Corxz) -
(Coryz * Coryz) + (2.0 * Corxy * Corxz * Coryz)));
df1 := 1.0;
df2 := SSize - 3.0;
tprobability := probt(tvalue,df2);
ttest := inverset(1.0 - alpha, df2);
end;
end;
if griddata then
begin
v1 := 1;
v2 := 1;
grp := 1;
if independent then // read grid data for independent r's
begin
for i := 1 to NoVariables do
begin
cellstring := OS3MainFrm.DataGrid.Cells[i,0];
if cellstring = Xvar.Text then v1 := i;
if cellstring = Yvar.Text then v2 := i;
if cellstring = GroupVar.Text then grp := i;
end;
ColNoSelected[0] := v1;
ColNoSelected[1] := v2;
ColNoSelected[2] := grp;
NoSelected := 3;
meanx1 := 0.0;
meany1 := 0.0;
varx1 := 0.0;
vary1 := 0.0;
meanx2 := 0.0;
meany2 := 0.0;
varx2 := 0.0;
vary2 := 0.0;
Cor1 := 0.0;
Cor2 := 0.0;
ncases1 := 0;
ncases2 := 0;
min := round(StrToFloat(Trim(OS3MainFrm.DataGrid.Cells[grp,1])));
max := min;
for i := 2 to NoCases do
begin
if not GoodRecord(i,NoSelected,ColNoSelected) then continue;
grpval := round(StrToFloat(Trim(OS3MainFrm.DataGrid.Cells[grp,i])));
if grpval > max then max := grpval;
if grpval < min then min := grpval;
end;
for i := 1 to NoCases do
begin
if not GoodRecord(i,NoSelected,ColNoSelected) then continue;
grpval := round(StrToFloat(Trim(OS3MainFrm.DataGrid.Cells[grp,i])));
if grpval = min then
begin
ncases1 := ncases1 + 1;
value1 := StrToFloat(Trim(OS3MainFrm.DataGrid.Cells[v1,i]));
meanx1 := meanx1 + value1;
varx1 := varx1 + (value1 * value1);
value2 := StrToFloat(Trim(OS3MainFrm.DataGrid.Cells[v2,i]));
meany1 := meany1 + value2;
vary1 := vary1 + (value2 * value2);
Cor1 := Cor1 + (value1 * value2);
end;
if grpval = max then
begin
ncases2 := ncases2 + 1;
value1 := StrToFloat(Trim(OS3MainFrm.DataGrid.Cells[v1,i]));
meanx2 := meanx2 + value1;
varx2 := varx2 + (value1 * value1);
value2 := StrToFloat(Trim(OS3MainFrm.DataGrid.Cells[v2,i]));
meany2 := meany2 + value2;
vary2 := vary2 + (value2 * value2);
Cor2 := Cor2 + (value1 * value2);
end;
end; // next case
varx1 := varx1 - (meanx1 * meanx1) / ncases1;
varx1 := varx1 / (ncases1 - 1.0);
varx2 := varx2 - (meanx2 * meanx2) / ncases2;
varx2 := varx2 / (ncases2 - 1.0);
vary1 := vary1 - (meany1 * meany1) / ncases1;
vary1 := vary1 / (ncases1 - 1.0);
vary2 := vary2 - (meany2 * meany2) / ncases2;
vary2 := vary2 / (ncases2 - 1.0);
Cor1 := Cor1 - (meanx1 * meany1) / ncases1;
Cor1 := Cor1 / (ncases1 - 1.0);
Cor2 := Cor2 - (meanx2 * meany2) / ncases2;
Cor2 := Cor2 / (ncases2 - 1.0);
sdx1 := sqrt(varx1);
sdx2 := sqrt(varx2);
sdy1 := sqrt(vary1);
sdy2 := sqrt(vary2);
Cor1 := Cor1 / (sdx1 * sdy1);
Cor2 := Cor2 / (sdx2 * sdy2);
meanx1 := meanx1 / ncases1;
meany1 := meany1 / ncases1;
meanx2 := meanx2 / ncases2;
meany2 := meany2 / ncases2;
SSize1 := ncases1;
SSize2 := ncases2;
ConfLevel := StrToFloat(CInterval.Text) / 100.0;
CorDif := Cor1 - Cor2;
zOne := 0.5 * ln((1.0 + Cor1) / (1.0 - Cor1));
zTwo := 0.5 * ln((1.0 + Cor2) / (1.0 - Cor2));
zDif := zOne - zTwo;
StdErr := sqrt((1.0 / (SSize1 - 3.0)) + (1.0 / (SSize2 -3.0)));
zValue := zDif / StdErr;
alpha := (1.0 - ConfLevel) / 2.0;
zTest := inversez(1.0 - alpha);
zprobability := 1.0 - probz(zValue);
UCL := zDif + StdErr * zTest;
LCL := zDif - StdErr * zTest;
UCL := (exp(2.0 * UCL) - 1.0) / (exp(2.0 * UCL) + 1.0);
LCL := (exp(2.0 * LCL) - 1.0) / (exp(2.0 * LCL) + 1.0);
end;
if not independent then // read grid data for dependent r's
begin
mean1 := 0.0;
mean2 := 0.0;
mean3 := 0.0;
variance1 := 0.0;
variance2 := 0.0;
variance3 := 0.0;
Corxy := 0.0;
Corxz := 0.0;
Coryz := 0.0;
ncases := 0;
for i := 1 to NoVariables do
begin
cellstring := OS3MainFrm.DataGrid.Cells[i,0];
if cellstring = Xvar.Text then v1 := i;
if cellstring = Yvar.Text then v2 := i;
if cellstring = ZVar.Text then v3 := i;
end;
ColNoSelected[0] := v1;
ColNoSelected[1] := v2;
ColNoSelected[2] := v3;
NoSelected := 3;
for i := 1 to NoCases do
begin
if not GoodRecord(i,NoSelected,ColNoSelected) then continue;
ncases := ncases + 1;
value1 := StrToFloat(Trim(OS3MainFrm.DataGrid.Cells[v1,i]));
value2 := StrToFloat(Trim(OS3MainFrm.DataGrid.Cells[v2,i]));
value3 := StrToFloat(Trim(OS3MainFrm.DataGrid.Cells[v3,i]));
mean1 := mean1 + value1;
mean2 := mean2 + value2;
mean3 := mean3 + value3;
variance1 := variance1 + (value1 * value1);
variance2 := variance2 + (value2 * value2);
variance3 := variance3 + (value3 * value3);
Corxy := Corxy + (value1 * value2);
Corxz := Corxz + (value1 * value3);
Coryz := Coryz + (value2 * value3);
end;
variance1 := variance1 - (mean1 * mean1) / ncases;
variance1 := variance1 / (ncases - 1.0);
stddev1 := sqrt(variance1);
variance2 := variance2 - (mean2 * mean2) / ncases;
variance2 := variance2 / (ncases - 1.0);
stddev2 := sqrt(variance2);
variance3 := variance3 - (mean3 * mean3) / ncases;
variance3 := variance3 / (ncases - 1.0);
stddev3 := sqrt(variance3);
Corxy := Corxy - (mean1 * mean2) / ncases;
Corxy := Corxy / (ncases - 1.0);
Corxy := Corxy / (stddev1 * stddev2);
Corxz := Corxz - (mean1 * mean3) / ncases;
Corxz := Corxz / (ncases - 1.0);
Corxz := Corxz / (stddev1 * stddev3);
Coryz := Coryz - (mean2 * mean3) / ncases;
Coryz := Coryz / (ncases - 1.0);
Coryz := Coryz / (stddev2 * stddev3);
mean1 := mean1 / ncases;
mean2 := mean2 / ncases;
mean3 := mean3 / ncases;
SSize := ncases;
ConfLevel := StrToFloat(CInterval.Text) / 100.0;
CorDif := Corxy - Corxz;
alpha := (1.0 - ConfLevel) / 2.0;
tvalue := (CorDif * sqrt((SSize - 3.0) * (1.0 + Coryz))) /
sqrt(2.0 * (1.0 - (Corxy * Corxy) - (Corxz * Corxz) -
(Coryz * Coryz) + (2.0 * Corxy * Corxz * Coryz)));
df1 := 1.0;
df2 := SSize - 3.0;
tprobability := probt(tvalue,df2);
ttest := inverset(1.0 - alpha, df2);
end;
end;
// Initialize output form
OutPutFrm.RichEdit.Clear;
OutPutFrm.RichEdit.Lines.Add('COMPARISON OF TWO CORRELATIONS');
OutPutFrm.RichEdit.Lines.Add('');
// OutPutFrm.RichEdit.ParaGraph.Alignment := taLeftJustify;
if independent then
begin
outline := format('Correlation one = %6.3f',[Cor1]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Sample size one = %d',[SSize1]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Correlation two = %6.3f',[Cor2]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline :=format('Sample size two = %d',[SSize2]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Difference between correlations = %6.3f',[CorDif]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Confidence level selected = %s',[CInterval.Text]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('z for Correlation One = %6.3f',[zOne]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('z for Correlation Two = %6.3f',[zTwo]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('z difference = %6.3f',[zDif]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Standard error of difference = %6.3f',[StdErr]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('z test statistic = %6.3f',[zValue]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Probability > |z| = %6.3f',[zprobability]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('z Required for significance = %6.3f',[zTest]);
OutPutFrm.RichEdit.Lines.Add(outline);
OutPutFrm.RichEdit.Lines.Add('Note: above is a two-tailed test.');
outline := format('Confidence Limits = (%6.3f,%6.3f)',[LCL,UCL]);
OutPutFrm.RichEdit.Lines.Add(outline);
if griddata then
begin
outline := format('Mean X for group 1 = %9.3f',[meanx1]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Mean X for group 2 = %9.3f',[meanx2]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Std.Dev. X for group 1 = %9.3f',[sdx1]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Std.Dev. X for group 2 = %9.3f',[sdx2]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Mean y for group 1 = %9.3f',[meany1]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Mean Y for group 2 = %9.3f',[meany2]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Std.Dev. Y for group 1 = %9.3f',[sdy1]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Std.Dev. Y for group 2 = %9.3f',[sdy2]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
end;
if not independent then
begin
outline := format('Correlation x with y = %6.3f',[Corxy]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Correlation x with z = %6.3f',[Corxz]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Correlation y with z = %6.3f',[Coryz]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Sample size = %d',[SSize]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Confidence Level Selected = %s',[CInterval.Text]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Difference r(x,y) - r(x,z) = %6.3f',[CorDif]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline :=format('t test statistic = %6.3f',[tvalue]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('Probability > |t| = %6.3f',[tprobability]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format('t value for significance = %6.3f',[ttest]);
OutPutFrm.RichEdit.Lines.Add(outline);
if griddata then
begin
OutPutFrm.RichEdit.Lines.Add('Variable Mean Variance Std.Dev.');
outline := format(' X %9.3f %9.3f %9.3f',
[mean1, variance1, stddev1]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format(' Y %9.3f %9.3f %9.3f',
[mean2, variance2, stddev2]);
OutPutFrm.RichEdit.Lines.Add(outline);
outline := format(' Z %9.3f %9.3f %9.3f',
[mean3, variance3, stddev3]);
OutPutFrm.RichEdit.Lines.Add(outline);
end;
end;
OutPutFrm.ShowModal;
ColNoSelected := nil;
end;
procedure TTwoCorrsFrm.RadioGroup1Click(Sender: TObject);
VAR index : integer;
begin
index := RadioGroup1.ItemIndex;
if index = 0 then
begin
Panel2.Visible := false;
Panel1.Visible := true;
griddata := false;
yvar.Visible := false;
xvar.Visible := false;
groupvar.Visible := false;
rxy1.Visible := true;
rxy2.Visible := true;
size1.Visible := true;
size2.Visible := true;
end
else
begin
Panel1.Visible := false;
Panel2.Visible := true;
xvar.Visible := true;
yvar.Visible := true;
groupvar.Visible := true;
griddata := true;
rxy1.Visible := false;
rxy2.Visible := false;
size1.Visible := false;
size2.Visible := false;
end;
end;
procedure TTwoCorrsFrm.RadioGroup2Click(Sender: TObject);
VAR index1, index2 : integer;
begin
index2 := RadioGroup2.ItemIndex;
index1 := RadioGroup1.ItemIndex;
if ((index2 = 0) and (index1 = 0)) then // form input with independent corrs
begin
independent := true;
panel2.Visible := false;
panel1.Visible := true;
// GroupVar.Visible := true;
// GroupLabel.Visible := true;
corxylabel.Visible := false;
corxzlabel.Visible := false;
coryzlabel.Visible := false;
// Xvar.Visible := true;
// Yvar.Visible := true;
// Zvar.Visible := false;
// SelVarLabel.Visible := true;
// xlabel.Visible := true;
// ylabel.Visible := true;
// Zlabel.Visible := false;
rxy1.Visible := true;
rxy2.Visible := true;
Size1.Visible := true;
Size2.Visible := true;
firstcorlabel.Visible := true;
size1label.Visible := true;
SecdCorLabel.Visible := true;
Size2Label.Visible := true;
rxy.Visible := false;
rxz.Visible := false;
ryz.Visible := false;
SampSize.Visible := false;
SampSizeLabel.Visible := false;
end;
if ((index2 = 0) and (index1 = 1)) then // grid data for independent corrs
begin
Panel1.Visible := false;
Panel2.Visible := true;
xlabel.Visible := true;
ylabel.Visible := true;
zlabel.Visible := false;
xvar.Visible := true;
yvar.Visible := true;
zvar.Visible := false;
grouplabel.Visible := true;
groupvar.Visible := true;
end;
if ((index2 = 1) and (index1 = 0)) then // form data for dependent corrs
begin
Panel1.Visible := true;
Panel2.Visible := false;
corxylabel.Visible := true;
corxzlabel.Visible := true;
coryzlabel.Visible := true;
rxy.Visible := true;
rxz.Visible := true;
ryz.Visible := true;
sampsizelabel.Visible := true;
sampsize.Visible := true;
firstcorlabel.Visible := false;
rxy1.Visible := false;
size1label.Visible := false;
size1.Visible := false;
SecdCorLabel.Visible := false;
rxy2.Visible := false;
size2label.Visible := false;
size2.Visible := false;
end;
if ((index2 = 1) and (index1 = 1)) then // grid data for dependent corrs
begin
Panel1.Visible := false;
Panel2.Visible := true;
independent := false;
GroupVar.Visible := false;
sampsizelabel.Visible := true;
corxylabel.Visible := true;
corxzlabel.Visible := true;
coryzlabel.Visible := true;
xvar.Visible := true;
yvar.Visible := true;
Zvar.Visible := true;
zlabel.Visible := true;
SelVarLabel.Visible := true;
xlabel.Visible := true;
ylabel.Visible := true;
GroupLabel.Visible := false;
// rxy1.Visible := false;
// rxy2.Visible := false;
// Size1.Visible := false;
// Size2.Visible := false;
// firstcorlabel.Visible := false;
// size1label.Visible := false;
// SecdCorLabel.Visible := false;
// Size2Label.Visible := false;
// rxy.Visible := true;
// rxz.Visible := true;
// ryz.Visible := true;
// SampSize.Visible := true;
end;
end;
initialization
{$I twocorrsunit.lrs}
end.