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

📄 ezbasegis.pas

📁 很管用的GIS控件
💻 PAS
📖 第 1 页 / 共 5 页
字号:

    { the subdirectory to search for layer files. Mainly used in c/s when
      desktop layers are added to the list of layers. }
    FLayersSubdir: String;
    FProjectionParams: TStrings;

    { This class is used when clipping by using the selected entities }
    FClippedEntities: TEzSelection;

    { used for internal procedures }
    FProgressMin: Integer;
    FProgressMax: Integer;
    FProgressPosition: Integer;
    FPolygonClipOperation: TEzPolyClipTool;

    FPrintTimerFrequency: Integer;
    FFontShadowStyle: TEzFontShadowStyle;
    FFontShadowColor: TColor;
    FFontShadowOffset: Integer;

    { -- Events -- }
    FOnUDFCheck: TEzUDFCheckEvent;
    FOnUDFSolve: TEzUDFSolveEvent;
    FOnFileNameChange: TNotifyEvent;

    FOnBeforePaintEntity: TEzBeforePaintEntityEvent;
    FOnAfterPaintEntity: TEzAfterPaintEntityEvent;

    FOnBeforeSymbolPaint: TEzBeforeSymbolPaintEvent;
    FOnBeforeBrushPaint: TEzBeforeBrushPaintEvent;
    FOnBeforePenPaint: TEzBeforePenPaintEvent;
    FOnBeforeFontPaint: TEzBeforeFontPaintEvent;

    FOnProgress: TEzProgressEvent;

    FOnBeforePaintLayer: TEzBeforePaintLayerEvent;
    FOnAfterPaintLayer: TEzAfterPaintLayerEvent;
    FOnBeforePaintLayers: TNotifyEvent;
    FOnAfterPaintLayers: TNotifyEvent;

    FOnShowDirection: TEzShowDirectionEvent;
    FOnBeforeClose: TNotifyEvent;
    FOnBeforeOpen: TNotifyEvent;

    FOnBeforeDeleteLayer: TEzBeforeLayerEvent;
    FOnAfterDeleteLayer: TEzLayerEvent;
    FOnBeforeInsertLayer: TEzBeforeLayerEvent;
    FOnAfterInsertLayer: TEzLayerEvent;
    FOnBeforeTransform: TEzBeforeTransformEvent;
    FOnAfterTransform: TEzEntityEvent;
    FOnBeforeDragDrop: TEzEntityAcceptEvent;
    FOnAfterDragDrop: TEzEntityEvent;

    FOnQueryResults: TEzQueryResultsEvent;

    FOnVisibleLayerChange: TEzLayerEvent;
    FOnSelectableLayerChange: TEzLayerEvent;
    FOnCurrentLayerChange: TEzLayerEvent;

    FOnModified: TNotifyEvent;
    FOnClippedAreaChanged: TNotifyEvent;

    FOnPrintBegin: TNotifyEvent;
    FOnPrintProgress: TEzPrintProgressEvent;
    FOnPrintEnd: TNotifyEvent;

    FOnError: TEzErrorEvent;
    FOnGisTimer: TEzGisTimerEvent;
    FOnStartExternalPopulate: TEzStartExternalPopulateEvent;
    FOnEndExternalPopulate: TEzEndExternalPopulateEvent;
    FOnExternalPopulate: TEzExternalPopulateEvent;

    Procedure SetLayers( Value: TEzBaseLayers );

    Function GetCurrentLayerName: String;
    Procedure SetCurrentLayerName( Const Value: String );

    Function GetCurrentLayer: TEzBaseLayer;
    Function InternalPolyClipEx( Const Entity1, Entity2: TEzEntity; Op: TEzPolyClipOp ): TEzEntity;
    Function FoundFirstCosmethicLayer: TEzBaseLayer;
    Procedure SetModified( Value: Boolean );
    Procedure SetActive( Value: Boolean );
    Procedure SetPolygonClipOperation( value: TEzPolyClipTool );
  Protected

    FMapInfo: TEzBaseMapInfo;

    Procedure WriteMapHeader( Const Filename: String ); Dynamic; Abstract;
    Procedure SetFilename( const Value: string ); Virtual;

  Public
    { Public declarations }
  {$IFDEF IS_OCX}
    FOCX_Owner : IUnknown;
  {$ENDIF}

    { methods }
    Constructor Create( AOwner: TComponent ); Override;
    Destructor Destroy; Override;
    Function IsDesigning: Boolean;

    Function CreateLayer( Const LayerName: String; LayerType: TEzLayerType ): TEzBaseLayer; Dynamic; Abstract;
    Procedure Open; Dynamic;
    Procedure Close; Dynamic;
    Procedure Save;
    Procedure SaveAs( Const FileName: String ); Dynamic; Abstract;

    Procedure SaveIfModified;
    Procedure UpdateExtension;
    Procedure QuickUpdateExtension;
    Procedure CreateNew( Const FileName: String ); Dynamic;

    Procedure RepaintViewports;
    Procedure RefreshViewports;
    Procedure ClearClippedArea;

    Function VectIntersect( Vector1, Vector2, IntersectVector: TEzVector ): Boolean;
    Procedure RebuildTree;
    Function OpenMode: Word;
{$IFDEF GIS_CONTROLS}
    Procedure AddShape( Const FileName: String );
    Procedure AddDGN( Const FileName: String );
{$ENDIF}
    Procedure AddGeoref( Const LayerName, FileName: String ); Dynamic;

    Procedure StartProgress( Const ACaption: String; AMin, AMax: Integer );
    Procedure UpdateProgress( Position: Integer );
    Procedure UpdateCaption( Const ACaption: String );
    Procedure EndProgress;

    Function IsClientServer: Boolean; Virtual;

    { methods changed from the viewport to this control }
    Procedure MaxMinExtents( Var AXMin, AYMin, AXMax, AYMax: Double );

    Function EntityDifference( Const Entity1, Entity2: TEzEntity ): TEzEntity;

    Function EntityIntersect( Const Entity1, Entity2: TEzEntity ): TEzEntity;

    Function EntityUnion( Const Entity1, Entity2: TEzEntity ): TEzEntity;

    Function EntityXor( Const Entity1, Entity2: TEzEntity ): TEzEntity;
    Function EntitySplit( Const Entity1, Entity2: TEzEntity ): TEzEntity;
    Function CreateBufferEntity( Entity: TEzEntity; CurvePoints: Integer;
      Const Distance: Double ): TEzEntity;
    Function WithinDistance( Entity1, Entity2: TEzEntity;
      Const Distance: Double ): Boolean;

    Function EntitiesRelate( Entity1, Entity2: TEzEntity;
      GraphicOperator: TEzGraphicOperator ): Boolean;
    { the query methods }
    Procedure QueryExpression( Const LayerName, Expression: String; Data: Longint;
      List: TIntegerList; ClearBefore: Boolean );

    Procedure QueryRectangle( Const AxMin, AyMin, AxMax, AyMax: double;
      Const Layername, QueryExpression: String; Operator: TEzGraphicOperator;
      Data: Longint; List: TIntegerList; ClearBefore: Boolean );

    Procedure QueryPolygon( Polygon: TEzEntity;
      Const Layername, QueryExpression: String; Operator: TEzGraphicOperator;
      Data: Longint; List: TIntegerList; ClearBefore: Boolean );

    Procedure QueryBuffer( Polyline: TEzEntity; Const Layername, QueryExpression: String;
      Operator: TEzGraphicOperator; Data: Longint; CurvePoints: Integer;
      Const Distance: Double; List: TIntegerList; ClearBefore: Boolean );

    Procedure QueryPolyline( Polyline: TEzEntity;
      Const Layername, QueryExpression: String; Data: Longint; List: TIntegerList;
      ClearBefore: Boolean );

    procedure LoadFontFile(const FileName: string);
    procedure LoadSymbolsFile(const FileName: string);
    procedure LoadLineTypesFile(const FileName: string);

    Property Layers: TEzBaseLayers Read FLayers Write SetLayers;
    Property Modified: Boolean Read FModified Write SetModified;
    Property DrawBoxList: TEzDrawBoxList Read FDrawBoxList;
    Property CurrentLayer: TEzBaseLayer Read GetCurrentLayer;

    Property CurrentLayerName: String Read GetCurrentLayerName Write SetCurrentLayerName;
    Property ClipPolygonalArea: TEzVector Read FClipPolygonalArea;
    Property ClippedEntities: TEzSelection Read FClippedEntities;
    Property MapInfo: TEzBaseMapInfo Read FMapInfo;

    Property VGuidelines: TEzDoubleList Read FVGuidelines;
    Property HGuidelines: TEzDoubleList Read FHGuidelines;
    Property ProjectionParams: TStrings Read FProjectionParams;

  Published
    { Published declarations }
    Property Active: Boolean Read FActive Write SetActive;
    Property FileName: String Read FFileName Write SetFileName;
    Property LayersSubdir: String Read FLayersSubdir Write FLayersSubdir;

    Property AutoSetLastView: Boolean Read fAutoSetLastView Write fAutoSetLastView Default True;
    Property ReadOnly: Boolean Read FReadOnly Write FReadOnly Default False;
    Property ShowWaitCursor: Boolean Read FShowWaitCursor Write FShowWaitCursor Default True;

    Property PolygonClipOperation: TEzPolyClipTool Read FPolygonClipOperation Write SetPolygonClipOperation;

    Property FontShadowStyle: TEzFontShadowStyle Read FFontShadowStyle Write FFontShadowStyle Default fssLowerRight;
    Property FontShadowColor: TColor Read FFontShadowColor Write FFontShadowColor Default clSilver;
    Property FontShadowOffset: Integer Read FFontShadowOffset Write FFontShadowOffset Default 1;
    Property TimerFrequency: Integer Read FTimerFrequency Write FTimerFrequency Default 200;
    Property PrintTimerFrequency: Integer Read FPrintTimerFrequency Write FPrintTimerFrequency Default 800;

    { events }
    Property OnBeforePaintLayer: TEzBeforePaintLayerEvent Read FOnBeforePaintLayer Write FOnBeforePaintLayer;
    Property OnAfterPaintLayer: TEzAfterPaintLayerEvent Read FOnAfterPaintLayer Write FOnAfterPaintLayer;

    Property OnUDFCheck: TEzUDFCheckEvent Read FOnUDFCheck Write FOnUDFCheck;
    Property OnUDFSolve: TEzUDFSolveEvent Read FOnUDFSolve Write FOnUDFSolve;

    Property OnFileNameChange: TNotifyEvent Read FOnFileNameChange Write FOnFileNameChange;

    Property OnBeforeSymbolPaint: TEzBeforeSymbolPaintEvent Read FOnBeforeSymbolPaint Write FOnBeforeSymbolPaint;
    Property OnBeforeBrushPaint: TEzBeforeBrushPaintEvent Read FOnBeforeBrushPaint Write FOnBeforeBrushPaint;
    Property OnBeforePenPaint: TEzBeforePenPaintEvent Read FOnBeforePenPaint Write FOnBeforePenPaint;
    Property OnBeforeFontPaint: TEzBeforeFontPaintEvent Read FOnBeforeFontPaint Write FOnBeforeFontPaint;
    Property OnBeforePaintEntity: TEzBeforePaintEntityEvent Read FOnBeforePaintEntity Write FOnBeforePaintEntity;
    Property OnAfterPaintEntity: TEzAfterPaintEntityEvent Read FOnAfterPaintEntity Write FOnAfterPaintEntity;

    Property OnProgress: TEzProgressEvent Read FOnProgress Write FOnProgress;
    Property OnShowDirection: TEzShowDirectionEvent Read FOnShowDirection Write FOnShowDirection;

    Property OnBeforeClose: TNotifyEvent Read FOnBeforeClose Write FOnBeforeClose;
    Property OnBeforeOpen: TNotifyEvent Read FOnBeforeOpen Write FOnBeforeOpen;

    Property OnBeforeDeleteLayer: TEzBeforeLayerEvent Read FOnBeforeDeleteLayer Write FOnBeforeDeleteLayer;
    Property OnAfterDeleteLayer: TEzLayerEvent Read FOnAfterDeleteLayer Write FOnAfterDeleteLayer;

    Property OnBeforeInsertLayer: TEzBeforeLayerEvent Read FOnBeforeInsertLayer Write FOnBeforeInsertLayer;
    Property OnAfterInsertLayer: TEzLayerEvent Read FOnAfterInsertLayer Write FOnAfterInsertLayer;

    Property OnQueryResults: TEzQueryResultsEvent Read FOnQueryResults Write FOnQueryResults;

    Property OnVisibleLayerChange: TEzLayerEvent Read FOnVisibleLayerChange Write FOnVisibleLayerChange;
    Property OnSelectableLayerChange: TEzLayerEvent Read FOnSelectableLayerChange Write FOnSelectableLayerChange;
    Property OnCurrentLayerChange: TEzLayerEvent Read FOnCurrentLayerChange Write FOnCurrentLayerChange;

    Property OnModified: TNotifyEvent Read FOnModified Write FOnModified;
    Property OnClippedAreaChanged: TNotifyEvent Read FOnClippedAreaChanged Write FOnClippedAreaChanged;

    Property OnPrintBegin: TNotifyEvent Read FOnPrintBegin Write FOnPrintBegin;
    Property OnPrintProgress: TEzPrintProgressEvent Read FOnPrintProgress Write FOnPrintProgress;
    Property OnPrintEnd: TNotifyEvent Read FOnPrintEnd Write FOnPrintEnd;
    Property OnBeforeTransform: TEzBeforeTransformEvent read FOnBeforeTransform write FOnBeforeTransform;
    Property OnAfterTransform: TEzEntityEvent read FOnAfterTransform write FOnAfterTransform;
    Property OnBeforeDragDrop: TEzEntityAcceptEvent read FOnBeforeDragDrop write FOnBeforeDragDrop;
    Property OnAfterDragDrop: TEzEntityEvent read FOnAfterDragDrop write FOnAfterDragDrop;

    Property OnError: TEzErrorEvent Read FOnError Write FOnError;
    Property OnGisTimer: TEzGisTimerEvent Read FOnGisTimer Write FOnGisTimer;
    Property OnExternalPopulate: TEzExternalPopulateEvent read FOnExternalPopulate write FOnExternalPopulate;
    Property OnStartExternalPopulate: TEzStartExternalPopulateEvent read FOnStartExternalPopulate write FOnStartExternalPopulate;
    Property OnEndExternalPopulate: TEzEndExternalPopulateEvent read FOnEndExternalPopulate write FOnEndExternalPopulate;
    Property OnBeforePaintLayers: TNotifyEvent read FOnBeforePaintLayers write FOnBeforePaintLayers;
    Property OnAfterPaintLayers: TNotifyEvent read FOnAfterPaintLayers write FOnAfterPaintLayers;

  End;

  {-------------------------------------------------------------------------------}
  {                  Selection                                                    }
  {-------------------------------------------------------------------------------}

  { TEzSelectionLayer
    This class is for maintaining the selected entities in a layer}
  TEzSelectionLayer = Class
  Private
    FSelection: TEzSelection; // belongs to
    FLayer: TEzBaseLayer; {the selected layer}
    FSelList: TIntegerList;

    FIsSelectEvent: Boolean;
    FIsUnSelectEvent: Boolean;
    FIsBeforeSelectEvent: Boolean;

  Public
    Constructor Create( Selection: TEzSelection; Layer: TEzBaseLayer );
    Destructor Destroy; Override;
    Procedure Add( RecNo: Integer );
    Procedure Delete( RecNo: Integer );
    Function IsSelected( Recno: Integer ): Boolean;

    Property Layer: TEzBaseLayer Read FLayer Write FLayer;
    Property SelList: TIntegerList Read FSelList;
  End;

  { TEzSelection - Main Selection object. Contains the list of selected layers }

  TEzSelection = Class
  Private
    { List of TEzSelectionLayer where there are entities selected }
    FList: TList;
    FDrawBox: TEzBaseDrawBox; { the DrawBox to what this belongs to }
    FInUpdate: Boolean;

    Function Get( Index: Integer ): TEzSelectionLayer;
    Function GetCount: Integer;
    Function GetNumSelected: Integer;
  Public
    Constructor Create( DrawBox: TEzBaseDrawBox );
    Destructor Destroy; Override;

    Procedure Assign( Source: TEzSelection );
    Procedure Clear;

    Procedure Add( Layer: TEzBaseLayer; RecNo: Integer );
    Procedure Delete( Layer: TEzBaseLayer; RecNo: Integer );
    Procedure AddLayer( Layer: TEzBaseLayer );
    Procedure DeleteLayer( Layer: TEzBaseLayer );

    Function IndexOf( Layer: TEzBaseLayer ): Integer;
    Procedure DeleteSelection;
    Function NumSelectedInLayer( Layer: TEzBaseLayer ): Integer;
    Procedure Toggle( Layer: TEzBaseLayer; RecNo: Integer );

    Function IsSelected( Layer: TEzBaseLayer; RecNo: Integer ): Boolean;
    Procedure RepaintSelectionArea;
    Procedure UnSelectAndRepaint;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -