![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
каким образом выполнить метод компанента? [D7, Win2k]
stud © (2004-08-12 12:27:00)if (newclientf.MethodAddress(d_client.Fields[i].FieldName+'change'))<>nil then
если я нашел, что такой метод существует, как мне его выполнить?
stud (2004-08-12 13:22:00) [1]все работает. спасибо
stud (2004-08-12 13:05:00) [2]сделал так
type
texecutemetod = procedure of object;
var
i : integer;
event_call : TMethod;
executemetod : texecutemetod;
...................
event_call.Data:=newclientf.FindComponent(d_client.Fields[i].FieldName);
event_call.Code:=(newclientf.MethodAddress(d_client.Fields[i].FieldName+'change'));
executemetod:=texecutemetod(event_call);
executemetod;
не работает
Petr V. Abramov (2004-08-12 12:45:00) [3]см. TMethod
реализация
tmyproc = procedure - это 4 байта, адрес точки входа в ф-цию
реализация
tmyproc = procedure of object- 8 байт, адрес точки входа + указатель на экземпляр класса, тот самый self, который является неявным параметром любого метода
Типы TMethod и procedure of objectможно смело приводить друг к другу.