LazStats: Add toolbars to XBarUnit and RChartUnit

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@7652 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2020-09-07 13:15:54 +00:00
parent 1aefc50b7f
commit 44378d9a56
5 changed files with 201 additions and 87 deletions

View File

@ -227,13 +227,13 @@ object RChartFrm: TRChartFrm
Height = 460
Top = 8
Width = 482
ActivePage = ReportPage
ActivePage = ChartPage
Align = alClient
BorderSpacing.Left = 2
BorderSpacing.Top = 8
BorderSpacing.Right = 8
BorderSpacing.Bottom = 8
TabIndex = 0
TabIndex = 1
TabOrder = 2
object ReportPage: TTabSheet
Caption = 'Report'
@ -254,6 +254,40 @@ object RChartFrm: TRChartFrm
end
object ChartPage: TTabSheet
Caption = 'Chart'
ClientHeight = 432
ClientWidth = 474
object ToolBar1: TToolBar
Left = 444
Height = 420
Top = 6
Width = 24
Align = alRight
AutoSize = True
BorderSpacing.Top = 6
BorderSpacing.Right = 6
BorderSpacing.Bottom = 6
Caption = 'ToolBar1'
EdgeBorders = []
Images = MainDataModule.ImageList
TabOrder = 0
Transparent = True
object tbSave: TToolButton
Left = 1
Hint = 'Save chart to file'
Top = 0
Caption = 'tbSave'
ImageIndex = 4
OnClick = tbSaveClick
end
object tbPrint: TToolButton
Left = 1
Hint = 'Print chart'
Top = 22
Caption = 'tbPrint'
ImageIndex = 5
OnClick = tbPrintClick
end
end
end
end
end

View File

