home *** CD-ROM | disk | FTP | other *** search
/ Chip 2003 January / Chip_2003-01_cd1.bin / zkuste / delphi / kolekce / d567 / FLEXCEL.ZIP / FlexCel / UXlsTDataSet.pas < prev   
Encoding:
Pascal/Delphi Source File  |  2002-09-26  |  3.3 KB  |  161 lines

  1. unit UXlsTDataSet;
  2.  
  3. interface
  4. uses SysUtils, UXlsDB, DB, UFlxMessages;
  5. type
  6.   TRecordCountProc= function (const DB: TDataSet): integer of object;
  7.  
  8.   TXlsTDataSet=class(TInterfacedObject , IXlsDataSet)
  9.   private
  10.     FDataSet: TDataSet;
  11.     FRecordCount: TRecordCountProc;
  12.   public
  13.     constructor Create(const aDataSet: TDataSet; const aRecordCount: TRecordCountProc);
  14.  
  15.     function GetFields(index: integer): IXlsField;
  16.     function GetActive: boolean;
  17.  
  18.     procedure Open;
  19.     procedure Close;
  20.     property Active: boolean read GetActive;
  21.  
  22.     function RecordCount: integer;
  23.     procedure First;
  24.     procedure Next;
  25.     procedure Last;
  26.     function Eof: boolean;
  27.  
  28.     function DsName: string;
  29.  
  30.     function FieldByName(const Name: string): IXlsField;
  31.     function FieldCount: integer;
  32.   end;
  33.  
  34.   TXlsTField = class (TInterfacedObject, IXlsField)
  35.   private
  36.     FField: TField;
  37.     FParentDataSet: IXlsDataSet;
  38.   public
  39.     constructor Create(const aField: TField; const aParentDataSet: IXlsDataSet);
  40.     function Value: variant;
  41.     function DataSet: IXlsDataSet;
  42.     function IsTDateTimeField: boolean;
  43.     function IsTMemoField: boolean;
  44.     function AsFloat: extended;
  45.  
  46.     function DisplayName: string;
  47.   end;
  48.  
  49. implementation
  50.  
  51. { TXlsTDataSet }
  52.  
  53. procedure TXlsTDataSet.Close;
  54. begin
  55.   FDataSet.Close;
  56. end;
  57.  
  58. constructor TXlsTDataSet.Create(const aDataSet: TDataSet; const aRecordCount: TRecordCountProc);
  59. begin
  60.   inherited Create;
  61.   if aDataSet=nil then Raise Exception.CreateFmt(ErrNoDataSet,['']);
  62.   FDataSet:=aDataSet;
  63.   FRecordCount:=aRecordCount;
  64. end;
  65.  
  66. function TXlsTDataSet.DsName: string;
  67. begin
  68.   Result:=FDataSet.Name;
  69. end;
  70.  
  71. function TXlsTDataSet.Eof: boolean;
  72. begin
  73.   Result:=FDataSet.Eof;
  74. end;
  75.  
  76. function TXlsTDataSet.FieldByName(const Name: string): IXlsField;
  77. begin
  78.   Result:=TXlsTField.Create(FDataSet.FieldByName(Name), Self);
  79. end;
  80.  
  81. function TXlsTDataSet.FieldCount: integer;
  82. begin
  83.   Result:= FDataSet.FieldCount;
  84. end;
  85.  
  86. procedure TXlsTDataSet.First;
  87. begin
  88.   FDataSet.First;
  89. end;
  90.  
  91. function TXlsTDataSet.GetActive: boolean;
  92. begin
  93.   Result:=FDataSet.Active;
  94. end;
  95.  
  96. function TXlsTDataSet.GetFields(index: integer): IXlsField;
  97. begin
  98.   Result:=TXlsTField.Create(FDataSet.Fields[Index], Self);
  99. end;
  100.  
  101. procedure TXlsTDataSet.Last;
  102. begin
  103.   FDataSet.Last;
  104. end;
  105.  
  106. procedure TXlsTDataSet.Next;
  107. begin
  108.   FDataSet.Next;
  109. end;
  110.  
  111. procedure TXlsTDataSet.Open;
  112. begin
  113.   FDataSet.Open;
  114. end;
  115.  
  116. function TXlsTDataSet.RecordCount: integer;
  117. begin
  118.   Result:=FRecordCount(FDataSet);
  119. end;
  120.  
  121. { TXlsTField }
  122.  
  123. function TXlsTField.AsFloat: extended;
  124. begin
  125.   Result:=FField.AsFloat;
  126. end;
  127.  
  128. constructor TXlsTField.Create(const aField: TField; const aParentDataSet: IXlsDataSet);
  129. begin
  130.   if aField=nil then raise Exception.Create(ErrFieldNil);
  131.   FField:=aField;
  132.   FParentDataSet:=aParentDataSet;
  133. end;
  134.  
  135. function TXlsTField.DataSet: IXlsDataSet;
  136. begin
  137.   Result:=FParentDataSet;
  138. end;
  139.  
  140. function TXlsTField.DisplayName: string;
  141. begin
  142.   Result:=FField.DisplayName;
  143. end;
  144.  
  145. function TXlsTField.IsTDateTimeField: boolean;
  146. begin
  147.   Result:=FField is TDateTimeField;
  148. end;
  149.  
  150. function TXlsTField.IsTMemoField: boolean;
  151. begin
  152.   Result:=FField is TMemoField;
  153. end;
  154.  
  155. function TXlsTField.Value: variant;
  156. begin
  157.   Result:=FField.Value;
  158. end;
  159.  
  160. end.
  161.