Ich weiß nicht inwiefern das jetzt passt.
Aber ich musste auch mal auf ein privat Feld zugreifen und zwar wollte ich damals von TField den TFieldType zur Laufzeit ändern ohne es in jeden Formular anzupassen. Das ganze habe ich über die
RTTI realisiert, dass klappt soweit ich weiß nur bei private Feldern die nicht strict private sind.
Delphi-Quellcode:
procedure ChangeProperty(Sender: TObject);
var
Context : TRttiContext;
RttiField : TRttiField;
RttiValue : TValue;
begin
RttiField := Context.GetType(TField).GetField('FDataType');
RttiValue := TValue.FromOrdinal(TypeInfo(TFieldType), 24); //24 ftWideString
RttiField.SetValue(Sender, RttiValue);
end;