TcxCustomDataSource



unit cmpxxxxxx;

interface

uses
  Variants, Classes, cxCustomData, cxGridTableView, SysUtils, ...;

type
  // ...


  TxxxDataSource = class(TcxCustomDataSource)
  private
    //... some private members here.

  //... some private method or function here.
  protected
    function GetRecordCount: Integer; override;
    function GetValue(ARecordHandle: TcxDataRecordHandle;
      AItemHandle: TcxDataItemHandle): Variant; override;
    procedure SetValue(ARecordHandle: TcxDataRecordHandle;
      AItemHandle: TcxDataItemHandle; const AValue: Variant); override;
  public
    constructor Create(AAllObjects: TRes; ADataInfos: TDI);
    function AppendRecord: TcxDataRecordHandle; override;
    function InsertRecord(ARecordHandle: TcxDataRecordHandle): TcxDataRecordHandle; override;
    procedure DeleteRecord(ARecordHandle: TcxDataRecordHandle); override;
    procedure RefreshRecord(pTopIndex: Integer);
    //... some properties here
  end;


  TxxxDataSource = class(TcxCustomDataSource)
  private
    //...
  protected
    function InsertRecord(ARecordHandle: TcxDataRecordHandle): TcxDataRecordHandle; override;
    function AppendRecord: TcxDataRecordHandle; override;
    procedure DeleteRecord(ARecordHandle: TcxDataRecordHandle); override;
    function GetResourceValue(pResource: TUOResource; ARecordHandle: TcxDataRecordHandle;
      AItemHandle: TcxDataItemHandle): Variant;
    procedure SetResourceValue(pResource: TRes; ARecordHandle: TcxDataRecordHandle;
      AItemHandle: TcxDataItemHandle; const AValue: Variant);
    function GetRecordCount: Integer; override;
    function GetValue(ARecordHandle: TcxDataRecordHandle;
      AItemHandle: TcxDataItemHandle): Variant; override;
    procedure SetValue(ARecordHandle: TcxDataRecordHandle;
      AItemHandle: TcxDataItemHandle; const AValue: Variant); override;
  public
    constructor Create(ASelectResource: TRes; ADataInfos: TDI);
    //...
  end;

implementation

{ TxxxDataSource }

function TxxxDataSource.AppendRecord: TcxDataRecordHandle;
begin
//
end;

constructor TxxxDataSource.Create(AAllObjects: TRes;
  ADataInfos: TDI);
begin
  inherited Create;
  FAllObjects := AAllObjects;
  FDataInfos := ADataInfos;
end;

procedure TxxxDataSource.DeleteRecord(
  ARecordHandle: TcxDataRecordHandle);
begin
  inherited;
end;

function TxxxDataSource.InsertRecord(
  ARecordHandle: TcxDataRecordHandle): TcxDataRecordHandle;
begin
//
end;

function TxxxDataSource.GetRecordCount: Integer;
begin
  Result := FAllObjects.Count;
end;

function TxxxDataSource.GetValue(
  ARecordHandle: TcxDataRecordHandle;
  AItemHandle: TcxDataItemHandle): Variant;
var
  lObj: TObj;
  lColumnId: Integer;
  Index: Integer;
  lDataInfo: TDI;
  lPos: Integer;
begin
  if FAllObjects.Count <= 0 then exit;
  if not (FAllObjects.Items[Integer(ARecordHandle)] is TObj) then
  begin
    Result := GetResourceValue(FAllObjects.Items[Integer(ARecordHandle)], ARecordHandle, AItemHandle);
    Exit;
  end;

  lObj:= TObj(FAllObjects.Items[Integer(ARecordHandle)]);
  lColumnId := GetDefaultItemID(Integer(AItemHandle));
  case lColumnId of
    0: Result := Integer(Pointer(lObj));
    1: Result := lObj.IsSelect;
    ...
  end;
end;

end.


转载于:https://www.cnblogs.com/tongy0/archive/2011/07/29/2121130.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值