📄 ezbasegis.pas
字号:
Procedure DatePutN( FieldNo: Integer; value: TDateTime ); Virtual; Abstract;
Procedure FieldPutN( FieldNo: Integer; Const Value: String ); Virtual; Abstract;
Procedure FloatPutN( FieldNo: Integer; Const Value: Double ); Virtual; Abstract;
Procedure FlushDB; Virtual; Abstract;
Procedure IndexOn( Const IName, tag, keyexp, forexp: String;
uniq: TEzIndexUnique; ascnd: TEzSortStatus ); Virtual; Abstract;
Procedure LogicPutN( fieldno: Integer; value: boolean ); Virtual; Abstract;
Procedure MemoLoadN( fieldno: Integer; Stream: TStream ); Virtual; Abstract;
Procedure MemoLoad( Const fieldname: String; Stream: TStream ); Virtual; Abstract;
Procedure Pack; Virtual; Abstract;
Procedure Recall; Virtual; Abstract;
Procedure Reindex; Virtual; Abstract;
Procedure SetTagTo( Const TName: String ); Virtual; Abstract;
Procedure SetUseDeleted( tf: boolean ); Virtual; Abstract;
Procedure StringPutN( fieldno: Integer; Const value: String ); Virtual; Abstract;
Procedure Zap; Virtual; Abstract;
{ this class must handle assigning from Dataset,FieldNo to the
current record in this dataset in field DstFieldNo
care must be taken for memo fields }
Procedure AssignFrom( Dataset: TEzBaseTable; SrcFieldNo, DstFieldNo: Integer );
Function FieldDec( FieldNo: Integer ): Integer; Virtual; Abstract;
Function Field( FieldNo: Integer ): String; Virtual; Abstract;
Function Deleted: Boolean; Virtual; Abstract;
Function FieldLen( FieldNo: Integer ): Integer; Virtual; Abstract;
Procedure Append( NewRecno: Integer ); Virtual; Abstract;
Function BOF: Boolean; Virtual; Abstract;
Function EOF: Boolean; Virtual; Abstract;
Function FieldCount: Integer; Virtual; Abstract;
Function FieldGet( Const FieldName: String ): String; Virtual; Abstract;
{ returns 'M','B','G', 'F','N', 'C', 'L','D', 'I', 'T' }
Function FieldType( FieldNo: Integer ): char; Virtual; Abstract;
Function Find( Const ss: String; IsExact, IsNear: boolean ): boolean; Virtual; Abstract;
Function FloatGet( Const Fieldname: String ): Double; Virtual; Abstract;
Function IntegerGet( Const FieldName: String ): Integer; Virtual; Abstract;
Function LogicGet( Const FieldName: String ): Boolean; Virtual; Abstract;
Function RecordCount: Integer; Virtual; Abstract;
Function StringGet( Const FieldName: String ): String; Virtual; Abstract;
//Procedure CopyStructure( Const FileName, APassword: String ); Virtual; Abstract;
//Procedure CopyTo( Const FileName, APassword: String ); Virtual; Abstract;
Procedure Delete; Virtual; Abstract;
Procedure Edit; Virtual; Abstract;
Procedure FieldPut( Const FieldName, Value: String ); Virtual; Abstract;
Procedure First; Virtual; Abstract;
Procedure FloatPut( Const FieldName: String; Const Value: Double ); Virtual; Abstract;
Procedure Go( n: Integer ); Virtual; Abstract;
Procedure IntegerPut( Const Fieldname: String; Value: Integer ); Virtual; Abstract;
Procedure IntegerPutN( FieldNo: Integer; Value: Integer ); Virtual; Abstract;
Procedure Last; Virtual; Abstract;
Procedure LogicPut( Const fieldname: String; value: boolean ); Virtual; Abstract;
Procedure Next; Virtual; Abstract;
Procedure Post; Virtual; Abstract;
Procedure Prior; Virtual; Abstract;
Procedure Refresh; Virtual; Abstract;
Procedure StringPut( Const fieldname, value: String ); Virtual; Abstract;
{ procedures for manipulating databases }
Function DBCreateTable( Const fname: String; AFieldList: TStringList ): boolean; Virtual;
function DBTableExists( const TableName: string ): Boolean; Virtual;
Function DBDropTable( const TableName: string): Boolean; Virtual;
Function DBDropIndex( const TableName: string): Boolean; Virtual;
Function DBRenameTable( const Source, Target: string): Boolean; Virtual;
function FieldNoFromAlias( const AliasName: String ): Integer;
Property Active: boolean Read GetActive Write SetActive;
Property RecNo: Integer Read GetRecNo Write SetRecNo;
Property Gis: TEzBaseGIS read FGis write FGis;
Property LongFieldNames: TStrings read FLongFieldNames;
Property FieldAlias[FieldNo: Integer]: string read GetFieldAlias write SetFieldAlias;
Property FieldAliasByName[const FieldName: String]: string read GetFieldAliasByName write SetFieldAliasByName;
End;
TEzBaseTableClass = Class Of TEzBaseTable;
{-------------------------------------------------------------------------------}
{ Layers }
{-------------------------------------------------------------------------------}
{ TEzBaseLayerInfo }
TEzBaseLayerInfo = Class
Protected
FLayer: TEzBaseLayer; // a reference
Function GetOverlappedTextAction: TEzOverlappedTextAction; Virtual; Abstract;
Procedure SetOverlappedTextAction( Value: TEzOverlappedTextAction ); Virtual; Abstract;
Function GetOverlappedTextColor: TColor; Virtual; Abstract;
Procedure SetOverlappedTextColor( Value: TColor ); Virtual; Abstract;
Function GetTextHasShadow: Boolean; Virtual; Abstract;
Procedure SetTextHasShadow( Value: boolean ); Virtual; Abstract;
Function GetTextFixedSize: Byte; Virtual; Abstract;
Procedure SetTextFixedSize( Value: Byte ); Virtual; Abstract;
Function GetVisible: boolean; Virtual; Abstract;
Procedure SetVisible( Value: boolean ); Virtual;
Function GetSelectable: boolean; Virtual; Abstract;
Procedure SetSelectable( Value: boolean ); Virtual;
Function GetIsCosmethic: boolean; Virtual; Abstract;
Procedure SetIsCosmethic( value: boolean ); Virtual; Abstract;
Function GetExtension: TEzRect; Virtual; Abstract;
Procedure SetExtension( Const Value: TEzRect ); Virtual; Abstract;
Function GetIDCounter: Integer; Virtual; Abstract;
Procedure SetIDCounter( Value: Integer ); Virtual; Abstract;
Function GetIsAnimationLayer: boolean; Virtual; Abstract;
Procedure SetIsAnimationLayer( Value: boolean ); Virtual; Abstract;
Function GetIsIndexed: boolean; Virtual; Abstract;
Procedure SetIsIndexed( Value: boolean ); Virtual; Abstract;
Function GetCoordsUnits: TEzCoordsUnits; Virtual; Abstract;
Procedure SetCoordsUnits( Value: TEzCoordsUnits ); Virtual; Abstract;
Function GetCoordSystem: TEzCoordSystem; Virtual; Abstract;
Procedure SetCoordSystem( Value: TEzCoordSystem ); Virtual; Abstract;
Function GetUseAttachedDB: Boolean; Virtual;
Procedure SetUseAttachedDB( Value: Boolean ); Virtual;
Function GetLocked: Boolean; Virtual;
Procedure SetLocked( Value: Boolean ); Virtual;
Public
Constructor Create( Layer: TEzBaseLayer ); Virtual;
procedure Assign( Source: TEzBaseLayerInfo );
Property Extension: TEzRect Read GetExtension Write SetExtension;
Property IDCounter: Integer Read GetIDCounter Write SetIDCounter;
Property UseAttachedDB: Boolean Read GetUseAttachedDB Write SetUseAttachedDB;
Property IsCosmethic: boolean Read GetIsCosmethic Write SetIsCosmethic;
Property IsAnimationLayer: Boolean Read GetIsAnimationLayer Write SetIsAnimationLayer;
Property IsIndexed: Boolean Read GetIsIndexed Write SetIsIndexed;
Property CoordsUnits: TEzCoordsUnits Read GetCoordsUnits Write SetCoordsUnits;
Property CoordSystem: TEzCoordSystem Read GetCoordSystem Write SetCoordSystem;
Property Visible: Boolean Read GetVisible Write SetVisible;
Property Selectable: Boolean Read GetSelectable Write SetSelectable;
Property TextHasShadow: Boolean Read GetTextHasShadow Write SetTextHasShadow;
Property TextFixedSize: Byte Read GetTextFixedSize Write SetTextFixedSize;
Property OverlappedTextAction: TEzOverlappedTextAction Read GetOverlappedTextAction Write SetOverlappedTextAction;
Property OverlappedTextColor: TColor Read GetOverlappedTextColor Write SetOverlappedTextColor;
Property Locked: Boolean Read GetLocked Write SetLocked;
End;
{ layer events }
TEzBeforePaintEntityEvent = Procedure( Sender: TObject;
Layer: TEzBaseLayer;
Recno: Integer;
Entity: TEzEntity;
Grapher: TEzGrapher;
Canvas: TCanvas;
Const Clip: TEzRect;
DrawMode: TEzDrawMode;
Var CanShow: Boolean;
Var EntList: TEzEntityList;
Var AutoFree: Boolean ) Of Object;
TEzAfterPaintEntityEvent = Procedure( Sender: TObject;
Layer: TEzBaseLayer;
Recno: Integer;
Entity: TEzEntity;
Grapher: TEzGrapher;
Canvas: TCanvas;
Const Clip: TEzRect;
DrawMode: TEzDrawMode ) Of Object;
{ TEzBaseLayer }
TEzBaseLayer = Class
Private
FLayers: TEzBaseLayers;
FCoordMultiplier: Integer;
FModified: Boolean;
FAutoFlush: Boolean;
FName: String;
FFileName: String;
FBlinkers: TIntegerList;
FOnBeforePaintEntity: TEzBeforePaintEntityEvent;
FOnAfterPaintEntity: TEzAfterPaintEntityEvent;
Function GetIndex: Integer;
function GetBlinkers: TIntegerList;
Protected
FLayerInfo: TEzBaseLayerInfo;
Frt: TRTree;
Function GetRecno: Integer; Virtual; Abstract;
Procedure SetRecno( Value: Integer ); Virtual; Abstract;
Function GetRecordCount: Integer; Virtual;
Function GetDBTable: TEzBaseTable; Virtual; Abstract;
Procedure SetFileName( Const Value: String ); Virtual;
Function GetActive: Boolean; Virtual; Abstract;
Procedure SetActive( Value: Boolean ); Virtual; Abstract;
Function GetConnected: Boolean; Virtual;
Public
Constructor Create( Layers: TEzBaseLayers; Const FileName: String ); Virtual;
Destructor Destroy; Override;
{ for internal use only }
Procedure InitializeOnCreate( Const FileName: String; AttachedDB, IsAnimation: Boolean;
CoordSystem: TEzCoordSystem; CoordsUnits: TEzCoordsUnits;
FieldList: TStrings ); Dynamic; Abstract;
Procedure Assign( Source: TEzBaseLayer ); Dynamic; Abstract;
Procedure Open; Virtual; Abstract;
Procedure Close; Virtual; Abstract;
Procedure ForceOpened; Virtual; Abstract;
Procedure WriteHeaders( FlushFiles: Boolean ); Virtual; Abstract;
Function AddEntity( Entity: TEzEntity ): Integer; Virtual; Abstract;
Procedure DeleteEntity( RecNo: Integer ); Virtual; Abstract;
Procedure UnDeleteEntity( RecNo: Integer ); Virtual; Abstract;
Function LoadEntityWithRecNo( RecNo: Longint ): TEzEntity; Virtual; Abstract;
Function EntityWithRecno( Recno: Integer ): TEzEntity; Virtual; // for in-memory layers only
Procedure UpdateEntity( RecNo: Integer; Entity2D: TEzEntity ); Virtual; Abstract;
Function UpdateExtension: TEzRect; Dynamic; Abstract;
Function QuickUpdateExtension: TEzRect; Dynamic; Abstract;
Procedure Pack( ShowMessages: Boolean ); Virtual;
Procedure Repair; Virtual;
Procedure Zap; Virtual; Abstract;
Procedure First; Virtual; Abstract;
Procedure Last; Virtual; Abstract;
Procedure Next; Virtual; Abstract;
Function Eof: Boolean; Virtual; Abstract;
Procedure StartBuffering; Virtual;
Procedure EndBuffering; Virtual;
Procedure SetGraphicFilter( s: TSearchType; Const visualWindow: TEzRect ); Virtual; Abstract;
Procedure CancelFilter; Virtual; Abstract;
Procedure CancelScope;
Function ContainsDeleted: Boolean; Dynamic; Abstract;
Procedure Recall; Dynamic;
Function SendEntityToBack( ARecno: Integer ): Integer; Dynamic; Abstract;
Function BringEntityToFront( ARecno: Integer ): Integer; Dynamic; Abstract;
Function RecIsDeleted: Boolean; Virtual; Abstract;
Procedure RecLoadEntity2( Entity: TEzEntity ); Virtual; Abstract;
Function RecLoadEntity: TEzEntity; Virtual; Abstract;
{ used only for in-memory layers and returns a pointer that must not be
disposed }
Function RecEntity: TEzEntity; Virtual;
Function RecExtension: TEzRect; Virtual; Abstract; // for current entity
Function RecEntityID: TEzEntityID; Virtual; Abstract; // for current entity
Function GetBookmark: Pointer; Virtual; Abstract;
Procedure GotoBookmark( Bookmark: Pointer ); Virtual; Abstract;
Procedure FreeBookmark( Bookmark: Pointer ); Virtual; Abstract;
Procedure MaxMinExtents( Var AMinX, AMinY, AMaxX, AMaxY: Double );
Procedure RebuildTree; Dynamic; Abstract;
{ current entity in layer.recno }
Procedure CopyRecord( SourceRecno, DestRecno: Integer ); Virtual; Abstract;
Function IsClientServer: Boolean; Virtual;
Function DeleteLayerFiles: Boolean; Dynamic;
{ not virtual methods }
Function GetEntityUniqueID( RecNo: Integer ): Integer;
Function EntityType( RecNo: Integer ): TEzEntityID;
Procedure PopulateFieldList( Strings: TStrings; WithAlias: Boolean = False );
Function FloatRect2Rect( Const Rect: TEzRect ): TRect_rt;
Function Rect2FloatRect( Const Rect: TRect_rt ): TEzRect;
Function DefineScope( Const Scope: String ): Boolean; Dynamic; Abstract;
Function DefinePolygonScope( Polygon: TEzEntity; Const Scope: String;
Operator: TEzGraphicOperator ): Boolean; Dynamic; Abstract;
Function DefineBufferScope( Polyline: TEzEntity; Const Scope: String;
Operator: TEzGraphicOperator; CurvePoints: Integer;
Const Distance: Double ): Boolean;
Function DefineRectangleScope( Const AXmin, AYmin, AXmax, AYmax: Double;
Const Scope: String; Operator: TEzGraphicOperator ): Boolean;
Function DefinePolylineScope( Polyline: TEzEntity;
Const Scope: String ): Boolean;
Procedure Synchronize; Virtual;
Procedure StartBatchInsert; Dynamic;
Procedure CancelBatchInsert; Dynamic;
Procedure FinishBatchInsert; Dynamic;
Procedure GetFieldList( Strings: TStrings ); Dynamic;
Function LayerUp: Integer;
Function LayerDown: Integer;
Function BringToTop: Integer;
Function SendToBack: Integer;
function GetExtensionForRecords( List: TIntegerList ): TEzRect; Dynamic; Abstract;
Function IsCurrent: Boolean;
Function HasBlinkers: Boolean;
Procedure ClearBlinkers;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -