捐赠 | 广告 | 注册 | 发布 | 上传 | 关于我们    
  沪ICP备05001939号 DELPHI盒子 | 盒子论坛 | 盒子文章 | 盒子问答悬赏 | 最新更新 | 论坛检索 | 下载中心 | 高级搜索    
  精品专区 | 繁體中文 | 奖励公告栏 | 直通车账号登陆 | 关闭GOOGLE广告 | 临时留言    
 
广告
评论:EhLib v3.6 FS For D4-9/CB4-6
yuqz2000 13942 2005/4/12 11:38:30
DBEditEh 的ReadOnly属性好像有问题?
zh2000 13826 2005/4/7 23:55:14
用PrintDBGridEh1.Preview;
或PrintDBGridEh1.Print;

打印...
4110349 13680 2005/4/2 11:26:21
请问DBGridEh如何直接打印啊?
yandefu 12966 2005/3/1 14:43:55
EHLIB的排序是通过重新执行SQL来实现的,所以在网络应用中如果网速不快就很慢.
aqs 12935 2005/2/28 18:55:46
要用Query控件不要使用Table控件
TDBGridEh.OptionsEh.SghAutoSortMarking=True
TDBGridEh.Columns[*].Title.TitleButton=True
TDBGridEh.UseMultiTitle=True
在uses中添加EhLibADO.dcu或EhLibBDE.dcu (代码附后)
经过测试可以运行时排序



unit EhLibADO;

{$I EhLib.Inc}

interface

uses
  DbUtilsEh, ADODB, DB, DBGridEh;

implementation

uses Classes;

//type
//  TADODataSetCr ack = class(TADODataSet);

function ADODataSetDriverName(DataSet: TADODataSet): String;
begin
  //Result := 'MSACCESS';
  Result := 'MSSQL';
end;

function DateValueToADOSQLStringProc(DataSet: TDataSet; Value: Variant): String;
begin
  Result := DateValueToDataBaseSQLString(ADODataSetDriverName(TADODataSet(DataSet)), Value)
end;

procedure SortDataInADODataSet(Grid: TCustomDBGridEh; DataSet: TCustomADODataSet);
var
  s: String;
  i: Integer;
begin
  s := ';
  for i := 0 to Grid.SortMarkedColumns.Count - 1 do
  begin
    s := s + Grid.SortMarkedColumns[i].FieldName;
    if Grid.SortMarkedColumns[i].Title.SortMarker = smUpEh
      then s := s + ' DESC, '
      else s := s + ', ';
  end;
  DataSet.Sort := Copy(s, 1, Length(s) - 2);
end;

type

  TADOSQLDatasetFeaturesEh = class(TSQLDatasetFeaturesEh)
  public
    procedure ApplySorting(Sender: TObject; DataSet: TDataSet; IsReopen: Boolean); override;
    constructor Create; override;
  end;

  TADOCommandTextDatasetFeaturesEh = class(TCommandTextDatasetFeaturesEh)
  public
    procedure ApplySorting(Sender: TObject; DataSet: TDataSet; IsReopen: Boolean); override;
    constructor Create; override;
  end;

//implementation

{ TADOSQLDatasetFeaturesEh }

procedure TADOSQLDatasetFeaturesEh.ApplySorting(Sender: TObject;
  DataSet: TDataSet; IsReopen: Boolean);
begin
  if Sender is TCustomDBGridEh then
    if TCustomDBGridEh(Sender).SortLocal then
      SortDataInADODataSet(TCustomDBGridEh(Sender), TCustomADODataSet(DataSet))
    else
      inherited ApplySorting(Sender, DataSet, IsReopen);
end;

constructor TADOSQLDatasetFeaturesEh.Create;
begin
  inherited Create;
  DateValueToSQLString := DateValueToADOSQLStringProc;
  SupportsLocalLike := True;
end;

{ TADOCommandTextDatasetFeaturesEh }

procedure TADOCommandTextDatasetFeaturesEh.ApplySorting(Sender: TObject;
  DataSet: TDataSet; IsReopen: Boolean);
begin
  if Sender is TCustomDBGridEh then
    if TCustomDBGridEh(Sender).SortLocal then
      SortDataInADODataSet(TCustomDBGridEh(Sender), TCustomADODataSet(DataSet))
    else
      inherited ApplySorting(Sender, DataSet, IsReopen);
end;

constructor TADOCommandTextDatasetFeaturesEh.Create;
begin
  inherited Create;
  DateValueToSQLString := DateValueToADOSQLStringProc;
  SupportsLocalLike := True;
end;

initialization
  RegisterDatasetFeaturesEh(TADOSQLDatasetFeaturesEh, TADOQuery);
  RegisterDatasetFeaturesEh(TADOCommandTextDatasetFeaturesEh, TCustomADODataSet);
end.




unit EhLibBDE;

{$I EhLib.Inc}

interface

