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 |
|