Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Delphi |
![]() ![]() |
os2007 Member Откуда: Сообщений: 39 |
Такая ситуация: В HEADER перетаскиваю колонку, коорая содержит название чего либо. Происходит группировка по этойц колонке. Пока все нормально. Но вот отображение сгрупированных данных - меня не устраивает - они отображаются в отсортированном виде, причем по имени (колонка стринговая). А мне нужно чтобы отображение шло с сортировкой по другому полю (по int). Или хотя бы вообще без сортировки, потому что сортировка по стринговому полю меня точно не устраивает. Это как то возможно сделать? |
17 ноя 09, 15:03 [7940028] Ответить | Цитировать Сообщить модератору |
RENaissance Member Откуда: Муром->Москва Сообщений: 10895 |
Как вы себе представляете группировку без сортировки? Posted via ActualForum NNTP Server 1.4 |
17 ноя 09, 15:31 [7940298] Ответить | Цитировать Сообщить модератору |
os2007 Member Откуда: Сообщений: 39 |
RENaissance, Не совсем так. Давайте по очереди: 1. данные сгрупированы: 2. В гриде отображаются группы, которые можно развернуть, например: +Подразделение 2 +Подразделение 3 +Подразделение 4 +Сектор 1 3. Отображение этих групп в гриде - подчинено правилу: Отсортированы по алфавиту (можно включить обратную сортировку) Проблема: Мне нужно показывать группы не по алфавиту. А скажем по другому полю, например по индексу групп (у них есть ID) Если обьяснения не достаточно - я могу более глубокие примеры привести с табличками и данными |
17 ноя 09, 15:56 [7940569] Ответить | Цитировать Сообщить модератору |
RENaissance Member Откуда: Муром->Москва Сообщений: 10895 |
Так не получится. З.Ы Но можно через известное место. Posted via ActualForum NNTP Server 1.4 |
||
17 ноя 09, 15:58 [7940592] Ответить | Цитировать Сообщить модератору |
Gator Member Откуда: Москва Сообщений: 14980 |
os2007, Ну и группируйте их по ID |
17 ноя 09, 16:07 [7940663] Ответить | Цитировать Сообщить модератору |
os2007 Member Откуда: Сообщений: 39 |
Можно. Приэтом в Header-е будет выпадающий список с индексами подразделений (а не с названиями, как нужно). И отображаемое "дерево" которое плучится притакой групировке - будет в таком виде: +1 +2 +3 То есть развертываются уже не читаемые имена, а индексы. А нужно чтобы были названия, соответсвующие данным индексам. |
17 ноя 09, 16:15 [7940727] Ответить | Цитировать Сообщить модератору |
Кости Гамлета Member [заблокирован] Откуда: Сообщений: 523 |
Я ошибся. Можно. Смотрим на событие OnCompare у TDataController'а. В аттаче скрин примера. К сообщению приложен файл. Размер - 0Kb |
||
17 ноя 09, 16:30 [7940866] Ответить | Цитировать Сообщить модератору |
os2007 Member Откуда: Сообщений: 39 |
Ого! Спасибо. Попробую разобраться ) |
||||
17 ноя 09, 16:37 [7940947] Ответить | Цитировать Сообщить модератору |
os2007 Member Откуда: Сообщений: 39 |
Мде, у меня пишет что HELP зщ событию onCompare отсутсвует ) Не могли бы коротко описать что нужно в событи делать: procedure TForm1.cxGrid1DBTableView1DataControllerCompare( ADataController: TcxCustomDataController; ARecordIndex1, ARecordIndex2, AItemIndex: Integer; const V1, V2: Variant; var Compare: Integer); begin end; |
||||
17 ноя 09, 16:43 [7940998] Ответить | Цитировать Сообщить модератору |
RENaissance Member Откуда: Муром->Москва Сообщений: 10895 |
if ADataController.Values[ARecordIndex1, <индекс колонки id>] < ADataController.Values[ARecordIndex1, <индекс колонки id>] then Compare := -1 else if ADataController.Values[ARecordIndex1, <индекс колонки id>] = ADataController.Values[ARecordIndex1, <индекс колонки id>] then Compare := 0 else Compare := 1; Posted via ActualForum NNTP Server 1.4 |
||
17 ноя 09, 16:46 [7941027] Ответить | Цитировать Сообщить модератору |
Gator Member Откуда: Москва Сообщений: 14980 |
os2007, ExpressDataController Help -> TcxCustomDataController.OnCompare |
17 ноя 09, 16:48 [7941046] Ответить | Цитировать Сообщить модератору |
os2007 Member Откуда: Сообщений: 39 |
Большое вам спасибо за участие :) Может тогда заодно подскажите и ещё один момент: При использовании группировки (перетаскиванием колонки в Header), грид отображает информацию в виде: +Наименование подразделения: Отдел 1 +Наименование подразделения: Отдел 2 +Наименование подразделения: Отдел 3 Где "Наименование подразделения" это Caption у Column, которую мы перетащили в Header. Можно ли как то избавиться от этой надписи. Дело в том что если в Caption ее убрать, тогда в выпадающем списке не будт названия (у того что висит выше в Нeader). И как бы странно будет выбирать какие то значения из списка без названия :) |
||||
17 ноя 09, 16:53 [7941082] Ответить | Цитировать Сообщить модератору |
RENaissance Member Откуда: Муром->Москва Сообщений: 10895 |
os2007, смотрите в сторону события OnCustomDrawGroupCell, в котором берем AViewInfo.Text и заменяем на нужный текст - находим точку с запятой и берем все, что справа. Posted via ActualForum NNTP Server 1.4 |
17 ноя 09, 16:57 [7941121] Ответить | Цитировать Сообщить модератору |
os2007 Member Откуда: Сообщений: 39 |
Суть понял - думаю разберусь. Ещё одно спасибо) Кстати, по предыдущей проблеме - вылезла другая проблема: Сортировка - заработала - она верная, но перестала при этом работать группировка по тем полям что я вытащил в Header. ТОчнее я вытащил 2. Работает только по первому. Второе игнорирует ((( так что проблема осталась ((( К сообщению приложен файл. Размер - 0Kb |
||
17 ноя 09, 17:36 [7941360] Ответить | Цитировать Сообщить модератору |
Между сообщениями интервал более 1 года. |
DoctorRoot Member Откуда: Сообщений: 18 |
Для нормальной работы сортировки надо писать так:procedure TForm2.cxGrid1DBBandedTableView1DataControllerCompare( ADataController: TcxCustomDataController; ARecordIndex1, ARecordIndex2, AItemIndex: Integer; const V1, V2: Variant; var Compare: Integer); begin if ADataController.Values[ARecordIndex1, {Индекс столбца}] < ADataController.Values[ARecordIndex2, {Индекс столбца}] then Compare := -1 else if ADataController.Values[ARecordIndex1, {Индекс столбца}] = ADataController.Values[ARecordIndex2 {Индекс столбца}] then Compare := 0 else Compare := 1; end; Например для сортировки по столбцу №2 код будет выглядеть следующим образом: procedure TForm2.cxGrid1DBBandedTableView1DataControllerCompare( ADataController: TcxCustomDataController; ARecordIndex1, ARecordIndex2, AItemIndex: Integer; const V1, V2: Variant; var Compare: Integer); begin if ADataController.Values[ARecordIndex1, 2] < ADataController.Values[ARecordIndex2, 2] then Compare := -1 else if ADataController.Values[ARecordIndex1, 2] = ADataController.Values[ARecordIndex2, 2] then Compare := 0 else Compare := 1; end; Ну вот и группировка есть и сортировка как надо ... |
20 июн 12, 20:52 [12748829] Ответить | Цитировать Сообщить модератору |
Кроик Семён Member Откуда: СПб --> Dortmund Сообщений: 6694 |
Товарищи, пролоббируйте кто-нибудь из кругов, приближенных к администрации сайта, эти мои 2 предложения относительно старых топиков я там пресложения по улучшению сайта высказал:
|
|
20 июн 12, 21:12 [12748896] Ответить | Цитировать Сообщить модератору |
vavan Member Откуда: Казань Сообщений: 3581 |
ну а для совсем нормальной работы надо переписать с учетом B198486 ![]() |
||
21 июн 12, 10:25 [12750753] Ответить | Цитировать Сообщить модератору |
Между сообщениями интервал более 1 года. |
capuzi Member Откуда: Сообщений: 37 |
Вот как раз по поводу этого бага, знает ли кто-нибудь нормальное решение без правок исходников для случая, когда ARecordIndex1 или ARecordIndex2 имеют отрицательные значения? |
||||
13 фев 20, 17:12 [22079455] Ответить | Цитировать Сообщить модератору |
vavan Member Откуда: Казань Сообщений: 3581 |
capuzi, а там до сих пор отрицательные присылают? |
14 фев 20, 10:09 [22079773] Ответить | Цитировать Сообщить модератору |
capuzi Member Откуда: Сообщений: 37 |
vavan, версия Dev 6.57 и да, к сожалению RecordIndex периодически отрицательный присылают. В варианте с группировками и сортировкой по полю, в группировке не участвующем, после редактирования данных в гриде все валится из-за отрицательных RecordIndex, а если обрабатывать только RecordIndex > 0, то сворачивается ряд узлов. |
14 фев 20, 11:00 [22079809] Ответить | Цитировать Сообщить модератору |
vavan Member Откуда: Казань Сообщений: 3581 |
|
||||
14 фев 20, 11:10 [22079817] Ответить | Цитировать Сообщить модератору |
Все форумы / Delphi | ![]() |