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

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Аватара пользователя
RaFaeL
Ветеран
Сообщения: 855
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Контактная информация:

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

Сообщение RaFaeL » 26 Декабрь 2018, 13:32

Легко отсортировать список по колонке по клику на заголовке колонки, там однозначно определяется поле
А как сделать по группе?

Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 4003
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-Дону

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

Сообщение Игорь Столяров » 26 Декабрь 2018, 14:07

Т.к. стандартные шаблоны такую возможность не поддерживают, то можно обойти с 2-х сторон:

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

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

Как-то так … :)
«V» значит Вендетта !

Аватара пользователя
RaFaeL
Ветеран
Сообщения: 855
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Контактная информация:

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

Сообщение RaFaeL » 26 Декабрь 2018, 15:07

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

kreator
Ветеран
Сообщения: 3243
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

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

Сообщение kreator » 26 Декабрь 2018, 15:35

Есть proplist:MouseDownZone (MoouseMoveZone, MouseUpZone) и есть LISTZONE:Header и LISTZONE:GroupHeader. Я так понимаю надо проверить, чтобы ?List{PROPLIST:MouseDownRow}=0 и ?List{PROPLIST:MouseDownZone}=LISTZONE:GroupHeader (или LISTZONE:Header) и тогда посмотреть, что выдаст ?List{PROPLIST:MouseDownField}.
We are hard at work… for you. :)

Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 4003
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-Дону

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

Сообщение Игорь Столяров » 26 Декабрь 2018, 16:11

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

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

Т.е. технологически проблем нет, но возни много ...
«V» значит Вендетта !

Аватара пользователя
Дед Пахом
Старичок
Сообщения: 2244
Зарегистрирован: 07 Июль 2005, 15:51
Откуда: Москва, Россия

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

Сообщение Дед Пахом » 26 Декабрь 2018, 16:40

может SortHeaderClassType слегка допилить?
С уважением, ДП

Аватара пользователя
RaFaeL
Ветеран
Сообщения: 855
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Контактная информация:

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

Сообщение RaFaeL » 26 Декабрь 2018, 18:57

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

Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 4003
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-Дону

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

Сообщение Игорь Столяров » 26 Декабрь 2018, 19:57

RaFaeL писал(а):
26 Декабрь 2018, 18:57
Т.е. в С63 видимо никак?
То же самое - не ловит в C63.
Ну если только отсекать координату по MouseY() относительно ?List{Prop:YPos}.
«V» значит Вендетта !

Аватара пользователя
morkovin
Ветеран
Сообщения: 610
Зарегистрирован: 20 Июль 2005, 13:53
Откуда: Volgograd, Russia
Контактная информация:

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

Сообщение morkovin » 27 Декабрь 2018, 5:36

На фтп есть tinteractivefilter_clarion6.zip. Не пойму зачем париться? :shock:
WBR, morkovin

Аватара пользователя
RaFaeL
Ветеран
Сообщения: 855
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Контактная информация:

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

Сообщение RaFaeL » 27 Декабрь 2018, 8:52

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

kreator
Ветеран
Сообщения: 3243
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

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

Сообщение kreator » 27 Декабрь 2018, 11:20

В десятке всё чётко - нажатие на группу даёт значение 7 (LISTZONE:GroupHeader). Не важно есть заголовки самих столбцов или их нет. Ещё есть недокументированное событие EVENT:HeaderPressed. Непонятно, что это. В классе используется, но нажатие на группу не отслеживается. Толи это событие не отрабатывает, толи ещё где-то что-то зашито. Надо разбираться. Это я к вопросу подправить класс "слегка" :D .
We are hard at work… for you. :)

Ответить