Allerdings kann ich schon sagen, dass ich den dynamischen Frame schon einen Namen zugewiesen habe und dieser nach dem erzeugen auf Form 1 immer noch nicht über FindComponent Schleife zu finden ist.
FindComponennt ist ja auch eine Funktion und kein Schleifenzähler. Alles, was die tut: sie durchsucht einen angegebenen Container nach
einer bestimmten Komponente. ZB. so:
Delphi-Quellcode:
function TFormFoo.Searchcomponent(Value: TObject):TObject;
var i: integer; Finded: TComponent;
begin
For i := 0 to Self.ComponentCount -1 do
begin
if Self.Components[i].Name = Value.Name then
Result := Self.Compoents[i];
end;
end;
Kurze Zusatzfrage. Ich habe eine kleine Funktion welche den Namen des Frames zurückgeben sollte wenn ein Button (befindet sich auf dem frame) gedrückt wird. Leider gibt dieser nichts zurück.
Delphi-Quellcode:
function GetFrameName : String:
Begin
Result := TFrame(self).Name;
end;
Kann ja auch nicht. Erst muss TFrame(self).Name auch etwas zugewiesen werden.
Du solltest dies aber so erreichen können:
Delphi-Quellcode:
function TFormFoo.Searchcomponent(Value: TObject):TObject;
var i: integer; [s]Finded: TComponent[/s];
begin
For i := 0 to Self.ComponentCount -1 do
begin
if Self.Components is TFrame then
begin
if Self.Components[i].Name = Value.Name then
Result := Self.Compoents[i];
end;
end;
end;
function TFormFoo.GetFrameName((Value: String) : String:
var Value: TFrame;
Begin
ComponentName := Searchcomponent(Value)
Result := TFrame(self).Name;
end;
Statt in Searchcomponent alle Components zu durchlaufen, könntest du da auch Findkomponent aufrufen und dessen Rückgabewert auswerten. Allerdings hättest du mit Searchcomponent viel mehr Möglichkeiten. Du könntest in einem weiteren Parameter den Container angeben, der durchsucht werden soll oder in einer Liste alle Komponenten eines bestimmten Tips zurückgeben oder ...
Gruss
Delbor
PS: Da ich selbst
FindComponent nie verwende, ist mir ein wesentlicher Schitzer unterlaufen: FindComponent ist keine eigenständige Funktion, sondern ein Methode von TPanel und Co. und damit ist der Container, der durchsucht werden soll, schon angegeben.