📄 ezbasegis.pas
字号:
Function GetExtension(MarginSize: Integer = 4;
ExactArea: Boolean = False): TEzRect;
Procedure BeginUpdate;
Procedure EndUpdate;
Procedure ApplySymbolStyle( Style: TEzSymbolTool; const Apply: TEzSymbolApply );
Procedure ApplyPenStyle( Style: TEzPenTool; const Apply: TEzPenApply );
Procedure ApplyBrushStyle( Style: TEzBrushTool; const Apply: TEzBrushApply );
Procedure ApplyFontStyle( Style: TEzFontTool; const Apply: TEzFontApply );
Property Count: Integer Read GetCount;
Property NumSelected: Integer Read GetNumSelected;
Property DrawBox: TEzBaseDrawBox Read FDrawBox Write FDrawBox;
Property InUpdate: Boolean Read FInUpdate Write FInUpdate;
Property Items[Index: Integer]: TEzSelectionLayer Read Get; Default;
End;
{-------------------------------------------------------------------------------}
{ Undo object }
{-------------------------------------------------------------------------------}
TEzUndoAction = ( uaUndelete, uaDelete, uaUnTransform );
{ TEzUndoSingle }
TEzUndoSingle = Class
Private
FGlobalUndoAction: TEzUndoAction;
FLastOffset: Integer;
FDrawBox: TEzBaseDrawBox;
FCount: Integer;
FTempStream: TStream;
FMustReset: Boolean;
Function GetUndoStream: TStream;
Public
Constructor Create( DrawBox: TEzBaseDrawBox );
Destructor Destroy; Override;
Procedure BeginUndo(GlobalUndoAction: TEzUndoAction);
Procedure AddUndo( Layer: TEzBaseLayer; Recno: Integer;
UndoAction: TEzUndoAction );
Procedure EndUndo;
{ mark all entities for copying from the selection }
{ mark all the deleted entities from the selection }
Procedure AddUnDeleteFromSelection;
{ mark all transformed entities from selection}
Procedure AddUnTransformFromSelection;
{ mark one entity for transform }
Procedure AddUnTransform( Layer: TEzBaseLayer; RecNo: Integer );
Procedure Undo;
Function GetVerb: String;
End;
TEzUndoPool = Class
Private
FDrawBox: TEzBaseDrawBox;
FUndoLimit: Integer;
FList: TList;
FMulti: TEzUndoSingle;
FUndoFileName: string;
Procedure SetUndoLimit( Value: Integer );
Procedure AdjustStack;
Public
Constructor Create( DrawBox: TEzBaseDrawBox );
Destructor Destroy; Override;
Procedure BeginUndo(GlobalUndoAction: TEzUndoAction);
Procedure AddUndo( Layer: TEzBaseLayer; Recno: Integer;
Action: TEzUndoAction );
Procedure EndUndo;
Procedure Pop;
{ mark all entities for copying from the selection }
Procedure CopyToClipboardFromSelection;
{ mark all the deleted entities from the selection }
Procedure AddUnDeleteFromSelection;
{ mark all transformed entities from selection}
Procedure AddUnTransformFromSelection;
{ mark one entity for transform }
Procedure AddUnTransform( Layer: TEzBaseLayer; RecNo: Integer );
Procedure PasteFromClipboardTo(GIS: TEzBaseGIS=Nil);
Function CanUndo: boolean;
Function CanPaste: Boolean;
Procedure Undo;
Procedure Clear(Clean: Boolean=False);
Function GetVerb: String;
Property UndoLimit: Integer Read FUndoLimit Write SetUndoLimit;
End;
{-------------------------------------------------------------------------------}
{ TEzEntityList }
{-------------------------------------------------------------------------------}
TEzEntityList = Class
Private
FList: TList;
Function Get( Index: Integer ): TEzEntity;
Public
Constructor Create;
Destructor Destroy; Override;
Procedure Add( Ent: TEzEntity );
Procedure Insert( Index: Integer; Ent: TEzEntity );
Procedure Delete( Index: Integer );
Procedure Extract( Index: Integer );
Procedure Exchange( Index1, Index2: Integer );
Procedure ExtractAll;
Function Count: Integer;
Procedure Clear;
Property Items[Index: Integer]: TEzEntity Read Get; Default;
End;
{-------------------------------------------------------------------------------}
{ TEzBaseDrawBox }
{-------------------------------------------------------------------------------}
{ Events definition for TEzBaseDrawBox }
TEzMouseEvent = Procedure( Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer; Const WX, WY: Double ) Of Object;
TEzMouseMoveEvent = Procedure( Sender: TObject; Shift: TShiftState;
X, Y: Integer; Const WX, WY: Double ) Of Object;
TEzZoomChangeEvent = Procedure( Sender: TObject; Const Scale: Double ) Of Object;
TEzBeforeSelectEvent = Procedure( Sender: TObject; Layer: TEzBaseLayer;
Recno: Integer; Var CanSelect: Boolean ) Of Object;
{ This event is used for both: when the entity is selected and unselected }
TEzEntitySelectEvent = Procedure( Sender: TObject; Layer: TEzBaseLayer;
RecNo: Integer ) Of Object;
{ When an entity is DOUBLE clicked in a TEzBaseDrawBox }
TEzEntityDblClickEvent = Procedure( Sender: TObject; Layer: TEzBaseLayer;
RecNo: Integer; Var Processed: Boolean ) Of Object;
{ When an entity is clicked in a TEzBaseDrawBox }
TEzEntityClickEvent = Procedure( Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer; Const WX, WY: Double;
Layer: TEzBaseLayer; RecNo: Integer; var Processed: Boolean ) Of Object;
TEzClickEvent = Procedure( Sender: TObject; X, Y: Integer;
const XWorld, YWorld: Double ) Of Object;
{-------------------------------------------------------------------------------}
// TEzBaseDrawBox - abstract control
{-------------------------------------------------------------------------------}
TEzBaseDrawBox = Class( TCustomControl )
Private
FGIS: TEzBaseGIS;
FGrapher: TEzGrapher;
FScreenBitmap: TBitmap;
FIsAerial: Boolean;
FSelection: TEzSelection;
FUndo: TEzUndoPool;
FBlinkCount: Integer;
FBlinkRate: Integer;
FHMin: Integer;
FHMax: Integer;
FHPosition: Integer;
FVMin: Integer;
FVMax: Integer;
FVPosition: Integer;
FHSmallChange: TScrollBarInc;
FHLargeChange: TScrollBarInc;
FVSmallChange: TScrollBarInc;
FVLargeChange: TScrollBarInc;
//FPageSize: Integer;
FScrollBars: TScrollStyle;
FBorderStyle: TBorderStyle; {border style to use}
FFlatScrollBar: Boolean;
FComCtlVersion: Boolean;
FRubberPen: TPen;
FOutputDevices: TEzOutputDevices;
FShowControlPoints: Boolean;
FShowTransfPoints: Boolean;
FTempEntities: TEzEntityList; { List used for temporary entities }
FNeedsRepaint: Boolean;
FGridInfo: TEzGridInfo;
FScreenGrid: TEzScreenGrid;
FShowMapExtents: Boolean;
FShowLayerExtents: Boolean;
FSnapToGuidelinesDist: double;
FSnapToGuidelines: boolean;
FHideVertexNumber: Boolean;
FSymbolMarker: Integer;
FNumDecimals: Integer;
FNoPickFilter: TEzEntityIDs;
FStackedSelect: Boolean;
FPartialSelect: Boolean;
FDelayShowHint: Integer;
FTileBitmap: TBitmap;
FThematicSeriesColors: TEzThematicSeriesColor;
FUpdateOnScroll: Boolean;
FDropRepeat: Integer;
//FOldSize: TPoint;
FDefaultScaleUnits: TEzScaleUnits;
FInUpdate: Boolean;
FInRepaint: Boolean;
FZoomWithMargins: Boolean;
{ threads }
FUseThread: Boolean;
{ BASIC event handlers }
FOnPaint: TNotifyEvent;
FOnBeginRepaint: TNotifyEvent;
FOnEndRepaint: TNotifyEvent;
FOnGridError: TNotifyEvent;
FOnMouseDown2D: TEzMouseEvent;
FOnMouseUp2D: TEzMouseEvent;
FOnMouseMove2D: TEzMouseMoveEvent;
FOnHScroll: TScrollEvent;
FOnVScroll: TScrollEvent;
FOnHChange: TNotifyEvent;
FOnVChange: TNotifyEvent;
FOnBeforeScroll: TNotifyEvent;
FOnAfterScroll: TNotifyEvent;
{ event handlers. }
FOnCustomClick: TEzClickEvent;
FOnEntityDblClick: TEzEntityDblClickEvent;
FOnBeforeInsert: TEzBeforeInsertEvent;
FOnAfterInsert: TEzEntityEvent;
FOnBeforeSelect: TEzBeforeSelectEvent;
FOnAfterSelect: TEzEntitySelectEvent;
FOnAfterUnSelect: TEzEntitySelectEvent;
FOnZoomChange: TEzZoomChangeEvent;
FOnEntityChanged: TEzEntityEvent;
FOnShowHint: TEzShowHintEvent;
FOnSelectionChanged: TNotifyEvent;
FOnGisChanged: TNotifyEvent;
FOnMouseLeave: TNotifyEvent;
FOnMouseEnter: TNotifyEvent;
{ basic procedures }
Procedure CalcScrollBarDeltas( var DeltaX, DeltaY: Integer );
Procedure SetBorderStyle( Const Value: forms.TBorderStyle );
Procedure SetScrollBars( Value: TScrollStyle );
Procedure WMHScroll( Var Msg: TWMHScroll ); Message WM_HSCROLL;
Procedure WMVScroll( Var Msg: TWMVScroll ); Message WM_VSCROLL;
Procedure CMCtl3DChanged( Var m: TMessage ); Message CM_CTL3DCHANGED;
Procedure WMEraseBkgnd( Var m: TWMEraseBkgnd ); Message WM_ERASEBKGND;
Procedure SetFlatScrollBar( Value: Boolean );
Procedure SetGridInfo( value: TEzGridInfo );
Procedure SetScreenGrid( value: TEzScreenGrid );
Procedure SetShowLayerExtents( value: boolean );
Procedure SetShowMapExtents( value: boolean );
{ GIS specific procedures }
Procedure SetHParams( APosition, AMin, AMax: Integer );
Procedure SetVParams( APosition, AMin, AMax: Integer );
Procedure SetPageSize( Value: Integer );
procedure CMMouseEnter (var Msg: TMessage); message CM_MOUSEENTER;
procedure CMMouseLeave (var Msg: TMessage); message CM_MOUSELEAVE;
Protected
{ protected declarations }
Procedure ViewChanged( Sender: TObject ); Dynamic;
Procedure HChange; Dynamic;
Procedure VChange; Dynamic;
Procedure CreateWnd; Override;
Procedure HScroll( ScrollCode: TScrollCode; Var ScrollPos: Integer ); Dynamic;
Procedure VScroll( ScrollCode: TScrollCode; Var ScrollPos: Integer ); Dynamic;
Procedure Paint; Override;
Procedure MouseMove( Shift: TShiftState; X, Y: Integer ); Override;
Procedure MouseDown( Button: TMouseButton; Shift: TShiftState; X, Y: Integer ); Override;
Procedure MouseUp( Button: TMouseButton; Shift: TShiftState; X, Y: Integer ); Override;
{ repaint all the objects contained in WCRect. }
Procedure UpdateViewport( WCRect: TEzRect ); Virtual;
Procedure DrawGrid( Const WCRect: TEzRect );
Function IsDesigning: Boolean;
{ GIS specific }
Procedure SetGIS( Value: TEzBaseGIS );
Procedure Notification( AComponent: TComponent; Operation: TOperation ); Override;
Function GetLayerByName( Const LayerName: String ): TEzBaseLayer;
Public
{ public declarations }
{$IFDEF IS_OCX}
FOCX_Owner : IUnknown;
{$ENDIF}
Constructor Create( AOwner: TComponent ); Override;
Destructor Destroy; Override;
Procedure Resize; Overr
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -