Вверх ↑
Этот топик читают: Гость
Разработчик
Ответов: 4698
Рейтинг: 426
#1: 2012-04-20 14:20:05 ЛС | профиль | цитата
Два компонента на технологии Менеджеров. Реализуют собой типичную для ООП связку объект-слушатель.
На деле является обычным заменителем хаба, только без мешающихся связей.
Зачем? Лично мне это помогает в реализации собственных контролов на базе GDI графики элементами HiAsm. Очень нервируют эти постоянные брейки:

Пример использования в архиве.

Последняя версия (1.1): eventmanager.rar
архив

Опа, порезалось в заголовке топика все, с символа "&" Название топика: "EventSource & EventListener".
карма: 10
4
файлы: 3breaks_fu.png [686B] [1702], listeners.rar [2.8KB] [512], eventmanager.rar [3.9KB] [571]
Голосовали:CriDos, sаmakacd, Konst, login
Ответов: 1841
Рейтинг: 369
#2: 2012-04-20 14:42:12 ЛС | профиль | цитата
Добавил к своей коллекции ещё 2 элемента

Будем проверять на баго-устойчивость
карма: 1
0
Разработчик
Ответов: 26155
Рейтинг: 2127
#3: 2012-04-20 14:46:42 ЛС | профиль | цитата
Мне че-то название не шибко понравилось -- слушатель, не очень звучит
карма: 22

0
Гость
Ответов: 17029
Рейтинг: 0
#4: 2012-04-20 14:49:16 правка | ЛС | профиль | цитата


Редактировалось 5 раз(а), последний 2021-06-22 14:45:48
карма: 0

0
Разработчик
Ответов: 26155
Рейтинг: 2127
#5: 2012-04-20 14:50:40 ЛС | профиль | цитата
56.gprs.mts.ru писал(а):
это не ко мне, не я такое название выдумал

А кто, компонент-то твой, ты и отвечаешь за его название
карма: 22

0
Ответов: 1536
Рейтинг: 176
#6: 2012-04-20 15:08:53 ЛС | профиль | цитата
Assasin, что-то похожее было у nesco с расширенной глобальной переменной, да к тому же, там наглядно видно имя этой переменной, а тут, если их будет много "глаза разбегутся". Вот только не понятно, почему он (компонент) до сих пор в подполье (если он вообще ещё там). Я им пользуюсь, но выкладывать свои схемы с ним, по понятным причинам, уже не могу. Нужно дополнительно делать на него ссылку.
карма: 1
Не так страшна ошибка, как опасность её не заметить.

0
Разработчик
Ответов: 26155
Рейтинг: 2127
#7: 2012-04-20 15:42:33 ЛС | профиль | цитата
ser_davkin писал(а):
что-то похожее было у nesco с расширенной глобальной переменной

От нее отказались же, вроде
------------ Дoбавленo в 15.35:
ser_davkin писал(а):
да к тому же, там наглядно видно имя этой переменной, а тут, если их будет много "глаза разбегутся"

Я не увидел никакого отличия от LineBreak-a, ни простого, ни расширенного, которые, ко всему прочему, не содержат никакого кода, а являются виртуальными компонентами. К тому же, нет никаких именований связей, что напрочь ухудшает читабельность схемы.
Хотя есть отличие -- этот компонент работает на выход, а не на вход. Но тогда вместо иконки ему надо прописывать имя, вот тогда будет что-то похожее на именованный компонент
------------ Дoбавленo в 15.40:
Короче, компонент интересный, но требует некой доработки в плане визуализации и нормального названия, а не "слушатель" (где вы это название только нашли )
------------ Дoбавленo в 15.42:
И почему именно EventListener, а не EventDistantion, которое подходит, кстати, больше по назначению
карма: 22

1
Голосовали:ser_davkin
Ответов: 1821
Рейтинг: 168
#8: 2012-04-20 16:18:18 ЛС | профиль | цитата
nesco, Listener'ы больше всего встречаются в Java (setClickListener, setCloseListener, и т.д.)
карма: 5

0
Разработчик
Ответов: 26155
Рейтинг: 2127
#9: 2012-04-20 17:23:04 ЛС | профиль | цитата
sаmakacd писал(а):
больше всего встречаются в Java

У нас тут что, Java, или как
ИМХО, EventDistantion -- удаленное событие, подходит больше
------------ Дoбавленo в 17.19:
Assasin писал(а):
Очень нервируют эти постоянные брейки

Твои компоненты на выходе занимают гораздо больше места, чем несчастные брейки. Вот входные брйеки, согласен, заменяются одним компонентом
------------ Дoбавленo в 17.23:
Кстати, а почему не работает вот эта схема, где же тогда замена хабу



