Ehlib

XXProger

Member
Joined
Feb 22, 2010
Messages
11
Reaction score
1
Age
44
Народ подскажите в EHGrid как инвертацию сортировки сделать без правки исходников, может какие-то настройки есть?
 

Freezer_86

Member
Joined
May 6, 2011
Messages
10
Reaction score
5
Народ подскажите в EHGrid как инвертацию сортировки сделать без правки исходников, может какие-то настройки есть?
Что значит "инвертацию сортировки"?? Отсортировать в другую сторону? Или поменять иконки местами?
 

Freezer_86

Member
Joined
May 6, 2011
Messages
10
Reaction score
5
Я сделал свой класс на основе TDBGridEh, и добавил процедурку:
Code:
procedure TKDBGridEx.SortColumn(aColumn: TColumnEh;
  aSortMarker: TSortMarkerEh; MultiSort: boolean);
//var i : integer;

  procedure ClearColSorting;
  var
    i : integer;
  begin
    if not (MultiSort) then begin
      //если мультисортировка не разрешена - снимаем сортировку со всех колонок
      for I := 0 to Columns.Count - 1 do
        if (Columns[i].Title.SortMarker <> smNoneEh) then
          Columns[i].Title.SortMarker := smNoneEh;
    end;
  end;

begin

  if aColumn.Title.SortMarker <> smNoneEh then begin
   //если колонка отсортирована
    if ((aSortMarker = smUpEh) and ( aColumn.Title.SortMarker = smUpEh))
     or((aSortMarker = smDownEh) and ( aColumn.Title.SortMarker = smDownEh))
    then begin
      //если направление сортировки и клавиша совпадают
      ClearColSorting;
      DoSortMarkingChanged;
      exit;
    end else begin
      ClearColSorting;
      aColumn.Title.SortMarker := aSortMarker;
      DoSortMarkingChanged;
      exit;
    end;
  end else begin
   //если колонка еще не отсортирована
    ClearColSorting;

    aColumn.Title.SortMarker := aSortMarker;
    DoSortMarkingChanged;
    exit;
  end;
end;

Весь код компонента не выкладываю, но принцип должен быть понятен
 

XXProger

Member
Joined
Feb 22, 2010
Messages
11
Reaction score
1
Age
44
Я сделал свой класс на основе TDBGridEh, и добавил процедурку:
Code:
procedure TKDBGridEx.SortColumn(aColumn: TColumnEh;
  aSortMarker: TSortMarkerEh; MultiSort: boolean);
//var i : integer;

  procedure ClearColSorting;
  var
    i : integer;
  begin
    if not (MultiSort) then begin
      //если мультисортировка не разрешена - снимаем сортировку со всех колонок
      for I := 0 to Columns.Count - 1 do
        if (Columns[i].Title.SortMarker <> smNoneEh) then
          Columns[i].Title.SortMarker := smNoneEh;
    end;
  end;

begin

  if aColumn.Title.SortMarker <> smNoneEh then begin
   //если колонка отсортирована
    if ((aSortMarker = smUpEh) and ( aColumn.Title.SortMarker = smUpEh))
     or((aSortMarker = smDownEh) and ( aColumn.Title.SortMarker = smDownEh))
    then begin
      //если направление сортировки и клавиша совпадают
      ClearColSorting;
      DoSortMarkingChanged;
      exit;
    end else begin
      ClearColSorting;
      aColumn.Title.SortMarker := aSortMarker;
      DoSortMarkingChanged;
      exit;
    end;
  end else begin
   //если колонка еще не отсортирована
    ClearColSorting;

    aColumn.Title.SortMarker := aSortMarker;
    DoSortMarkingChanged;
    exit;
  end;
end;

Весь код компонента не выкладываю, но принцип должен быть понятен

как вариант, но я обычно правлю исходник... правда при обновлении компонент приходится заново все вносить =)
 

alexray79

Member
Joined
Jan 25, 2009
Messages
10
Reaction score
0
Age
44
Подскажите, пожалуйста, как подружить Ehlib и Absolute Database, чтобы работала сортировка и фильтрация как в TMemTableEh?
 

emailx45

Premium
Joined
May 5, 2008
Messages
2,478
Reaction score
2,223
Location
here and there
http://www.ehlib.com/en/list-of-components-and-classes

TMemTableEh
TMemTableEh - dataset, which hold data in memory. Its possible consider as an array of records.

Besides, it:
  • Supports a special interface, which allows DBGridEh component to view all data without moving active record.
  • Allows fetch data from TDataDriverEh object (DataDriver property).
  • Allows unload change back in DataDriver, operative or postponed (in dependencies of the CachedUpdates property).
  • Allows to create a master/detail relations on the client (filtering record) or on the external source (updating parameters [Params] and requiring data from DataDriver).
  • Allows once-only (without the dynamic support) sort data, including Calculated and Lookup field.
  • Allows create and fill data in design-time and save data in dfm file of the Form.
  • Allows keep record in the manner of trees. Each record can have record elements-branches and itself be an element to other parental record. Component TDBGridEh supports to show the tree-type structure of these records.
  • Allows to connect to the internal array of other TMemTableEh (via ExternalMemData property) and work with its data: sort, filter, edit.
  • Has interface for requesting list of all unique values in one column of records array, ignoring local filter of the DataSet. TDBGridEh uses this property for automatic filling a list in DropDownBox of the subtitle filter cell.
 

alexray79

Member
Joined
Jan 25, 2009
Messages
10
Reaction score
0
Age
44
Спасибо, это немного не то, что я хотел узнать.
 

S_Gur

Premium
Joined
Feb 26, 2007
Messages
38
Reaction score
6
Age
56
Location
Moscow
Господа, никто не юзал EhLib под Lazarus? В TPropStorageEh не работает редактор сохраняемых свойств. Есть какие-то решения проблемы?
 
Top