Вверх ↑
Этот топик читают: Гость
Ответов: 321
Рейтинг: 10
#1: 2019-01-04 05:03:01 ЛС | профиль | цитата
Привет ребята. Подскажите пожалуйста, правильное ли поведение у MTStrTbl при onSelect ?!
То есть, если я выбираю строку через MST_SelectRow, то генерируется не только событие onSelect, но и onClick, что в моем понимании не есть правда.
Событие onClick можно отключить, но в моем случае, мне оно нужно для вызова PopupMenuEx.
И если я искусственно выбираю активной какую-либо строку, то всплывает мое меню, хотя я ничего не кликал.


Add(MainForm,2953706,581,245)
{
Width=571
Height=367
link(onCreate,1302391:doEnum,[])
}
Add(MST_SelectRow,2529304,672,77)
{
@Color=255
MSTControl="mtst"
Point(IndexSelect)
}
Add(MTStrTbl,3870454,672,126)
{
@Color=255
Width=555
Height=328
Align=5
Font=[MS Sans Serif,8,0,0,204]
Name="mtst"
Layout="vert_1"
HeightScale=100
Columns=#4:1_70|4:2_70|4:3_70|
NColorRow=0
FlatScroll=1
ColDelimiter="_"
ColumnClick=1
Point(onSelect)
link(onClick,7020429:doMessage,[])
link(onSelect,7315602:doMessage,[(754,160)(754,174)])
}
Add(PopupMenuEx,3275482,854,126)
{
Menu=#1:1|1:-|1:2|1:(|1:3|1:4|1:)|1:-|1:5|1:-|6:Отмена|
ImgSize=0
GutterLineOn=1
Bitmaps=[]
}
Add(StrList,602236,672,203)
{
Strings=#14:sdfsdf;aaaaa;0|14:fzsdfzs;bbbb;3|13:sdfszz;cccc;2|14:sdfszz;ddddd;0|14:sdfszz;eeeee;1|14:sdfszz;fffff;3|14:fzsdfzs;gggg;2|13:sdfszz;hhhh;0|15:fzsdfzs;iiiii;3|15:sdfszz;jjjjjj;1|
}
Add(MultiStrPart,8180548,742,259)
{
Count=3
link(onSplit,7591723:doAdd,[(783,265)(783,247)(730,247)(730,314)])
}
Add(MT_AddData,7591723,742,308)
{
Count=3
link(onAdd,3841903:doRowAction,[])
link(Data1,8180548:Part1,[])
link(Data2,8180548:Part2,[])
link(Data3,8180548:Part3,[])
}
Add(MST_RowAction,3841903,791,308)
{
@Color=255
MSTControl="mtst"
}
Add(ArrayEnum,1302391,686,259)
{
link(onItem,8180548:doSplit,[])
link(Array,602236:Array,[])
}
Add(Button,5295786,623,77)
{
Left=345
Top=180
Width=170
Caption="doSelect строку с idx5"
Data=Integer(5)
link(onClick,2529304:doSelect,[])
}
Add(Message,7315602,805,168)
{
Message="Я сраболо после OnSelect"
}
Add(Message,7020429,805,126)
{
Message="Я сраболо после OnClick"
link(onMessage,3275482:doPopupHere,[])
}

карма: 1

0
Разработчик
Ответов: 26300
Рейтинг: 2146
#2: 2019-01-04 13:04:21 ЛС | профиль | цитата
Master4eG писал(а):
И если я искусственно выбираю активной какую-либо строку, то всплывает мое меню, хотя я ничего не кликал.

Так и будет, это отрабатывает установка свойства LVCurItem, оно имитирует клик. Причем, это делается в библиотеке, а не у меня в коде. Если не нравится поведение onClick, то можно использовать onMouseDown

Редактировалось 1 раз(а), последний 2019-01-04 13:06:58
карма: 22

