Вверх ↑
Ответов: 2433
Рейтинг: 693
#1: 2025-05-28 09:28:39 ЛС | профиль | цитата
nesco писал(а):
Перевел в схеме селектор на Shift + ПКМ вместо DblClick.
Вот это не понял ты к чему поменял?
nesco писал(а):
ввел защиту от срабатывания onDblClick при включенном Redaction
Ты добавил только защиту на вывод события, но сама таблица при включенном редактировании и группах ведет себя мягко сказать странно.
Вот тестовая схема:

Add(MainForm,10676448,217,231)
{
Width=802
Height=424
link(onCreate,15053014:doEnum,[])
}
Add(MTStrTbl,6747634,609,238)
{
Width=786
Height=385
Align=5
Font=[MS Sans Serif,12,0,0,1]
Name="myTable"
Columns=#12:Название=400|12:Значение=120|
Redaction=0
CheckBoxes=0
Alternating=1
AlternatingColor=15793151
}
Add(StrList,6353263,273,196)
{
Strings=#26:0;Редактор формы;0;55295;1|14:1;Ширина;400;1|14:1;Высота;600;1|19:1;Цвет поля;White;1|15:1;Маркеры;нет;1|22:0;Таблица;0;12639424;2|12:1;Сетка;да;2|20:1;Высота строки;24;2|22:0;Тестовая;0;2345345;3|
}
Add(ArrayEnum,15053014,287,245)
{
link(onItem,7302297:doSplit,[])
link(onEndEnum,5178369:doData,[(327,258)(327,363)])
link(Array,6353263:Array,[])
}
Add(MST_RowAction,6457972,511,238)
{
MSTControl="myTable"
}
Add(MT_String,1985565,455,238)
{
link(onResult,6457972:doRowAction,[])
link(Str1,8779871:Var3,[(461,229)])
}
Add(If_else,11801584,378,245)
{
Op2=String(1)
link(onTrue,1985565:doMT,[])
link(onFalse,481735:doMT,[(429,258)(429,300)])
AddHint(-5,-21,31,13,Op2)
}
Add(MultiStrData,7302297,336,245)
{
Count=1
link(onPart1,11801584:doCompare,[])
}
Add(MT_String,481735,441,287)
{
link(onResult,8543499:doInsertGroup,[])
link(Str1,8779871:Var2,[])
}
Add(DoData,5178369,441,357)
{
Data=Integer(1)
link(onEventData,8543499:doEnableGroupViewer,[(492,363)(492,300)])
AddHint(-1,-21,21,13,Data)
}
Add(GetDataEx,8779871,441,224)
{
Angle=3
link(Data,7302297:RemaindStr,[(421,229)(421,301)(342,301)])
}
Add(StyleXP,8844878,217,189)
{
}
Add(MST_Groups,8543499,511,287)
{
MSTControl="myTable"
Point(onDblClickInGroup)
link(onDblClickInGroup,14999384:doMessage,[])
}
Add(MST_SelectRow,13646441,602,399)
{
MSTControl="myTable"
}
Add(Timer,5096122,546,476)
{
Interval=300
link(onTimer,16560004:doData,[])
}
Add(DoData,16560004,609,476)
{
link(Data,14053241:Var,[])
}
Add(Debug,14053241,609,448)
{
link(Data,13646441:Index,[])
}
Add(Message,14999384,567,287)
{
}
1 тест:
-Выдели строку: "Сетка"
-Двойным кликом мыши сверни первую кладку:"Редактор формы"
-Начнется редактирование строки "Сетка" O_o
2 тест:
-Выдели строку: "Высота"
-Двойным кликом мыши сверни первую кладку:"Редактор формы"
-Обрати внимание что выделенной остается все та же строка (индекс 1)
-Нажми пару клавиш на клавиатуре
-Двойным кликом мыши разверни первую кладку:"Редактор формы"
-Строка "Высота" оставалась в включенном состоянии редактирования даже будучи в свернутой группе

Как по мне, то:
1. Нужно исключить включение редактирование строки при двойном клике по заголовку группы.
2. При сворачивании группы убирать выделения с строк свернутой группы.

Странное поведение при включении мультиселекта. Тестовая схема:

Add(MainForm,10676448,217,231)
{
Width=802
Height=424
link(onCreate,15053014:doEnum,[])
}
Add(MTStrTbl,6747634,609,238)
{
Width=786
Height=385
Align=5
Font=[MS Sans Serif,12,0,0,1]
Name="myTable"
Columns=#12:Название=400|12:Значение=120|
Redaction=0
CheckBoxes=0
Alternating=1
AlternatingColor=15793151
MultiSelect=0
}
Add(StrList,6353263,273,196)
{
Strings=#26:0;Редактор формы;0;55295;1|14:1;Ширина;400;1|14:1;Высота;600;1|19:1;Цвет поля;White;1|15:1;Маркеры;нет;1|22:0;Таблица;0;12639424;2|12:1;Сетка;да;2|20:1;Высота строки;24;2|22:0;Тестовая;0;2345345;3|
}
Add(ArrayEnum,15053014,287,245)
{
link(onItem,7302297:doSplit,[])
link(onEndEnum,5178369:doData,[(327,258)(327,363)])
link(Array,6353263:Array,[])
}
Add(MST_RowAction,6457972,511,238)
{
MSTControl="myTable"
}
Add(MT_String,1985565,455,238)
{
link(onResult,6457972:doRowAction,[])
link(Str1,8779871:Var3,[(461,229)])
}
Add(If_else,11801584,378,245)
{
Op2=String(1)
link(onTrue,1985565:doMT,[])
link(onFalse,481735:doMT,[(429,258)(429,300)])
AddHint(-5,-21,31,13,Op2)
}
Add(MultiStrData,7302297,336,245)
{
Count=1
link(onPart1,11801584:doCompare,[])
}
Add(MT_String,481735,441,287)
{
link(onResult,8543499:doInsertGroup,[])
link(Str1,8779871:Var2,[])
}
Add(DoData,5178369,441,357)
{
Data=Integer(1)
link(onEventData,8543499:doEnableGroupViewer,[(492,363)(492,300)])
AddHint(-1,-21,21,13,Data)
}
Add(GetDataEx,8779871,441,224)
{
Angle=3
link(Data,7302297:RemaindStr,[(421,229)(421,301)(342,301)])
}
Add(StyleXP,8844878,217,189)
{
}
Add(MST_Groups,8543499,511,287)
{
MSTControl="myTable"
Point(onDblClickInGroup)
}
Тест:
-Кликнуть курсором (чтоб выделить) на любую стоку первой группы "Редактор формы"
-Кликнуть курсором по названию самой группы "Редактор формы"
-Небольшое движение курсора и выделяются все строки группы
Как по мне то это не правильно.
Вот к примеру правильное поведение при выборе всех строк:
-Нажать курсором по названию группы "Редактор формы" и не отпуская начать двигать курсор вниз
-Выделится все строки группы
nesco писал(а):
Надо оставлять только глобальную версию.

Не могу попасть на svn (http://svn.hiasm.com/packs/). Ты вносил добавленные свойства Selector таблицы на svn или они пока только у нас с тобой? Мне чтоб "вырезать" FocusFrame надо понять вносил ли ты обновления.
nesco писал(а):
Да и вообще, давно надо отказываться от обычного режима, аля Win95. Какой год на дворе, ребята?

Соглашусь что лучше обновить внешний вид. Но хорошо когда есть возможность выбора.
карма: 11

0
файлы: 1MST_DragRow_2025_02_21.zip.zip [11.6KB] [183]