Вверх ↑
Этот топик читают: Гость
Ответов: 2415
Рейтинг: 691
#211: 2025-05-27 10:21:14 ЛС | профиль | цитата
nesco писал(а):
вот, что я отловил.
У меня такое не удалось повторить. Как нажимал чтоб такое получилось?
nesco писал(а):
Добавил на SVN правки Win.pas со свойством HideFocus
Надо или свойство FocusFrame убирать или HideFocus "заглушить" у MTStrTbl.
5. Вот с этим не совсем понятно. Разве нет возможность включить поддержку стиля XP только для таблицы чтоб заработали группы? Да и с версией не совсем понял. Если win 10, то это версия ComCtl32.dll должна быть 6.10 или не обязательно?
https://learn.microsoft.com/ru-ru/windows/win32/controls/common-control-versions
10. Не могу точно сказать насколько нужен он в группах, но к примеру в TVT, то без него никак было:

Add(MainForm,2953706,273,245)
{
}
Add(TreeViewTrain,7253190,329,245)
{
Left=315
Top=245
Point(onExpand)
Point(onCollapse)
link(onExpand,2617724:doMessage,[])
link(onCollapse,13441023:doMessage,[(369,265)(369,307)])
}
Add(Message,2617724,378,252)
{
}
Add(Message,13441023,378,301)
{
}
карма: 11

0
Разработчик
Ответов: 26287
Рейтинг: 2145
#212: 2025-05-27 12:56:38 ЛС | профиль | цитата
sla8a писал(а):
Разве нет возможность включить поддержку стиля XP только для таблицы чтоб заработали группы?

Нет, манифест включается на всё приложение. Он находится в ресурсах. Режим -- тут читаем, тут не читаем, а тут рыбу заворачиваем не катит. Да и вообще, давно надо отказываться от обычного режима, аля Win95. Какой год на дворе, ребята?

--- Добавлено в 2025-05-27 13:11:11

sla8a писал(а):
У меня такое не удалось повторить. Как нажимал чтоб такое получилось?

Включил редакцию таблицы в твоем примере. Просто вошел в редакцию и вышел из нее. Но это с последними твоими правками, которые были доступны мне. Может у тебя уже исправленная версия.

--- Добавлено в 2025-05-27 13:19:48

Кстати, вот, что я еще встроил в таблицу



--- Добавлено в 2025-05-27 13:30:21

И вот еще ссылка на msdn, где написано все, о чем ты спрашивал раньше -- https://learn.microsoft.com/en-us/windows/win32/controls/lvm-insertgroup

--- Добавлено в 2025-05-27 13:35:34

sla8a писал(а):
Надо или свойство FocusFrame убирать или HideFocus "заглушить" у MTStrTbl.

Надо оставлять только глобальную версию. Тч подкорректируй свой код. Заколхозили этот функционал только потому, что глобала не было.

Редактировалось 9 раз(а), последний 2025-05-27 13:46:00
карма: 22

0
Разработчик
Ответов: 26287
Рейтинг: 2145
#213: 2025-05-28 02:32:25 ЛС | профиль | цитата
Перевел в схеме селектор на Shift + ПКМ вместо DblClick. В компонент ввел защиту от срабатывания onDblClick при включенном Redaction. Исправления по ранее приведенной ссылке.

Редактировалось 1 раз(а), последний 2025-05-28 02:32:41
карма: 22

0
Ответов: 2415
Рейтинг: 691
#214: 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] [150]
Ответов: 897
Рейтинг: 190
#215: 2025-05-28 13:40:55 ЛС | профиль | цитата
sla8a писал(а):
Вот тестовая схема:

У меня в твоей схеме пропадают CheckBox-ы

карма: 18

0
Разработчик
Ответов: 26287
Рейтинг: 2145
#216: 2025-05-28 14:18:23 ЛС | профиль | цитата
Gunta писал(а):
Тест:
-Кликнуть курсором (чтоб выделить) на любую стоку первой группы "Редактор формы"
-Кликнуть курсором по названию самой группы "Редактор формы"
-Небольшое движение курсора и выделяются все строки группы

Тут ничего не сделаешь. Так работает система при мультиселекте. Это не от нас зависит.

