Показать сообщение отдельно
  #5  
Старый 18.03.2024, 18:34
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от brotherirk
а как ее использовать если передавать MaskEdit1.text?
нашел вот: https://translated.turbopages.org/pr...erty-in-delphi
но как в функцию передать параметром MaskEdit1.text?

Ну, там об использовании 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). Тут все зависит от конкретной задачи.
Ответить с цитированием