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

📄 ezbasegis.pas

📁 很管用的GIS控件
💻 PAS
📖 第 1 页 / 共 5 页
字号:
    Procedure DatePutN( FieldNo: Integer; value: TDateTime ); Virtual; Abstract;
    Procedure FieldPutN( FieldNo: Integer; Const Value: String ); Virtual; Abstract;
    Procedure FloatPutN( FieldNo: Integer; Const Value: Double ); Virtual; Abstract;
    Procedure FlushDB; Virtual; Abstract;
    Procedure IndexOn( Const IName, tag, keyexp, forexp: String;
      uniq: TEzIndexUnique; ascnd: TEzSortStatus ); Virtual; Abstract;
    Procedure LogicPutN( fieldno: Integer; value: boolean ); Virtual; Abstract;
    Procedure MemoLoadN( fieldno: Integer; Stream: TStream ); Virtual; Abstract;
    Procedure MemoLoad( Const fieldname: String; Stream: TStream ); Virtual; Abstract;
    Procedure Pack; Virtual; Abstract;
    Procedure Recall; Virtual; Abstract;
    Procedure Reindex; Virtual; Abstract;
    Procedure SetTagTo( Const TName: String ); Virtual; Abstract;
    Procedure SetUseDeleted( tf: boolean ); Virtual; Abstract;
    Procedure StringPutN( fieldno: Integer; Const value: String ); Virtual; Abstract;
    Procedure Zap; Virtual; Abstract;
    { this class must handle assigning from Dataset,FieldNo to the
      current record in this dataset in field DstFieldNo
      care must be taken for memo fields }
    Procedure AssignFrom( Dataset: TEzBaseTable; SrcFieldNo, DstFieldNo: Integer );
    Function FieldDec( FieldNo: Integer ): Integer; Virtual; Abstract;
    Function Field( FieldNo: Integer ): String; Virtual; Abstract;
    Function Deleted: Boolean; Virtual; Abstract;
    Function FieldLen( FieldNo: Integer ): Integer; Virtual; Abstract;
    Procedure Append( NewRecno: Integer ); Virtual; Abstract;
    Function BOF: Boolean; Virtual; Abstract;
    Function EOF: Boolean; Virtual; Abstract;
    Function FieldCount: Integer; Virtual; Abstract;
    Function FieldGet( Const FieldName: String ): String; Virtual; Abstract;
    { returns 'M','B','G', 'F','N', 'C', 'L','D', 'I', 'T' }
    Function FieldType( FieldNo: Integer ): char; Virtual; Abstract;
    Function Find( Const ss: String; IsExact, IsNear: boolean ): boolean; Virtual; Abstract;
    Function FloatGet( Const Fieldname: String ): Double; Virtual; Abstract;
    Function IntegerGet( Const FieldName: String ): Integer; Virtual; Abstract;
    Function LogicGet( Const FieldName: String ): Boolean; Virtual; Abstract;
    Function RecordCount: Integer; Virtual; Abstract;
    Function StringGet( Const FieldName: String ): String; Virtual; Abstract;
    //Procedure CopyStructure( Const FileName, APassword: String ); Virtual; Abstract;
    //Procedure CopyTo( Const FileName, APassword: String ); Virtual; Abstract;
    Procedure Delete; Virtual; Abstract;
    Procedure Edit; Virtual; Abstract;
    Procedure FieldPut( Const FieldName, Value: String ); Virtual; Abstract;
    Procedure First; Virtual; Abstract;
    Procedure FloatPut( Const FieldName: String; Const Value: Double ); Virtual; Abstract;
    Procedure Go( n: Integer ); Virtual; Abstract;
    Procedure IntegerPut( Const Fieldname: String; Value: Integer ); Virtual; Abstract;
    Procedure IntegerPutN( FieldNo: Integer; Value: Integer ); Virtual; Abstract;
    Procedure Last; Virtual; Abstract;
    Procedure LogicPut( Const fieldname: String; value: boolean ); Virtual; Abstract;
    Procedure Next; Virtual; Abstract;
    Procedure Post; Virtual; Abstract;
    Procedure Prior; Virtual; Abstract;
    Procedure Refresh; Virtual; Abstract;
    Procedure StringPut( Const fieldname, value: String ); Virtual; Abstract;
    { procedures for manipulating databases }
    Function DBCreateTable( Const fname: String; AFieldList: TStringList ): boolean; Virtual;
    function DBTableExists( const TableName: string ): Boolean; Virtual;
    Function DBDropTable( const TableName: string): Boolean; Virtual;
    Function DBDropIndex( const TableName: string): Boolean; Virtual;
    Function DBRenameTable( const Source, Target: string): Boolean; Virtual;
    function FieldNoFromAlias( const AliasName: String ): Integer;

    Property Active: boolean Read GetActive Write SetActive;
    Property RecNo: Integer Read GetRecNo Write SetRecNo;
    Property Gis: TEzBaseGIS read FGis write FGis;
    Property LongFieldNames: TStrings read FLongFieldNames;
    Property FieldAlias[FieldNo: Integer]: string read GetFieldAlias write SetFieldAlias;
    Property FieldAliasByName[const FieldName: String]: string read GetFieldAliasByName write SetFieldAliasByName;
  End;

  TEzBaseTableClass = Class Of TEzBaseTable;

  {-------------------------------------------------------------------------------}
  {                  Layers                                                       }
  {-------------------------------------------------------------------------------}

  { TEzBaseLayerInfo }
  TEzBaseLayerInfo = Class
  Protected
    FLayer: TEzBaseLayer; // a reference

    Function GetOverlappedTextAction: TEzOverlappedTextAction; Virtual; Abstract;
    Procedure SetOverlappedTextAction( Value: TEzOverlappedTextAction ); Virtual; Abstract;

    Function GetOverlappedTextColor: TColor; Virtual; Abstract;
    Procedure SetOverlappedTextColor( Value: TColor ); Virtual; Abstract;

    Function GetTextHasShadow: Boolean; Virtual; Abstract;
    Procedure SetTextHasShadow( Value: boolean ); Virtual; Abstract;

    Function GetTextFixedSize: Byte; Virtual; Abstract;
    Procedure SetTextFixedSize( Value: Byte ); Virtual; Abstract;

    Function GetVisible: boolean; Virtual; Abstract;
    Procedure SetVisible( Value: boolean ); Virtual;

    Function GetSelectable: boolean; Virtual; Abstract;
    Procedure SetSelectable( Value: boolean ); Virtual;

    Function GetIsCosmethic: boolean; Virtual; Abstract;
    Procedure SetIsCosmethic( value: boolean ); Virtual; Abstract;

    Function GetExtension: TEzRect; Virtual; Abstract;
    Procedure SetExtension( Const Value: TEzRect ); Virtual; Abstract;

    Function GetIDCounter: Integer; Virtual; Abstract;
    Procedure SetIDCounter( Value: Integer ); Virtual; Abstract;

    Function GetIsAnimationLayer: boolean; Virtual; Abstract;
    Procedure SetIsAnimationLayer( Value: boolean ); Virtual; Abstract;

    Function GetIsIndexed: boolean; Virtual; Abstract;
    Procedure SetIsIndexed( Value: boolean ); 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 GetUseAttachedDB: Boolean; Virtual;
    Procedure SetUseAttachedDB( Value: Boolean ); Virtual;

    Function GetLocked: Boolean; Virtual;
    Procedure SetLocked( Value: Boolean ); Virtual;

  Public
    Constructor Create( Layer: TEzBaseLayer ); Virtual;
    procedure Assign( Source: TEzBaseLayerInfo );

    Property Extension: TEzRect Read GetExtension Write SetExtension;
    Property IDCounter: Integer Read GetIDCounter Write SetIDCounter;

    Property UseAttachedDB: Boolean Read GetUseAttachedDB Write SetUseAttachedDB;
    Property IsCosmethic: boolean Read GetIsCosmethic Write SetIsCosmethic;
    Property IsAnimationLayer: Boolean Read GetIsAnimationLayer Write SetIsAnimationLayer;
    Property IsIndexed: Boolean Read GetIsIndexed Write SetIsIndexed;

    Property CoordsUnits: TEzCoordsUnits Read GetCoordsUnits Write SetCoordsUnits;
    Property CoordSystem: TEzCoordSystem Read GetCoordSystem Write SetCoordSystem;
    Property Visible: Boolean Read GetVisible Write SetVisible;
    Property Selectable: Boolean Read GetSelectable Write SetSelectable;

    Property TextHasShadow: Boolean Read GetTextHasShadow Write SetTextHasShadow;
    Property TextFixedSize: Byte Read GetTextFixedSize Write SetTextFixedSize;

    Property OverlappedTextAction: TEzOverlappedTextAction Read GetOverlappedTextAction Write SetOverlappedTextAction;
    Property OverlappedTextColor: TColor Read GetOverlappedTextColor Write SetOverlappedTextColor;
    Property Locked: Boolean Read GetLocked Write SetLocked;
  End;

  { layer events }
  TEzBeforePaintEntityEvent = Procedure( Sender: TObject;
    Layer: TEzBaseLayer;
    Recno: Integer;
    Entity: TEzEntity;
    Grapher: TEzGrapher;
    Canvas: TCanvas;
    Const Clip: TEzRect;
    DrawMode: TEzDrawMode;
    Var CanShow: Boolean;
    Var EntList: TEzEntityList;
    Var AutoFree: Boolean ) Of Object;

  TEzAfterPaintEntityEvent = Procedure( Sender: TObject;
    Layer: TEzBaseLayer;
    Recno: Integer;
    Entity: TEzEntity;
    Grapher: TEzGrapher;
    Canvas: TCanvas;
    Const Clip: TEzRect;
    DrawMode: TEzDrawMode ) Of Object;

  { TEzBaseLayer }
  TEzBaseLayer = Class
  Private
    FLayers: TEzBaseLayers;
    FCoordMultiplier: Integer;
    FModified: Boolean;
    FAutoFlush: Boolean;
    FName: String;
    FFileName: String;
    FBlinkers: TIntegerList;

    FOnBeforePaintEntity: TEzBeforePaintEntityEvent;
    FOnAfterPaintEntity: TEzAfterPaintEntityEvent;

    Function GetIndex: Integer;
    function GetBlinkers: TIntegerList;

  Protected
    FLayerInfo: TEzBaseLayerInfo;
    Frt: TRTree;

    Function GetRecno: Integer; Virtual; Abstract;
    Procedure SetRecno( Value: Integer ); Virtual; Abstract;

    Function GetRecordCount: Integer; Virtual;

    Function GetDBTable: TEzBaseTable; Virtual; Abstract;

    Procedure SetFileName( Const Value: String ); Virtual;

    Function GetActive: Boolean; Virtual; Abstract;
    Procedure SetActive( Value: Boolean ); Virtual; Abstract;

    Function GetConnected: Boolean; Virtual;
  Public
    Constructor Create( Layers: TEzBaseLayers; Const FileName: String ); Virtual;
    Destructor Destroy; Override;

    { for internal use only }
    Procedure InitializeOnCreate( Const FileName: String; AttachedDB, IsAnimation: Boolean;
      CoordSystem: TEzCoordSystem; CoordsUnits: TEzCoordsUnits;
      FieldList: TStrings ); Dynamic; Abstract;

    Procedure Assign( Source: TEzBaseLayer ); Dynamic; Abstract;

    Procedure Open; Virtual; Abstract;
    Procedure Close; Virtual; Abstract;
    Procedure ForceOpened; Virtual; Abstract;
    Procedure WriteHeaders( FlushFiles: Boolean ); Virtual; Abstract;

    Function AddEntity( Entity: TEzEntity ): Integer; Virtual; Abstract;
    Procedure DeleteEntity( RecNo: Integer ); Virtual; Abstract;
    Procedure UnDeleteEntity( RecNo: Integer ); Virtual; Abstract;
    Function LoadEntityWithRecNo( RecNo: Longint ): TEzEntity; Virtual; Abstract;
    Function EntityWithRecno( Recno: Integer ): TEzEntity; Virtual; // for in-memory layers only

    Procedure UpdateEntity( RecNo: Integer; Entity2D: TEzEntity ); Virtual; Abstract;
    Function UpdateExtension: TEzRect; Dynamic; Abstract;
    Function QuickUpdateExtension: TEzRect; Dynamic; Abstract;
    Procedure Pack( ShowMessages: Boolean ); Virtual;

    Procedure Repair; Virtual;
    Procedure Zap; Virtual; Abstract;

    Procedure First; Virtual; Abstract;
    Procedure Last; Virtual; Abstract;
    Procedure Next; Virtual; Abstract;

    Function Eof: Boolean; Virtual; Abstract;

    Procedure StartBuffering; Virtual;
    Procedure EndBuffering; Virtual;

    Procedure SetGraphicFilter( s: TSearchType; Const visualWindow: TEzRect ); Virtual; Abstract;
    Procedure CancelFilter; Virtual; Abstract;
    Procedure CancelScope;

    Function ContainsDeleted: Boolean; Dynamic; Abstract;

    Procedure Recall; Dynamic;

    Function SendEntityToBack( ARecno: Integer ): Integer; Dynamic; Abstract;
    Function BringEntityToFront( ARecno: Integer ): Integer; Dynamic; Abstract;

    Function RecIsDeleted: Boolean; Virtual; Abstract;

    Procedure RecLoadEntity2( Entity: TEzEntity ); Virtual; Abstract;
    Function RecLoadEntity: TEzEntity; Virtual; Abstract;
    { used only for in-memory layers and returns a pointer that must not be
      disposed }
    Function RecEntity: TEzEntity; Virtual;

    Function RecExtension: TEzRect; Virtual; Abstract; // for current entity

    Function RecEntityID: TEzEntityID; Virtual; Abstract; // for current entity

    Function GetBookmark: Pointer; Virtual; Abstract;
    Procedure GotoBookmark( Bookmark: Pointer ); Virtual; Abstract;
    Procedure FreeBookmark( Bookmark: Pointer ); Virtual; Abstract;

    Procedure MaxMinExtents( Var AMinX, AMinY, AMaxX, AMaxY: Double );

    Procedure RebuildTree; Dynamic; Abstract;

    { current entity in layer.recno }
    Procedure CopyRecord( SourceRecno, DestRecno: Integer ); Virtual; Abstract;

    Function IsClientServer: Boolean; Virtual;
    Function DeleteLayerFiles: Boolean; Dynamic;

    { not virtual methods }
    Function GetEntityUniqueID( RecNo: Integer ): Integer;
    Function EntityType( RecNo: Integer ): TEzEntityID;

    Procedure PopulateFieldList( Strings: TStrings; WithAlias: Boolean = False );

    Function FloatRect2Rect( Const Rect: TEzRect ): TRect_rt;
    Function Rect2FloatRect( Const Rect: TRect_rt ): TEzRect;

    Function DefineScope( Const Scope: String ): Boolean; Dynamic; Abstract;
    Function DefinePolygonScope( Polygon: TEzEntity; Const Scope: String;
      Operator: TEzGraphicOperator ): Boolean; Dynamic; Abstract;
    Function DefineBufferScope( Polyline: TEzEntity; Const Scope: String;
      Operator: TEzGraphicOperator; CurvePoints: Integer;
      Const Distance: Double ): Boolean;
    Function DefineRectangleScope( Const AXmin, AYmin, AXmax, AYmax: Double;
      Const Scope: String; Operator: TEzGraphicOperator ): Boolean;
    Function DefinePolylineScope( Polyline: TEzEntity;
      Const Scope: String ): Boolean;

    Procedure Synchronize; Virtual;
    Procedure StartBatchInsert; Dynamic;
    Procedure CancelBatchInsert; Dynamic;
    Procedure FinishBatchInsert; Dynamic;

    Procedure GetFieldList( Strings: TStrings ); Dynamic;

    Function LayerUp: Integer;
    Function LayerDown: Integer;

    Function BringToTop: Integer;
    Function SendToBack: Integer;
    function GetExtensionForRecords( List: TIntegerList ): TEzRect; Dynamic; Abstract;
    Function IsCurrent: Boolean;
    Function HasBlinkers: Boolean;
    Procedure ClearBlinkers;

⌨️ 快捷键说明

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