Galkov, это-ж вроде бы твоя идея и была.
А насчёт интерфейсов, наверно можно обойтись и меньшими изменениями.
1. Как предлагает Galkov делаем ##handle не числом, а объектным типом (data_object). При этом мы избавимся от цикла в ##hselect, повысив его быстродействие. Появляется возможность использовать "чужие" ##handle, чего я когда-то очень хотел
2. Чтобы решить проблему возникновения событий "там, где надо", делаем у TEditMulti поле FCaller, которое будет устанавливать на себя (и сохранять перед этим в локальной переменной) MultiElement перед вызовом точки у EditMulti. Соответственно EditMulti должен пользоваться этим полем вместо родителя при генерации событий наружу.
3. Чтобы использовать ##handle как интерфейс, нужно сделать у мультика верхнюю точку (назовём условно ##hobject). При этом, если эта точка имеет связь, каждое обращение к неслужебной точке будет вызывать запрос через эту точку "интерфейса" и выбор данного мультика.
При этом никаких изменений в среде не нужно.
Разве что, можно всё-таки разрешить вставлять ссылку на мультик внутрь себя, но только в динамическом режиме и автоматически выставлять верхнюю точку ##hobject.
Ответов: 2125
Рейтинг: 159
|
|||
карма: 1 |
|