Главная страница
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.023 c
1-1095069393
Чайник
2004-09-13 13:56
2004.09.26
Stringgrid


1-1094894316
zero-g
2004-09-11 13:18
2004.09.26
Как поймать курсор в RichEdit


1-1094928058
mrald
2004-09-11 22:40
2004.09.26
PopupMenu другого цвета


3-1093861707
Kein
2004-08-30 14:28
2004.09.26
Как поудобней сохранить в базе массив данных ?


9-1083469676
Iraizor
2004-05-02 07:47
2004.09.26
DirectX нужна помощь по поводу заголовочных файлов