📄 ezbasegis.pas
字号:
{ 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 + -