Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / сортировка в DBGridEh / 14 сообщений из 14, страница 1 из 1
30.10.2003, 09:19
    #32309797
Hel975
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сортировка в DBGridEh
Использую в работе 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
30.10.2003, 09:37
    #32309808
Maybe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сортировка в DBGridEh
что то не пойму
почему процедура не подходит
...
Рейтинг: 0 / 0
30.10.2003, 09:41
    #32309814
Maybe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сортировка в DBGridEh
procedure q(a:tdbgrideh);
var a:tdbgrideh;
begin
....
end;
...
Рейтинг: 0 / 0
30.10.2003, 09:44
    #32309817
Hel975
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сортировка в DBGridEh
С процедурой то все ОК. Охота методами ООП написать универсальную процедуру для любых DataSet'ов.
...
Рейтинг: 0 / 0
30.10.2003, 09:47
    #32309822
Hel975
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сортировка в DBGridEh
чтобы каждый раз не указывать - adotblCompanies.Sort := Column.FieldName+' DESC';
...
Рейтинг: 0 / 0
30.10.2003, 09:51
    #32309828
Maybe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сортировка в DBGridEh
а
у меня седня магнитная буря в голове
щас, минутку
...
Рейтинг: 0 / 0
30.10.2003, 09:59
    #32309839
Hel975
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сортировка в DBGridEh
это отголоски всерашней, наверное... А отстальные и того хуже - спят...
...
Рейтинг: 0 / 0
30.10.2003, 10:02
    #32309845
Артем1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сортировка в DBGridEh
Вообще-то 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
30.10.2003, 10:02
    #32309848
Артем1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сортировка в DBGridEh
Это не отголоски. Сегодня новая идет. После обеда дойдет.
:)
...
Рейтинг: 0 / 0
30.10.2003, 10:11
    #32309870
Maybe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сортировка в DBGridEh
до меня видно уже дошла - я тут на краю земли живу
я седня за 2 последних часа уронила цветочный горош, кружку, 3-томный отчет, стул и коллегу
...
Рейтинг: 0 / 0
30.10.2003, 10:15
    #32309878
Артем1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сортировка в DBGridEh
Сегодня работать определенно нельзя.
...
Рейтинг: 0 / 0
30.10.2003, 10:21
    #32309889
Maybe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сортировка в DBGridEh
тебе смешно, а ему больно
...
Рейтинг: 0 / 0
30.10.2003, 10:26
    #32309896
Hel975
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сортировка в DBGridEh
А у меня начальник потерялся. Вот не знаю радоваться или нет...
...
Рейтинг: 0 / 0
30.10.2003, 10:35
    #32309918
Артем1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
сортировка в DBGridEh
Радоваться конечно.
Теперь и самому можно потеряться до обеда.
А потом отмазываться, типа искал.
:)
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / сортировка в DBGridEh / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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