0
Ответов: 321
Рейтинг: 10
#3: 2019-01-04 22:12:54 ЛС | профиль | цитата
nesco писал(а):
Так и будет, это отрабатывает установка свойства LVCurItem, оно имитирует клик. Причем, это делается в библиотеке, а не у меня в коде. Если не нравится поведение onClick, то можно использовать onMouseDown

Ну я читал темы 2010 года, там у кого-то что то подобное было, только со strTbl. Там вы писали на уровне kol редактировать надо, якобы сложно все и особо не нужно.

Он onMouseDown ставить таймер, чтобы сначала выбирало строку, а потом действие ?! блин помню решение было, толи indexToChanel ставили, толи я что-то путаю.
Подскажите, это хорошее решение ?!
TrackSelect можно оставить False ?!
Add(MainForm,13092135,826,273)
{
Width=571
Height=367
link(onCreate,1302391:doEnum,[])
}
Add(MST_SelectRow,2529304,483,245)
{
@Color=255
MSTControl="mtst"
Point(IndexSelect)
link(onSelectRow,3870454:doSetFocus,[])
}
Add(MTStrTbl,3870454,539,238)
{
@Color=255
Width=555
Height=328
Align=5
Font=[MS Sans Serif,8,0,0,204]
Name="mtst"
Layout="vert_1"
HeightScale=100
Columns=#4:1_70|4:2_70|4:3_70|
NColorRow=0
FlatScroll=1
ColDelimiter="_"
ColumnClick=1
EnableOnClick=1
Point(onSelect)
Point(onMouseDown)
Point(ItemAtPos)
Point(doSetFocus)
link(onClick,13909607:doMessage,[(607,244)(607,167)])
link(onMouseDown,9235711:doCompare,[])
}
Add(StrList,602236,917,231)
{
Strings=#14:sdfsdf;aaaaa;0|14:fzsdfzs;bbbb;3|13:sdfszz;cccc;2|14:sdfszz;ddddd;0|14:sdfszz;eeeee;1|14:sdfszz;fffff;3|14:fzsdfzs;gggg;2|13:sdfszz;hhhh;0|15:fzsdfzs;iiiii;3|15:sdfszz;jjjjjj;1|
}
Add(MultiStrPart,8180548,987,287)
{
Count=3
link(onSplit,7591723:doAdd,[(1028,293)(1028,275)(975,275)(975,342)])
}
Add(MT_AddData,7591723,987,336)
{
Count=3
link(onAdd,3841903:doRowAction,[])
link(Data1,8180548:Part1,[])
link(Data2,8180548:Part2,[])
link(Data3,8180548:Part3,[])
}
Add(MST_RowAction,3841903,1036,336)
{
@Color=255
MSTControl="mtst"
}
Add(ArrayEnum,1302391,931,287)
{
link(onItem,8180548:doSplit,[])
link(Array,602236:Array,[])
}
Add(Button,5295786,434,245)
{
Left=345
Top=180
Width=170
Caption="doSelect строку с idx5"
Data=Integer(5)
link(onClick,2529304:doSelect,[])
}
Add(PopupMenuEx,15052215,686,273)
{
Menu=#1:1|1:-|1:2|1:(|1:3|1:4|1:)|1:-|1:5|1:-|6:Отмена|
ImgSize=0
GutterLineOn=1
Bitmaps=[]
link(MenuItemIdx,4317304:doStrCat,[])
}
Add(If_else,9235711,588,273)
{
Op2=Integer(1)
link(onTrue,5926314:doTimer,[])
}
Add(Timer,5926314,637,273)
{
Interval=50
Enable=1
AutoStop=1
link(onTimer,15052215:doPopupHere,[])
}
Add(StrCat,4317304,742,273)
{
Str1="PopupMenuEx работал с индексом - "
link(onStrCat,13092135:doCaption,[])
link(Str2,3870454:ItemAtPos,[(755,261)(789,261)(789,330)(573,330)])
}
Add(Message,13909607,637,161)
{
}


