Files
lazarus-ccr/applications/lazstats/source/forms/misc/basicstatsparamsformunit.pas

155 lines
2.9 KiB
ObjectPascal
Raw Normal View History

unit BasicStatsParamsFormUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls,
ContextHelpUnit, BasicStatsFormUnit;
type
{ TBasicStatsParamsForm }
TBasicStatsParamsForm = class(TBasicStatsForm)
ButtonBevel: TBevel;
CloseBtn: TButton;
ComputeBtn: TButton;
ResetBtn: TButton;
HelpBtn: TButton;
ParamsPanel: TPanel;
ParamsSplitter: TSplitter;
procedure CloseBtnClick(Sender: TObject);
procedure ComputeBtnClick(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure HelpBtnClick(Sender: TObject);
procedure ResetBtnClick(Sender: TObject);
private
protected
FAutoSized: Boolean;
procedure AdjustConstraints; virtual;
procedure Compute; virtual;
function Validate(out AMsg: String; out AControl: TWinControl): Boolean; virtual;
public
constructor Create(AOwner: TComponent); override;
end;
var
BasicStatsParamsForm: TBasicStatsParamsForm;
implementation
{$R *.lfm}
uses
Math,
Utils;
{ TBasicStatsParamsForm }
constructor TBasicStatsParamsForm.Create(AOwner: TComponent);
begin
inherited;
CloseBtn.OnClick := @CloseBtnClick;
ComputeBtn.OnClick := @ComputeBtnClick;
ResetBtn.OnClick := @ResetBtnClick;
HelpBtn.OnClick := @HelpBtnClick;
end;
procedure TBasicStatsParamsForm.AdjustConstraints;
begin
// be be overridden
end;
procedure TBasicStatsParamsForm.CloseBtnClick(Sender: TObject);
begin
Close;
end;
procedure TBasicStatsParamsForm.Compute;
begin
// to be overridden
end;
procedure TBasicStatsParamsForm.ComputeBtnClick(Sender: TObject);
var
msg: String;
C: TWinControl;
begin
if not Validate(msg, C) then
begin
if Assigned(C) and C.CanFocus then
C.SetFocus;
ErrorMsg(msg);
exit;
end;
Compute;
end;
procedure TBasicStatsParamsForm.FormActivate(Sender: TObject);
var
w: Integer;
begin
if FAutoSized then
exit;
w := MaxValue([ResetBtn.Width, ComputeBtn.Width, CloseBtn.Width]);
ResetBtn.Constraints.MinWidth := w;
ComputeBtn.Constraints.MinWidth := w;
CloseBtn.Constraints.MinWidth := w;
AdjustConstraints;
if Width < Constraints.MinWidth then Width := 1; // enforce constraints
if Height < Constraints.MinHeight then Height := 1;
Position := poDesigned;
FAutoSized := true;
end;
procedure TBasicStatsParamsForm.FormCreate(Sender: TObject);
begin
InitForm(self);
Reset;
end;
procedure TBasicStatsParamsForm.HelpBtnClick(Sender: TObject);
begin
if ContextHelpForm = nil then
Application.CreateForm(TContextHelpForm, ContextHelpForm);
ContextHelpForm.HelpMessage((Sender as TButton).Tag);
end;
procedure TBasicStatsParamsForm.ResetBtnClick(Sender: TObject);
begin
Reset;
end;
function TBasicStatsParamsForm.Validate(out AMsg: String;
out AControl: TWinControl): Boolean;
begin
AMsg := '';
AControl := nil;
Result := true;
end;
end.