home *** CD-ROM | disk | FTP | other *** search
- unit MemoryDataSet;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
- Db, VirtualDataSet, DataSetQuery, DynamicArrays, ADataSet;
-
- type
- TMemoryDataSet = class(TDataSetQuery)
- private
- { Private declarations }
- protected
- { Protected declarations }
- public
- constructor Create(AOwner:TComponent);override;
- procedure OpenWithData(Fields:THArrayPointer);
- // ε≥Ω≡√Γασ≥ MemoryDataSet ± Σαφφ√∞Φ ∩σ≡σΣαΓασ∞√∞Φ Fields
- // Fields - ²≥ε ∞α±±ΦΓ ≤Ωατα≥σδσΘ φα Ωδα±±√ ≥Φ∩α TAField
- // ΩαµΣ√Θ TAField ±εΣσ≡µΦ≥ Γ ±σßσ ±≥εδßσ÷ ± Σαφφ√∞Φ Φ ε∩Φ±αφΦ ≈≥ε τα Σαφφ√σ εφ ⌡≡αφΦ≥
- // Fields.Count - ΩεδΦ≈σ±≥Γε ∩εδσΘ Γ ß≤Σ≤∙σΘ ≥αßδΦ÷σ
- // TAField(Fields[i]).Count - ΩεδΦ≈σ±≥Γε ±≥≡εΩ Γ ≥αßδΦ÷σ (Σδ Γ±σ⌡ ∩εδσΘ Γ Fields εφε Σεδµφε ß√≥ⁿ εΣΦφαΩεΓ√∞)
- function GetNormalCurrent : integer;
- function VPost(RecordNum:integer):TUpdateAction;override;
- function VInsert(RecordNum:integer):TUpdateAction;override;
- function VDeleteRecord (RecordNum:integer):TUpdateAction; override;
- published
- { Published declarations }
- end;
-
- procedure Register;
-
- implementation
-
- procedure Register;
- begin
- RegisterComponents('Data Access', [TMemoryDataSet]);
- end;
-
- constructor TMemoryDataSet.Create(AOwner: TComponent);
- begin
- inherited CreateSet(AOwner,qtMemory);
- end;
-
- function TMemoryDataSet.GetNormalCurrent : integer;
- begin
- if Self.CurrentRecord < 0 then Result := 0
- else if Self.CurrentRecord > Self.RecordCount-1 then Result := Self.RecordCount-1
- else Result := Self.CurrentRecord;
- end;
-
- procedure TMemoryDataSet.OpenWithData(Fields: THArrayPointer);
- var i:integer;
- begin
- Query.ClearFields;
- FieldDefs.Clear;
- for i:=0 to Fields.Count-1 do
- FieldDefs.Add(TAField(Fields[i]).Name,TypeAToDelphi(TAField(Fields[i]).FieldType),
- TAField(Fields[i]).FieldSize,TAField(Fields[i]).Required);
-
- Open;
- Query.Open(Fields);
- SyncBookm;
- Refresh;
- end;
-
- function TMemoryDataSet.VDeleteRecord(RecordNum: integer): TUpdateAction;
- begin
- Result:=uaApplied;
- Query.DeleteRecord(RecordNum);
- end;
-
- function TMemoryDataSet.VInsert(RecordNum: integer): TUpdateAction;
- begin
- Result:=uaApplied;
- Query.InsertRecord(RecordNum);
- end;
-
- function TMemoryDataSet.VPost(RecordNum: integer): TUpdateAction;
- begin
- Result:=uaApplied;
- end;
-
- end.
-