测试的一些pb中控制mapx5.0的代码(有前面发表过的,有新测试的),有使用这请在这里拷贝
二:pb对mapX控件的控制(例mapX5.0).
1:首先注册mapX5.0 ;在ole的insert custom control页 有register按钮,选择 mapX50.dll进行注册.
2:帮助信息有:
a):在pb的browser工具的ole标签页有所有注册的ole control的信息,包括 注册的对象名(id),control
的属性,事件,函数等.
b):mapX5.0的帮助信息,可从mapX5.0中启动,也可以ole控件的properties中有ole control help按钮.
3:摸索出的一些函数调用格式.
//添加层.
ole_1.object.layers.add("C:\Program Files\MapInfo\MapX 5.0\Maps\drawing1.tab",1)
//设置当前鼠标的功能为拖动(或其他放大,缩小等)
ole_1.object.currenttool=1001
//设置geoset对象
ole_1.object.geoset="china.gst"
//得到选中的对象 (得到的是选中对象的id ,在.tab文件中的值必须是唯一的)
string s_name
s_name = ole_1.object.layers.item[1].selection.item[1].Name
//查找对象,将查找对象选中
ole_1.object.layers.item[1].selection.selectbyid(s_id,0)
//获取查找对象的x,y坐标
d_x=ole_1.object.layers.item[1].selection.item[1].centerX
d_y=ole_1.object.layers.item[1].selection.item[1].centerY
//将查找对象设在图示中央
ole_1.object.zoomto(0.2,d_x,d_y)
//通过odbc添加数据源 , 即绑定数据类型为miDataSetODBC
//注意:通过该obdb添加的数据源不能使用指定层,而且将仅匹配于obdb表
// 的行完全匹配的对象
int i_result
parm = create oleobject
i_result = parm.connecttonewobject("mapX.OdbcQueryInfo.5")
if i_result= 0 then
parm.sqlquery="select * from text"
parm.datasource="Powersoft Demo DB V6"
parm.connectstring="odbc;"
end if
mylayer=ole_1.object.layers.item[1]
ole_1.object.datasets.removeall()
ole_1.object.datasets.add(2,parm,"hello","id")
//绑定mapinfo(*tab)数据源,(miDataSetLayer)
oleobject mylayer
mylayer = create oleobject
mylayer=ole_1.object.layers.item[1]
ole_1.object.datasets.removeall()
ole_1.object.datasets.add(6,mylayer)
//设置主题地图类型为独立值(individualvalue)
//在数据库表中添加状态列(status)值为0,1,2,3等
//地图上的图形对象设为不同的状态,相同的状态设为相同的颜色
//不同的状态设为不同的颜色
//添加主题individualvalue
ole_1.object.datasets.item[1].themes.add(5,'status','color')
//设置自己的颜色,
oleobject ob_theme
ob_theme = create oleobject
ob_theme=ole_1.object.datasets.item[1].themes.item[1].themeproperties
ob_theme.individualvaluecategories.item[1].style.regioncolor=0 //将status=0的颜色设为black
ob_theme.individualvaluecategories.item[2].style.regioncolor=65535 //将status=1的颜色设为yellow
ob_theme.individualvaluecategories.item[3].style.regioncolor=4210816 //将status=2的颜色设为brown
ob_theme.individualvaluecategories.item[4].style.regioncolor=16711680 //将status=3的颜色设为blue
//显示数据集中的数据集个数
i_count=ole_1.object.datasets.count
//显示数据集名称
//s_name=ole_1.object.datasets.item[1].name
//取添加的主题名称,测试正确与否
//s_name=ole_1.object.datasets.item[1].themes.item[1].name
//返回status 的值
//s_name = ole_1.object.datasets.item[1].themes.item[1].themeproperties.individualvaluecategories.item[3].value
//返回主题设置在列的列名
//s_name=ole_1.object.datasets.item[1].themes.item[1].fields.item[1].name