Вверх ↑
Этот топик читают: Гость
Разработчик
Ответов: 26135
Рейтинг: 2126
#31: 2009-05-02 17:02:32 ЛС | профиль | цитата
Надо будет еще массив строк на привязку к индексам перевести, но там проблема с утечкой памяти появляется, пока ищу откуда.
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#32: 2009-05-03 00:40:47 ЛС | профиль | цитата
nesco, есть таблица.

Add(MainForm,2953706,56,56)
{
link(onCreate,7779073:doFor,[])
}
Add(PopupMenuEx,12306466,266,161)
{
Menu=#8:Добавить|8:Изменить|6:Печать|
Bitmaps=[]
}
Add(IndexToChanel,10264077,161,147)
{
link(onEvent2,3865964:doEvent1,[])
}
Add(MTStrTbl,7442668,98,126)
{
Left=15
Top=10
Width=225
Height=145
Name="spr"
Columns=#5:1=180|
Grid=0
Point(onDblClick)
link(onDblClick,10264077:doEvent,[])
}
Add(Hub,3865964,210,154)
{
link(onEvent2,12306466:doPopupHere,[])
}
Add(MST_RowAction,8560653,189,70)
{
MSTControl="spr"
}
Add(For,7779073,105,70)
{
Start=1
End=10
link(onEvent,8545589:doStrCat,[])
}
Add(StrCat,8545589,147,70)
{
Str1="Строка "
link(onStrCat,8560653:doRowAction,[])
}
Нужно:
1. При клике ПКМ вызвать PopUpMenuEX без выделения строки в таблице, а в PopUpMenuEX отключить пункт "Исправить"
2. Виделить строку в таблице и, при вызове PopUpMenuEx, в PopUpMenuEx включить пункт "Исправить"

Вопросы:
1. Зачем выделяется строка в таблице и при одинарном и двойном клике и при ЛКМ и ПКМ ? Непонятно.
2. Как обойти тригер включениявыключения пункта в PopUpMenuEX



карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26135
Рейтинг: 2126
#33: 2009-05-03 02:53:13 ЛС | профиль | цитата
Tad писал(а):
Зачем выделяется строка в таблице и при одинарном и двойном клике и при ЛКМ и ПКМ

1. Это вопросы не ко мне, а к KOLy
2. Плохо смотрим испраления и добавления в компонентах -- в PopUpMenuEX (и в MenuEx, тоже) давно уже есть точки doIdxCheck, doIdxEnable, doIdxVisible и doIdxHighLite, которые работают не триггерно, а по значению из потока


------------ Дoбавленo в 03.16:
Может так


Add(MainForm,974285,315,140)
{
Width=797
link(onCreate,7779073:doFor,[])
}
Add(PopupMenuEx,12306466,672,343)
{
Menu=#8:Добавить|8:Изменить|6:Печать|9:Исправить|
Bitmaps=[]
Point(doidxVisible)
Point(onEndPopup)
}
Add(MTStrTbl,7442668,420,252)
{
Left=15
Top=10
Width=225
Height=145
Name="spr"
Columns=#5:1=180|
Grid=0
Point(onDblClick)
Point(onMouseMove)
link(onMouseMove,5613300:doEvent,[(468,286)(468,335)])
}
Add(Hub,3865964,546,336)
{
link(onEvent1,483192:doCompare,[(570,342)(570,314)])
link(onEvent2,12306466:doPopupHere,[])
}
Add(MST_RowAction,8560653,469,154)
{
MSTControl="spr"
}
Add(For,7779073,371,154)
{
Start=1
End=10
link(onEvent,8545589:doStrCat,[])
}
Add(StrCat,8545589,420,154)
{
Str1="Строка "
link(onStrCat,8560653:doRowAction,[])
}
Add(MT_AddData,8408733,329,364)
{
link(onAdd,12306466:doidxVisible,[])
link(Data1,1731279:Value,[])
link(Data2,12493228:Value,[(342,331)(377,331)])
}
Add(Memory,1731279,329,287)
{
Default=Integer(3)
}
Add(Memory,12493228,371,273)
{
Default=Integer(0)
}
Add(DoData,12721348,672,308)
{
Data=Integer(1)
link(onEventData,12493228:doValue,[(713,314)(713,246)(299,246)(299,279)])
}
Add(IndexToChanel,5613300,483,329)
{
link(onEvent2,3865964:doEvent1,[])
}
Add(Hub,15723565,630,371)
{
link(onEvent1,12493228:doClear,[(664,377)(664,437)(299,437)(299,286)])
link(onEvent2,6343594:doWork3,[(656,384)(656,428)(312,428)])
}
Add(HubEx,6343594,308,357)
{
link(onEvent,8408733:doAdd,[])
}
Add(Hub,6223376,630,308)
{
link(onEvent1,12721348:doData,[])
link(onEvent2,6343594:doWork1,[(656,321)(656,231)(312,231)])
}
Add(If_else,483192,581,308)
{
Type=4
Op2=Integer(0)
link(onTrue,6223376:doEvent1,[])
link(onFalse,15723565:doEvent1,[(621,321)(621,377)])
link(Op1,7442668:Index,[(587,299)(433,299)])
}