@ -38,6 +38,9 @@ type
CloseBtn: TButton;
MeasEdit: TEdit;
GroupEdit: TEdit;
tbPrint: TToolButton;
tbSave: TToolButton;
ToolBar1: TToolBar;
VarListLabel: TLabel;
GroupLabel: TLabel;
MeasLabel: TLabel;
@ -51,6 +54,8 @@ type
procedure FormShow(Sender: TObject);
procedure HelpBtnClick(Sender: TObject);
procedure ResetBtnClick(Sender: TObject);
procedure tbPrintClick(Sender: TObject);
procedure tbSaveClick(Sender: TObject);
procedure VarListClick(Sender: TObject);
private
{ private declarations }
@ -73,90 +78,9 @@ implementation
uses
Math, Utils;
{ TRChartFrm }
procedure TRChartFrm.ResetBtnClick(Sender: TObject);
var
i: integer;
begin
VarList.Clear;
GroupEdit.Text := '';
MeasEdit.Text := '';
for i := 1 to NoVariables do
VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]);
{$IFDEF USE_TACHART}
FChartFrame.Clear;
{$ENDIF}
end;
procedure TRChartFrm.VarListClick(Sender: TObject);
var
index: integer;
begin
index := VarList.ItemIndex;
if index > -1 then
begin
if GroupEdit.Text = '' then
GroupEdit.Text := VarList.Items[index]
else
MeasEdit.Text := VarList.Items[index];
VarList.Items.Delete(index);
end;
end;
procedure TRChartFrm.FormActivate(Sender: TObject);
var
w: Integer;
begin
w := MaxValue([HelpBtn.Width, ResetBtn.Width, ComputeBtn.Width, CloseBtn.Width]);
HelpBtn.Constraints.MinWidth := w;
ResetBtn.Constraints.MinWidth := w;
ComputeBtn.Constraints.MinWidth := w;
CloseBtn.Constraints.MinWidth := w;
SpecsPanel.Constraints.MinWidth := Max(
VarListLabel.Width + MeasLabel.Width,
CloseBtn.Left + CloseBtn.Width - HelpBtn.Left + HelpBtn.BorderSpacing.Left
);
Constraints.MinHeight := MeasEdit.Top + MeasEdit.Height + ButtonBevel.Height + ButtonPanel.Height + 2*ButtonPanel.BorderSpacing.Bottom;
end;
procedure TRChartFrm.FormCreate(Sender: TObject);
begin
Assert(OS3MainFrm <> nil);
{$IFDEF USE_TACHART}
FChartFrame := TChartFrame.Create(self);
FChartFrame.Parent := ChartPage;
FChartFrame.Align := alClient;
FChartFrame.BorderSpacing.Around := Scale96ToFont(8);
FChartFrame.Chart.Legend.SymbolWidth := Scale96ToFont(30);
FChartFrame.Chart.Legend.Alignment := laBottomCenter;
FChartFrame.Chart.Legend.ColumnCount := 3;
with FChartFrame.Chart.AxisList.Add do
begin
Alignment := calRight;
Marks.Source := TListChartSource.Create(self);
Marks.Style := smsLabel;
end;
{$ELSE}
if BlankFrm = nil then
Application.CreateForm(TBlankFrm, BlankFrm);
{$ENDIF}
end;
procedure TRChartFrm.FormShow(Sender: TObject);
begin
ResetBtnClick(self);
end;
procedure TRChartFrm.HelpBtnClick(Sender: TObject);
begin
if ContextHelpForm = nil then
Application.CreateForm(TContextHelpForm, ContextHelpForm);
ContextHelpForm.HelpMessage((Sender as TButton).tag);
end;
procedure TRChartFrm.ComputeBtnClick(Sender: TObject);
var
i, j, GrpVar, MeasVar, grpsize : integer;
@ -331,6 +255,64 @@ begin
means := nil;
end;
procedure TRChartFrm.FormActivate(Sender: TObject);
var
w: Integer;
begin
w := MaxValue([HelpBtn.Width, ResetBtn.Width, ComputeBtn.Width, CloseBtn.Width]);
HelpBtn.Constraints.MinWidth := w;
ResetBtn.Constraints.MinWidth := w;
ComputeBtn.Constraints.MinWidth := w;
CloseBtn.Constraints.MinWidth := w;
SpecsPanel.Constraints.MinWidth := Max(
VarListLabel.Width + MeasLabel.Width,
CloseBtn.Left + CloseBtn.Width - HelpBtn.Left + HelpBtn.BorderSpacing.Left
);
Constraints.MinHeight := MeasEdit.Top + MeasEdit.Height + ButtonBevel.Height + ButtonPanel.Height + 2*ButtonPanel.BorderSpacing.Bottom;
end;
procedure TRChartFrm.FormCreate(Sender: TObject);
begin
Assert(OS3MainFrm <> nil);
{$IFDEF USE_TACHART}
FChartFrame := TChartFrame.Create(self);
FChartFrame.Parent := ChartPage;
FChartFrame.Align := alClient;
FChartFrame.BorderSpacing.Around := Scale96ToFont(8);
FChartFrame.Chart.Legend.SymbolWidth := Scale96ToFont(30);
FChartFrame.Chart.Legend.Alignment := laBottomCenter;
FChartFrame.Chart.Legend.ColumnCount := 3;
with FChartFrame.Chart.AxisList.Add do
begin
Alignment := calRight;
Marks.Source := TListChartSource.Create(self);
Marks.Style := smsLabel;
end;
{$ELSE}
if BlankFrm = nil then
Application.CreateForm(TBlankFrm, BlankFrm);
{$ENDIF}
end;
procedure TRChartFrm.FormShow(Sender: TObject);
begin
ResetBtnClick(self);
end;
procedure TRChartFrm.HelpBtnClick(Sender: TObject);
begin
if ContextHelpForm = nil then
Application.CreateForm(TContextHelpForm, ContextHelpForm);
ContextHelpForm.HelpMessage((Sender as TButton).tag);
end;
procedure TRChartFrm.PlotMeans(const Groups: StrDyneVec; const Means: DblDyneVec;
UCL, LCL, GrandMean: double);
const
@ -488,5 +470,52 @@ begin
{$ENDIF}
end;
procedure TRChartFrm.ResetBtnClick(Sender: TObject);
var
i: integer;
begin
VarList.Clear;
GroupEdit.Text := '';
MeasEdit.Text := '';
for i := 1 to NoVariables do
VarList.Items.Add(OS3MainFrm.DataGrid.Cells[i,0]);
{$IFDEF USE_TACHART}
FChartFrame.Clear;
{$ENDIF}
end;
procedure TRChartFrm.tbPrintClick(Sender: TObject);
begin
{$IFDEF USE_TACHART}
FChartFrame.Print;
{$ENDIF}
end;
procedure TRChartFrm.tbSaveClick(Sender: TObject);
begin
{$IFDEF USE_TACHART}
FChartFrame.Save;
{$ENDIF}
end;
procedure TRChartFrm.VarListClick(Sender: TObject);
var
index: integer;
begin
index := VarList.ItemIndex;
if index > -1 then
begin
if GroupEdit.Text = '' then
GroupEdit.Text := VarList.Items[index]
else
MeasEdit.Text := VarList.Items[index];
VarList.Items.Delete(index);
end;
end;
end.

