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 >
Wrap
Pascal/Delphi Source File
|
2001-03-01
|
2KB
|
85 lines
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.