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?