Вверх ↑
Этот топик читают: Гость
Ответов: 356
Рейтинг: 31
#1: 2010-03-01 13:32:48 ЛС | профиль | цитата
Компонент MTStrTbl версии 2.22

После включения MultiSelect, реакцию точки onMouseUp на ПКМ/ЛКМ приходится ждать достаточно долго, нормально только на средней (колесо мыши).
После выключения MultiSelect, реакция нормализуется только на пустом поле, на строке не меняется.

Проверьте, кому не трудно, может это опять только у меня.

Make(delphi)
ver(4.04 build 183)
Add(MainForm,2953706,301,105)
{
link(onActivate,15275062:doClear,[])
}
Add(Debug,6798775,525,126)
{
}
Add(MTStrTbl,5144574,469,98)
{
Left=280
Top=105
Align=5
Name="1"
Columns=#1:1|
MultiSelect=0
Point(onMouseUp)
link(onMouseUp,6798775:doEvent,[])
}
Add(MST_RowAction,15395190,413,98)
{
MSTControl="1"
}
Add(Memory,15275062,357,98)
{
Default=String(Audi)
link(onData,15395190:doRowAction,[])
}
P.S. Многие Точки, имеющиеся на вкладке Свойства, в ECreator (Methods) не нашёл.
HiAsm v4.04 build 183 (28.02.10, 21:24:29)
SVN ревизия 2624
WinXP SP3
карма: 0

0
Разработчик
Ответов: 26113
Рейтинг: 2126
#2: 2010-03-01 13:34:49 ЛС | профиль | цитата
olDjeka писал(а):
Многие Точки, имеющиеся на вкладке Свойства, в ECreator (Methods) не нашёл

И не найдешь, они универсальные для все интерфейсных элементов
карма: 22

0
Ответов: 356
Рейтинг: 31
#3: 2010-03-01 13:39:10 ЛС | профиль | цитата
nesco писал(а):
они универсальные

Ясно, бум знать.
карма: 0

0
Разработчик
Ответов: 26113
Рейтинг: 2126
#4: 2010-03-01 13:41:56 ЛС | профиль | цитата
olDjeka писал(а):
реакция нормализуется только на пустом поле, на строке не меняется

Оно так всегда и работало, причем, на любой таблице класса ListView. Для нормальной работы с режимом onMouseUp используется точка onMouseMove, например, вот так



Add(MainForm,14680810,182,182)
{
link(onActivate,15275062:doClear,[])
}
Add(Debug,6798775,462,203)
{
}
Add(MTStrTbl,5144574,350,175)
{
Left=280
Top=105
Align=5
Name="1"
Columns=#1:1|
Point(onMouseMove)
Point(onMouseUp)
link(onMouseMove,5216968:doEvent,[])
}
Add(MST_RowAction,15395190,294,175)
{
MSTControl="1"
}
Add(Memory,15275062,238,175)
{
Default=String(Audi)
link(onData,15395190:doRowAction,[])
}
Add(IndexToChanel,5216968,406,203)
{
link(onEvent1,12664764:doWork2,[])
link(onEvent2,12664764:doWork3,[(452,216)])
}
Add(HubEx,12664764,448,203)
{
link(onEvent,6798775:doEvent,[])
}

карма: 22

1
Голосовали:olDjeka
Ответов: 356
Рейтинг: 31
#5: 2010-03-01 14:01:28 ЛС | профиль | цитата
nesco писал(а):
используется точка onMouseMove, например, вот так

Это намного лучше, жаль только что при клике на пустом поле выделение пропадает
карма: 0

0
Разработчик
Ответов: 26113
Рейтинг: 2126
#6: 2010-03-01 14:14:28 ЛС | профиль | цитата
olDjeka писал(а):
что при клике на пустом поле выделение пропадае

А так и должно быть, клик на пустом поле присваивает текущий индекс выбору равным -1. Можно сохранить выбор через массив, переловить -1 и по нему возвратить выбор на место
карма: 22

1
Голосовали:olDjeka
Ответов: 356
Рейтинг: 31
#7: 2010-03-01 14:29:31 ЛС | профиль | цитата
Счас ещё заметил:
Если включить Redaction, то после двойного клика ЛКМ выделение вместо синего становится серым
карма: 0

