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

Clarion, Clarion 7

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

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

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

Сообщение RaFaeL »

Легко отсортировать список по колонке по клику на заголовке колонки, там однозначно определяется поле
А как сделать по группе?
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7327
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

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

Сообщение Игорь Столяров »

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

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

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

Как-то так … :)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

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

Сообщение RaFaeL »

Это понятно, может быть я неправильно выразился. Вопрос именно по группе колонок в листе, т.е. они уже сгруппированы и у них есть общий заголовок, нужно отловить клик по заголовку группы и отсортировать по последовательности колонок, которые входят в этот набор в листе. Формат листа может быть настроен пользователем
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

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

Сообщение kreator »

Есть 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. :)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7327
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

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

Сообщение Игорь Столяров »

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

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

Т.е. технологически проблем нет, но возни много ...
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

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

Сообщение Дед Пахом »

может SortHeaderClassType слегка допилить?
С уважением, ДП
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

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

Сообщение RaFaeL »

kreator писал(а): 26 Декабрь 2018, 15:35LISTZONE:GroupHeader.
В С63 такого не нашел, proplist:MouseDownZone для группы выдает 2 (т.е. LISTZONE:Header) а ?List{PROPLIST:MouseDownField} выдает 0
Собственно только после этого и возник вопрос
Т.е. в С63 видимо никак?
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7327
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

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

Сообщение Игорь Столяров »

RaFaeL писал(а): 26 Декабрь 2018, 18:57Т.е. в С63 видимо никак?
То же самое - не ловит в C63.
Ну если только отсекать координату по MouseY() относительно ?List{Prop:YPos}.
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
morkovin
Ветеран
Сообщения: 908
Зарегистрирован: 20 Июль 2005, 14:53
Откуда: Volgograd, Russia
Благодарил (а): 2 раза
Поблагодарили: 3 раза
Контактная информация:

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

Сообщение morkovin »

На фтп есть tinteractivefilter_clarion6.zip. Не пойму зачем париться? :shock:
WBR, morkovin
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

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

Сообщение RaFaeL »

morkovin писал(а): 27 Декабрь 2018, 5:36На фтп есть tinteractivefilter_clarion6.zip. Не пойму зачем париться?
Судя по описанию, это фильтр для броузов. Какое отношение он имеет к моей задаче?
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

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

Сообщение kreator »

В десятке всё чётко - нажатие на группу даёт значение 7 (LISTZONE:GroupHeader). Не важно есть заголовки самих столбцов или их нет. Ещё есть недокументированное событие EVENT:HeaderPressed. Непонятно, что это. В классе используется, но нажатие на группу не отслеживается. Толи это событие не отрабатывает, толи ещё где-то что-то зашито. Надо разбираться. Это я к вопросу подправить класс "слегка" :D .
We are hard at work… for you. :)
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

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

Сообщение kreator »

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

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

?List{proplist:HasSortColumn} = True
Чем удобно? Забываем про алерты на нажатие мыши, отслеживании LISTZONE:HEADER и т.д.
We are hard at work… for you. :)
Ответить