uses
{$IFDEF EH_LIB_6} Variants, {$ENDIF}
  DbUtilsEh, DBGridEh, DBTables, Db, BDE, SysUtils;

implementation

uses Classes;

type
  TBDEDataSetCrack = class(TBDEDataSet);

function BDEDataSetDriverName(DataSet: TBDEDataSet): String;
var
  hCur: hDBICur;
  rslt: DBIResult;
{$IFDEF CIL}
{$ELSE}
  Descs: STMTBaseDesc;
{$ENDIF}
  dbDes: DBDesc;
begin
  hCur := nil;
  try
    // Look at DbiQGetBaseDescs in the BDE32.HLP for more information...
{$IFDEF CIL}
    if DataSet is TQuery then
      Check(DbiQGetBaseDescs(TQuery(DataSet).STMTHandle, hCur))
    else
    begin
      Result := ';
      Exit;
    end;
{ TODO : How to get DriverName under Delphi8??? }
    Exit;
//    rslt := DbiGetNextRecord(hCur, dbiNOLOCK, Descs, nil);
//    Check(DbiGetDatabaseDesc(Descs.szDatabase, dbDes));
{$ELSE}
    Check(DbiQGetBaseDescs(TBDEDataSetCrack(DataSet).STMTHandle, hCur));
    rslt := DbiGetNextRecord(hCur, dbiNOLOCK, @Descs, nil);
    Check(DbiGetDatabaseDesc(Descs.szDatabase, @dbDes));
{$ENDIF}
     if (rslt = DBIERR_NONE) then
       // Look at STMTBaseDescs in the BDE32.HLP for more information...
       Result := dbDes.szDbType;
  finally
    if (hCur <> nil) then
      check(DbiCloseCursor(hCur));
  end;
end;

function DateValueToBDESQLStringProc(DataSet: TDataSet; Value: Variant): String;
begin
  Result := DateValueToDataBaseSQLString(BDEDataSetDriverName(TBDEDataSet(DataSet)), Value)
end;

type
  TBDEDatasetFeaturesEh = class(TSQLDatasetFeaturesEh)
  public
    procedure ApplyFilter(Sender: TObject; DataSet: TDataSet; IsReopen: Boolean); override;
  end;

{ TBDEDatasetFeaturesEh }

procedure TBDEDatasetFeaturesEh.ApplyFilter(Sender: TObject; DataSet: TDataSet; IsReopen: Boolean);
begin
  if TDBGridEh(Sender).STFilter.Local then
    TDBGridEh(Sender).DataSource.DataSet.Filter :=
      GetExpressionAsFilterString(TDBGridEh(Sender),
        GetOneExpressionAsLocalFilterString, nil)
  else
    ApplyFilterSQLBasedDataSet(TDBGridEh(Sender), DateValueToBDESQLStringProc, IsReopen, 'SQL');
end;

initialization
  RegisterDatasetFeaturesEh(TBDEDatasetFeaturesEh, TQuery);
  RegisterDatasetFeaturesEh(TBDEDatasetFeaturesEh, TTable);
end.
skyfire 12922 2005/2/28 15:35:20
aqs 高手
已按你的说明设定了,还是不能排序,在点击表头时能出现升序或是降序的三角标示,只是数据不动,而且用别人做好的在这里也能排序
 能否指明在程序中那个地方实现排序的代码和自动查找代码,谢谢!
aqs 12831 2005/2/25 10:56:39
TDBGridEh.UseMultiTitle=True
在运行时就可以排序了
dacsd 12827 2005/2/25 9:53:42
其中的LangResources中的中文资源如何用?
kuangdaoisme 12817 2005/2/24 21:46:04
怎么总是提示找不到*.dcu啊?
skyfire 12816 2005/2/24 21:28:31
安装
没有问题,在使用的时候设置了
    1、TDBGridEh的OptionsEh/SghAutoSortMarking属性设置为:True;
    2、TDBGridEh.Columns[*]的Title/TitleButton属性设置为:True。
使用ADOquery 
在运行时不能实现排序
不知什么原因
aqs 12799 2005/2/24 13:38:43
要用Query控件不要使用Table控件 他是使用SQL语句进行排序的
skyfire 12791 2005/2/24 10:54:40
我用的3.5有问题,没有办法实现排序,也设定了optionseh也设定了,title button 也为true,在运行时点击表头时也会显示箭头,但没有排序
tim001 12548 2005/2/16 10:32:45
3.5?
ninipig 12496 2005/2/9 22:17:34
3.5  verygood
lfw1123 12492 2005/2/9 0:49:21
这个好像有问题,大家用的哪个版本最好
第一页 上一页 下一页 最后页 有 35 条纪录 共2页 21 - 35
 用户名:
 密 码:
自动登陆(30天有效)
 
  DELPHI盒子版权所有 1999-2023 V4.01 粤ICP备10103342号-1 更新RSS列表