Ich mache das immer der Art:
Delphi-Quellcode:
type
TAdditionVisualComponent = class
public:
procedure resultChangeEvent(result: integer); virtual; abstract;
end;
type
TAddition = class
[...]
private:
visualComponent: TAdditionVisualComponent;
end;
// ---
function TAddition.Addition(Zahl1, Zahl2: Integer): Integer;
begin
[...]
if self.visualComponent <> nil then
self.visualComponent.resultChangeEvent(Zahl1 + Zahl2);
end;
Konkrete Implementation der visuellen Repräsentation im Presenter/in der View (ich verwende eine abgewandelte Form des MVC):
Delphi-Quellcode:
type
TAdditionVC = class(TAdditionVisualComponent);
public:
procedure resultChangeEvent(result: integer); override;
end;
// ---
procedure TAdditionVC.resultChangeEvent(result: integer);
begin
Form1.Edit1.Text = IntToStr(result);
end;
Der Aufruf des ganzen erfolgt aus der
GUI über den Controller (falls vorhanden zuvor über den Presenter):
MyController.Add(StrToInt(Edit2.Text), StrToInt(Edit3.Text));
Jetzt kommt es darauf an, wie man den Controller mit den Business-Objekten verbinden möchte.
Der einfachste Fall (der Controller kennt nur ein Objekt):
Delphi-Quellcode:
type
Controller = class;
private:
MyAddition: TAddition;
end;
// ---
procedure Controller.Add(Zahl1, Zahl2: integer);
begin
MyAddition.Addition(Zahl1, Zahl2);
end;
MyAddition
Das ist das, was ich aus dem Stehgreif auf die Schnelle zusammentragen kann.