Страница 1 из 1

Сортировка в листе по группе полей при клике по заголовку группы. Как?

Добавлено: 26 Декабрь 2018, 13:32
RaFaeL
Легко отсортировать список по колонке по клику на заголовке колонки, там однозначно определяется поле
А как сделать по группе?

Сортировка в листе по группе полей при клике по заголовку группы. Как?

Добавлено: 26 Декабрь 2018, 14:07
Игорь Столяров
Т.к. стандартные шаблоны такую возможность не поддерживают, то можно обойти с 2-х сторон:

1. Прописать для колонки несколько полей сортировки (можно группы).
Например: при щелчке мышкой на колонке ДАТЫ, реальная сортировка будет выполняться по ДАТА+ВРЕМЯ+НОМЕР и т.д.

2. Воспользоваться возможностью мультисортировки.
Т.е. удерживая нажатой педаль CTRL щелкаем мшой последовательно по нескольким колонкам (например группы).
Прелесть в том, что можно задавать порядок сортировки для полей в группе. Отмена педаль SHIFT+мша.

Как-то так … :)

Сортировка в листе по группе полей при клике по заголовку группы. Как?

Добавлено: 26 Декабрь 2018, 15:07
RaFaeL
Это понятно, может быть я неправильно выразился. Вопрос именно по группе колонок в листе, т.е. они уже сгруппированы и у них есть общий заголовок, нужно отловить клик по заголовку группы и отсортировать по последовательности колонок, которые входят в этот набор в листе. Формат листа может быть настроен пользователем

Сортировка в листе по группе полей при клике по заголовку группы. Как?

Добавлено: 26 Декабрь 2018, 15:35
kreator
Есть proplist:MouseDownZone (MoouseMoveZone, MouseUpZone) и есть LISTZONE:Header и LISTZONE:GroupHeader. Я так понимаю надо проверить, чтобы ?List{PROPLIST:MouseDownRow}=0 и ?List{PROPLIST:MouseDownZone}=LISTZONE:GroupHeader (или LISTZONE:Header) и тогда посмотреть, что выдаст ?List{PROPLIST:MouseDownField}.

Сортировка в листе по группе полей при клике по заголовку группы. Как?

Добавлено: 26 Декабрь 2018, 16:11
Игорь Столяров
RaFaeL писал(а): 26 Декабрь 2018, 15:07нужно отловить клик по заголовку группы и отсортировать по последовательности колонок
Понял. :) Вы желаете дизанерить и креативить. :)

Тогда действительно ловим событие мышки на LIST, проверяем попадание курсора в шапку и группу.
Разбираем текущий (!!!) состав LIST, через его Prop:Format и получаем колонки (точнее поля) в составе группы колонок.
По ним сортируем VIEW (или QUEUE если LIST по очереди) и отображаем. Опционально можно подсветить текст в шапке.

Т.е. технологически проблем нет, но возни много ...

Сортировка в листе по группе полей при клике по заголовку группы. Как?

Добавлено: 26 Декабрь 2018, 16:40
Дед Пахом
может SortHeaderClassType слегка допилить?

Сортировка в листе по группе полей при клике по заголовку группы. Как?

Добавлено: 26 Декабрь 2018, 18:57
RaFaeL
kreator писал(а): 26 Декабрь 2018, 15:35LISTZONE:GroupHeader.
В С63 такого не нашел, proplist:MouseDownZone для группы выдает 2 (т.е. LISTZONE:Header) а ?List{PROPLIST:MouseDownField} выдает 0
Собственно только после этого и возник вопрос
Т.е. в С63 видимо никак?

Сортировка в листе по группе полей при клике по заголовку группы. Как?

Добавлено: 26 Декабрь 2018, 19:57
Игорь Столяров
RaFaeL писал(а): 26 Декабрь 2018, 18:57Т.е. в С63 видимо никак?
То же самое - не ловит в C63.
Ну если только отсекать координату по MouseY() относительно ?List{Prop:YPos}.

Сортировка в листе по группе полей при клике по заголовку группы. Как?

Добавлено: 27 Декабрь 2018, 5:36
morkovin
На фтп есть tinteractivefilter_clarion6.zip. Не пойму зачем париться? :shock:

Сортировка в листе по группе полей при клике по заголовку группы. Как?

Добавлено: 27 Декабрь 2018, 8:52
RaFaeL
morkovin писал(а): 27 Декабрь 2018, 5:36На фтп есть tinteractivefilter_clarion6.zip. Не пойму зачем париться?
Судя по описанию, это фильтр для броузов. Какое отношение он имеет к моей задаче?

Сортировка в листе по группе полей при клике по заголовку группы. Как?

Добавлено: 27 Декабрь 2018, 11:20
kreator
В десятке всё чётко - нажатие на группу даёт значение 7 (LISTZONE:GroupHeader). Не важно есть заголовки самих столбцов или их нет. Ещё есть недокументированное событие EVENT:HeaderPressed. Непонятно, что это. В классе используется, но нажатие на группу не отслеживается. Толи это событие не отрабатывает, толи ещё где-то что-то зашито. Надо разбираться. Это я к вопросу подправить класс "слегка" :D .

Сортировка в листе по группе полей при клике по заголовку группы. Как?

Добавлено: 07 Май 2020, 20:27
kreator
Не хочу создавать тему. Но вдруг кому пригодиться.
kreator писал(а): 27 Декабрь 2018, 11:20 Ещё есть недокументированное событие EVENT:HeaderPressed.
Работает только, если включить:

Код: Выделить всё

?List{proplist:HasSortColumn} = True
Чем удобно? Забываем про алерты на нажатие мыши, отслеживании LISTZONE:HEADER и т.д.