(изменено: Edhunter, 21 июня 2007г. 14:51:20)

Тема: TDMS 3.0 Сортировка объектов и глобальных выборок в дереве

Данное решение позволяет сортировать объекты и глобальные выборки в дереве. В том числе в корне (Root) и на рабочем столе.
По всем ошибкам и замечанием/пожеланиям отписывать в эту тему или в личку.

*Fixed: Ошибка если в составе нет объектов или выборок

Настройка состоит из двух частей:

  1. Тип файла -> Файлы TDMSSort

    При обновлении настройки желательно удалить этот тип файла. Для этого сперва необходимо удалить все его шаблоны

  2. Команда -> Сортировка в дереве

Re: TDMS 3.0 Сортировка объектов и глобальных выборок в дереве

windows2000 proff

1.Проимпортировал.
2.Добавил в профиль.
3. кликнул на поле "Сортировка объектов"
4. получил:

TDMS 3.0 Сортировка объектов и глобальных выборок в дереве

Re: TDMS 3.0 Сортировка объектов и глобальных выборок в дереве

Anatoly пишет:

windows2000 proff

1.Проимпортировал.
2.Добавил в профиль.
3. кликнул на поле "Сортировка объектов"
4. получил:

Исправлено

(изменено: Anatoly, 21 июня 2007г. 12:30:26)

Re: TDMS 3.0 Сортировка объектов и глобальных выборок в дереве

1. в первом постинге пиши "версию и дату сортировщика"
2. Ошибка та же самая.

3. Опиши процедуру переустановки интерфейса.
4. Опиши какие системные элементы импортируются в настройку.
5. желательно присвоить категорию всем  импортируемым системным элементам

Re: TDMS 3.0 Сортировка объектов и глобальных выборок в дереве

3-я попытка неудачная  :)))

Выбрал выборку, нажал на кнопку "вниз", получил см. вложение.

P.S. ошибка с пустыми полями в этом билде исправлена  :))

TDMS 3.0 Сортировка объектов и глобальных выборок в дереве

Re: TDMS 3.0 Сортировка объектов и глобальных выборок в дереве

Anatoly пишет:

1. в первом постинге пиши "версию и дату сортировщика"
2. Ошибка та же самая.

3. Опиши процедуру переустановки интерфейса.
4. Опиши какие системные элементы импортируются в настройку.
5. желательно присвоить категорию всем  импортируемым системным элементам

Мде ошибочка вышла   :unsure:
Вобщем поправил всё, даже имя диалога   :rolleyes:

Re: TDMS 3.0 Сортировка объектов и глобальных выборок в дереве

Необходимо исправить опечатку в тексте в верхней части формы сортировки.

P.S.
Если всё делать "по-хорошему", то необходимо:
1а. исправить слайдшоу с изменением размеров формы ввода (попробуй поизменять размеры - slideshow)
либо
1б. Зафиксировать размер формы ввода.

2. Сделать multiselect

P.P.S. В принципе, когда в 3-й версии к TDMSQuery добавится св-во Order, то отпадёт надобность пользоваться данным плагином.

Re: TDMS 3.0 Сортировка объектов и глобальных выборок в дереве

Большое спасибо.
Работает. Облегчает жизнь =)

Re: TDMS 3.0 Сортировка объектов и глобальных выборок в дереве

Рад что пригодилось    B)

Re: TDMS 3.0 Сортировка объектов и глобальных выборок в дереве

Требуется то же самое, но только для 2-й версии.

+

Требуется сортировка выборок и объектов на рабочем столе пользователя ТДМС.

Re: TDMS 3.0 Сортировка объектов и глобальных выборок в дереве

Функции сортировки объектов и выборок в дереве понравились разработчикам, так что в ближайшее время решение потеряет актуальность для третьей версии. Весь функционал будет встроен непосредственно в пользовательский интерфейс TDMS.

По второй версии, пока точно незнаю, там есть проблемма с выгрузкой иконок. Если найду решения для конвертации иконок в 24 бита, то выложу решение для двойки.

Re: TDMS 3.0 Сортировка объектов и глобальных выборок в дереве

Edhunter пишет:

По второй версии, пока точно незнаю, там есть проблемма с выгрузкой иконок. Если найду решения для конвертации иконок в 24 бита, то выложу решение для двойки.

А можно ли сделать временную без иконок?

Re: TDMS 3.0 Сортировка объектов и глобальных выборок в дереве

Anatoly пишет:

А можно ли сделать временную без иконок?

хххммм... Сложности всё равно есть, но наверное можно... Посмотрим вобщем.

Re: TDMS 3.0 Сортировка объектов и глобальных выборок в дереве

Хех... Посмотрел на плагин, в который ткнул меня носом Михаил Фуников... И сделал вывод, что это несколько не то, чего нам хочется.
Если вкратце, есть предложение сделать или по варианту №1, или по варианту №2.

Вариант №1 (самый хороший, на мой взгляд):
Перед выводом элементов дерева (после нажатия на "+" или F5) вызывать событие Tree_BeforeShow(Sheet), в котором аналогично List_BeforeShow(Sheet) программисту дается возможность автоматически (так это выглядит для пользователя) отсортировать список элементов 1-го уровня.

Вариант №2 (не очень хороший, но приемлемый):
Перед выводом элементов дерева (после нажатия на "+" или F5) они автоматически сортируются по полю "Description".

С уважением, Павел.

