Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / vsFlexGrid - сортировка по нескольким столбцам / 3 сообщений из 3, страница 1 из 1
14.01.2005, 10:32:07
    #32864512
Stok
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
vsFlexGrid - сортировка по нескольким столбцам
Нужно на vsFlexGrid 7 сделать возможность сортировки, как это сделано в Access.
Функциональность такая:
- свойство ExplorerBar устанавливается в flexExMove;
- при нажатии на хедер столбца выделяется столбец (нажатие на любую ячейку в теле грида сбрасывает это выделение);
- юзер перемещением столбцов укомплектовывает и выделяет некоторое их подряд идущее подмножество n;
- при нажатии кнопки "Сортировать" (еще бы лучше по контексному меню), происходит сортировка строк грида по выделенным столбцам слева направо.
Похоже, что реализовать эту штуку у меня не хватает мозгов.
Ау, Marvan, Вы, вероятно, такое делали!!!
С Новым и Старым Годом.
...
Рейтинг: 0 / 0
14.01.2005, 11:11:24
    #32864598
Дурак
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
vsFlexGrid - сортировка по нескольким столбцам
Только ручками...

1. Юзер выделяет столбцы.
2. Обработка на правую кнопку мыши - > вызвать контекстное меню.

3. Последний аккорд...

Код: plaintext
1.
2.
3.
4.
5.
6.
With vsGrid
          ' выбираешь диапазон (в данном случае 0,1,2 столбцы)
          .Select  1 ,  0 ,  1 ,  2 
          ' сортирока 
          .Sort = flexSortGenericAscending
End With

Все.
...
Рейтинг: 0 / 0
14.01.2005, 15:10:08
    #32865316
Stok
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
vsFlexGrid - сортировка по нескольким столбцам
Что значит "ручками"? Таки с помощью процедур обработки событий.
Начнем с первой проблемы: необходимо выделить несколько подряд идущих столбцов.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
vg.ExplorerBar= 2 
vg.SelectionMode= 0 
Private Sub vgTTCTalk_BeforeMouseDown(...)
With vg
    ' clicking on a column header sorts based on that column
    If Button =  1  And .MouseRow =  0  Then
         .Select .FixedRows, .MouseCol, .Rows -  1 , .MouseCol
    End If
End With
End Sub
Прекрасно выделяется один столбец, но при переходу к следующему, выделение предыдущего, конечно, сваливается. Нужно где-то хранить список выделенных столбцов, проверять их на непрерывность, анализировать, находится ли вновь выделяемый столбец слева или справа от ранее выделенного коллектива... Словом, чем дальше в лес, тем толще партизаны. И чувствую, что я далеко ушел от хорошего решения, которое обычно самое простое.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / vsFlexGrid - сортировка по нескольким столбцам / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]