Danke,
ich musste zwar noch kleine Änderungen machen, aber das eigentliche Problem hast du gelöst...danke.
Hier für diejenigen, die es interessiert, der geänderte Code:
Delphi-Quellcode:
function getSubInstance (aRoot: TComponent; aName: string): TObject;
var ii,p : Integer;
SL : TStringlist;
Info : PPropInfo;
begin
SL := TStringList.Create;
p:=pos('.',aName);
while p>0 do
begin
sl.add(copy(aname,1,p-1));
delete(aname,1,p);
p:=pos('.',aName);
end;
sl.add(aName);
if (SL.Count = 0) then
Result := nil
else
begin
Result := aRoot.FindComponent(SL[0]);
ii := 1;
while (Assigned(Result) and (ii < SL.Count)) do
begin
Info := GetPropInfo(Result.classinfo, SL[ii]);
if ((Info = nil) or (Info.PropType^.Kind <> tkClass)) then
Result := nil
else
begin
Result := TObject(GetOrdProp(Result, Info));
Inc (ii);
end;
end;
end;
SL.Free;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
TFont(getsubinstance(self,'button1.font')).Style:=[fsBold,fsitalic];
end;
Gruß Frank