目的是将xlGrid改成可以连接多个数据源。
TXLDataLink = class(TDataLink)
private
FBand: TXLBand;
FModified: Boolean;
FInUpdateData: Boolean;
procedure SetBand(const Value: TXLBand);
protected
procedure ActiveChanged; override;
procedure DataSetChanged; override;
procedure DataSetScrolled(Distance: Integer); override;
procedure EditingChanged; override;
procedure RecordChanged(Field: TField); override;
procedure UpdateData; override;
public
constructor Create(ABand: TXLBand);
destructor Destroy; override;
procedure Modified;
property Band: TXLBand read FBand write SetBand;
end; TXLBand = class(TPersistent)
private
FName: string;
FDataLink: TXLDataLink;
FRange: TRect;
FSheet: TXLSheet;
FDataSourceName: string;
FStep: Integer;
FDataInfo: TPanel;
FUpInfo, FDownInfo: TLabel;
FPageNo: Integer;
procedure SetName(const Value: string);
procedure SetRange(const Value: TRect);
procedure SetSheet(const Value: TXLSheet);
procedure SetDataSourceName(const Value: string);
procedure SetStep(const Value: Integer);
function GetDataSet: TDataSet;
function GetDataSource: TDataSource;
procedure DisCellValue(ACell: TXLCell; AValue: Integer; var Stop: Boolean);
procedure MoveToFirst(Sender: TObject);
procedure MoveToLast(Sender: TObject);
procedure SetPageNo(const Value: Integer);
protected
procedure Load(AStream: TXLStream);
procedure Save(AStream: TXLStream);
public
constructor Create(AName: string; ASheet: TXLSheet; ARect: TRect);
destructor Destroy; override;
function LoadFromStream(AStream: TXLStream): Boolean;
procedure SaveToStream(AStream: TXLStream);
procedure ActiveChanged(Active: Boolean);
procedure DataSetChanged;
procedure DataSetScrolled(Distance: Integer);
procedure EditingChanged;
procedure RecordChanged(Field: TField);
procedure UpdateData;
procedure DisplayDataInfo;
property Step: Integer read FStep write SetStep;
property PageNo: Integer read FPageNo write SetPageNo;
property Name: string read FName write SetName;
property Range: TRect read FRange write SetRange;
property DataSet: TDataSet read GetDataSet;
property Sheet: TXLSheet read FSheet write SetSheet;
property DataSource: TDataSource read GetDataSource;
property DataSourceName: string read FDataSourceName write SetDataSourceName;
end; TXLBandList = class(TPersistent)
private
FBandList: TStringList;
FSheet: TXLSheet;
function GetBand(AIndex: Integer): TXLBand;
procedure SetSheet(const Value: TXLSheet);
function GetCount: Integer;
procedure SetBandName;
protected
procedure Load(AStream: TXLStream);
procedure Save(AStream: TXLStream);
public
constructor Create(ASheet: TXLSheet);
destructor Destroy; override;
function LoadFromStream(AStream: TXLStream): Boolean;
procedure SaveToStream(AStream: TXLStream);
function Add(AName: string; ARect: TRect): TXLBand;
function Delete(AName: string): Boolean;
function BandByName(AName: string): TXLBand;
property Items[AIndex: Integer]: TXLBand read GetBand; default;
property Sheet: TXLSheet read FSheet write SetSheet;
property Count: Integer read GetCount;
end;
TXLDataLink = class(TDataLink)
private
FBand: TXLBand;
FModified: Boolean;
FInUpdateData: Boolean;
procedure SetBand(const Value: TXLBand);
protected
procedure ActiveChanged; override;
procedure DataSetChanged; override;
procedure DataSetScrolled(Distance: Integer); override;
procedure EditingChanged; override;
procedure RecordChanged(Field: TField); override;
procedure UpdateData; override;
public
constructor Create(ABand: TXLBand);
destructor Destroy; override;
procedure Modified;
property Band: TXLBand read FBand write SetBand;
end; TXLBand = class(TPersistent)
private
FName: string;
FDataLink: TXLDataLink;
FRange: TRect;
FSheet: TXLSheet;
FDataSourceName: string;
FStep: Integer;
FDataInfo: TPanel;
FUpInfo, FDownInfo: TLabel;
FPageNo: Integer;
procedure SetName(const Value: string);
procedure SetRange(const Value: TRect);
procedure SetSheet(const Value: TXLSheet);
procedure SetDataSourceName(const Value: string);
procedure SetStep(const Value: Integer);
function GetDataSet: TDataSet;
function GetDataSource: TDataSource;
procedure DisCellValue(ACell: TXLCell; AValue: Integer; var Stop: Boolean);
procedure MoveToFirst(Sender: TObject);
procedure MoveToLast(Sender: TObject);
procedure SetPageNo(const Value: Integer);
protected
procedure Load(AStream: TXLStream);
procedure Save(AStream: TXLStream);
public
constructor Create(AName: string; ASheet: TXLSheet; ARect: TRect);
destructor Destroy; override;
function LoadFromStream(AStream: TXLStream): Boolean;
procedure SaveToStream(AStream: TXLStream);
procedure ActiveChanged(Active: Boolean);
procedure DataSetChanged;
procedure DataSetScrolled(Distance: Integer);
procedure EditingChanged;
procedure RecordChanged(Field: TField);
procedure UpdateData;
procedure DisplayDataInfo;
property Step: Integer read FStep write SetStep;
property PageNo: Integer read FPageNo write SetPageNo;
property Name: string read FName write SetName;
property Range: TRect read FRange write SetRange;
property DataSet: TDataSet read GetDataSet;
property Sheet: TXLSheet read FSheet write SetSheet;
property DataSource: TDataSource read GetDataSource;
property DataSourceName: string read FDataSourceName write SetDataSourceName;
end; TXLBandList = class(TPersistent)
private
FBandList: TStringList;
FSheet: TXLSheet;
function GetBand(AIndex: Integer): TXLBand;
procedure SetSheet(const Value: TXLSheet);
function GetCount: Integer;
procedure SetBandName;
protected
procedure Load(AStream: TXLStream);
procedure Save(AStream: TXLStream);
public
constructor Create(ASheet: TXLSheet);
destructor Destroy; override;
function LoadFromStream(AStream: TXLStream): Boolean;
procedure SaveToStream(AStream: TXLStream);
function Add(AName: string; ARect: TRect): TXLBand;
function Delete(AName: string): Boolean;
function BandByName(AName: string): TXLBand;
property Items[AIndex: Integer]: TXLBand read GetBand; default;
property Sheet: TXLSheet read FSheet write SetSheet;
property Count: Integer read GetCount;
end;
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货