powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как через rtti назначить свойству свой метод
4 сообщений из 4, страница 1 из 1
Как через rtti назначить свойству свой метод
    #39559841
ChambaVamba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Собственно вопрос таков, как через rtti назначить свойству свой метод? Например, для кнопки установить свойство Caption получается, а вот присвоить свойству OnClick свой метод не выходит. Код прикладываю.

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
...

// Метод, где свойству присваиваю строковое значение
procedure TForm4.Bind(AObject: TObject; APropName: string; AValue: string);
var
  vProp: TRttiProperty;
  vVal: TValue;
begin
  vVal := AValue;
  vProp := TRttiContext.Create.GetType(AObject.ClassType).GetProperty(APropName);
  vProp.SetValue(AObject, vVal);
end;

// Метод, где свойству присваиваю свой метод (AEvent)
procedure TForm4.Bind(AObject: TObject; APropName: string; AEvent: TNotifyEvent);
var
  vProp: TRttiProperty;
  vVal: TValue;
begin
  TValue.Make(@AEvent, TypeInfo(TMethod), vVal);
  vProp := TRttiContext.Create.GetType(AObject.ClassType).GetProperty(APropName);
  vProp.SetValue(AObject, vVal);  // Вот здесь вылетает Invalid class typecast
end;


procedure TForm4.btn1Click(Sender: TObject);
begin
  Bind(btn2, 'Caption', 'aaa');  // Присваиваю свойству Caption строковое значение  
  Bind(btn2, 'OnClick', MyClickProc);  // Пытаюсь присвоить свойству OnClick метод MyClickProc
end;

procedure TForm4.MyClickProc(Sender: TObject);
begin
  ShowMessage('Hello');
end;
...
Рейтинг: 0 / 0
Как через rtti назначить свойству свой метод
    #39559912
Tactical Nuclear Penguin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: pascal
1.
2.
  vProp := TRttiContext.Create.GetType(AObject.ClassInfo).GetProperty(APropName);
  vProp.SetValue(AObject, TValue.From<TNotifyEvent>(AEvent));
...
Рейтинг: 0 / 0
Как через rtti назначить свойству свой метод
    #39559916
ChambaVamba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Tactical Nuclear Penguin
Код: pascal
1.
2.
  vProp := TRttiContext.Create.GetType(AObject.ClassInfo).GetProperty(APropName);
  vProp.SetValue(AObject, TValue.From<TNotifyEvent>(AEvent));



Ай спасибо, выручил.
...
Рейтинг: 0 / 0
Как через rtti назначить свойству свой метод
    #39560114
Няшик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как через rtti назначить свойству свой метод
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]