Форум: "Компоненты";
Текущий архив: 2005.08.07;
Скачать: [xml.tar.bz2];
Внизкаким образом выполнить метод компанента? Найти похожие ветки
← →
stud © (2004-08-12 12:27) [0]if (newclientf.MethodAddress(d_client.Fields[i].FieldName+"change"))<>nil then
если я нашел, что такой метод существует, как мне его выполнить?
← →
Petr V. Abramov © (2004-08-12 12:45) [1]см. TMethod
реализация
tmyproc = procedure - это 4 байта, адрес точки входа в ф-цию
реализация
tmyproc = procedure of object - 8 байт, адрес точки входа + указатель на экземпляр класса, тот самый self, который является неявным параметром любого метода
Типы TMethod и procedure of object можно смело приводить друг к другу.
← →
stud © (2004-08-12 13:05) [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;
не работает
← →
stud © (2004-08-12 13:22) [3]все работает. спасибо
Страницы: 1 вся ветка
Форум: "Компоненты";
Текущий архив: 2005.08.07;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.043 c