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

📄 mapxdrv.~pas

📁 此代码是关于mapgis的在
💻 ~PAS
字号:
unit MapXDrv;

interface

uses
  Classes, OLEDataStore, MapXContainer, SysUtils, FileCtrl, MapXBase;
  
type
  TMapPrjDrv=class
  private
    AFile:TdsStorage;
  public
    gStrem:TdsStream;
    fcStrem:TdsStream;
    sStrem:TdsStream;
    bStrem:TdsStream;
    lStrem:TdsStream;
    lcStrem:TdsStream;
    diStrem:TdsStream;
    constructor Create(const FileName:string; Mode:TdsCreateType);
    destructor Destroy;override;
  end;

  TMapProject=class
  private
    FCaption: string;
    FFeatureClasses: TFeatureClassList;
    FStyles: TStyleInfoList;
    FBlockes: TMapBlockList;
    FLayers: TMapLinkInfoList;
  protected
    procedure SaveGlobalToStream(Stream:TStream);
    procedure LoadGlobalFromStream(Stream:TStream);

    procedure SaveFeatureClassesToStream(Stream:TStream);
    procedure LoadFeatureClassesFromStream(Stream:TStream);

    procedure SaveStylesToStream(Stream:TStream);
    procedure LoadStylesFromStream(Stream:TStream);

    procedure SaveShapesToStream(Stream:TStream);
    procedure LoadShapesFromStream(Stream:TStream);

    procedure SaveLayersToStream(Stream:TStream);
    procedure LoadLayersFromStream(Stream:TStream);

    procedure SaveLastConfigToStream(Stream:TStream);
    procedure LoadLastConfigFromStream(Stream:TStream);

    procedure SaveDocInfoToStream(Stream:TStream);
    procedure LoadDocInfoFromStream(Stream:TStream);
  public
    constructor Create;virtual;
    destructor Destroy;override;
    procedure SaveToFile(const FileName:string);
    procedure LoadFromFile(const FileName:string);
    property Caption:string read FCaption write FCaption;
    property FeatureClasses:TFeatureClassList read FFeatureClasses;
    property Styles:TStyleInfoList read FStyles;
    property Blockes:TMapBlockList read FBlockes;
    property Layers:TMapLinkInfoList read FLayers;
  end;
  
  TMapLayerDrv=class
  end;
  
implementation

uses CustomDataStore;

{ TMapPrjDrv }

constructor TMapPrjDrv.Create(const FileName: string; Mode:TdsCreateType);
begin
  AFile:=TdsStorage.Create(WideString(FileName), Mode);
  if Mode=dsCreate then
  begin
    gStrem:=AFile.CreateSubStream(WideString('Global'));
    fcStrem:=AFile.CreateSubStream(WideString('FeatureClasses'));
    sStrem:=AFile.CreateSubStream(WideString('Styles'));
    bStrem:=AFile.CreateSubStream(WideString('Blockes'));
    lStrem:=AFile.CreateSubStream(WideString('Layers'));
    lcStrem:=AFile.CreateSubStream(WideString('LastConfig'));
    diStrem:=AFile.CreateSubStream(WideString('DocInfo'));
  end
  else
  begin
    gStrem:=AFile.OpenSubStream(WideString('Global'));
    fcStrem:=AFile.OpenSubStream(WideString('FeatureClasses'));
    sStrem:=AFile.OpenSubStream(WideString('Styles'));
    bStrem:=AFile.OpenSubStream(WideString('Blockes'));
    lStrem:=AFile.OpenSubStream(WideString('Layers'));
    lcStrem:=AFile.OpenSubStream(WideString('LastConfig'));
    diStrem:=AFile.OpenSubStream(WideString('DocInfo'));
  end;
end;

destructor TMapPrjDrv.Destroy;
begin

  inherited;
end;

{ TMapProject }

