Einzelnen Beitrag anzeigen

bogdan

Registriert seit: 15. Apr 2013
77 Beiträge
 
#7

AW: Object Property Values zur Laufzeit erzeugen

  Alt 30. Okt 2013, 13:21
Ich benutze die XE3 Version.

SetPropValue(Label1, 'Caption', 'test'); funktioniert!
SetObjectProp(Label1, 'Font', Functionsaufruf mit TObject als Rückgabewert); funktioniert!

Leider stehe ich bei meinem Ansatz auf dem Schlauch:

zb. Font.Size ändern
aufgerufen mit OnClick Methode:
SetPropertyObject('Font', 'Size', '12');
Delphi-Quellcode:
procedure SetPropertyObject(APropName, APropSub, AValue: String);
var aClass : TPersistentClass;
    aObject : TObject;
    x, i : Integer;
    PropInfo: PPropInfo;
    List: TPropList;
begin
  RegisterClasses([TFont, TMargins, TPen]);
  aClass := FindClass('T' + APropName);
  if aClass.InheritsFrom(TObject) then aObject := aClass.Create; // wäre ja das gleiche wie: Font := TFont.Create;

  x := GetPropList(PTypeInfo(aObject.ClassInfo), tkAny, @List);

  for i := 0 to x - 1 do
    if List[i]^.Name = APropSub then
    begin
      SetObjectProp(aObject, APropSub, AValue); // dachte könnte man so lösen, "ähnlich" wie Font.Size := AValue;
    end;
end;
Nur das AValue ein String ist und SetObjectProp hier einen TObject erwartet.

Dann habe ich mit SetPropValue(aObject, APropSub, AValue); probiert. Aber hier bekomme ich eine Exception.

Vielleicht ist mein Ansatz komplett falsch?
  Mit Zitat antworten Zitat