ЗЫ Плагин хороший, но, боюсь, юзеры им пользоваться не будут, и поэтому он для нас бесполезен.

(изменено: Edhunter, 6 августа 2008г. 16:57:41)

Re: TDMS 3.0 Сортировка объектов и глобальных выборок в дереве

В событии List_BeforeShow можно отсортировать объекты при помощи метода SortValue, а ещё лучше используйте методы Move и Swap. Учтите что могут быть проблемы с правами на видимость объекта.

Re: TDMS 3.0 Сортировка объектов и глобальных выборок в дереве

Edhunter, мы уже посмотрели List_BeforeShow, но по этому событию сортировка происходит только в окошке списка справа, а в дереве - нет. А надо именно в дереве. И не так, чтобы это было постоянное состояние ветки, а только, чтобы пользователь видел ветку в таком виде благодаря предварительной обработке по событию.

Есть, конечно, вариант при создании объекта сразу помещать его в нужное место, но это мне не нравится - пожелания по сортировке могут поменяться.

(изменено: Edhunter, 11 августа 2008г. 10:27:05)

Re: TDMS 3.0 Сортировка объектов и глобальных выборок в дереве

Незнаю какой код Вы использовали, но у меня проблем никаких нету

Sub List_BeforeShow(Sheet)
Set tCollection = ThisObject.Objects
If tCollection.Count > 0 Then
  For i=0 To tCollection.Count -1
    For j=0 To tCollection.Count -1
      If tCollection.Item(i).Description < tCollection.Item(j).Description Then
        tCollection.Swap tCollection.Item(i), tCollection.Item(j)
      End If
    Next
  Next
End If
tCollection.Update
End Sub

Метод сортировки меняйте на нужный Вам.

Re: TDMS 3.0 Сортировка объектов и глобальных выборок в дереве

SNGP.Pavel пишет:

Есть, конечно, вариант при создании объекта сразу помещать его в нужное место, но это мне не нравится - пожелания по сортировке могут поменяться.

А тормоза при отображении не смущают? Имхо сортировать при создании - лучший вариант. Конечно, при изменении критериев сортировки придется написать спецкоманду.

Re: TDMS 3.0 Сортировка объектов и глобальных выборок в дереве

Имхо сортировать при создании - лучший вариант.

+1.
На Object_Created.

Re: TDMS 3.0 Сортировка объектов и глобальных выборок в дереве

Текущий вопрос был пока что снят - нам нужна была сортировка комплектов, что автоматическим образом, как выяснилось, нереализуемо - все равно надо "досортировывать" руками. Поэтому в данном случае мы воспользовались методом "сортировка при создании" плюс имеющимся функционалом по перестановке.

Думаю все же, что эта самая необходимость все равно может возникнуть... По поводу возможных тормозов - думаю, 20-30 элементов перебрать недолго (если их больше - имеет смысл категоризировать или вообще отказываться от сортировки на лету).

ЗЫ В общем-то, должен сказать, непонятно, почему  List_BeforeShow вызывается только при отрисовке списка? Вроде бы логично было бы иметь одно и то же в обоих местах - и в дереве, и в списке? Или я просто не знаю какого-то нюанса?

Re: TDMS 3.0 Сортировка объектов и глобальных выборок в дереве

ИМХО - динамическая сортировка - это неверное решение.
----------------------------

Поймите, что "динамическая сортировка" не принесет ничего хорошего: Она будет срабатывать у всех - тормоза обеспечены. Вы мыслите 1-м или 2-мя пользователями. А представьте, что в системе работают 800 пользователей(кстати реальное число пользователей TDMS у нашего клиента)...........

Простейший пример: Юзер1 открыл дерево, сработала ваша функция по TreeBeforeShow - дерево начало сортироваться.
В этот момент Юзер2 создаёт в этом дереве объект(или добаляет ссылку/удаляет ссылку). Как отработает функция, если еще не известно описание создаваемого объекта, или еще не заполнены какие-либо условия сортировки?
А если делать еще и With Obj.Objects...... то вообще косяки могут вылезть, если кто-нить удалит какой-нить объект во момент сортировки.

Простейший пример2:
Юзер1 открывает объект - запускается функция сортировки. Юзер1 видит не все объекты состава.
Юзер2 открывает тот же объект - опять запускается функция сортировки, при этом порядок другой, т.к. Юзер2 видит больше объектов, чем Юзер1.

Ну и последнее....
Никак не могу понять, почему

нам нужна была сортировка комплектов, что автоматическим образом, как выяснилось, нереализуемо - все равно надо "досортировывать" руками.

ИМХО когда произойдет

пожелания по сортировке могут поменяться.

вот именно тогда и поменяете алгоритм сортировки при создании.

(изменено: Edhunter, 3 сентября 2008г. 13:04:23)

Re: TDMS 3.0 Сортировка объектов и глобальных выборок в дереве

SNGP.Pavel пишет:

ЗЫ В общем-то, должен сказать, непонятно, почему  List_BeforeShow вызывается только при отрисовке списка? Вроде бы логично было бы иметь одно и то же в обоих местах - и в дереве, и в списке? Или я просто не знаю какого-то нюанса?

Это событие Генерируется перед перерисовкой окна состава объекта. Если вы просто нажимаете + напротив объекта, селект не слетает, и перерисовки не происходит.
И почему событие "Перед открытием окна состава" должно возникать перед разворачиванием дерева объектов ???