unit UnitUML; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TStorage=class; TController=class; // TFormBase = class (TForm) public _Controller: TController; Button1: TButton; procedure ConnectController(var aController:TController); end; // TController=class public _Border: TFormBase; _Storage: TStorage; constructor Create; procedure ConnectBorder(var aBorder:TFormBase); procedure ConnectStorage(var aStorage:TStorage); end; // TStorage=class public _Controller: TController; procedure ConnectController(var aController:TController); end; var FormBase: TFormBase; Controller: TController; Storage: TStorage; implementation {$R *.dfm} constructor TController.Create; begin inherited Create; end; procedure TController.ConnectBorder(var aBorder: TFormBase); begin Self._Border:= aBorder; end; procedure TController.ConnectStorage(var aStorage:TStorage); begin Self._Storage:= aStorage; end; procedure TStorage.ConnectController(var aController:TController); begin Self._Controller:= aController; end; procedure TFormBase.ConnectController(var aController:TController); begin Self._Controller:= aController; end; // {procedure TStorage.SaveCoordToFile(x,y: integer); var f: TextFile; name,str: string; begin name:='Test.txt'; AssignFile(f,name); ReWrite(f); str:=IntToStr(x)+' '+IntToStr(y); Write(f,str); CloseFile(f); end; } // {procedure TController.Exit; begin //ShowMessage('Controller Exit'); _Storage.SaveCoordToFile(Border.Left,Border.Top); _Border.Close; end; } // {* procedure TFormBase.Button1Click(Sender: TObject); begin Controller.Exit; end; //*} { procedure TBorder.Button1Click(Sender: TObject); begin _Controller.Exit; end; } //*} {procedure TFormBase.Button1Click(Sender: TObject); begin Border.Button1Click(nil); end; } end.