Сортировка колонки по клику в заголовок DBGrid

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
mrkaban
новенький
Сообщения: 55
Зарегистрирован: 28.05.2016 08:48:18
Контактная информация:

Сортировка колонки по клику в заголовок DBGrid

Сообщение mrkaban »

Здравствуйте, нужно сделать сортировку колонки по нажатию на заголовок в DBGrid. Подскажите пожалуйста, как это можно сделать?
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3067
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Re: Сортировка колонки по клику в заголовок DBGrid

Сообщение Снег Север »

Например, отлавливать событие нажатия и добавлять к SQL sortby ...
mrkaban
новенький
Сообщения: 55
Зарегистрирован: 28.05.2016 08:48:18
Контактная информация:

Re: Сортировка колонки по клику в заголовок DBGrid

Сообщение mrkaban »

Я правильно понял, что речь про событие "DBGrid1CellClick" или как? Не понимаю, как система поймёт по какому столбцу сортировать
Аватара пользователя
wofs
постоялец
Сообщения: 379
Зарегистрирован: 05.10.2009 10:16:55
Откуда: Астрахань
Контактная информация:

Re: Сортировка колонки по клику в заголовок DBGrid

Сообщение wofs »

mrkaban писал(а):Я правильно понял, что речь про событие "DBGrid1CellClick" или как?

onTitleClick (Event handler for mouse click on Title).
mrkaban писал(а):Не понимаю, как система поймёт по какому столбцу сортировать

А это вы ему сами скажете.
У вышеуказанного события есть Column: TColumn. Доступ к имени поля можно получить через Column.FieldName. А дальше просто добавляете к SQL сортировку.
mrkaban
новенький
Сообщения: 55
Зарегистрирован: 28.05.2016 08:48:18
Контактная информация:

Re: Сортировка колонки по клику в заголовок DBGrid

Сообщение mrkaban »

wofs писал(а):
mrkaban писал(а):Я правильно понял, что речь про событие "DBGrid1CellClick" или как?

onTitleClick (Event handler for mouse click on Title).

Действительно! Спасибо большое!
wofs писал(а):
mrkaban писал(а):Не понимаю, как система поймёт по какому столбцу сортировать

А это вы ему сами скажете.
У вышеуказанного события есть Column: TColumn. Доступ к имени поля можно получить через Column.FieldName. А дальше просто добавляете к SQL сортировку.


Спасибо большое! Буду пробовать!
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Re: Сортировка колонки по клику в заголовок DBGrid

Сообщение alexs »

возьми RxDBGrid - он умеет это со всеми основными движками запросов к БД
Аватара пользователя
wofs
постоялец
Сообщения: 379
Зарегистрирован: 05.10.2009 10:16:55
Откуда: Астрахань
Контактная информация:

Re: Сортировка колонки по клику в заголовок DBGrid

Сообщение wofs »

alexs писал(а):возьми RxDBGrid - он умеет это со всеми основными движками запросов к БД

А под IBX возможно адаптировать эту функцию? Я не сообразил как...
Аватара пользователя
*Rik*
постоялец
Сообщения: 453
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал
Контактная информация:

Re: Сортировка колонки по клику в заголовок DBGrid

Сообщение *Rik* »

TxDBGrid можно адаптировать (http://visual-t.ru/components.html), могу сказать где пример кода взять для TxDBGrid, будет при щелчке на заголовке сортировать IBX, Zeos, TxDBF
Аватара пользователя
wofs
постоялец
Сообщения: 379
Зарегистрирован: 05.10.2009 10:16:55
Откуда: Астрахань
Контактная информация:

Re: Сортировка колонки по клику в заголовок DBGrid

Сообщение wofs »

*Rik* писал(а):TxDBGrid можно адаптировать (http://visual-t.ru/components.html)

Ой, спасибо! Уже подсмотрел :)
Аватара пользователя
*Rik*
постоялец
Сообщения: 453
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал
Контактная информация:

Re: Сортировка колонки по клику в заголовок DBGrid

Сообщение *Rik* »

wofs писал(а):
*Rik* писал(а):TxDBGrid можно адаптировать (http://visual-t.ru/components.html)

Ой, спасибо! Уже подсмотрел :)

Там 2 процедуры надо подключить, их можно вытащить из http://visual-t.ru/files/CrossDesigner.7z, проект CrossMachine.
Процедуры: GetDBSortingField и OnAutoSortDataset.
В модуле XDBGrids есть 2 переменные процедурного типа, процедуры надо к ним привязать:
XDBGrids.GetDataSortField := @GetDBSortingField;
XDBGrids.AutoSortDataSet:= @OnAutoSortDataset;
Если не охота процедуры искать, могу их сюда вытащить, но много букв будет..
Аватара пользователя
wofs
постоялец
Сообщения: 379
Зарегистрирован: 05.10.2009 10:16:55
Откуда: Астрахань
Контактная информация:

Re: Сортировка колонки по клику в заголовок DBGrid

Сообщение wofs »

*Rik* писал(а):Если не охота процедуры искать, могу их сюда вытащить, но много букв будет..

Нет, нет спасибо большое за помощь! Я все нашел.
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Re: Сортировка колонки по клику в заголовок DBGrid

Сообщение alexs »

wofs писал(а):А под IBX возможно адаптировать эту функцию? Я не сообразил как...

А где взять IBX? Я посмотрю что там.
Аватара пользователя
*Rik*
постоялец
Сообщения: 453
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал
Контактная информация:

Re: Сортировка колонки по клику в заголовок DBGrid

Сообщение *Rik* »

alexs писал(а):
wofs писал(а):А под IBX возможно адаптировать эту функцию? Я не сообразил как...

А где взять IBX? Я посмотрю что там.

http://visual-t.ru/ibexpress.html
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Re: Сортировка колонки по клику в заголовок DBGrid

Сообщение alexs »

Добавил сортировщик для IBX для RxDBGrid-а
Также пример
Аватара пользователя
wofs
постоялец
Сообщения: 379
Зарегистрирован: 05.10.2009 10:16:55
Откуда: Астрахань
Контактная информация:

Re: Сортировка колонки по клику в заголовок DBGrid

Сообщение wofs »

alexs писал(а):Добавил сортировщик для IBX для RxDBGrid-а

Спасибо! Я правда сделал решение, бодро шагающее на костылях, но когда оно из коробки - это гораздо лучше.
Ответить