Ну, там об использовании RTTI и говорится. Т.е. именно то, что в моем примере используется. Для MaskEdit1.text надо делать так:
Код:
uses TypInfo;
procedure TForm1.test(obj : TObject; prop : String; value : String);
begin
SetPropValue(obj,prop,value);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
test(Edit1,'text','aaa');
test(Label1,'caption','bbb');
end;
собственно, обертка test здесь и не сильно нужна в таком варианте. Просто если нужна более сложная логика, но которую можно написать общим кодом под разные компоненты, то тогда такая обертка может быть полезной (к SetPropValue есть парная функция GetPropValue для чтения значения св-ва по имени).
Цитата:
Если надо изменить свойство объекта, почему не передать в параметрах сам этот объект? Этому что-то мешает?
|
Ну, например, может мешать то, что в разных компонентах некоторые св-ва называются немного по разному (см пример с TEdit и TLabel). Тут все зависит от конкретной задачи.