分享

VB+MapX_Print.rar mapModule.bas

 ufo999 2011-01-29
Attribute VB_Name = "mapModule"
'/**************mapMoudule全局模块,定义了关于MapX的地图大小,尺寸以及在整个程序中要用到的层信息的全局变量***/
'/**************和一组得到这些信息的函数************/
'/**************它们用在frmMapPrev窗体中*********/
'/***************代码编写人:肖兵.编写日期:2002-1-16************************/
Global MapZoom As Double 'MAPX控件的地图视野属性
Global MapWid As Double 'MAPX控件的宽度
Global MapHei As Double 'MAPX控件的高度
Global MapCenX As Double 'MAPX控件的地图中心点X坐标
Global MapCenY As Double 'MAPX控件的地图中心点Y坐标
Global MapLayFields() As String '经过MAPX数据绑定的地图层字段名称
Global MapLayFieldVal() As String '经过MAPX数据绑定的地图层字段值
Global MapLayFieldCnt As Integer '经过MAPX数据绑定的地图层字段个数
Global MapLayRowCnt As Integer '经过MAPX数据绑定的地图层的属性记录个数
Global MapLayerName() As String '经过MAPX数据绑定的数据集Dataset名称
'****************此函数用于得到MAPX的Dataset的属性信息***************
'***************其返回值是BOOL型,如果Dataset中没有属性记录就返回FALSE;不然就返回TRUE**********
'***************它需要两个参数MapObj是程序中MAPX对象的名称;DatasetName是要预览其属性的MAPX中绑定的一个数据集的名称*********
Public Function GetMapLayerAttr(ByVal MapObj As Object, ByVal DatasetName As String) As Boolean
Dim RowCount As Integer, FldCount As Integer 'RowCount是属性记录的个数;FldCount是属性记录的字段个数
Dim i As Integer, k As Integer '用在循环中的计数器
Dim DataSet As Object 'MAPX的数据集对象
Set DataSet = MapObj.Datasets.Item(DatasetName) '根据数据集名称得到数据集对象实例
FldCount = DataSet.Fields.count '得到数据集的字段个数
MapLayFieldCnt = FldCount '将字段个数赋给全局变量 MapLayFieldCnt进行保存
'以下If语句判断是否有字段,若无则返回FALSE并退出函数
If FldCount = 0 Then
GetMapLayerAttr = False
Set DataSet = Nothing
Exit Function
End If
'给MapLayFields全局数组按字段个数分配大小,注意它是以0为基数
ReDim MapLayFields(0 To FldCount - 1)
'以下For循环语句来得到字段的名称
For i = 0 To FldCount - 1
MapLayFields(i) = DataSet.Fields.Item(i + 1).Name
Next
'得到数据集的记录个数
RowCount = DataSet.RowCount
'将记录个数赋给全局变量MapLayRowCnt进行保存
MapLayRowCnt = RowCount
'以下If语句判断记录个数是否为0,若是返回FALSE并退出函数
If RowCount = 0 Then
GetMapLayerAttr = False
Set DataSet = Nothing
Exit Function
End If
'给MapLayFieldVal全局数组按记录个数和字段个数声明成二维数组并分配大小
ReDim MapLayFieldVal(RowCount, FldCount)
'以下For语句得到各记录的字段值
For i = 1 To RowCount
For k = 1 To FldCount
MapLayFieldVal(i, k) = DataSet.Value(i, k) & ""
Next k
Next i
'函数返回TRUE
GetMapLayerAttr = True
End Function
'*********************这个函数用来得到MAPX对象中数据集的名称便于在列表中显示和用户选择数据集进行预览*****************
'********************它的返回值是BOOL型,如果没有数据集函数返回FALSE;若有则返回TRUE**********************
'******************它有一个参数---MapObj代表程序所用的MAPX对象的名称*************************
Public Function GetMapLayersName(ByVal MapObj As Object) As Boolean
Dim DataCnt As Integer '数据集的个数
Dim k As Integer
DataCnt = MapObj.Datasets.count '得到MAPX的数据集个数
'以下If语句来得到数据集的名称并存在MapLayerName全局数组中
If DataCnt > 0 Then
ReDim MapLayerName(DataCnt)
For k = 1 To DataCnt
MapLayerName(k) = MapObj.Datasets.Item(k).Name
Next k
GetMapLayersName = True
Exit Function
End If
'若没有数据集函数返回FALSE
GetMapLayersName = False
End Function

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多