其实ESRI的例子写的很清楚 但是从VB转到delphi总是不太顺利 怪只怪自己COM基础太差
总算写好了 放在这 给后边需要学习delphi的兄弟姐妹参考 高手勿笑
如果要学习delphi+AO开发有问题 还是建议回去再看看COM吧
//切换到地图模式
procedure TwinGraphics.TabSheet1Show(Sender: TObject);
var
pObjectCopy :IObjectCopy;
pToCopyMap :IMap;
pInt :IInterface;
pCopiedMap :IMap;
pIntover :IInterface;
pToOverwritenMap :IMap;
begin
if not IsRunningFirst then
begin
pObjectCopy := CoObjectCopy.Create as IObjectCopy;
self.PageLayoutControl1.ActiveView.Get_FocusMap(pToCopyMap);
pToCopyMap.Set_IsFramed(false);
pObjectCopy.Copy(pToCopyMap,pInt);
pCopiedMap:=pInt as IMap;
self.MapControl1.ActiveView.Get_FocusMap(pToOverwritenMap);
pIntover:= pToOverwritenMap as IInterface;
pObjectCopy.Overwrite(pCopiedMap,pIntover);
self.MapControl1.Refresh(esriViewGeography);
end;
SetToctoMapMode(1);
end;
procedure TwinGraphics.TabSheet2Show(Sender: TObject);
var
pObjectCopy :IObjectCopy;
pToCopyMap :IMap;
pCopiedMap :IInterface;
pToOverwritenMap:IInterface;
pOverMap :IMap;
pC :IMap;
begin
IsRunningFirst:=false;
pObjectCopy := CoObjectCopy.Create as IObjectCopy;
self.MapControl1.ActiveView.Get_FocusMap(pToCopyMap);
pToCopyMap.Set_IsFramed(true);
pObjectCopy.Copy(pToCopyMap,pCopiedMap);
pC:= pCopiedMap as IMap;
self.PageLayoutControl1.ActiveView.Get_FocusMap(pOverMap);
pToOverwritenMap:= pOverMap as IInterface ;
pObjectCopy.Overwrite(pC,pToOverwritenMap);
self.PageLayoutControl1.Refresh(esriViewGeography);
SetToctoMapMode(2);
end;
1
//-----------------------------------2
// 设定绑定对象3
// 1-数据浏览模式; 2-数据制图模式4
//----------------------------------5
Procedure TwinGraphics.SetTOCtoMapMode(mType:Integer);6
Begin7
case mType of8
1:Begin //数据浏览模式9
self.ToolbarControl1.SetBuddyControl(self.MapControl1.DefaultInterface);10
self.TOCControl1.SetBuddyControl(self.MapControl1.DefaultInterface);11
End;12
2:Begin//数据制图模式13
self.ToolbarControl1.SetBuddyControl(self.PageLayoutControl1.DefaultInterface);14
self.TOCControl1.SetBuddyControl(self.PageLayoutControl1.DefaultInterface);15
End;16
End;17
End;

浙公网安备 33010602011771号