Вверх ↑
Этот топик читают: Гость
Ответов: 278
Рейтинг: 6
#1: 2016-12-27 16:06:20 ЛС | профиль | цитата
Нужно чтобы -1 выдавалось только если кликнули мимо меню, а не как в примере - всегда.
В тесте последовательность событий не такая как в описании к точкам. (Может так нельзя делать тест?) И пример все равно не работает.
схема


Add(MainForm,2953706,133,217)
{
Width=440
Height=421
Position=1
}
Add(PopupMenuEx,4659031,252,273)
{
Menu=#1:0|1:1|1:2|1:3|
GutterLineOn=1
Frame=1
Font=[Arial,10,0,0,204]
BackColor=-16777201
BackColorImage=-16777201
SelColorLight=15780518
SelColorDark=15780518
LineColorLight=-16777201
LineColorDark=-16777201
Bitmaps=[]
Point(Array)
Point(onEndPopup)
Point(MenuItemName)
Point(onSelectItem)
Point(onKeyDown)
link(MenuItemIdx,10961863:doWork2,[])
link(onEndPopup,7745236:doEvent,[(322,286)(322,349)])
link(MenuItemName,1377773:doClear,[])
}
Add(Memory,1377773,420,280)
{
Default=Integer(0)
}
Add(IndexToChanel,7745236,420,343)
{
Point(Index)
link(onEvent2,7462539:doData,[])
link(Index,1377773:Value,[])
}
Add(Button,3938938,133,266)
{
Left=335
Top=340
Data=Integer(1)
Point(doCaption)
link(onClick,316698:doEvent1,[])
}
Add(DoData,7462539,476,350)
{
Data=Integer(-1)
link(onEventData,10961863:doWork3,[(548,356)])
}
Add(Hub,316698,182,266)
{
link(onEvent1,1377773:doValue,[(369,272)(369,286)])
link(onEvent2,4659031:doPopupHere,[])
}
Add(ListBox,15708746,588,273)
{
Left=20
Top=15
Width=370
Height=315
}
Add(PopupMenuEx,3063381,427,434)
{
Menu=#1:0|1:1|1:2|1:3|
GutterLineOn=1
Frame=1
Font=[Arial,10,0,0,204]
BackColor=-16777201
BackColorImage=-16777201
SelColorLight=15780518
SelColorDark=15780518
LineColorLight=-16777201
LineColorDark=-16777201
Bitmaps=[]
Point(Array)
Point(onEndPopup)
Point(MenuItemName)
link(MenuItemIdx,7830252:doWork1,[])
link(onEndPopup,7830252:doWork2,[])
link(MenuItemName,7830252:doWork3,[])
}
Add(Button,16686735,371,434)
{
Left=130
Top=340
Width=195
Caption="тест очередности каналов"
Point(doCaption)
link(onClick,3063381:doPopupHere,[])
}
Add(Message,11039738,539,434)
{
}
Add(ChanelToIndex,7830252,483,434)
{
Count=3
link(onIndex,11039738:doMessage,[])
}
Add(HubEx,10961863,544,273)
{
link(onEvent,15708746:doAdd,[])
}


Только с таймером получилось, а это не хорошо
схема


Add(MainForm,2953706,175,119)
{
Width=437
Height=421
Position=1
}
Add(PopupMenuEx,3024250,231,175)
{
Menu=#1:0|1:1|1:2|1:3|
GutterLineOn=1
Frame=1
Font=[Arial,10,0,0,204]
BackColor=-16777201
BackColorImage=-16777201
SelColorLight=15780518
SelColorDark=15780518
LineColorLight=-16777201
LineColorDark=-16777201
Bitmaps=[]
Point(Array)
Point(onEndPopup)
link(MenuItemIdx,12213244:doEvent1,[])
link(onEndPopup,15824252:doTimer,[(291,188)(291,216)])
}
Add(Button,1833120,175,175)
{
Left=335
Top=345
Point(doCaption)
link(onClick,3024250:doPopupHere,[])
}
Add(Timer,15824252,350,210)
{
Interval=50
Enable=1
AutoStop=1
link(onTimer,2148264:doData,[])
}
Add(DoData,2148264,406,210)
{
Data=Integer(-1)
link(onEventData,4425283:doWork3,[(464,216)])
}
Add(Hub,12213244,308,175)
{
link(onEvent1,4425283:doWork2,[])
link(onEvent2,15824252:doStop,[(336,188)(336,223)])
}
Add(ListBox,15708746,504,175)
{
Left=20
Top=25
Width=370
Height=315
}
Add(HubEx,4425283,460,175)
{
link(onEvent,15708746:doAdd,[])
}