View File

@ -410,6 +410,40 @@ object XBarFrm: TXBarFrm
end
object ChartPage: TTabSheet
Caption = 'Chart'
ClientHeight = 386
ClientWidth = 544
object ToolBar1: TToolBar
Left = 514
Height = 374
Top = 6
Width = 24
Align = alRight
AutoSize = True
BorderSpacing.Top = 6
BorderSpacing.Right = 6
BorderSpacing.Bottom = 6
Caption = 'ToolBar1'
EdgeBorders = []
Images = MainDataModule.ImageList
TabOrder = 0
Transparent = True
object tbSave: TToolButton
Left = 1
Hint = 'Save chart to file'
Top = 0
Caption = 'tbSave'
ImageIndex = 4
OnClick = tbSaveClick
end
object tbPrint: TToolButton
Left = 1
Hint = 'Print chart'
Top = 22
Caption = 'tbPrint'
ImageIndex = 5
OnClick = tbPrintClick
end
end
end
end
end

View File

@ -41,6 +41,9 @@ type
Splitter1: TSplitter;
ReportPage: TTabSheet;
ChartPage: TTabSheet;
tbPrint: TToolButton;
tbSave: TToolButton;
ToolBar1: TToolBar;
UpSpecEdit: TEdit;
LowSpecEdit: TEdit;
TargetSpecEdit: TEdit;
@ -62,6 +65,8 @@ type
procedure FormShow(Sender: TObject);
procedure HelpBtnClick(Sender: TObject);
procedure ResetBtnClick(Sender: TObject);
procedure tbPrintClick(Sender: TObject);
procedure tbSaveClick(Sender: TObject);
procedure VarListClick(Sender: TObject);
private
{ private declarations }
@ -108,6 +113,16 @@ begin
{$ENDIF}
end;
procedure TXBarFrm.tbPrintClick(Sender: TObject);
begin
FChartFrame.Print;
end;
procedure TXBarFrm.tbSaveClick(Sender: TObject);
begin
FChartFrame.Save;
end;
procedure TXBarFrm.VarListClick(Sender: TObject);
var
index: integer;
@ -343,7 +358,7 @@ begin
end;
procedure TXBarFrm.PlotMeans(const Groups: StrDyneVec; const Means, StdDevs: DblDyneVec;
UCL, LCL, GrandMean: double; TargetSpec, LowerSpec, UpperSpec: double);
UCL, LCL, GrandMean, TargetSpec, LowerSpec, UpperSpec: double);
const
TARGET_COLOR = clBlue;
CL_COLOR = clRed;

View File

@ -308,12 +308,14 @@ object DistribFrm: TDistribFrm
AnchorSideTop.Control = Owner
AnchorSideRight.Control = Owner
AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = Owner
AnchorSideBottom.Side = asrBottom
Left = 918
Height = 66
Height = 420
Top = 8
Width = 24
Align = alNone
Anchors = [akTop, akRight]
Anchors = [akTop, akRight, akBottom]
AutoSize = True
BorderSpacing.Top = 8
BorderSpacing.Right = 6