![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
MethodName
TStas © (2012-05-20 10:19:00)Есть класс наследник TComponent. Он в дельфи пока не установлен. Для его метода MethodName возвращает пустую строку. Это так и должно быть? Область видимости метода пробовал менять, лучше от этого не стало.
TStas (2012-05-21 23:14:00) [1]Проблемы я решил, всё работает, просто мне решение кажется некрасчивым. Смысл был в том, что быстрым клавишам, но не стандартным ShortCut, а, например, чтобы можно было, как в Дельфи, текст сдвигать Ctrl + Shift + I или что-то подобное делать. А конечной задачей было всё это в dfm запихать. Решил незатейливо: поскольку методов, которые клавишам могут быть назначены, не так-то и много, то запихал их имена в TStringList, а потом Case StringList.IndexOf(AName) of ... Всё чудно работает, пишется/читается из dfm, но как-то не красиво это.
>И что? Ну да, эти методы вызываются при работе с потоками (в частности, при чтении DFM). Но разве это означает, что их нельзя вызывать с другими целями? Не означает, конечно. //Вот-вот. Особенно, что для dfm мне и было нужно.
Юрий Зотов (2012-05-20 22:13:00) [2]
> Anatoly Podgoretsky © (20.05.12 21:56) [10]
И что? Ну да, эти методы вызываются при работе с потоками (в частности, при чтении DFM). Но разве это означает, что их нельзя вызывать с другими целями? Не означает, конечно.
Anatoly Podgoretsky (2012-05-20 21:56:00) [3]> Юрий Зотов (20.05.2012 19:21:09) [9]
Я ударение поставил на streaming
Загрузка и запись из/в потока
Юрий Зотов (2012-05-20 19:21:00) [4]
> Anatoly Podgoretsky © (20.05.12 18:52) [8]
Совершенно верно, вызывается "изнутри". Но никто не запрещает вызвать и "снаружи", если надо. Задачи ведь разные бывают.
Anatoly Podgoretsky (2012-05-20 18:52:00) [5]> Юрий Зотов (20.05.2012 18:46:07) [7]
Вообще то
> MethodName is used internally by the streaming system.
Юрий Зотов (2012-05-20 18:46:00) [6]> TStas (20.05.12 10:19)
Сорри, не сразу понял вопрос. MethodName - это для published-методов, сиречь для обработчиков событий (поскольку другие методы пихать в published просто незачем).
Из хелпа:
If Address does not point to a published method of the object, MethodName returns an empty string.
Юрий Зотов (2012-05-20 17:57:00) [7]
> TStas (20.05.12 10:19)
MethodName, MethodAddress и т.п. определяются по таблице методов, адрес которой хранится в VMT. Откуда же среда возьмет эту самую VMT, если компонент еще не установлен? Ее еще не существует.
TStas (2012-05-20 11:42:00) [8]Понял :(
Anatoly Podgoretsky (2012-05-20 10:57:00) [9]Из справки
There should be no need to call MethodName directly.
TStas (2012-05-20 10:38:00) [10]А как установлю, появится?
brother (2012-05-20 10:37:00) [11]имхо, имеется ввиду в дизайнер...
Anatoly Podgoretsky (2012-05-20 10:31:00) [12]Что значит не установлен