📄 ezbasegis.pas
字号:
Property Modified: Boolean Read FModified Write FModified;
Property Name: String Read FName Write FName;
Property Recno: Integer Read GetRecno Write SetRecno;
Property DBTable: TEzBaseTable Read GetDBTable;
Property RecordCount: Longint Read GetRecordCount;
Property rt: TRTree Read Frt;
Property Index: Integer Read GetIndex;
Property AutoFlush: Boolean Read FAutoFlush Write FAutoFlush;
Property FileName: String Read FFileName Write SetFileName;
Property LayerInfo: TEzBaseLayerInfo Read FLayerInfo;
Property Layers: TEzBaseLayers Read FLayers;
Property Active: Boolean Read GetActive Write SetActive;
Property Blinkers: TIntegerList read GetBlinkers;
Property CoordMultiplier: Integer Read FCoordMultiplier Write FCoordMultiplier;
property Connected: Boolean read GetConnected;
{ events }
Property OnBeforePaintEntity: TEzBeforePaintEntityEvent read FOnBeforePaintEntity write FOnBeforePaintEntity;
Property OnAfterPaintEntity: TEzAfterPaintEntityEvent read FOnAfterPaintEntity write FOnAfterPaintEntity;
End;
TEzLayerType = ( ltMemory, ltDesktop, ltClientServer );
{ TEzBaseLayers }
TEzBaseLayers = Class
Private
{ data }
FGIS: TEzBaseGIS; // a reference
FItems: TList;
Function Get( Index: Integer ): TEzBaseLayer;
Function GetCount: Integer;
Public
Constructor Create( GIS: TEzBaseGIS ); Virtual;
Destructor Destroy; Override;
Procedure Clear;
Procedure Assign( Source: TEzBaseLayers ); Dynamic; Abstract;
Procedure Exchange( Index1, Index2: Integer );
Function Add( Const FileName: String; LayerType: TEzLayerType ): Integer; Dynamic; Abstract;
Function CreateNew( Const FileName: String; FieldList: TStrings = Nil ): TEzBaseLayer; Dynamic; Abstract;
Function CreateNewEx( Const FileName: String;
CoordSystem: TEzCoordSystem;
CoordsUnits: TEzCoordsUnits;
FieldList: TStrings = Nil ): TEzBaseLayer; Dynamic; Abstract;
Function CreateNewCosmethic( Const FileName: String ): TEzBaseLayer; Dynamic; Abstract;
Function CreateNewAnimation( Const FileName: String ): TEzBaseLayer; Dynamic; Abstract;
Function Delete( Const LayerName: String; DeleteFiles: Boolean = False ): Boolean; Dynamic; Abstract;
Function IndexOf( Layer: TEzBaseLayer ): Integer;
Function IndexOfName( Const LayerName: String ): Integer;
Function LayerByName( Const LayerName: String ): TEzBaseLayer;
Procedure Sort;
Procedure OpenLayers;
Function LayerUp( Index: Integer ): Integer;
Function LayerDown( Index: Integer ): Integer;
Function BringToTop( Index: Integer ): Integer;
Function SendToBack( Index: Integer ): Integer;
{ populate Strings with the list of layer names }
Procedure PopulateList( Strings: TStrings );
Function IsClientServer: Boolean; Virtual;
Property Items[Index: Integer]: TEzBaseLayer Read Get; Default;
Property Count: Integer Read GetCount;
Property GIS: TEzBaseGIS Read FGIS;
End;
{-------------------------------------------------------------------------------}
{ TEzBaseGIS }
{-------------------------------------------------------------------------------}
{ TEzBaseMapInfo }
TEzBaseMapInfo = Class
Protected
FGIS: TEzBaseGIS;
Function GetNumLayers: Integer; Virtual; Abstract;
Procedure SetNumLayers( Value: Integer ); Virtual; Abstract;
Function GetExtension: TEzRect; Virtual; Abstract;
Procedure SetExtension( Const Value: TEzRect ); Virtual; Abstract;
Function GetCurrentLayer: String; Virtual; Abstract;
Procedure SetCurrentLayer( Const Value: String ); Virtual;
Function GetAerialViewLayer: String; Virtual; Abstract;
Procedure SetAerialViewLayer( Const Value: String ); Virtual; Abstract;
Function GetLastView: TEzRect; Virtual; Abstract;
Procedure SetLastView( Const Value: TEzRect ); 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 GetIsAreaClipped: boolean; Virtual; Abstract;
Procedure SetIsAreaClipped( Value: Boolean ); Virtual; Abstract;
Function GetAreaClipped: TEzRect; Virtual; Abstract;
Procedure SetAreaClipped( Const Value: TEzRect ); Virtual; Abstract;
Function GetClipAreaKind: TEzClipAreaKind; Virtual; Abstract;
Procedure SetClipAreaKind( Value: TEzClipAreaKind ); Virtual; Abstract;
Public
{ methods }
Constructor Create( GIS: TEzBaseGIS );
Procedure Initialize; Dynamic; Abstract;
Procedure Assign( Source: TEzBaseMapInfo );
Function IsValid: Boolean; Dynamic;
Function UnitsVerb: String;
Function UnitsLongVerb: String;
{ properties }
Property NumLayers: Integer Read GetNumLayers Write SetNumLayers;
Property Extension: TEzRect Read GetExtension Write SetExtension;
Property CurrentLayer: String Read GetCurrentLayer Write SetCurrentLayer;
Property AerialViewLayer: String Read GetAerialViewLayer Write SetAerialViewLayer;
Property LastView: TEzRect Read GetLastView Write SetLastView;
Property CoordsUnits: TEzCoordsUnits Read GetCoordsUnits Write SetCoordsUnits;
Property CoordSystem: TEzCoordSystem Read GetCoordSystem Write SetCoordSystem;
Property IsAreaClipped: Boolean Read GetIsAreaClipped Write SetIsAreaClipped;
Property AreaClipped: TEzRect Read GetAreaClipped Write SetAreaClipped;
Property ClipAreaKind: TEzClipAreaKind Read GetClipAreaKind Write SetClipAreaKind;
Property GIS: TEzBaseGIS Read FGIS;
End;
{ TEzDrawBoxList }
TEzDrawBoxList = Class
Private
FItems: TList;
Function GetCount: Integer;
Function GetItem( Index: Integer ): TEzBaseDrawBox;
Public
Constructor Create;
Destructor destroy; Override;
Procedure Add( Item: TEzBaseDrawBox );
Procedure Delete( Index: Integer );
Function IndexOf( Item: TEzBaseDrawBox ): Integer;
Property Count: Integer Read GetCount;
Property Items[Index: Integer]: TEzBaseDrawBox Read GetItem; Default;
End;
{ events definition for TEzGIS}
TEzProgressStage = ( epsStarting, epsMessage, epsEnding, epsUpdating );
{ the result of a query method:
Data: any additional info for IDentifying the caller
Layername: the name of the layer of the entity detected
Recno: the record number }
TEzQueryResultsEvent = Procedure( Sender: TObject;
Data: Longint;
Const Layername: String;
Recno: Integer ) Of Object;
TEzEntityEvent = Procedure( Sender: TObject;
Layer: TEzBaseLayer;
Recno: Integer ) Of Object;
TEzEntityAcceptEvent = Procedure( Sender: TObject;
Layer: TEzBaseLayer;
Recno: Integer;
Var Accept: Boolean ) Of Object;
TEzBeforeTransformEvent = Procedure( Sender: TObject;
Layer: TEzBaseLayer;
Recno: Integer;
Entity: TEzEntity;
TransformType: TEzTransformType;
Var Accept: Boolean ) Of Object;
{ Before insert an entity (can be used to filter the inserted entities) }
TEzBeforeInsertEvent = Procedure( Sender: TObject;
Layer: TEzBaseLayer;
Entity: TEzEntity;
Var Accept: Boolean ) Of Object;
TEzUDFCheckEvent = Procedure( Sender: TObject;
Const LayerName, Identifier: String;
Params: TParameterList;
Var DataType: TExprType; Var MaxLen: Integer;
Var Accept: Boolean ) Of Object;
TEzUDFSolveEvent = Procedure( Sender: TObject;
Const Identifier: String;
Params: TParameterList;
Layer: TEzBaseLayer; RecNo: Integer;
Var Value: String ) Of Object;
TEzStartExternalPopulateEvent = Procedure( Sender: TObject;
Const LayerName: string; Var Accept: Boolean ) Of Object;
TEzExternalPopulateEvent = Procedure( Sender: TObject; Const LayerName: string;
Var Identifier: string ) Of object;
TEzEndExternalPopulateEvent = Procedure( Sender: TObject; Const LayerName: string ) Of Object;
TEzBeforePaintLayerEvent = Procedure( Sender: TObject;
Layer: TEzBaseLayer;
Grapher: TEzGrapher;
Var CanShow: Boolean;
Var WasFiltered: Boolean;
Var EntList: TEzEntityList;
Var AutoFree: Boolean ) Of Object;
TEzAfterPaintLayerEvent = Procedure( Sender: TObject;
Layer: TEzBaseLayer;
Grapher: TEzGrapher;
Var EntList: TEzEntityList;
Var AutoFree: Boolean ) Of Object;
TEzBeforeSymbolPaintEvent = Procedure( Sender: TObject;
Layer: TEzBaseLayer;
Recno: Integer;
Grapher: TEzGrapher;
Canvas: TCanvas;
Const Clip: TEzRect;
Style: TEzSymbolTool ) Of Object;
TEzBeforeBrushPaintEvent = Procedure( Sender: TObject;
Layer: TEzBaseLayer;
Recno: Integer;
Grapher: TEzGrapher;
Canvas: TCanvas;
Const Clip: TEzRect;
Style: TEzBrushTool ) Of Object;
TEzBeforePenPaintEvent = Procedure( Sender: TObject;
Layer: TEzBaseLayer;
Recno: Integer;
Grapher: TEzGrapher;
Canvas: TCanvas;
Const Clip: TEzRect;
Style: TEzPenTool ) Of Object;
TEzBeforeFontPaintEvent = Procedure( Sender: TObject;
Layer: TEzBaseLayer;
Recno: Integer;
Grapher: TEzGrapher;
Canvas: TCanvas;
Const Clip: TEzRect;
Style: TEzFontTool ) Of Object;
{ show progress status for internal map actions }
TEzProgressEvent = Procedure( Sender: TObject;
Stage: TEzProgressStage;
Const Caption: String;
Min, Max, Position: Integer ) Of Object;
TEzShowHintEvent = Procedure( Sender: TObject;
Layer: TEzBaseLayer;
Recno: Integer;
Var Hint: String;
Var ShowHint: Boolean ) Of Object;
TEzShowDirectionEvent = Procedure( Sender: TObject;
Layer: TEzBaseLayer;
Recno: Integer;
Var DirectionPos: TEzDirectionPos;
DirectionPen: TEzPenTool;
DirectionBrush: TEzBrushTool;
Var RevertDirection: Boolean;
Var CanShow: Boolean ) Of Object;
TEzBeforeLayerEvent = Procedure( Sender: TObject;
Const LayerName: String;
Var Proceed: Boolean ) Of Object;
TEzLayerEvent = Procedure( Sender: TObject;
Const LayerName: String ) Of Object;
TEzPrintProgressEvent = Procedure( Sender: TObject; Percent: Integer;
Var Cancel: Boolean ) Of Object;
TEzErrorSource = ( esUndefined, esImporting, esLayerNotFound );
TEzErrorEvent = Procedure( Sender: TObject; Const Msg: String;
ErrorSource: TEzErrorSource; Var CanContinue: Boolean ) Of Object;
TEzGisTimerEvent = Procedure( Sender: TObject; Var CancelPainting: Boolean ) Of Object;
TEzFontShadowStyle = ( fssLowerRight, fssUpperRight, fssLowerLeft, fssUpperLeft );
{ TEzBaseGIS }
TEzBaseGIS = Class( TComponent )
Private
FActive: Boolean;
FFileName: String;
FDrawBoxList: TEzDrawBoxList;
FLayers: TEzBaseLayers; { Layers of the component. }
FHGuideLines: TEzDoubleList;
FVGuideLines: TEzDoubleList;
FModified: Boolean;
FReadOnly: Boolean;
FAutoSetLastView: Boolean;
FClipPolygonalArea: TEzVector;
FShowWaitCursor: Boolean;
FTimerFrequency: Integer;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -