|
阅读:2515回复:5
坚定地用delphi来开发(fullextent问题之解决)
<P>感谢大家曾对我的帮助,我用delphi开发(VB我用着觉得累,hehe,不熟啊)</P>
<P>一开始我用9.0,结果放大不行,后来就改用8.3,后来发现TOC控件只有AE有,就又改AE,可惜我问的相关的问题竟没人回答我,唉,我多么希望多交几个delphi开发的朋友啊。</P> <P>在AE中遇到一个问题,就是全局显示不行</P> <P>mapcontrol1.Extent:=mapcontrol1.FullExtent;</P> <P>提示说找不到成员,我想,就给你一个成员如何</P> <P>结果就用下面的语句解决了</P> <P>MapControl1.ActiveView.Set_Extent(mapcontrol1.FullExtent);</P> <P>在此贴出来,给广大delphi开发者一个信心,问题总能解决的。</P> |
|
|
1楼#
发布于:2005-07-11 19:28
<P>9.0放大是什么不行?我也是用delphi开发的。分享一下放大的代码(从例子中的VB代码翻译而已)</P>
<P>///图形(页面)放大<BR>procedure MapPageZoomIn(pControl: IDispatch);<BR>var<BR> pvActView: IActiveView;<BR> pvMapControl: IMapControlDefault;<BR> pvPageLayOutControl: IPageLayoutControlDefault;<BR> newEnvelope, oldEnvelope: IEnvelope;<BR> New_Height, New_Width: Double;<BR>begin<BR> if pControl.QueryInterface(DIID_IMapControlDefault, pvMapControl) = S_OK then<BR> begin<BR> pvActView := pvMapControl.ActiveView;<BR> newEnvelope := pvMapControl.TrackRectangle;<BR> end;<BR> if pControl.QueryInterface(DIID_IPageLayoutControlDefault, pvPageLayOutControl) = S_OK then<BR> begin<BR> pvActView := pvPageLayOutControl.ActiveView;<BR> newEnvelope := pvPageLayOutControl.TrackRectangle;<BR> end;<BR> pvActView.Get_Extent(oldEnvelope);<BR> if VarIsClear(oldEnvelope) then<BR> Exit;<BR> newEnvelope.Get_Height(New_Height);<BR> newEnvelope.Get_Width(New_Width);<BR> if (New_Height=0) and (New_Width=0) then<BR> begin<BR> oldEnvelope.Expand(0.75, 0.75 , True);<BR> pvActView.Set_Extent(oldEnvelope);<BR> end else<BR> pvActView.Set_Extent(newEnvelope);<BR> pvActView.Refresh;<BR>end;</P> |
|
|
2楼#
发布于:2005-07-11 22:53
<P>MapControl1.Extent:=MapControl1.TrackRectangle ;也是找不到成员错误,现在知道答案了,应该用set_extent,楼上的兄弟你是如何从VB中得知的?</P>
<P>另外有delphi取属性字段值的代码吗?</P> |
|
|
3楼#
发布于:2005-07-12 10:34
回复
engine是com编程,通常com编程获取属性、数值是采用get的方法,付值是采用set的方法,不过D5和D7在import esri的类库时,个别方法D7在set的时候是采用_set,注意一下就可以了。 |
|
|
4楼#
发布于:2005-07-12 17:06
<P>楼上高手,还有一事请教:象VB中这种代码如何转成delphi呢?</P>
<P> 'Get the IRGBColor interface<BR> Dim pColor As IRgbColor<BR> Set pColor = New RgbColor<BR> 'Set the color properties<BR> pColor.RGB = RGB(255, 0, 0)</P> <P> 'Get the ILine symbol interface<BR> Dim pOutline As ILineSymbol</P> <P>我这么转行吗:</P> <P>var<BR> pcolor:IRgbColor;<BR> pOutline:ILineSymbol;<BR>begin</P> <P>// pColor := New RgbColor ?这句要不要转的?比如说用create什么的<BR> pColor.Set_RGB(255);</P> |
|
|
5楼#
发布于:2006-07-26 08:36
<P>太感谢了 以前虽然做过ao方面的开发 可是刚接触delphi 遇到很多问题 一下子把我给打蒙了 希望以后多交流 我qq263460976</P>
|
|