home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / sibylft1.zip / DOC.DAT / DOC / SPCC / DBBASE.PAS < prev    next >
Pascal/Delphi Source File  |  1997-04-07  |  18KB  |  435 lines

  1. {╔══════════════════════════════════════════════════════════════════════════╗
  2.  ║                                                                          ║
  3.  ║     Sibyl Portable Component Classes                                     ║
  4.  ║                                                                          ║
  5.  ║     Copyright (c) 1995,97 SpeedSoft Germany,   All rights reserved.      ║
  6.  ║                                                                          ║
  7.  ╚══════════════════════════════════════════════════════════════════════════╝}
  8.  
  9. UNIT DBBase;
  10.  
  11.  
  12. INTERFACE
  13.  
  14.  
  15. USES Dos,SysUtils,Classes,Forms,Dialogs,DbLayer;
  16.  
  17. TYPE
  18.     TField=CLASS;
  19.     TDataSet=CLASS;
  20.     TDataSource=CLASS;
  21.  
  22.     ESQLError=CLASS(Exception);
  23.  
  24.     TDataChange=(dePositionChanged,deDataBaseChanged);
  25.  
  26.     TDataChangeEvent=PROCEDURE(Sender:TObject;Event:TDataChange) OF OBJECT;
  27.  
  28.     TDataLink=CLASS(TComponent)
  29.       PRIVATE
  30.          FDataSource:TDataSource;
  31.          FOnDataChange:TDataChangeEvent;
  32.          PROCEDURE SetDataSource(NewValue:TDataSource);
  33.          PROCEDURE Notification(AComponent:TComponent;Operation:TOperation);OVERRIDE;
  34.          PROCEDURE DataChange(Event:TDataChange);
  35.       PROTECTED
  36.          PROCEDURE SetupComponent;OVERRIDE;
  37.       PUBLIC
  38.          DESTRUCTOR Destroy;OVERRIDE;
  39.          PROPERTY DataSource:TDataSource read FDataSource write SetDataSource;
  40.          PROPERTY OnDataChange:TDataChangeEvent read FOnDataChange write FOnDataChange;
  41.     END;
  42.  
  43.     TTableDataLink=CLASS(TDataLink)
  44.       PRIVATE
  45.          FUNCTION GetColRowField(Col,Row:LONGINT):TField;
  46.          FUNCTION GetNameRowField(Name:STRING;Row:LONGINT):TField;
  47.          FUNCTION GetFieldCount:LONGINT;
  48.       PROTECTED
  49.          PROCEDURE SetupComponent;OVERRIDE;
  50.       PUBLIC
  51.          PROPERTY Fields[Col,Row:LONGINT]:TField read GetColRowField;
  52.          PROPERTY FieldsFromColumnName[Col:STRING;Row:LONGINT]:TField read GetNameRowField;
  53.          PROPERTY FieldCount:LONGINT read GetFieldCount;
  54.     END;
  55.  
  56.     TFieldDataLink=CLASS(TDataLink)
  57.       PRIVATE
  58.          FFieldName:PString;
  59.          PROCEDURE SetFieldName(CONST NewValue:STRING);
  60.          FUNCTION GetFieldName:STRING;
  61.          FUNCTION GetField:TField;
  62.       PROTECTED
  63.          PROCEDURE SetupComponent;OVERRIDE;
  64.       PUBLIC
  65.          DESTRUCTOR Destroy;OVERRIDE;
  66.          PROPERTY FieldName:STRING read GetFieldName write SetFieldName;
  67.          PROPERTY Field:TField read GetField;
  68.     END;
  69.  
  70.  
  71.     TDataSource=CLASS(TComponent)
  72.       PRIVATE
  73.          FDataSet:TDataSet;
  74.          FOnDataChange:TDataChangeEvent;
  75.          PROCEDURE SetDataSet(NewValue:TDataSet);
  76.          PROCEDURE Notification(AComponent:TComponent;Operation:TOperation);OVERRIDE;
  77.       PROTECTED
  78.          PROCEDURE SetupComponent;OVERRIDE;
  79.       PUBLIC
  80.          DESTRUCTOR Destroy;OVERRIDE;
  81.          PROCEDURE DataChange(Event:TDataChange);VIRTUAL;
  82.       PUBLISHED
  83.          PROPERTY DataSet:TDataSet read FDataSet write SetDataSet;
  84.          PROPERTY OnDataChange:TDataChangeEvent read FOnDataChange write FOnDataChange;
  85.     END;
  86.  
  87.     TFieldType=(ftUnknown,ftString,ftSmallInt,ftInteger,ftWord,ftBoolean,
  88.          ftFloat,ftCurrency,ftBCD,ftDate,ftTime,ftDateTime,ftBytes,
  89.          ftVarBytes,ftAutoInc,ftBlob,ftMemo,ftGraphic,ftFmtMemo,
  90.          ftTypedBinary,ftOLE);
  91.  
  92.     EDataBaseError=CLASS(Exception);
  93.  
  94.     TField=CLASS
  95.       PRIVATE
  96.          FFieldName:PString; //remapped from Columns^.ColumnName
  97.          FValue:POINTER;
  98.          FValueLen:LONGWORD;
  99.          FDataType:TFieldType;
  100.          FDataSet:TDataSet;
  101.          FRow:LONGINT;
  102.          FUNCTION GetFieldName:STRING;
  103.          FUNCTION GetIsNull:BOOLEAN;
  104.          PROCEDURE SetNewValue(CONST Value;ValueLen:LONGINT);
  105.       PROTECTED
  106.          FUNCTION GetAsString:STRING;VIRTUAL;
  107.          PROCEDURE SetAsString(CONST NewValue:STRING);VIRTUAL;
  108.          FUNCTION GetAsBoolean:BOOLEAN;VIRTUAL;
  109.          PROCEDURE SetAsBoolean(NewValue:BOOLEAN);VIRTUAL;
  110.          FUNCTION GetAsDateTime:TDateTime;VIRTUAL;
  111.          PROCEDURE SetAsDateTime(NewValue:TDateTime);VIRTUAL;
  112.          FUNCTION GetAsFloat:EXTENDED;VIRTUAL;
  113.          PROCEDURE SetAsFloat(CONST NewValue:EXTENDED);VIRTUAL;
  114.          FUNCTION GetAsInteger:LONGINT;VIRTUAL;
  115.          PROCEDURE SetAsInteger(NewValue:LONGINT);VIRTUAL;
  116.          PROCEDURE AccessError(CONST TypeName:STRING);VIRTUAL;
  117.       PUBLIC
  118.          DESTRUCTOR Destroy;OVERRIDE;
  119.          PROPERTY IsNull:BOOLEAN read GetIsNull;
  120.          PROPERTY ValueLen:LONGWORD read FValueLen;
  121.          PROPERTY DataType:TFieldType read FDataType;
  122.       PUBLISHED
  123.          PROPERTY FieldName:STRING read GetFieldName;
  124.  
  125.          PROPERTY AsString:STRING read GetAsString write SetAsString;
  126.          PROPERTY AsBoolean:BOOLEAN read GetAsBoolean write SetAsBoolean;
  127.          PROPERTY AsDateTime:TDateTime read GetAsDateTime write SetAsDateTime;
  128.          PROPERTY AsFloat:EXTENDED read GetAsFloat write SetAsFloat;
  129.          PROPERTY AsInteger:Longint read GetAsInteger write SetAsInteger;
  130.     END;
  131.     TFieldClass=CLASS OF TField;
  132.  
  133.     TStringField=CLASS(TField)
  134.       PROTECTED
  135.          FUNCTION GetAsString:STRING;OVERRIDE;
  136.          PROCEDURE SetAsString(CONST NewValue:STRING);OVERRIDE;
  137.          FUNCTION GetAsBoolean:BOOLEAN;OVERRIDE;
  138.          PROCEDURE SetAsBoolean(NewValue:BOOLEAN);OVERRIDE;
  139.          FUNCTION GetAsDateTime:TDateTime;OVERRIDE;
  140.          FUNCTION GetAsFloat:EXTENDED;OVERRIDE;
  141.          PROCEDURE SetAsFloat(CONST NewValue:EXTENDED);OVERRIDE;
  142.          FUNCTION GetAsInteger:LONGINT;OVERRIDE;
  143.          PROCEDURE SetAsInteger(NewValue:LONGINT);OVERRIDE;
  144.       PUBLIC
  145.          PROPERTY Value:STRING read GetAsString;
  146.     END;
  147.  
  148.     TSmallintField=CLASS(TField)
  149.       PROTECTED
  150.          FUNCTION GetAsBoolean:Boolean;OVERRIDE;
  151.          PROCEDURE SetAsBoolean(NewValue:BOOLEAN);OVERRIDE;
  152.          FUNCTION GetAsString:STRING;OVERRIDE;
  153.          PROCEDURE SetAsString(CONST NewValue:STRING);OVERRIDE;
  154.          FUNCTION GetAsSmallint:INTEGER;VIRTUAL;
  155.          PROCEDURE SetAsSmallInt(NewValue:Integer);VIRTUAL;
  156.          FUNCTION GetAsFloat:EXTENDED;OVERRIDE;
  157.          PROCEDURE SetAsFloat(CONST NewValue:EXTENDED);OVERRIDE;
  158.          FUNCTION GetAsInteger:LONGINT;OVERRIDE;
  159.          PROCEDURE SetAsInteger(NewValue:LONGINT);OVERRIDE;
  160.       PUBLIC
  161.          PROPERTY Value:INTEGER read GetAsSmallInt write SetAsSmallInt;
  162.     END;
  163.  
  164.  
  165.     TIntegerField=CLASS(TField)
  166.       PROTECTED
  167.          FUNCTION GetAsBoolean:Boolean;OVERRIDE;
  168.          PROCEDURE SetAsBoolean(NewValue:BOOLEAN);OVERRIDE;
  169.          FUNCTION GetAsString:STRING;OVERRIDE;
  170.          PROCEDURE SetAsString(CONST NewValue:STRING);OVERRIDE;
  171.          FUNCTION GetAsFloat:EXTENDED;OVERRIDE;
  172.          PROCEDURE SetAsFloat(CONST NewValue:EXTENDED);OVERRIDE;
  173.          FUNCTION GetAsInteger:LONGINT;OVERRIDE;
  174.          PROCEDURE SetAsInteger(NewValue:LONGINT);OVERRIDE;
  175.       PUBLIC
  176.          PROPERTY Value:LONGINT read GetAsInteger write SetAsInteger;
  177.     END;
  178.  
  179.  
  180.     TFloatField=CLASS(TField)
  181.       PROTECTED
  182.          FUNCTION GetAsString:STRING;OVERRIDE;
  183.          PROCEDURE SetAsString(CONST NewValue:STRING);OVERRIDE;
  184.          FUNCTION GetAsFloat:EXTENDED;OVERRIDE;
  185.          PROCEDURE SetAsFloat(CONST NewValue:EXTENDED);OVERRIDE;
  186.          FUNCTION GetAsInteger:LONGINT;OVERRIDE;
  187.          PROCEDURE SetAsInteger(NewValue:LONGINT);OVERRIDE;
  188.       PUBLIC
  189.          PROPERTY Value:EXTENDED read GetAsFloat write SetAsFloat;
  190.     END;
  191.  
  192.     TDateField=CLASS(TField)
  193.       PROTECTED
  194.          FUNCTION GetAsString:STRING;OVERRIDE;
  195.          PROCEDURE SetAsString(CONST NewValue:STRING);OVERRIDE;
  196.          FUNCTION GetAsFloat:EXTENDED;OVERRIDE;
  197.          FUNCTION GetAsDateTime:TDateTime;OVERRIDE;
  198.          PROCEDURE SetAsDateTime(NewValue:TDateTime);OVERRIDE;
  199.       PUBLIC
  200.          PROPERTY Value:TDateTime read GetAsDateTime write SetAsDateTime;
  201.     END;
  202.  
  203.     TTimeField=CLASS(TField)
  204.       PROTECTED
  205.          FUNCTION GetAsString:STRING;OVERRIDE;
  206.          PROCEDURE SetAsString(CONST NewValue:STRING);OVERRIDE;
  207.          FUNCTION GetAsFloat:EXTENDED;OVERRIDE;
  208.          FUNCTION GetAsDateTime:TDateTime;OVERRIDE;
  209.          PROCEDURE SetAsDateTime(NewValue:TDateTime);OVERRIDE;
  210.       PUBLIC
  211.          PROPERTY Value:TDateTime read GetAsDateTime write SetAsDateTime;
  212.     END;
  213.  
  214.     TDateTimeField=CLASS(TField)
  215.       PROTECTED
  216.          FUNCTION GetAsString:STRING;OVERRIDE;
  217.          PROCEDURE SetAsString(CONST NewValue:STRING);OVERRIDE;
  218.          FUNCTION GetAsFloat:EXTENDED;OVERRIDE;
  219.          FUNCTION GetAsDateTime:TDateTime;OVERRIDE;
  220.          PROCEDURE SetAsDateTime(NewValue:TDateTime);OVERRIDE;
  221.       PUBLIC
  222.          PROPERTY Value:TDateTime read GetAsDateTime write SetAsDateTime;
  223.     END;
  224.  
  225.     TBlobField=CLASS(TField)
  226.       PROTECTED
  227.          FUNCTION GetAsString:STRING;OVERRIDE;
  228.       PUBLIC
  229.          PROPERTY Value:POINTER read FValue;
  230.     END;
  231.  
  232.     TMemoField=CLASS(TField)
  233.       PROTECTED
  234.          FUNCTION GetAsString:STRING;OVERRIDE;
  235.     END;
  236.  
  237.     TGraphicField=CLASS(TBlobField)
  238.       PROTECTED
  239.          FUNCTION GetAsString:STRING;OVERRIDE;
  240.     END;
  241.  
  242.     TFieldList=CLASS(TList)  //List of fields (TField entries)
  243.       PUBLIC
  244.          PROCEDURE Clear;OVERRIDE;
  245.     END;
  246.  
  247.     TDataSetList=CLASS(TList) //List of columns (TDataSetEntry entries)
  248.       PRIVATE
  249.          FUNCTION Rows:LONGINT;
  250.       PUBLIC
  251.          PROCEDURE Clear;OVERRIDE;
  252.     END;
  253.  
  254.     TDataSetNotifyEvent=PROCEDURE(DataSet:TDataSet) OF OBJECT;
  255.  
  256.  
  257.     TDataSet=CLASS(TComponent)
  258.       PRIVATE
  259.          FCurrentRow:LONGINT;
  260.          FRowIsInserted:BOOLEAN;
  261.          FCurrentField:LONGINT;
  262.          FFieldData:TDataSetList; //List of columns (TDataSetEntry Entries)
  263.          FActive:BOOLEAN;
  264.          FQueryList:TList;
  265.          FDBProcs:TDBProcs;
  266.          FOpened:BOOLEAN;
  267.          FServer:PString;
  268.          FDataBase:PString;
  269.          FDataSetLocked:BOOLEAN;
  270.          FRefreshOnLoad:BOOLEAN;
  271.          FSelect:TStrings;
  272.          FViewActive:BOOLEAN;
  273.          FViewName:STRING[64];
  274.          FDataChangeLock:BOOLEAN;
  275.          FBeforeOpen:TDataSetNotifyEvent;
  276.          FAfterOpen:TDataSetNotifyEvent;
  277.          FBeforeClose:TDataSetNotifyEvent;
  278.          FAfterClose:TDataSetNotifyEvent;
  279.          FBeforeInsert:TDataSetNotifyEvent;
  280.          FAfterInsert:TDataSetNotifyEvent;
  281.          FBeforePost:TDataSetNotifyEvent;
  282.          FAfterPost:TDataSetNotifyEvent;
  283.          FBeforeCancel:TDataSetNotifyEvent;
  284.          FAfterCancel:TDataSetNotifyEvent;
  285.          FBeforeDelete:TDataSetNotifyEvent;
  286.          FAfterDelete:TDataSetNotifyEvent;
  287.       PRIVATE
  288.          FUNCTION GetBOF:BOOLEAN;
  289.          FUNCTION GetEOF:BOOLEAN;
  290.          FUNCTION GetField(Index:LONGINT):TField;
  291.          FUNCTION GetFieldCount:LONGINT;
  292.          FUNCTION GetFieldName(Index:LONGINT):STRING;
  293.          PROCEDURE SetCurrentField(NewValue:LONGINT);
  294.          PROCEDURE SetCurrentRow(NewValue:LONGINT);
  295.          PROCEDURE SetActive(NewValue:BOOLEAN);VIRTUAL;
  296.          FUNCTION GetResultColRow(Col,Row:LONGINT):TField;
  297.          FUNCTION GetLastRowFetched:LONGINT;
  298.          FUNCTION GetDataBase:STRING;
  299.          PROCEDURE SetDataBase(NewValue:STRING);
  300.          PROCEDURE UpdateField(Field:TField;OldValue:POINTER;OldValueLen:LONGINT);
  301.          FUNCTION UpdateFieldSelect(Field:TField):BOOLEAN;
  302.          PROCEDURE QueryTable(VAR FDbProcs:TDBProcs);
  303.          PROCEDURE CloseStmt(CloseView:BOOLEAN);
  304.          PROCEDURE CommitInsert(Commit:BOOLEAN);
  305.          FUNCTION GetFieldFromColumnName(ColumnName:STRING):TField;
  306.          FUNCTION GetServer:STRING;
  307.          PROCEDURE SetServer(NewValue:STRING);
  308.       PROTECTED
  309.          PROCEDURE SetupComponent;OVERRIDE;
  310.          PROCEDURE Loaded;OVERRIDE;
  311.       PUBLIC
  312.          PROCEDURE Close;VIRTUAL;
  313.          DESTRUCTOR Destroy;OVERRIDE;
  314.          PROCEDURE First;
  315.          PROCEDURE Last;
  316.          PROCEDURE Next;
  317.          PROCEDURE Prior;
  318.          PROCEDURE MoveBy(Distance:LONGINT);
  319.          PROCEDURE DataChange(Event:TDataChange);VIRTUAL;
  320.          PROCEDURE Refresh;
  321.          FUNCTION WriteSCUResource(Stream:TResourceStream):BOOLEAN;OVERRIDE;
  322.          PROCEDURE ReadSCUResource(CONST ResName:TResourceName;VAR Data;DataLen:LONGINT);OVERRIDE;
  323.          PROCEDURE Post;
  324.          PROCEDURE Cancel;
  325.          PROCEDURE Insert;
  326.          PROCEDURE Append;
  327.          PROCEDURE Delete;
  328.          PROCEDURE GetFieldNames(List:TStrings);
  329.          PROCEDURE GetDataSources(List:TStrings);
  330.          PROCEDURE Open;VIRTUAL;
  331.          PROCEDURE RefreshTable;VIRTUAL;
  332.          PROCEDURE AppendRecord(CONST Values:ARRAY OF CONST);
  333.          PROCEDURE SetFields(CONST Values:ARRAY OF CONST);
  334.          PROCEDURE InsertRecord(CONST Values:ARRAY OF CONST);
  335.          FUNCTION FieldByName(CONST FieldName:STRING):TField;
  336.       PUBLIC
  337.          PROPERTY BOF:BOOLEAN read GetBOF;
  338.          PROPERTY EOF:BOOLEAN read GetEOF;
  339.          PROPERTY FieldCount:LONGINT read GetFieldCount;
  340.          PROPERTY Fields[Index:LONGINT]:TField read GetField;
  341.          PROPERTY FieldNames[Index:LONGINT]:STRING read GetFieldName;
  342.          PROPERTY CurrentField:LONGINT read FCurrentField write SetCurrentField;
  343.          PROPERTY CurrentRow:LONGINT read FCurrentRow write SetCurrentRow;
  344.          PROPERTY LastRowFetched:LONGINT read GetLastRowFetched;
  345.          PROPERTY RowInserted:BOOLEAN read FRowIsInserted;
  346.          PROPERTY FieldFromColumnName[ColumnName:STRING]:TField read GetFieldFromColumnName;
  347.          PROPERTY DataChangeLock:BOOLEAN read FDataChangeLock write FDataChangeLock;
  348.       PUBLISHED
  349.          PROPERTY Active:BOOLEAN read FActive write SetActive;
  350.          PROPERTY Server:STRING read GetServer write SetServer;
  351.          PROPERTY DataBase:STRING read GetDataBase write SetDataBase;
  352.       PUBLISHED
  353.          PROPERTY BeforeOpen:TDataSetNotifyEvent read FBeforeOpen write FBeforeOpen;
  354.          PROPERTY AfterOpen:TDataSetNotifyEvent read FAfterOpen write FAfterOpen;
  355.          PROPERTY BeforeClose:TDataSetNotifyEvent read FBeforeClose write FBeforeClose;
  356.          PROPERTY AfterClose: TDataSetNotifyEvent read FAfterClose write FAfterClose;
  357.          PROPERTY BeforeInsert:TDataSetNotifyEvent read FBeforeInsert write FBeforeInsert;
  358.          PROPERTY AfterInsert:TDataSetNotifyEvent read FAfterInsert write FAfterInsert;
  359.          PROPERTY BeforePost:TDataSetNotifyEvent read FBeforePost write FBeforePost;
  360.          PROPERTY AfterPost: TDataSetNotifyEvent read FAfterPost write FAfterPost;
  361.          PROPERTY BeforeCancel: TDataSetNotifyEvent read FBeforeCancel write FBeforeCancel;
  362.          PROPERTY AfterCancel: TDataSetNotifyEvent read FAfterCancel write FAfterCancel;
  363.          PROPERTY BeforeDelete: TDataSetNotifyEvent read FBeforeDelete write FBeforeDelete;
  364.          PROPERTY AfterDelete: TDataSetNotifyEvent read FAfterDelete write FAfterDelete;
  365.     END;
  366.  
  367.     TLockType=(ltReadLock,ltWriteLock);
  368.  
  369.     TTable=CLASS(TDataSet)
  370.       PRIVATE
  371.          FTable:PString;
  372.          FPrimaryKeys:TStringList;
  373.          FMasterSource:TDataSource;
  374.          FTempMasterSource:TDataSource;
  375.          FMasterFields:^STRING;
  376.          FServants:TList;  //Servants that are connected with this
  377.       PRIVATE
  378.          FUNCTION GetPassword:STRING;
  379.          FUNCTION GetUserId:STRING;
  380.          PROCEDURE SetPassword(NewValue:STRING);
  381.          PROCEDURE SetUserId(NewValue:STRING);
  382.          PROCEDURE SetActive(NewValue:BOOLEAN);OVERRIDE;
  383.          PROCEDURE SetTableName(NewValue:STRING);
  384.          FUNCTION GetTableName:STRING;
  385.          PROCEDURE SetTableLock(Typ:TLockType;Lock:Boolean);
  386.          PROCEDURE SetMasterSource(NewValue:TDataSource);
  387.          FUNCTION GetMasterFields:STRING;
  388.          PROCEDURE SetMasterFields(CONST NewValue:STRING);
  389.          PROCEDURE ConnectServant(Servant:TTable;Connect:BOOLEAN);
  390.          PROCEDURE DataChange(Event:TDataChange);OVERRIDE;
  391.       PROTECTED
  392.          PROCEDURE SetupComponent;OVERRIDE;
  393.       PUBLIC
  394.          DESTRUCTOR Destroy;OVERRIDE;
  395.          PROCEDURE Open;OVERRIDE;
  396.          PROCEDURE Close;OVERRIDE;
  397.          PROCEDURE RefreshTable;OVERRIDE;
  398.          FUNCTION WriteSCUResource(Stream:TResourceStream):BOOLEAN;OVERRIDE;
  399.          PROCEDURE ReadSCUResource(CONST ResName:TResourceName;VAR Data;DataLen:LONGINT);OVERRIDE;
  400.          PROCEDURE LockTable(LockType:TLockType);
  401.          PROCEDURE UnlockTable(LockType:TLockType);
  402.          PROCEDURE GetPrimaryKeys(List:TStrings);
  403.          PROCEDURE GetTableNames(List:TStrings);
  404.       PROTECTED
  405.          PROCEDURE Loaded;OVERRIDE;
  406.          PROCEDURE UpdateLinkList(CONST PropertyName:STRING;LinkList:TList);OVERRIDE;
  407.       PUBLISHED
  408.          PROPERTY TableName:STRING read GetTableName write SetTableName;
  409.          PROPERTY Password:STRING read GetPassword write SetPassword;
  410.          PROPERTY UserId:STRING read GetUserId write SetUserId;
  411.          PROPERTY MasterSource:TDataSource read FMasterSource write SetMasterSource;
  412.          PROPERTY MasterFields:STRING read GetMasterFields write SetMasterFields;
  413.     END;
  414.  
  415.     TQuery=CLASS(TTable)
  416.       PRIVATE
  417.          PROPERTY TableName;
  418.          PROPERTY MasterFields;
  419.          PROPERTY MasterSource;
  420.          PROCEDURE SetSQL(NewValue:TStrings);
  421.       PROTECTED
  422.          PROCEDURE SetupComponent;OVERRIDE;
  423.       PUBLIC
  424.          PROCEDURE RefreshTable;OVERRIDE;
  425.          FUNCTION WriteSCUResource(Stream:TResourceStream):BOOLEAN;OVERRIDE;
  426.          PROCEDURE ReadSCUResource(CONST ResName:TResourceName;VAR Data;DataLen:LONGINT);OVERRIDE;
  427.       PUBLISHED
  428.          PROPERTY SQL:TStrings read FSelect write SetSQL;
  429.     END;
  430.  
  431.  
  432. IMPLEMENTATION
  433.  
  434.  
  435.