--- Добавлено в 2025-05-28 14:19:30

sla8a писал(а):
Мне чтоб "вырезать" FocusFrame надо понять вносил ли ты обновления

Нет, не вносил, мы же договорились, что не вносим ничего до окончания правок.

--- Добавлено в 2025-05-28 14:22:22

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

Кто бы еще сказал, как это сделать?
Кстати, второе придумано не нами. Это система не снимает выделение. Придется колхозить. Я уже похожее пытался прикрутить, ничего не получилось. КМК, это все должно делаться на более высоком уровне.
Но как я понял, ты хочешь сделать обратное текущему, те не запрещать дабл в группах, а запрещать редактирование. Но эти все события редактирования перехватываются на более высоком уровне. Как мы туда доберемся, если у нас доступ только снизу вверх? Те мы можем увидеть режим редактирования, а вот режим редактирования нас не видит. Я пока без понятия, как можно передать наличие групп в редактор таблицы.

--- Добавлено в 2025-05-28 14:32:33

Пока писал, пришла одна мысль в голову. Бредовая, но можно попытаться реализовать. Я подумаю над этим. Но такой режим может начисто запретить редактирование во включенных группах.

--- Добавлено в 2025-05-28 14:35:41

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

Редактировалось 10 раз(а), последний 2025-05-28 14:35:41
карма: 22

0
Разработчик
Ответов: 26287
Рейтинг: 2145
#217: 2025-05-28 15:32:30 ЛС | профиль | цитата
Давай еще определимся, как надо заблокировать вход по даблу в редактирование, в каком случае -- в режиме таблицы, в режиме групп или в обоих?

Редактировалось 1 раз(а), последний 2025-05-28 15:33:13
карма: 22

0
Разработчик
Ответов: 26287
Рейтинг: 2145
#218: 2025-05-28 16:45:13 ЛС | профиль | цитата
Я добился результата с перехватом дабла. Но меня мучает один вопрос -- нах все это нужно, когда просто можно использовать DblПКМ для входа в контекстное меню? На DblПКМ редактор не агрится.
карма: 22

0
Ответов: 2415
Рейтинг: 691
#219: 2025-05-28 17:02:49 ЛС | профиль | цитата
Раньше даблклик у таблицы по строке включал редактирование. Сейчас даблклик по заголовку группы включает редактирование строки, причём даже не своей группы. И вот как ты себе представляешь использование таблицы с группами в режиме редактирования?
Неужели нет возможности отловить что даблклик был именно по заголовку группы и не допустить начала редактирования строки или если оно все-же началось, то закрыть его?
А так при группах даблклик по строке должен начинать редактирование если оно включено в свойствах таблицы.

Редактировалось 1 раз(а), последний 2025-05-28 17:03:10
карма: 11

0
Разработчик
Ответов: 26287
Рейтинг: 2145
#220: 2025-05-28 17:33:02 ЛС | профиль | цитата
sla8a писал(а):
И вот как ты себе представляешь использование таблицы с группами в режиме редактирования?

Запретить редактирование в режиме отображения групп, оставить только в режиме таблицы. Это я могу сделать без проблем.

--- Добавлено в 2025-05-28 17:34:59

sla8a писал(а):
Неужели нет возможности отловить что даблклик был именно по заголовку группы и не допустить начала редактирования строки или если оно все-же началось, то закрыть его?

Это надо портировать кучу кода в ListEdit.

--- Добавлено в 2025-05-28 17:46:34

Я попробую сделать

--- Добавлено в 2025-05-28 18:15:54

Добавил в архив, проверяй (там оказалось не так уж и много добавок). Тестировал на твоем примере.

Редактировалось 5 раз(а), последний 2025-05-28 18:16:36
карма: 22

0
Ответов: 2415
Рейтинг: 691
#221: 2025-05-28 20:15:42 ЛС | профиль | цитата
nesco, на данный момент все хорошо, редактирование включается правильно.
Вот взял файлы из твоего архива и "вырезал" свойство FocusFrame: https://forum.hiasm.com/getfile/40585
Gunta писал(а):
У меня в твоей схеме пропадают CheckBox-ы

