Сортировка при клике на колонке

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

Делается на обычном ДБГриде. Событие DBGrid1TitleClick. Весь фокус в том, что нужно сначала в таблице БД определить вторичные индексы по нужным полям (по которым нужно будет проводить сортировку).


На сколько я понял можно сортировать только по 1 полю или сразу по нескольку, а как сделать, чтобы сортировка была у каждой колонке?


Читайте еще раз пост №2. Сколько полей и в каком порядке будет включено в индекс, так и будет происходить сортировка.


Если используешь 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 в запросе соответственно твоя таблица.


А что, у обычного DBGrid нет события OnTitleClick ? Или обычный DBGrid каким-то образом не позволит выполнить SQL-запрос ?


А что, у обычного 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 можно использовать, просто маркера сортировки не будет в шапке.