карма: 22

0
Ответов: 16884
Рейтинг: 1239
#34: 2009-05-03 12:40:24 ЛС | профиль | цитата
nesco, давай с другой стороны.
Есть MST_SelectRow.
Почему не снимается выделение (схема твоя) хотя от кнопки работает нормально.
code_13110.txt
nesco писал(а):
Плохо смотрим испраления и добавления
Не спорю.
Хотя MST_SelectRow.doSelect=Выделяет строку таблицы.
Что подавать на вход ?
Открываешь коды - оказывается индекс.
Ну и напиши: doSelect=При подаче индекса, выделяет строку таблицы.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1code_13110.txt [2.3KB] [492]
Разработчик
Ответов: 26135
Рейтинг: 2126
#35: 2009-05-03 12:51:28 ЛС | профиль | цитата
Tad писал(а):
Почему не снимается выделение (схема твоя) хотя от кнопки работает нормально

А потому, что надо подождать, пока отрабатаются события таблицы. Для этого что делаем... правильно, ставим таймер. Вот только не говори, что не знал. Для установки фокуса на Edit, такая схема тоже применяется.



Add(PopupMenuEx,12306466,574,301)
{
Menu=#9:Исправить|8:Добавить|6:Печать|
Bitmaps=[]
Point(doidxVisible)
Point(doIdxEnabled)
link(MenuItemIdx,14433970:doEvent,[])
}
Add(MST_SelectRow,10510836,812,308)
{
AutoMakeVisible=1
MSTControl="spr"
}
Add(Button,8966113,637,350)
{
Left=190
Top=180
Data=Integer(2)
link(onClick,12142592:doWork3,[(683,356)])
}
Add(Memory,1418436,756,308)
{
Default=Integer(-1)
link(onData,10510836:doSelect,[])
}
Add(IndexToChanel,14433970,637,301)
{
Count=3
link(onEvent2,12142592:doWork1,[(683,314)])
link(onEvent3,12142592:doWork2,[])
}
Add(HubEx,12142592,679,308)
{
link(onEvent,16223024:doTimer,[])
}
Add(Timer,16223024,700,315)
{
Interval=25
Enable=1
AutoStop=1
link(onTimer,1418436:doClear,[])
}


Описания к точкам MST_SelectRow поправил
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#36: 2009-05-03 13:02:12 ЛС | профиль | цитата
nesco писал(а):
А потому, что надо подождать, пока отрабатаются события таблицы. Для этого что делаем... правильно, ставим таймер. Вот только не говори, что не знал.
Знал и поставил. Только отработка событий должна контролироваться в компоненте, а "нэ лизты попэрэд батька у пэкло" . И откуда ты знаешь, что 25 мс хватит на все случаи жизни
nesco писал(а):
Описания к точкам MST_SelectRow поправил
оперативно.

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 16884
Рейтинг: 1239
#37: 2009-05-12 12:06:36 ЛС | профиль | цитата
MTStrTbl

@Grid=True - показать рамку, False - скрыть рамку|14|1|True,False
Не понятно о какой рамке идет речь. С каких это пор Grid переводится как рамка, а не сетка, решетка ?

P.S. А вообще ( если по честному ) пожалел, что решил применить MTStrTbl.
Не в обиду. Компонент хороший, но... пока найдешь нужную точку в одном из 17-ти "кубиков" - сто раз вспомнишь и маму, и бога.
События отрабатываются как хотят, а не в нужном порядке. Нет дистиплины.
А ставить внешние таймеры - не дело.
Т.е. при создании компонента небыло ни четкого плана ни разработки алгоритма работы компонента.
Не обижайся.
Одно только свойство Table.Style убивает наповал.


карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26135
Рейтинг: 2126
#38: 2009-05-12 12:25:36 ЛС | профиль | цитата
Tad писал(а):
События отрабатываются как хотят, а не в нужном порядке

А я, разве, не привязан к KOL и стандартному контролу ListView, я не смогу отрабатывать раньше события, которые система сама считет нужным отрабатывать по-другому.

Tad писал(а):
при создании компонента небыло ни четкого плана ни разработки алгоритма работы компонента

У меня прекрасно все алгоритмы стыкуются, а под вас, уважаемый, я алгоритмы подстраивать не собирался

Tad писал(а):
Одно только свойство Table.Style убивает наповал

И чем убивает, интересно

Я уже писал, что под всех пользователей не подстроишься, одному нужно одно, а другому -- другое. А ради одного пользователя, которому что-то не понравилось, я персональный KOL под этот компонент писать не собираюсь, да и не факт, что система захочет отрабатывать все так, как нам хочется.
------------ Дoбавленo в 12.31:
TadTad, вот ты такой умный, возьми и сделай похожий компонент но с событиями, которые нужны тебе и в той же очереди, как тебе нужны, а мы посмотрим.
карма: 22

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