Das FindComponent für die TComponents kann aus einem simplen Grund funkionieren - alle Komponenten stehen in der Componentenliste ihres Owners. FindComponent sucht also in der Liste einfach nach einer Componente mit dem passenden Namen und gibt diese zurück.
Etwas ähnliches könnte man sich für Objekte aufbauen, indem man einfach jedes neue Objekt in eine TList einträgt die man dann später durchsuchen kann.
Solange der Constructor immer gleich aussieht liesse sich das so realisieren:
Delphi-Quellcode:
type
TMyObjectClass = class of TObject;
var
ObjectList: TList;
(..)
function CreateAndRegister(ObjClass: TMyObjectClass): TObject;
begin
if not Assigned(ObjectList) then
ObjectList := TList.Create;
Result := ObjClass.Create;
ObjectList.Add(Result);
end;
procedure FreeAndNilAndForget(Object: TObject);
var
Index: Integer;
begin
if Object <> nil then
begin
Index := ObjectList.IndexOf(Object);
if Index > -1 then
ObjectList.Delete(Index);
Object.Free;
Object := nil;
end;
end;
Alternativ dazu erweiterst Du den Constructor/Destructor des Objects so das es sich selber ein-und austrägt.
Wie bereits gesagt wurde: Erst wenn man eine gemeinsame Eigenschaft wie z.B. den nmen bei TComponent hat macht diese Liste Sinn, sonst fehlt natürlich das Suchkriterium.
MfG,
Tryer