Unit xyData |
copyright © Kestral Computing refer to xyGraph.pas, index.htm for more information } {$I xyDefine.pas} {--------------- implementation section heading labels --------------- #1. Stream utilities TDataSeries #2. Administration #3. Data engine #4. Data property servers #5. Other property servers #6. Statistical analysis #7. Saving to stream #8. Data Extraction ----------------------------------------------------------------------
Classes |
TDataSeries -
TDataSupplier - abstract ancestor for objects that supply data to the graph.
TxyReader -
TxyWriter -
Functions |
cellFromStr - useful for reading lines of text files - used in xyHolder.
initDataSupplier -
SourceSplit - if there is any characters left after the string is terminated then
skip them
Types |
et_regressions
pDataChangeHook
pgPoint
TDataChangeEvent
TDataChangeHook
TDataSrc
tDoublePoint
TDSChangeType
tgPoint
TRowChoice
TTxtFieldType
Constants |
ktBoolean
ktFloat
ktFont
ktInteger
ktString
row_scan_depth
tabchar
Variables |
Functions |
-------------------------------------------------------------------------- #8. Data Extraction --------------------------------------------------------------------------} {----------------------- Data Extraction Methods ----------------------
Types |
et_regressions = ( rg_None, {1. forms of regression: } rg_Linear, rg_passingBablok, rg_quadratic, {2. Curve Fitting: } rg_Spline, rg_dwls, {3. Other: } rg_RunningAverage,rg_runningAverageProper);
pDataChangeHook=^TDataChangeHook
pgPoint = ^tgPointnote that a function exports these names for use at run time} {STATISTICS} { each point is stored in a linked list as an x,y coordinate with a longint index value. This puts a theoretical limit on the number of points in a series to 2147483647 points, but since this is >40000 Mb of data, it's probably not a problem
TDataChangeEvent=procedure (Sender:TObject; TheMessage:TDSChangeType) of objectallowance for other objects to register an interest in the data of the series. xyGraph actually defines a descendent and uses requestpaint, but only one descendent can do this. This allows other analytical tools to use the same TDataSeries
TDataChangeHook = record
FEvent : TDataChangeEvent;
FObject : TObject;
next : pDataChangeHook;
end;
TDataSrc = (ds_Manual, {no automatic acquisition of data - DataName = ignored} ds_TextFile, {data read from text file - dataname = filename} ds_DataSet, {from a dataset inside the table - dataname = dataset.name} ds_BDETable, {data comes from BDE alias - read as TTable which is autocreated - dataname = alias:tablename} ds_BDEQuery, {data comes from BDE alias - read as TQuery which is autocreated limit of around 250 chars for the SQL in 16bit mode - dataname = alias:SQL} ds_xyHolder, {the data comes from an xySheet component - dataname = xySheet name} ds_ODBC);some of the data sources may not available depending on complation options
tDoublePoint = record
x : double;
y : double;
end;
TDSChangeType = (dsUnLoad, dsDataChange, dsZeroChange, dsClearUpdates, dsChangeLook);messages sent to requestpaint & objects to identify the reason
tgPoint = record
i : Longint;
xv : Double;
yv : Double;
rv : Double;
next : pgPoint;
end;
TRowChoice = (rc_all, {use all available rows} rc_starttoall, {start when x = a value, do all to the end} rc_alltoend, {start at beginning and stop when x = value} rc_starttoend, {start as x = value and stop at x = value} rc_firstXNum, {use the first #value columns} rc_lastXNum);data comes direct from an ODBC source. requires ODBCExpress - dataname = ODBC DSN:SQL
TTxtFieldType = (ft_Number, ft_DateTime);use the last #value records - can be quite inefficient} { note that some of these options are not supported on Non-live SQL result sets
Constants |
Variables |