📄 mapxdrv.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 StreamIOAPIs;
{ 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 + -