Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.12.2009, 23:05   #1
mental
Пользователь
 
Регистрация: 07.01.2009
Сообщений: 36
По умолчанию Сортировка при клике на колонке

Вообщем нужно чтобы при клике на колонку DBGrid происходила сортировка данных.
Попробывал, установив пакет EHLIB, настроев DBGridEh сортировка не происходит, может есть какой-то аналог ему?

вот моя прога+пакет Ehlib, если кто сможет помочь

Последний раз редактировалось mental; 21.12.2009 в 03:55.
mental вне форума Ответить с цитированием
Старый 20.12.2009, 23:12   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Делается на обычном ДБГриде. Событие DBGrid1TitleClick.
Весь фокус в том, что нужно сначала в таблице БД определить вторичные индексы по нужным полям (по которым нужно будет проводить сортировку).
mihali4 вне форума Ответить с цитированием
Старый 21.12.2009, 04:02   #3
mental
Пользователь
 
Регистрация: 07.01.2009
Сообщений: 36
По умолчанию

На сколько я понял можно сортировать только по 1 полю или сразу по нескольку, а как сделать, чтобы сортировка была у каждой колонке?
mental вне форума Ответить с цитированием
Старый 21.12.2009, 14:21   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Читайте еще раз пост №2.
Сколько полей и в каком порядке будет включено в индекс, так и будет происходить сортировка.
mihali4 вне форума Ответить с цитированием
Старый 23.12.2009, 11:12   #5
Highlander1981
Пользователь
 
Регистрация: 12.11.2009
Сообщений: 20
По умолчанию

Если используешь Query и DBGRidEh, то ключи можно не создавать, а использовать событие OnTitleBtnClick и сортировку в запросе делать, типа:

Код:
procedure TForm1.DBGridEh1TitleBtnClick(Sender: TObject; ACol: Integer;
  Column: TColumnEh);
begin
     DBGridEh1.Columns[ACol].Title.SortMarker:=smUpEh;
     Query1.Active:=false;
     Query1.SQL.Clear;
     Query1.SQL.Add('SELECT *');
     Query1.SQL.Add('FROM Table');
     Query1.SQL.Add('ORDER BY '+ DBGridEh1.Columns[ACol].FieldName);
     Query1.Active:=true;
end;
Table в запросе соответственно твоя таблица.
Highlander1981 вне форума Ответить с цитированием
Старый 23.12.2009, 15:37   #6
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

А что, у обычного DBGrid нет события OnTitleClick ?
Или обычный DBGrid каким-то образом не позволит выполнить SQL-запрос ?
mihali4 вне форума Ответить с цитированием
Старый 23.12.2009, 17:07   #7
Highlander1981
Пользователь
 
Регистрация: 12.11.2009
Сообщений: 20
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
А что, у обычного DBGrid нет события OnTitleClick ?
Или обычный DBGrid каким-то образом не позволит выполнить SQL-запрос ?
Согласен можно.
Просто меня смущало отсутсвие ACol в onTitleClick у DBGrid.
Код:
procedure TForm1.DBGridEh1TitleBtnClick(Sender: TObject; ACol: Integer; Column: TColumnEh);
procedure TForm1.DBGrid1TitleClick(Column: TColumn);
А сейчас только дошло, что вместо DBGridEh1.Columns[ACol].FieldName, можно просто использовать Сolomn.FieldName, тогда и обычный DBGrid можно использовать, просто маркера сортировки не будет в шапке.
Highlander1981 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическую сортировка на стороне клиента по каждой из колонке таблички с помщью javascript ssdm JavaScript, Ajax 1 30.11.2009 10:45
Должна картинка при клике, меняться на картинку сер4ей HTML и CSS 2 29.04.2009 12:22
Див - Текст отьежает при клике (HTML) kaviga Помощь студентам 13 21.02.2009 11:57
Выводить данные по при клике на лукапкомбобокс Arkuz БД в Delphi 5 08.12.2008 21:42
при клике на форму должен происходить выстрел (звук) wolf950 Помощь студентам 2 25.11.2008 15:51