Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.26;
Скачать: CL | DM;

Вниз

Сортировка в DBGridEh   Найти похожие ветки 

 
3APA3A ©   (2004-08-25 23:23) [0]

Не знаю, в эту ветку или в "Базы", но
  Есть ли в DBGridEh встроенная сортировка, то есть шелкнул я по заголовку столбца - он отсортировал по этому столбцу и т.д.
  Само собой, я могу в самом запросе делать order by..., но интеерсно - можно ли без этого?


 
YurikGL ©   (2004-08-25 23:31) [1]

Обрабатываешь onclick и вперед.
Кстати, ИМХО контекстное меню удобнее реализовывать


 
YurikGL ©   (2004-08-25 23:32) [2]

http://delphimaster.net/view/3-1093442653/


 
jack128 ©   (2004-08-26 00:10) [3]

есть. см содержимое папки DataService


 
KSergey ©   (2004-08-26 07:56) [4]

Если компоненты доступа ADO - см. так же http://delphimaster.net/view/3-1093442653/


 
3APA3A ©   (2004-08-26 10:30) [5]

to YurikGL
   С этом обсуждении предполагается, что я использую FIBPlus. Но я использую IBX и у IBX нет метода DoSort()...
   Как быть?

 to jack128
   В смысле - папки DataService...


 
Роман Снегирев   (2004-08-27 12:50) [6]

а индекс использовать не судьба? или переопределить запрос (в смысле ORDER BY)?


 
Карелин Артем ©   (2004-08-27 13:00) [7]

Народ, не туда вас понесло.
uses EhLibIBX и все.

В крайнем случае вручную зовем
procedure ApplySortingForSQLBasedDataSet(Grid: TCustomDBGridEh; DataSet: TDataSet;
  UseFieldName: Boolean; IsReopen: Boolean);

 function DeleteStr(str: String; sunstr: String): String;
 var
   i: Integer;
 begin
   i := Pos(sunstr, str);
   if i <> 0 then
     Delete(str, i, Length(sunstr));
   Result := str;
 end;

var
 i, OrderLine: Integer;
 s: String;
 SQL: TStrings;
begin
 if not IsSQLBasedDataSet(DataSet, SQL) then
   raise Exception.Create(DataSet.ClassName + " is not SQL based dataset");

 s := "";
 for i := 0 to Grid.SortMarkedColumns.Count - 1 do
 begin
   if true
     then s := s + Grid.SortMarkedColumns[i].FieldName
     else s := s + IntToStr(Grid.SortMarkedColumns[i].Field.FieldNo);
   if Grid.SortMarkedColumns[i].Title.SortMarker = smUpEh
     then s := s + " DESC, "
     else s := s + ", ";
 end;

 if s <> "" then
   s := "ORDER BY " + Copy(s, 1, Length(s) - 2);

 OrderLine := -1;
 for i := 0 to SQL.Count - 1 do
   if UpperCase(Copy(SQL[i], 1, Length("ORDER BY"))) = "ORDER BY" then
   begin
     OrderLine := i;
     Break;
   end;
 if OrderLine = -1 then
 begin
   SQL.Add("");
   OrderLine := SQL.Count-1;
 end;

 SQL.Strings[OrderLine] := s;

 if IsReopen then
 begin
   DataSet.Close;
   DataSet.Open;
 end;
end;


 
jack128 ©   (2004-08-27 13:39) [8]

3APA3A ©   (26.08.04 10:30) [5]
to jack128
  В смысле - папки DataService

в этой папке {%EhLib_Root%}\DataService находится, в часности, вот этот юнит -
Карелин Артем ©   (27.08.04 13:00) [7]
uses EhLibIBX и все.



Страницы: 1 вся ветка

Текущий архив: 2004.09.26;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.059 c
14-1094374411
McSimm
2004-09-05 12:53
2004.09.26
Прошу понять меня правильно. Очень прошу.


1-1094705405
Илайдж
2004-09-09 08:50
2004.09.26
Экспорт в Excel


1-1094718598
V l a d i m i r
2004-09-09 12:29
2004.09.26
Если запущен Word, как активировать только что созданный документ


1-1094737072
kukuikar
2004-09-09 17:37
2004.09.26
Старый добрый DOS... Отсюда вопрос.


14-1094399063
Piter
2004-09-05 19:44
2004.09.26
Странный цвет у файлов