|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
Передать свойство как параметр в процедуру
как передать свойство объекта в свою процедуру для дальнейшего изменения?
Код:
... obj.proc(var AObject : Tobject); begin if AObject is TMaskEdit then (Aobject as TMaskEdit).text:= '1'; end; ... obj.proc(MaskEdit1.text); или лучше так: Код:
obj.proc(var txt: TMaskedText); begin txt:= '1'; end; Последний раз редактировалось Admin, 18.03.2024 в 09:21. |
#2
|
|||
|
|||
вот так не подойдет:
Код:
uses TypInfo; procedure TForm1.test(prop : String); begin SetPropValue(Edit1,prop,'aaaaa'); end; procedure TForm1.Button1Click(Sender: TObject); begin test('Text'); end; |
#3
|
|||
|
|||
а как ее использовать если передавать MaskEdit1.text?
нашел вот: https://translated.turbopages.org/pr...erty-in-delphi но как в функцию передать параметром MaskEdit1.text? |
#4
|
|||
|
|||
Цитата:
Ну, там об использовании 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; Цитата:
Ну, например, может мешать то, что в разных компонентах некоторые св-ва называются немного по разному (см пример с TEdit и TLabel). Тут все зависит от конкретной задачи. |
#5
|
|||
|
|||
Да спасибо за уточнения, так и буду делать!
|
#6
|
|||
|
|||
но если есть идеи для конкретного случая:
но как в функцию передать параметром MaskEdit1.text и там изменить text? то буду благодарен... |
#7
|
|||
|
|||
Цитата:
Код:
procedure ChangeText(Edit: TMaskEdit); begin Edit.Text := 'aaaaaa'; end; procedure TForm1.Button1Click(Sender: TObject); begin ChangeText(MaskEdit1); end; |