unit UnitUML; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TStorage=class; TController=class; // TFormBase = class abstract (TForm) Button1: TButton; procedure Button1Click(Sender: TObject); // procedure Button1Click(Sender: TObject);//virtual; abstract; end; // TBorder = class (TFormBase) public _Controller: TController; procedure Button1Click(Sender: TObject); procedure Connect(_Controller_: pointer); end; // TController=class public _Border: TBorder; _Storage: TStorage; procedure Connect(_Border_: pointer; _Storage_: pointer); procedure Exit; end; // TStorage=class public _Controller: TController; procedure Connect(_Controller_: pointer); procedure SaveCoordToFile(x,y: integer); end; var FormBase: TFormBase; Border: TBorder; Controller: TController; Storage: TStorage; implementation {$R *.dfm} // procedure TBorder.Connect(_Controller_: pointer); begin _Controller:=_Controller_; end; // procedure TController.Connect(_Border_: pointer; _Storage_: pointer); begin _Border:=_Border_; _Storage:=_Storage_; end; // procedure TStorage.Connect(_Controller_: pointer); begin _Controller:=_Controller_; end; // procedure TStorage.SaveCoordToFile(x,y: integer); var f: TextFile; name,str: string; begin ShowMessage('Storage SaveToFile '+IntToStr(x)+' '+IntToStr(y)); name:='privet.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.