По мотивам - Ещё про примеси. Выделяем класс-примесь TmsIvalidator. Только код
Теперь стало:
https://bitbucket.org/ingword/mindstream/src/e075ee861e2d86776e652391e443782b21da4071/msDiagrammsController.pas?at=MS-7_Lulin_Upgrade
Теперь стало:
https://bitbucket.org/ingword/mindstream/src/e075ee861e2d86776e652391e443782b21da4071/msDiagrammsController.pas?at=MS-7_Lulin_Upgrade
unit msDiagrammsController; interface uses {$Include msIvalidator.mixin.pas} , FMX.Objects, FMX.ListBox, FMX.StdCtrls, FMX.Graphics, msDiagramms, System.Types, FMX.Forms, System.Classes, System.UITypes, msCoreObjects, msWatchedObjectInstance, msInterfacedRefcounted ; type TmsIvalidatorParent = TmsInterfacedRefcounted; {$Include msIvalidator.mixin.pas} TmsDiagrammsController = class(TmsIvalidator) private imgMain: TPaintBox; cbShapes: TComboBox; cbDiagramm: TComboBox; btAddDiagramm: TButton; btSaveDiagramm: TButton; btLoadDiagramm: TButton; FDiagramms: TmsDiagramms; procedure cbDiagrammChange(Sender: TObject); procedure imgMainResize(Sender: TObject); procedure cbShapesChange(Sender: TObject); procedure btAddDiagrammClick(Sender: TObject); procedure imgMainMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single); procedure btSaveDiagrammClick(Sender: TObject); procedure btLoadDiagrammClick(Sender: TObject); function pm_GetCurrentDiagramm: TmsDiagramm; protected procedure DoInvalidateDiagramm(aDiagramm: TmsDiagramm); override; public constructor Create(aImage: TPaintBox; aShapes: TComboBox; aDiagramm: TComboBox; aAddDiagramm: TButton; aSaveDiagramm: TButton; aLoadDiagramm: TButton); destructor Destroy; override; procedure Clear; procedure ProcessClick(const aStart: TPointF); property CurrentDiagramm: TmsDiagramm read pm_GetCurrentDiagramm; procedure DrawTo(const aCanvas: TCanvas); end;//TmsDiagrammsController implementation uses {$Include msIvalidator.mixin.pas} , System.SysUtils, FMX.Types ; {$Include msIvalidator.mixin.pas} // TmsDiagrammsController constructor TmsDiagrammsController.Create(aImage: TPaintBox; aShapes: TComboBox; aDiagramm: TComboBox; aAddDiagramm: TButton; aSaveDiagramm: TButton; aLoadDiagramm: TButton); begin inherited Create; imgMain := aImage; cbShapes := aShapes; cbDiagramm := aDiagramm; btAddDiagramm := aAddDiagramm; btSaveDiagramm := aSaveDiagramm; btLoadDiagramm := aLoadDiagramm; FDiagramms := TmsDiagramms.Create(cbDiagramm.Items); FDiagramms.AllowedShapesToList(cbShapes.Items); cbShapes.ItemIndex := FDiagramms.CurrentShapeClassIndex; cbDiagramm.ItemIndex := FDiagramms.CurrentDiagrammIndex; cbDiagramm.OnChange := cbDiagrammChange; imgMain.OnResize := imgMainResize; cbShapes.OnChange := cbShapesChange; btAddDiagramm.OnClick := btAddDiagrammClick; btSaveDiagramm.OnClick := btSaveDiagrammClick; btLoadDiagramm.OnClick := btLoadDiagrammClick; imgMain.OnMouseDown := imgMainMouseDown; imgMain.Align := TAlignLayout.alClient; end; procedure TmsDiagrammsController.DoInvalidateDiagramm(aDiagramm: TmsDiagramm); begin if (imgMain <> nil) then if (aDiagramm = CurrentDiagramm) then imgMain.Repaint; end; function TmsDiagrammsController.pm_GetCurrentDiagramm: TmsDiagramm; begin Result := FDiagramms.CurrentDiagramm; end; procedure TmsDiagrammsController.btLoadDiagrammClick(Sender: TObject); var l_D : ImsDiagramm; l_I : Integer; begin l_I := FDiagramms.CurrentDiagrammIndex; FDiagramms.DeSerialize; cbDiagramm.Clear; for l_D in FDiagramms.Items do cbDiagramm.Items.Add((l_D.toObject As TmsDiagramm).Name); cbDiagramm.ItemIndex := l_I; end; procedure TmsDiagrammsController.btSaveDiagrammClick(Sender: TObject); begin FDiagramms.Serialize; end; procedure TmsDiagrammsController.cbDiagrammChange(Sender: TObject); begin FDiagramms.SelectDiagramm(cbDiagramm.ItemIndex); cbShapes.ItemIndex := FDiagramms.CurrentShapeClassIndex; end; procedure TmsDiagrammsController.imgMainResize(Sender: TObject); begin end; procedure TmsDiagrammsController.cbShapesChange(Sender: TObject); begin FDiagramms.SelectShape(cbShapes.Items, cbShapes.ItemIndex); end; procedure TmsDiagrammsController.btAddDiagrammClick(Sender: TObject); begin FDiagramms.AddDiagramm(cbDiagramm.Items); cbDiagramm.ItemIndex := FDiagramms.CurrentDiagrammIndex; cbShapes.ItemIndex := FDiagramms.CurrentShapeClassIndex; end; destructor TmsDiagrammsController.Destroy; begin FreeAndNil(FDiagramms); inherited; end; procedure TmsDiagrammsController.Clear; begin FDiagramms.Clear; end; procedure TmsDiagrammsController.ProcessClick(const aStart: TPointF); begin FDiagramms.ProcessClick(aStart); end; procedure TmsDiagrammsController.DrawTo(const aCanvas: TCanvas); begin CurrentDiagramm.DrawTo(aCanvas); end; procedure TmsDiagrammsController.imgMainMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single); begin Self.ProcessClick(TPointF.Create(X, Y)); end; end.
Комментариев нет:
Отправить комментарий