⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ezbasegis.pas

📁 很管用的GIS控件
💻 PAS
📖 第 1 页 / 共 5 页
字号:
    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 + -