鸽笼:VB+MapX_Print.rar mapModule.bas

来源:百度文库 编辑:九乡新闻网 时间:2024/04/28 19:59:10
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 BooleanDim 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 ThenGetMapLayerAttr = FalseSet DataSet = NothingExit FunctionEnd If'给MapLayFields全局数组按字段个数分配大小,注意它是以0为基数ReDim MapLayFields(0 To FldCount - 1)'以下For循环语句来得到字段的名称For i = 0 To FldCount - 1MapLayFields(i) = DataSet.Fields.Item(i + 1).NameNext'得到数据集的记录个数RowCount = DataSet.RowCount'将记录个数赋给全局变量MapLayRowCnt进行保存MapLayRowCnt = RowCount'以下If语句判断记录个数是否为0,若是返回FALSE并退出函数If RowCount = 0 ThenGetMapLayerAttr = FalseSet DataSet = NothingExit FunctionEnd If'给MapLayFieldVal全局数组按记录个数和字段个数声明成二维数组并分配大小ReDim MapLayFieldVal(RowCount, FldCount)'以下For语句得到各记录的字段值For i = 1 To RowCountFor k = 1 To FldCountMapLayFieldVal(i, k) = DataSet.Value(i, k) & ""Next kNext i'函数返回TRUEGetMapLayerAttr = TrueEnd Function'*********************这个函数用来得到MAPX对象中数据集的名称便于在列表中显示和用户选择数据集进行预览*****************'********************它的返回值是BOOL型,如果没有数据集函数返回FALSE;若有则返回TRUE**********************'******************它有一个参数---MapObj代表程序所用的MAPX对象的名称*************************Public Function GetMapLayersName(ByVal MapObj As Object) As BooleanDim DataCnt As Integer '数据集的个数Dim k As IntegerDataCnt = MapObj.Datasets.count '得到MAPX的数据集个数'以下If语句来得到数据集的名称并存在MapLayerName全局数组中If DataCnt > 0 ThenReDim MapLayerName(DataCnt)For k = 1 To DataCntMapLayerName(k) = MapObj.Datasets.Item(k).NameNext kGetMapLayersName = TrueExit FunctionEnd If'若没有数据集函数返回FALSEGetMapLayersName = FalseEnd Function