diff --git a/applications/lazstats/source/forms/analysis/statistical_process_control/rchartunit.lfm b/applications/lazstats/source/forms/analysis/statistical_process_control/rchartunit.lfm index 5f13c7d6a..92187a767 100644 --- a/applications/lazstats/source/forms/analysis/statistical_process_control/rchartunit.lfm +++ b/applications/lazstats/source/forms/analysis/statistical_process_control/rchartunit.lfm @@ -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 diff --git a/applications/lazstats/source/forms/analysis/statistical_process_control/rchartunit.pas b/applications/lazstats/source/forms/analysis/statistical_process_control/rchartunit.pas index 2d5655a50..fe1feb420 100644 --- a/applications/lazstats/source/forms/analysis/statistical_process_control/rchartunit.pas +++ b/applications/lazstats/source/forms/analysis/statistical_process_control/rchartunit.pas @@ -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. diff --git a/applications/lazstats/source/forms/analysis/statistical_process_control/xbarunit.lfm b/applications/lazstats/source/forms/analysis/statistical_process_control/xbarunit.lfm index a412a4795..82eee6f36 100644 --- a/applications/lazstats/source/forms/analysis/statistical_process_control/xbarunit.lfm +++ b/applications/lazstats/source/forms/analysis/statistical_process_control/xbarunit.lfm @@ -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 diff --git a/applications/lazstats/source/forms/analysis/statistical_process_control/xbarunit.pas b/applications/lazstats/source/forms/analysis/statistical_process_control/xbarunit.pas index 5a5e72a09..15088a088 100644 --- a/applications/lazstats/source/forms/analysis/statistical_process_control/xbarunit.pas +++ b/applications/lazstats/source/forms/analysis/statistical_process_control/xbarunit.pas @@ -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; diff --git a/applications/lazstats/source/forms/simulations/distribunit.lfm b/applications/lazstats/source/forms/simulations/distribunit.lfm index c85d086fe..07117f0a3 100644 --- a/applications/lazstats/source/forms/simulations/distribunit.lfm +++ b/applications/lazstats/source/forms/simulations/distribunit.lfm @@ -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