Редактировалось 1 раз(а), последний 2019-01-04 22:14:25
карма: 1

0
Разработчик
Ответов: 26300
Рейтинг: 2146
#4: 2019-01-05 01:08:50 ЛС | профиль | цитата
Master4eG писал(а):
Подскажите, это хорошее решение ?!

Таймер "расфазирует" события, тч все правильно. Вместо таймера можно еще применить DifferedEvent, результат будет тот же, но без задержки, если хочется с задержкой, то тогда только таймер. А вместо ifElse действительно можно поставить indexToChanel с выходом со второй точки (первая будет соответствовать 0, те ЛКМ)

Редактировалось 1 раз(а), последний 2019-01-05 01:11:57
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#5: 2019-01-05 08:38:52 ЛС | профиль | цитата
Master4eG,
Add(MT_String,1917686,623,245)
{
}
Add(MainForm,13092135,455,224)
{
Width=571
Height=367
link(onCreate,1302391:doEnum,[])
}
Add(MST_SelectRow,2529304,126,189)
{
@Color=255
MSTControl="mtst"
Point(IndexSelect)
link(onSelectRow,3870454:doSetFocus,[])
}
Add(MTStrTbl,3870454,182,182)
{
@Color=255
Width=555
Height=328
Align=5
Font=[MS Sans Serif,8,0,0,204]
Name="mtst"
Layout="vert_1"
HeightScale=100
Columns=#4:1_70|4:2_70|4:3_70|
NColorRow=0
FlatScroll=1
ColDelimiter="_"
ColumnClick=1
Point(onSelect)
Point(onMouseDown)
Point(ItemAtPos)
Point(doSetFocus)
link(onMouseDown,16081303:doEvent,[])
}
Add(StrList,602236,497,182)
{
Strings=#14:sdfsdf;aaaaa;0|14:fzsdfzs;bbbb;3|13:sdfszz;cccc;2|14:sdfszz;ddddd;0|14:sdfszz;eeeee;1|14:sdfszz;fffff;3|14:fzsdfzs;gggg;2|13:sdfszz;hhhh;0|15:fzsdfzs;iiiii;3|15:sdfszz;jjjjjj;1|
}
Add(MST_RowAction,3841903,609,224)
{
@Color=255
MSTControl="mtst"
}
Add(ArrayEnum,1302391,511,238)
{
link(onItem,13523998:doMTString,[])
link(Array,602236:Array,[])
}
Add(Button,5295786,77,189)
{
Left=345
Top=180
Width=170
Caption="doSelect строку с idx5"
Data=Integer(5)
link(onClick,2529304:doSelect,[])
}
Add(PopupMenuEx,15052215,343,224)
{
Menu=#1:1|1:-|1:2|1:(|1:3|1:4|1:)|1:-|1:5|1:-|6:Отмена|
ImgSize=0
GutterLineOn=1
Bitmaps=[]
link(MenuItemIdx,4317304:doStrCat,[])
}
Add(StrCat,4317304,392,224)
{
Str1="PopupMenuEx работал с индексом - "
link(onStrCat,13092135:doCaption,[])
link(Str2,3870454:ItemAtPos,[(405,212)(433,212)(433,264)(216,264)])
}
Add(Message,13909607,294,189)
{
Message="Левая кнопка"
}
Add(MT_String,13523998,560,224)
{
link(onResult,3841903:doRowAction,[])
}
Add(IndexToChanel,16081303,245,217)
{
Count=3
link(onEvent1,13909607:doMessage,[(286,223)(286,195)])
link(onEvent2,15052215:doPopupHere,[])
link(onEvent3,5958008:doMessage,[])
}
Add(Message,5958008,294,231)
{
Message="Клик колёсиком"
}


Редактировалось 1 раз(а), последний 2019-01-05 16:26:36
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
5
Сообщение
...
Прикрепленные файлы
(файлы не залиты)