constructor TMapProject.Create;
begin
  inherited Create;
  FFeatureClasses:=TFeatureClassList.Create;
  FStyles:=TStyleInfoList.Create;
  FBlockes:=TMapBlockList.Create;
  FLayers:=TMapLinkInfoList.Create;
end;

destructor TMapProject.Destroy;
begin
  FFeatureClasses.Free;
  FStyles.Free;
  FBlockes.Free;
  FLayers.Free;
  inherited Destroy;
end;

procedure TMapProject.LoadDocInfoFromStream(Stream: TStream);
begin

end;

procedure TMapProject.LoadFeatureClassesFromStream(Stream: TStream);
begin
  FeatureClasses.LoadFromStream(Stream);  
end;

procedure TMapProject.LoadFromFile(const FileName: string);
var
  mpDrv:TMapPrjDrv;
begin
  mpDrv:=TMapPrjDrv.Create(FileName, dsOpen);
  try
    LoadGlobalFromStream(mpDrv.gStrem.OleObject);
    LoadFeatureClassesFromStream(mpDrv.fcStrem.OleObject);
    LoadStylesFromStream(mpDrv.sStrem.OleObject);
    LoadShapesFromStream(mpDrv.bStrem.OleObject);
    LoadLayersFromStream(mpDrv.lStrem.OleObject);
    LoadLastConfigFromStream(mpDrv.lcStrem.OleObject);
    LoadDocInfoFromStream(mpDrv.diStrem.OleObject);
  finally
    mpDrv.Free;
  end;
end;

procedure TMapProject.LoadGlobalFromStream(Stream: TStream);
begin
  Caption:=ReadString(Stream);
end;

procedure TMapProject.LoadLastConfigFromStream(Stream: TStream);
begin

end;

procedure TMapProject.LoadLayersFromStream(Stream: TStream);
begin
  Layers.LoadFromStream(Stream);
end;

procedure TMapProject.LoadShapesFromStream(Stream: TStream);
begin
  Blockes.LoadFromStream(Stream);
end;

procedure TMapProject.LoadStylesFromStream(Stream: TStream);
begin
  Styles.LoadFromStream(Stream);
end;

procedure TMapProject.SaveDocInfoToStream(Stream: TStream);
begin

end;

procedure TMapProject.SaveFeatureClassesToStream(Stream: TStream);
begin
  FeatureClasses.SaveToStream(Stream);
end;

procedure TMapProject.SaveGlobalToStream(Stream: TStream);
begin
  WriteString(Stream, Caption);
end;

procedure TMapProject.SaveLastConfigToStream(Stream: TStream);
begin

end;

procedure TMapProject.SaveLayersToStream(Stream: TStream);
begin
  Layers.SaveToStream(Stream);
end;

procedure TMapProject.SaveShapesToStream(Stream: TStream);
begin
  Blockes.SaveToStream(Stream);
end;

procedure TMapProject.SaveStylesToStream(Stream: TStream);
begin
  Styles.SaveToStream(Stream);
end;

procedure TMapProject.SaveToFile(const FileName: string);
var
  mpDrv:TMapPrjDrv;
begin
  if FileExists(FileName) then
    mpDrv:=TMapPrjDrv.Create(FileName, dsOpen)
  else
    mpDrv:=TMapPrjDrv.Create(FileName, dsCreate);
  try
    SaveGlobalToStream(mpDrv.gStrem.OleObject);
    SaveFeatureClassesToStream(mpDrv.fcStrem.OleObject);
    SaveStylesToStream(mpDrv.sStrem.OleObject);
    SaveShapesToStream(mpDrv.bStrem.OleObject);
    SaveLayersToStream(mpDrv.lStrem.OleObject);
    SaveLastConfigToStream(mpDrv.lcStrem.OleObject);
    SaveDocInfoToStream(mpDrv.diStrem.OleObject);
  finally
    mpDrv.Free;
  end;
end;

end.

⌨️ 快捷键说明

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