krieg ich einfach nicht hin.
Ich will verschiedene
DB-Controls (DBEdit, DBCheckbox...) auf einem Formular dynamisch über
RTTI konfigurieren. Dazu frage suche ich meine Komponente über den Namen, frage, ob die Komponente eine Property mit dem Namen DataField hat und will anschliessend den Wert des Datafields über
RTTI setzen (Ebenso dann DataSource).
Im Testprojekt kann ich width oder Hint setzen, aber eben nicht DataField. DataField direkt zuweisen geht aber wieder.
Code:
procedure TForm10.Button1Click(Sender: TObject);
var
context: trtticontext;
aType: TRttiType;
aproperty: Trttiproperty;
aValue: TValue;
begin
aType := context.GetType(TDBEdit);
for aproperty in aType.GetProperties do
begin
if aproperty.name = 'Width' then
begin
aproperty.SetValue(DBEdit2, TValue.From(250)); //geht
end;
if aproperty.name = 'DataField' then
begin
aproperty.SetValue(DBEdit2, TValue.From('ARTIKEL')); // Datafield zuweisen geht nicht
end;
if aproperty.name = 'Hint' then
begin
aproperty.SetValue(DBEdit2, TValue.From('Artikel')); // Hint zuweisen geht
end;
end;
end;
procedure TForm10.Button2Click(Sender: TObject);
begin
DBEdit2.DataField:='Artikel'; //String direkt zuweisen funktioniert
end;