0
Разработчик
Ответов: 26113
Рейтинг: 2126
#8: 2010-03-01 14:32:31 ЛС | профиль | цитата
olDjeka писал(а):
выделение вместо синего становится серым

Все правильно, множественный выбор остается но курсор улетает в -1, те, в никуда
карма: 22

0
Ответов: 356
Рейтинг: 31
#9: 2010-03-01 14:41:22 ЛС | профиль | цитата
nesco писал(а):
множественный выбор остается

Дак так происходит и когда он отключён, но включено редактирование


Make(delphi)
ver(4.04 build 183)
Add(MainForm,14680810,287,126)
{
link(onActivate,15275062:doClear,[])
}
Add(MST_RowAction,15395190,399,119)
{
MSTControl="1"
}
Add(Memory,15275062,343,119)
{
Default=String(Audi)
link(onData,15395190:doRowAction,[])
}
Add(MTStrTbl,15424021,455,119)
{
Left=460
Top=125
Align=5
Name="1"
Columns=#1:1|
Redaction=0
}
карма: 0

0
Разработчик
Ответов: 26113
Рейтинг: 2126
#10: 2010-03-01 15:21:10 ЛС | профиль | цитата
olDjeka писал(а):
но включено редактирование

Происходит это по двйному клику на пустом поле в режиме редактирования (двойной клик -- вход в режим редактирования, а индекс передается -1, и черете что получается), смотреть надо почему это происходит, но, что скорее всего, это происходит не в самой таблице, а в доп модуле ListEdit
карма: 22

0
Ответов: 356
Рейтинг: 31
#11: 2010-03-01 15:28:10 ЛС | профиль | цитата
nesco писал(а):
Происходит это по двйному клику на пустом поле

У меня такое происходит и после двойного клика на выделенной строке
карма: 0

0
Разработчик
Ответов: 26113
Рейтинг: 2126
#12: 2010-03-01 15:36:52 ЛС | профиль | цитата
olDjeka писал(а):
У меня такое происходит и после двойного клика на выделенной строке

Точнее при выходе из нее, при клике в пустой области. При двойном клике на ячейке, таблица входит в режим редактирования ячейки
карма: 22

0
Ответов: 356
Рейтинг: 31
#13: 2010-03-01 16:13:34 ЛС | профиль | цитата
nesco писал(а):
Точнее при выходе из нее, при клике в пустой области

Да да, точно так.
карма: 0

0
Разработчик
Ответов: 26113
Рейтинг: 2126
#14: 2010-03-01 16:15:08 ЛС | профиль | цитата
Детальные разборки показали, что испралять это дело не имеет смысла, тк там задействовано переключение по Tab, и если я переделаю как надо, то перестанет работать кольцевой Tab, что приведет к возникновению кучи вопросов -- а почему не работает кольцевой Tab. Без глобальных переделок это побороть вряд ли получится. Единственное неудобство заключается в том, что компонент теряет фокус и его невозможно больше вернуть, что видно по серому курсору, сам алгоритм, в данном случае, работает исправно
карма: 22

0
Ответов: 356
Рейтинг: 31
#15: 2010-03-01 17:00:55 ЛС | профиль | цитата
nesco писал(а):
Без глобальных переделок это побороть вряд ли получится

Жаль конечно Фокус удалось вернуть, но через "одно место"


Make(delphi)
ver(4.04 build 183)
Add(Label,7324254,553,112)
{
Width=0
Height=0
Visible=1
Caption=""
Point(doSetFocus)
}
Add(MainForm,14680810,287,112)
{
Point(doSetFocus)
link(onCreate,15275062:doClear,[])
}
Add(MST_RowAction,15395190,399,119)
{
MSTControl="1"
}
Add(Memory,15275062,343,119)
{
Default=String(Audi)
link(onData,15395190:doRowAction,[])
}
Add(MTStrTbl,15424021,455,119)
{
Left=460
Top=125
Align=5
Name="1"
Columns=#1:1|
Redaction=0
Point(doSetFocus)
link(onClick,14788922:doEvent1,[])
}
Add(Hub,14788922,504,119)
{
link(onEvent1,7324254:doSetFocus,[])
link(onEvent2,15424021:doSetFocus,[(529,132)(529,103)(443,103)(443,132)])
}
карма: 0

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