Подскажите как сделать сие без таймера
карма: 0

0
Разработчик
Ответов: 26115
Рейтинг: 2126
#2: 2016-12-27 23:09:14 ЛС | профиль | цитата
igr писал(а):
Подскажите как сделать сие без таймера

Никак. В описании к точке же ясно написано
onEndPopup=Событие происходит всякий раз после закрытия выпадающего меню, но перед MenuItemIdx и MenuItemName
Те в одной очереди событий сначала происходит событие onEndPopup, а затем MenuItemIdx.
Таймер же переводит событие onEndPopup в следующую очередь событий.

Редактировалось 1 раз(а), последний 2016-12-27 23:10:09
карма: 22

0
Ответов: 278
Рейтинг: 6
#3: 2016-12-28 11:18:09 ЛС | профиль | цитата
nesco, понял, спасибо.
Почему есть разница в тестах?


Add(MainForm,5412266,455,126)
{
Width=440
Height=447
Position=1
}
Add(ListBox,15708746,630,175)
{
Left=20
Top=15
Width=370
Height=315
}
Add(PopupMenuEx,3063381,518,245)
{
Menu=#1:0|1:1|1:2|1:3|
GutterLineOn=1
Frame=1
Font=[Arial,10,0,0,204]
BackColor=-16777201
BackColorImage=-16777201
SelColorLight=15780518
SelColorDark=15780518
LineColorLight=-16777201
LineColorDark=-16777201
Bitmaps=[]
Point(Array)
Point(onEndPopup)
Point(MenuItemName)
link(MenuItemIdx,7830252:doWork1,[])
link(onEndPopup,7830252:doWork2,[])
link(MenuItemName,7830252:doWork3,[])
}
Add(Button,16686735,462,245)
{
Left=195
Top=375
Width=195
Caption="тест очередности каналов"
Point(doCaption)
link(onClick,3063381:doPopupHere,[])
}
Add(Message,11039738,630,245)
{
}
Add(ChanelToIndex,7830252,574,245)
{
Count=3
link(onIndex,11039738:doMessage,[])
}
Add(PopupMenuEx,7522497,511,175)
{
Menu=#1:0|1:1|1:2|1:3|
GutterLineOn=1
Frame=1
Font=[Arial,10,0,0,204]
BackColor=-16777201
BackColorImage=-16777201
SelColorLight=15780518
SelColorDark=15780518
LineColorLight=-16777201
LineColorDark=-16777201
Bitmaps=[]
Point(Array)
Point(onEndPopup)
Point(MenuItemName)
link(MenuItemIdx,16455085:doWork1,[])
link(onEndPopup,16455085:doWork2,[])
link(MenuItemName,16455085:doWork3,[])
}
Add(Button,9110120,455,175)
{
Left=195
Top=345
Width=195
Caption="тест очередности каналов"
Point(doCaption)
link(onClick,7522497:doPopupHere,[])
}
Add(ChanelToIndex,16455085,567,175)
{
Count=3
link(onIndex,15708746:doAdd,[])
}

карма: 0

0
Разработчик
Ответов: 26115
Рейтинг: 2126
#4: 2016-12-28 13:34:37 ЛС | профиль | цитата
igr писал(а):
Почему есть разница в тестах?

Да ХЗ, почему Message так отрабатывает последовательность событий -- сначала последнее, затем все остальные.
карма: 22

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