Moin Raik,
da ich jetzt das nicht ganz verstanden habe (
), versuche ich das noch einmal mit einem Beispiel zu zeigen, was ich in diesem Zusammenhang unter Wrapper verstehe:
Delphi-Quellcode:
type
// Die Klasse von der es nur eine bestimmte Anzahl Instanzen geben darf
TMyControl = class(TObject)
// was so alles dazugehört
end;
// Die Verwaltungsklasse für TMyControl Objekte
TMyControlWrapper = class(TObject)
private
FList : array of TMyControl;
FiCount : integer;
public
// Bedingtes hinzufügen eines TMyControl Objektes
function Add(...) : boolean;
// Prüfen, ob erlaubt
function IsNewControlAllowed(...) : boolean;
property MyControl[<Irgendein Index>] : TMyControl ...
end;
TForm1 = class(TForm)
//...
private
FControlWrapper : TMyControlWrapper;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
// Einmaliges erzeugen des Wrappers
FControlWrapper := TMyControlWrapper.Create;
end;
function TMyControlWrapper.Add(...);
begin
Result := IsNewControlAllowed(...);
if not Result then exit;
// ... hinzufügen eines neuen TMyControl Objektes
end;
Man könnte bei Add auch den Index zurückgeben, dabei dann, z.B., -1 für einen Fehler.
Es wird also kein Create aufgerufen wenn nicht wirklich etwas hinzugefügt werden darf.