Add(MainForm,2953706,56,49)
{
Caption="EventSourceTest"
Position=1
}
Add(EventSource,1,189,91)
{
Name="event"
}
Add(EventListener,7442214,308,91)
{
EventSource="event"
link(onEvent,6059433:doText,[])
}
Add(Button,13017671,56,91)
{
Left=15
Top=25
Data=String(Button pressed)
link(onClick,8516207:doWork2,[])
}
Add(Edit,5789273,56,140)
{
Left=15
Top=55
Width=140
Text="Text"
link(onChange,13407058:doString,[])
}
Add(Label,6059433,357,91)
{
Left=190
Top=25
}
Add(HubEx,8516207,147,91)
{
link(onEvent,1:doInformListeners,[])
}
Add(FormatStr,13407058,105,140)
{
DataCount=1
Mask="Text: "%1""
link(onFString,8516207:doWork3,[(151,146)])
}
Add(Label,11360450,357,133)
{
Left=245
Top=25
}
Add(EventListener,3957006,308,133)
{
EventSource="event"
link(onEvent,11360450:doText,[])
}

карма: 22

0
Разработчик
Ответов: 4698
Рейтинг: 426
#10: 2012-04-20 17:23:12 ЛС | профиль | цитата
nesco писал(а):
У нас тут что, Java, или как

Да не кипятись ты так, nesco, не на войне же
nesco писал(а):
А кто, компонент-то твой, ты и отвечаешь за его название

Это то да, я. Я не стал париться с выбором названия и сделал его общепринятым.
nesco писал(а):
ИМХО, EventDistantion -- удаленное событие, подходит больше

ИМХО, получается бред. Предлагаю другое название: EventReciever - получатель события.
nesco писал(а):
Короче, компонент интересный, но требует некой доработки в плане визуализации

М... Я думаю, делать вместо иконки название - не лучший вариант, самый идеальный (и более рутинный для пользователя) - в LH-подсказке отображать имя элемента прямо над ним.
nesco писал(а):
К тому же, нет никаких именований связей, что напрочь ухудшает читабельность схемы.

А от таких вот десятков связей читабельность улучшится?
Assasin писал(а):

nesco писал(а):
Я не увидел никакого отличия от LineBreak-a, ни простого, ни расширенного, которые, ко всему прочему, не содержат никакого кода, а являются виртуальными компонентами.

Это замена хабу, причем приблизительно равная по скорости исполнения (см. реализацию компонентов). Сейчас состряпаю тест на скорость и сравню.
карма: 10
0
Разработчик
Ответов: 26155
Рейтинг: 2127
#11: 2012-04-20 17:24:17 ЛС | профиль | цитата
Assasin, почитай-ка последнюю редакцию моего поста и ответь на мой вопрос про схему
карма: 22

0
Разработчик
Ответов: 4698
Рейтинг: 426
#12: 2012-04-20 17:24:52 ЛС | профиль | цитата
nesco писал(а):
Кстати, а почему не работает вот эта схема, где же тогда замена хабу

Это называется "упс" Забыл сделать вызов буфферизированного события: _hi_onEvent_
карма: 10
0
Разработчик
Ответов: 26155
Рейтинг: 2127
#13: 2012-04-20 17:25:05 ЛС | профиль | цитата
Assasin писал(а):
А от таких вот десятков связей читабельность улучшится?

Занимают места немногим больше, чем один компонент, а вот на выходе твои компоненты будут занимать кучу места
карма: 22

0
Разработчик
Ответов: 4698
Рейтинг: 426
#14: 2012-04-20 17:25:40 ЛС | профиль | цитата
nesco писал(а):
а вот на вохде твои компоненты будут занимать кучу места

Это в плане ОЗУ?
карма: 10
0
Разработчик
Ответов: 26155
Рейтинг: 2127
#15: 2012-04-20 17:31:23 ЛС | профиль | цитата
Assasin писал(а):
Это в плане ОЗУ?

Нет, это в плане места на схеме -- один узкий брейк против твоего квадрата
------------ Дoбавленo в 17.28:
Assasin писал(а):
получается бред

Нет, не бред, кстати -- это общепринято использовать пару Source -> Distantion
------------ Дoбавленo в 17.29:
Assasin писал(а):
в LH-подсказке отображать имя элемента прямо над ним.

еще куча места на схема на подсказки. Одно время стремились к сокращению размеров, ты же пошел обратным путем, а тебе ведь сказали конкретно
ser_davkin писал(а):
да к тому же, там наглядно видно имя этой переменной, а тут, если их будет много "глаза разбегутся"

------------ Дoбавленo в 17.31:
Assasin, не спорь -- твой компонент не имеет никаких имен, и имеет одинаковые иконки для разных событий -- херня вобщем получается с читабельностью, брейк на порядок лучше воспринимается. Брйку не нужны подсказки, а твой компонент с подсказками ввобще ужас схемный будет
карма: 22

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)