Thema: Delphi klasseninstanz finden

Einzelnen Beitrag anzeigen

Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#7

Re: klasseninstanz finden

  Alt 6. Jun 2006, 10:54
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
  Mit Zitat antworten Zitat