home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 October / Chip_2001-10_cd1.bin / zkuste / delphi / kompon / d45 / ARDOCI.ZIP / MemoryDataSet.pas < prev    next >
Pascal/Delphi Source File  |  2001-03-01  |  2KB  |  85 lines

  1. unit MemoryDataSet;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  7.   Db, VirtualDataSet, DataSetQuery, DynamicArrays, ADataSet;
  8.  
  9. type
  10.   TMemoryDataSet = class(TDataSetQuery)
  11.   private
  12.     { Private declarations }
  13.   protected
  14.     { Protected declarations }
  15.   public
  16.    constructor Create(AOwner:TComponent);override;
  17.    procedure OpenWithData(Fields:THArrayPointer);
  18.     // ε≥Ω≡√Γασ≥ MemoryDataSet ± Σαφφ√∞Φ ∩σ≡σΣαΓασ∞√∞Φ Fields
  19.     // Fields - ²≥ε ∞α±±ΦΓ ≤Ωατα≥σδσΘ φα Ωδα±±√ ≥Φ∩α TAField
  20.     // ΩαµΣ√Θ TAField ±εΣσ≡µΦ≥ Γ ±σßσ ±≥εδßσ÷ ± Σαφφ√∞Φ Φ ε∩Φ±αφΦ  ≈≥ε τα Σαφφ√σ εφ ⌡≡αφΦ≥
  21.     // Fields.Count - ΩεδΦ≈σ±≥Γε ∩εδσΘ Γ ß≤Σ≤∙σΘ ≥αßδΦ÷σ
  22.     // TAField(Fields[i]).Count - ΩεδΦ≈σ±≥Γε ±≥≡εΩ Γ ≥αßδΦ÷σ (Σδ  Γ±σ⌡ ∩εδσΘ Γ Fields εφε Σεδµφε ß√≥ⁿ εΣΦφαΩεΓ√∞)
  23.    function GetNormalCurrent : integer;
  24.    function VPost(RecordNum:integer):TUpdateAction;override;
  25.    function VInsert(RecordNum:integer):TUpdateAction;override;
  26.    function VDeleteRecord (RecordNum:integer):TUpdateAction; override;
  27.   published
  28.     { Published declarations }
  29.   end;
  30.  
  31. procedure Register;
  32.  
  33. implementation
  34.  
  35. procedure Register;
  36. begin
  37.   RegisterComponents('Data Access', [TMemoryDataSet]);
  38. end;
  39.  
  40. constructor TMemoryDataSet.Create(AOwner: TComponent);
  41. begin
  42.  inherited CreateSet(AOwner,qtMemory);
  43. end;
  44.  
  45. function TMemoryDataSet.GetNormalCurrent : integer;
  46. begin
  47.   if Self.CurrentRecord < 0 then Result := 0
  48.   else  if Self.CurrentRecord > Self.RecordCount-1 then Result := Self.RecordCount-1
  49.   else Result := Self.CurrentRecord;
  50. end;
  51.  
  52. procedure TMemoryDataSet.OpenWithData(Fields: THArrayPointer);
  53. var i:integer;
  54. begin
  55.  Query.ClearFields;
  56.  FieldDefs.Clear;
  57.  for i:=0 to Fields.Count-1 do
  58.   FieldDefs.Add(TAField(Fields[i]).Name,TypeAToDelphi(TAField(Fields[i]).FieldType),
  59.   TAField(Fields[i]).FieldSize,TAField(Fields[i]).Required);
  60.  
  61.  Open;
  62.  Query.Open(Fields);
  63.  SyncBookm;
  64.  Refresh;
  65. end;
  66.  
  67. function TMemoryDataSet.VDeleteRecord(RecordNum: integer): TUpdateAction;
  68. begin
  69.  Result:=uaApplied;
  70.  Query.DeleteRecord(RecordNum);
  71. end;
  72.  
  73. function TMemoryDataSet.VInsert(RecordNum: integer): TUpdateAction;
  74. begin
  75.  Result:=uaApplied;
  76.  Query.InsertRecord(RecordNum);
  77. end;
  78.  
  79. function TMemoryDataSet.VPost(RecordNum: integer): TUpdateAction;
  80. begin
  81.  Result:=uaApplied;
  82. end;
  83.  
  84. end.
  85.