У меня также как и у Gunta чекбоксы не прорисовываются. Поймать очень легко (на моей тестовой схеме):
-Даблкликом начать редактировать строку (любую)
-Нажать на заголовок (любой) группы (и тааа- даам и он испарился (с)). Так можно "погасить" все чекбоксы. Если кликнуть не на заголовок группы (другую строку, пустое поле), то чекбоксы не пропадают.
-Без включенных групп чекбоксы не исчезают
nesco, с шрифтом удалось что-то сделать?
nesco писал(а):
Кстати, вот, что я еще встроил в таблицу
В проектах для андроида постоянно такое в таблицы вставляю и каждый раз думаю а что в HiAsm такого нет. Это уже будет включено или еще под вопросом?

--- Добавлено в 2025-05-28 20:35:10

nesco, обрати внимание на мою правку в таблице (она закоментирована) в _OnBeforeLineChange. Скорее всего это тоже самое с прорисовкой чекбоксов.

--- Добавлено в 2025-05-28 20:40:57

И правым кликом на заголовок чекбоксы не исчезают, только левый клик портит отрисовку.

Редактировалось 6 раз(а), последний 2025-05-28 20:50:47
карма: 11

0
Разработчик
Ответов: 26287
Рейтинг: 2145
#222: 2025-05-28 21:42:40 ЛС | профиль | цитата
sla8a писал(а):
В проектах для андроида постоянно такое в таблицы вставляю и каждый раз думаю а что в HiAsm такого нет. Это уже будет включено или еще под вопросом?

Ты правил код, где это уже есть. Свойство -- TextInEmptyTable

--- Добавлено в 2025-05-28 21:49:21

Действительно пропадают. Но и вот это мне тоже не нравится (цвет селектора). Даже не знаю куда рыть.



Насчет шрифта -- полный голяк. Ровно так же, как и с определением состояния сжатия группы. Вроде как-то можно, но это ни фига не работает.

Редактировалось 5 раз(а), последний 2025-05-28 22:02:54
карма: 22

0
Разработчик
Ответов: 26287
Рейтинг: 2145
#223: 2025-05-29 04:00:52 ЛС | профиль | цитата
В архив добавил следующие изменения:
1. Восстановил чекбосы;
2. Добавил поддержку средней кнопки мыши в MST_Groups;
3. Случайно нашел решение по борьбе с отсутствием нормального селектора после редактирования. Но такой колхозный метод что-то меня не сильно радует.
карма: 22

0
Ответов: 2415
Рейтинг: 691
#224: 2025-05-29 11:57:14 ЛС | профиль | цитата
Вроде все нормально, продолжу тестировать.
Что-то странно ведет себя выделение строке. Если выделить строку в группе и нажать на заголовок, то выделенная строка перейдет на на первую строку данного заголовка (0 индекс). Если при клике на другую группу это еще логично, но в своей группе как-то странное поведение. Это фича или баг? Как по мне, то выделенные строки должны оставаться выделенными не зависимо от того нажали на заголовок или нет. Вот если заголовок свернули, то в нем все выделенные строки лучше освободить. Ну или если будет событие onCollapse то оставить это дело, при желании можно будет самому снимать выделенные строки.
nesco писал(а):
Насчет шрифта -- полный голяк.
Ты уже оставил попытки или еще есть какие идеи?
карма: 11

0
Разработчик
Ответов: 26287
Рейтинг: 2145
#225: 2025-05-29 14:04:41 ЛС | профиль | цитата
sla8a писал(а):
Если выделить строку в группе и нажать на заголовок, то выделенная строка перейдет на на первую строку данного заголовка (0 индекс). Если при клике на другую группу это еще логично, но в своей группе как-то странное поведение.

Да оно как-то само перемещается. Я сам там в ах... был от ее поведения. Я вообще нигде не трогал в коде селектор, только в схеме.
sla8a писал(а):
Ну или если будет событие onCollapse то оставить это дело, при желании можно будет самому снимать выделенные строки.

Для этого можно спокойно использовать и doCollapse
sla8a писал(а):
Ты уже оставил попытки или еще есть какие идеи?

Решений не много, но все они не рабочие.
карма: 22

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