Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

QuantumGrid: сортировка. [D5]


koks ©   (2002-11-05 10:21:00) 

Уважаемые мастера! Столкнулся с заморочкой...

Передаю в грид запрос TQuery:
SQL:

SELECT CH1_id, CH2_id, SUM(MASSA) AS SMASSA, MAX(ID) AS SID
FROM BASE
GROUP BY CH1_id, CH2_id
ORDER BY CH1_id, CH2_id.

CH1_id и CH2_id - коды определенных характеристик товара, которые расшифровываются в справочниках. Я создаю для TQuery 2 Lookup-поля c расшифровкой этих характеристик: lkpCh1, lkpCh2.

Далее - передаем TQuery в QuantumGrid. Создаем 6 колонок.
SID (visible := false) - значение KeyField для odgoLoadAllRecords
CH1_id (visible := false)
CH2_id (visible := false)
lkpCH1 (visible := true)
lkpCH2 (visible := true)
SMASSA (visible := true)

Для всех колонок устанавливаем Sorted := stNone и в свойствах грида устанавливаем edgoAutoSort := false.

В результате мы имеем 3 видимых колонки, отсортированные SQL-ом в нужном порядке (по кодам характеристик). Вся возможная сортировка в самом гриде отключена. До этого момента все OK...

Далее - включаем группировку. (она мне нужна для рассчета подитогов) Устанавливаем в колонках соответствующие GroupIndex - и .... грид включает свою собственную сортировку, перемешивая сортировку SQL-а.

Вопрос - как ее отключить.
Дело в том, что мне надо чтобы она в пенельке, возникающей в заголовке каждой группы писала не

Форма: 12 (12 - "это СH_id")

а

Форма: Кр-57 (это характеристика по справочнику). Но сортировка - ориоинальная.

Заранее спасибо... Немного сумбурно я тут все описал - если надо задавайте уточняющие вопросы


koks   (2002-11-06 13:29:00) [1]

2 Faun: ОГРОМНОЕ СПАСИБО !!! То, что надо


Faun   (2002-11-06 12:16:00) [2]

Если я правильно понял, "панелька" это и есть сгруппированный нод, поэтому необходимо использовать обработчик OnCustomDrawCell. Вот пример:

procedure TForm1.dxDBGridCustomDrawCell(Sender: TObject; ACanvas: TCanvas;
ARect: TRect; ANode: TdxTreeListNode; AColumn: TdxTreeListColumn;
ASelected, AFocused, ANewItemRow: Boolean; var AText: String;
var AColor: TColor; AFont: TFont; var AAlignment: TAlignment;
var ADone: Boolean);
begin
with (Sender as TdxDBGrid) do
if ANode.HasChildren and
(GroupColumns[ANode.Level].Name = "CH1_id") then
try
...
AText :="Кр-57"; {Вообще то, все что угодно, используй данные из ANode}
except
end;
end;

Подробно писать не стал. Если будут вопросы спрашивай.

ЗЫ: Рассмотрение подобных вопросов смотри на форуме разработчика www.devexpress.com


koks   (2002-11-06 10:05:00) [3]

Господа! подскажите пожалуйста, можно ли как нибудь достучаться до этой панельки, которая появляется "над" сгруппированным нодом. Мне нужно убрать все что там пишется.... Ну например написать серым на сером


koks   (2002-11-05 14:48:00) [4]

OnAddGroupColumn - возникает при RunTime группировке а у меня группировка в DesignTime.
OnCustomDrawColumnHeader - Это от носится к Headery, а у мне скорее всего надо что-то вроде OnCustomDrawNodeHeader... но такого нет
OnColumnSorting - используется для запрещения/разрешения сортировки опр. колонки.. опять таки в ран-тайме.

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

Вот думаю - попробовать использовать MasterView


KoluChi   (2002-11-05 12:52:00) [5]

Поковыряй события OnAddGroupColumn (может позволит поменять заголовок), OnColumnSorting, OnCustomDrawColumnHeader


koks   (2002-11-05 12:34:00) [6]

Ну да, мне нужно, чтобы характеристики CH* былы отсортированы по их CH*_ID причем именно так, как в запросе (ORDER BY CH1_ID, CH_ID2). Это - основополагающее для меня условие.... к сожалению ...
Вот если бы можно было как-нить подставить в панельке вместо кода значение самой характеристики - это самое лучшее решение. Но как - ума не приложу... не знаю даже где копать...


KoluChi   (2002-11-05 11:48:00) [7]

Я говорил о расшифровке характеристики (lkpCH1), ведь Ch_id скрыт от пользователя.


koks   (2002-11-05 11:46:00) [8]

В том то вся и фишка, что сортировка характеристики (Ch_id) в алфавитном порядке абсолютно неприемлема...


KoluChi   (2002-11-05 10:41:00) [9]

А чем тебе не нравится сортировка по характеристике, ну отсортирует Grid в алфавитном порядке, да так же и удобнее (для оператора).


Наверх

Титульная страница Поиск, карта сайта Написать письмо