powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / сортировка в DBGridEh
14 сообщений из 14, страница 1 из 1
сортировка в DBGridEh
    #32309797
Hel975
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Использую в работе DBGridEh. Пишу процедуру для сортировки:

procedure TfrmBrowse.dbGridMainTitleBtnClick(Sender: TObject;
ACol: Integer; Column: TColumnEh);
begin
case Column.Title.SortMarker of
smNoneEh :
begin
frmDM.adotblCompanies.Sort := Column.FieldName+' DESC';
Column.Title.SortMarker := smDownEh;
end;
smDownEh :
begin
frmDM.adotblCompanies.Sort := Column.FieldName+' ASC';
Column.Title.SortMarker := smUpEh;
end;
smUpEh :
begin
frmDM.adotblCompanies.Sort := '';
Column.Title.SortMarker := smNoneEh;
end;
end;
end;

Все прекрасно, все работает. Но в проекте у меня 5 гридов. Не охота для каждой писать такую же процедуру. Как можно написать одну общую для всех процедуру. Плохо у меня с ОПП... :-(
...
Рейтинг: 0 / 0
сортировка в DBGridEh
    #32309808
Maybe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что то не пойму
почему процедура не подходит
...
Рейтинг: 0 / 0
сортировка в DBGridEh
    #32309814
Maybe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
procedure q(a:tdbgrideh);
var a:tdbgrideh;
begin
....
end;
...
Рейтинг: 0 / 0
сортировка в DBGridEh
    #32309817
Hel975
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С процедурой то все ОК. Охота методами ООП написать универсальную процедуру для любых DataSet'ов.
...
Рейтинг: 0 / 0
сортировка в DBGridEh
    #32309822
Hel975
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чтобы каждый раз не указывать - adotblCompanies.Sort := Column.FieldName+' DESC';
...
Рейтинг: 0 / 0
сортировка в DBGridEh
    #32309828
Maybe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а
у меня седня магнитная буря в голове
щас, минутку
...
Рейтинг: 0 / 0
сортировка в DBGridEh
    #32309839
Hel975
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это отголоски всерашней, наверное... А отстальные и того хуже - спят...
...
Рейтинг: 0 / 0
сортировка в DBGridEh
    #32309845
Артем1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще-то EhLib начиная версии с 3.0, кажется, позволяет автоматически сортировать данные в гриде.
Читайте help, нам описано, какие свойства надо установить.
А поскольку ADO-шные наборы он пытается сортировать путем перезапроса,
то вот мой unit для локальной сортировки.

Правда, я писал для TBEtterADODataSet,
сами замените на TADODataSet.

Как его подключить, написано в папочке EhLib в .\DataService\readme.txt

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
{*******************************************************}
{                                                       }
{                       EhLib v2. 5                       }
{  Register object that sort data in TBetterADODataSet  }
{                                                       }
{      Copyright (c)  2002  by Dmitry V. Bolshakov        }
{                                                       }
{*******************************************************}

{*******************************************************}
{ Add this unit to 'uses' clause of any unit of your    }
{ project to allow TDBGridEh to sort data in            }
{ TBetterADODataSet automatically after sorting markers }
{ will be changed.                                      }
{                                                       }
{                                                       }
{                                                       }
{                                                       }
{*******************************************************}

unit EhLibBetterADO;

{$I EhLib.Inc}

interface

uses
  DbUtilsEh, DB, DBGridEh;

type

  TBetterADODatasetFeaturesEh = class(TDatasetFeaturesEh)
  public
    procedure ApplySorting(Sender: TObject; DataSet: TDataSet; IsReopen: Boolean); override;
  end;


implementation

uses Classes, BetterADODataSet;

{ TBetterADODatasetFeaturesEh }

procedure TBetterADODatasetFeaturesEh.ApplySorting(Sender: TObject;
  DataSet: TDataSet; IsReopen: Boolean);
var SortString: String;
    Separator: String;
    i: Integer;
begin
  inherited;
  if (Sender is TCustomDBGridEh) and (DataSet is TBetterADODataSet) then
    if TCustomDBGridEh(Sender).SortLocal then
      with TCustomDBGridEh(Sender) do
      begin
          SortString := '';
          for i :=  0  to SortMarkedColumns.Count -  1  do
          begin
            if i = (SortMarkedColumns.Count -  1 ) then
              Separator := ''
            else
              Separator := ',';
            if SortMarkedColumns[i].Title.SortMarker = smUpEh then
              SortString := SortString + SortMarkedColumns[i].FieldName + Separator
            else
              SortString := SortString + SortMarkedColumns[i].FieldName + ' DESC' + Separator;
          end;
          TBetterADODataSet(DataSet).Sort := SortString;
      end;{ with }
end;

initialization
  RegisterDatasetFeaturesEh(TBetterADODatasetFeaturesEh, TBetterADODataSet);
end.
...
Рейтинг: 0 / 0
сортировка в DBGridEh
    #32309848
Артем1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это не отголоски. Сегодня новая идет. После обеда дойдет.
:)
...
Рейтинг: 0 / 0
сортировка в DBGridEh
    #32309870
Maybe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
до меня видно уже дошла - я тут на краю земли живу
я седня за 2 последних часа уронила цветочный горош, кружку, 3-томный отчет, стул и коллегу
...
Рейтинг: 0 / 0
сортировка в DBGridEh
    #32309878
Артем1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сегодня работать определенно нельзя.
...
Рейтинг: 0 / 0
сортировка в DBGridEh
    #32309889
Maybe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тебе смешно, а ему больно
...
Рейтинг: 0 / 0
сортировка в DBGridEh
    #32309896
Hel975
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А у меня начальник потерялся. Вот не знаю радоваться или нет...
...
Рейтинг: 0 / 0
сортировка в DBGridEh
    #32309918
Артем1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Радоваться конечно.
Теперь и самому можно потеряться до обеда.
А потом отмазываться, типа искал.
:)
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / сортировка в DBGridEh
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]