默认头像
路人甲
路人甲
  • 注册日期2004-10-22
  • 发帖数181
  • QQ
  • 铜币847枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1785回复:3

帮我看看这段代码哪错了?

楼主#
更多 发布于:2005-09-27 17:03

我建了名为ClaAA的类如下:

Private pPage As IPageLayoutControl

Public Function yngc_fnMaxExtent() As esriGeometry.IEnvelope
   pPage.Page.Units = esriMillimeters
       
   Dim pLayer As esriCarto.IFeatureLayer
   Dim pFeatureClass As esriGeoDatabase.IFeatureClass
   Dim pGd As esriGeoDatabase.IGeoDataset

   Dim i As Integer
   Dim j As Integer
   Dim pEnv As esriGeometry.IEnvelope
   Set pEnv = New Envelope

   Dim pMaxEnv As esriGeometry.IEnvelope
   Set pMaxEnv = New Envelope

   Set pLayer = pPage.ActiveView.FocusMap.Layer(i)
   Set pFeatureClass = pLayer.FeatureClass
   Set pGd = pFeatureClass
 
   For i = 0 To pPage.ActiveView.FocusMap.LayerCount - 1
       If pPage.ActiveView.FocusMap.Layer(i).Name Like "netln*" Or pPage.ActiveView.FocusMap.Layer(i).Name Like "annpt*" Then
 
       Else
           Set pMaxEnv = pGd.Extent
           Exit For
       End If
   Next

   For j = i To pPage.ActiveView.FocusMap.LayerCount - 1
       If pPage.ActiveView.FocusMap.Layer(j).Name Like "netln*" Or pPage.ActiveView.FocusMap.Layer(j).Name Like "annpt*" Then
 
       Else
           Set pLayer = pPage.ActiveView.FocusMap.Layer(j)
           Set pFeatureClass = pLayer.FeatureClass
           Set pGd = pFeatureClass
           Set pEnv = pGd.Extent
           pMaxEnv.Union pEnv
       End If
   Next
   Set yngc_fnMaxExtent = pMaxEnv
End Function

Public Property Get PageLay() As IPageLayoutControl
   PageLay = pPage
End Property

Public Property Let PageLay(ByVal vNewValue As IPageLayoutControl)
   Set pPage = vNewValue
End Property

调用DLL时,我引用ClsAA.dll,新建窗体,在窗体上添加PageLayoutControl和按钮,按钮的事件如下:

Private Sub Command1_Click()
Dim a As ClsAA

Set a.PageLay = PageLayoutControl1
MsgBox a.yngc_fnMaxExtent.XMax
End Sub

运行程序老是出错,PageLayoutControl1的值不能传个PageLay不知道哪错了,帮帮忙!

喜欢0 评分0
默认头像
路人甲
路人甲
  • 注册日期2005-03-18
  • 发帖数46
  • QQ
  • 铜币247枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2005-09-28 08:45
你的参数不能写成ipagelayoutcontrol 要写成pagelayoutcontrol
举报 回复(0) 喜欢(0)     评分
默认头像
卧底
卧底
  • 注册日期2004-04-18
  • 发帖数235
  • QQ
  • 铜币614枚
  • 威望2点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2005-09-28 10:01

1、

Public Property Get PageLay() As IPageLayoutControl
   PageLay = pPage
End Property

加上Set

Public Property Get PageLay() As IPageLayoutControl
   Set PageLay = pPage
End Property

2、创建ClsAA

Set a=new ClsAA

3、

Set a.PageLay = PageLayoutControl1
改为

Set a.PageLay = PageLayoutControl1.object

个人专栏: https://zhuanlan.zhihu.com/c_165676639
举报 回复(0) 喜欢(0)     评分
默认头像
路人甲
路人甲
  • 注册日期2004-10-22
  • 发帖数181
  • QQ
  • 铜币847枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2005-09-28 11:02

还是不对,显示"对象变量或With块变量未设置"

举报 回复(0) 喜欢(0)     评分
默认头像

返回顶部