vb实时错误'91'对象变量或WITH 块变量未设置问题 5

DimpfeaturelayerAsIFeatureLayerDimpSymbolSelAsISymbolSelectorDimpMarkerAsISimpleMarke... Dim pfeaturelayer As IFeatureLayer
Dim pSymbolSel As ISymbolSelector
Dim pMarker As ISimpleMarkerSymbol
Dim player As ILayer
Set pfeaturelayer = player
If pfeaturelayer.FeatureClass.ShapeType = esriGeometryPoint Then
Set pSymbolSel = New SymbolSelector
Set pMarker = New SimpleMarkerSymbol
pSymbolSel.AddSymbol pMarker
Else
MsgBox "请选择点图层"
Exit Sub
End If

If pSymbolSel.SelectSymbol(Me.hWnd) Then
Dim pSymbol As ISymbol
Dim pGeoLyr As IGeoFeatureLayer
Dim pRenderer As ISimpleRenderer

Set pSymbol = pSymbolSel.GetSymbolAt(0)
Set pRenderer = New SimpleRenderer

Set pRenderer.Symbol = pSymbol
Set pGeoLyr = pfeaturelayer
Set pGeoLyr.Renderer = pRenderer
Me.MapControl1.Refresh
Me.TOCControl1.Update
End If
这个哪错了?调试时 If pfeaturelayer.FeatureClass.ShapeType = esriGeometryPoint Then 错误,求大神指导,急急急!!!
展开
 我来答
三心全乱
2013-06-03 · TA获得超过6158个赞
知道小有建树答主
回答量:518
采纳率:100%
帮助的人:214万
展开全部
这个错误原因基本都是对象为空时就进行调用造成的。
Dim player As ILayer
Set pfeaturelayer = player
这个过程里,player是空的,pfeaturelayer当然也跟着空。

我不知道ILayer是什么东西,如果可能的话,应该这样写:
Dim player As ILayer
set player = new ILayer
Set pfeaturelayer = player
但是,ILayer明显是个接口,不知是否能直接new出来。IFeatureLayer、ILayer这些究竟是什么东西,查查相关帮助文档,看如何建立新对象。
追问
不能直接new出来。你再看看这个:
If player Is Nothing Then
MsgBox "请选择要删除的图层"
Else
pmap.DeleteLayer player
Me.MapControl1.Refresh
end if
前面定义了全局变量player。这个能够运行。
追答
能够运行哪个逻辑?弹出“ 请选择要删除的图层"对话框吗?那就对了,因为player没有new出来或没有赋值,就是nothing。
如果确定player不是nothing,那么就是你的”全局变量“和”局部变量“搞混了。你贴出来的这个代码:
Dim player As ILayer
Set pfeaturelayer = player
这里有个局部变量player,pfeaturelayer获得的是这个局部player,而不是全局player。VB默认是优先使用局部变量的,把这里的Dim player As ILayer去掉,就会获得全局变量了。

还有注意,Set pfeaturelayer = player这句话不是创建两个对象,pfeaturelayer实际上和player还是同一个东西的,如果player在其他地方set nothing了,那么pfeaturelayer也跟着nothing,他们是同一个对象的两个名称而已。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式