sub main
create buttonpad "查询工具" as
toolbutton calling tool_sub ID 1
icon MI_ICON_ARROW
Cursor MI_CURSOR_ARROW
drawmode DM_CUstom_POINT
helpmsg "在地图窗口中单击\n单击一位置"
separator
toolbutton calling tool_sub ID 2
icon MI_ICON_SEARCH_RECT
cursor MI_CURSOR_FINGER_LEFT
drawmode DM_CUstom_RECT
helpmsg "在地图窗口中绘制一矩形\n绘制一矩形"
width 3
print "位置查询程序现已运行!"
print "从查询工具中选择一工具!"
end sub
sub tool_sub
’当用户使用了查询工具中任一自定义按钮时,调用该子过程
dim x,y,x2,y2 as float
dim i,i_found,i_row_id,i_win_id as integer
dim s_table as alias
onerror goto ERROR_TRAP
i_win_id=frontwindow()
if windowinfo(i_win_id,WIN_INFO_TYPE)<>WIN_MAPPER then
note "这个工具只能在地图窗口中使用!"
exit sub
end if
’判断用户单击得起点
x=commandinfo(cmd_info_x)
y=commandinfo(cmd_info_y)
if commandinfo(cmd_info_toolbtn)=1 then
’用户使用的是点查询工具
’判断点查询选择的对象数目
i_found=searchpoint(i_win_id,x,y)
else
’用户使用的是矩形查询工具
’判断在矩形中有多少个对象
x2=commandinfo(cmd_info_x2)
y2=commandinfo(cmd_info_y2)
i_found=searchrect(i_win_id,x,y,x2,y2)
end if
if i_found=0 then
beep ’没有找到任何对象
else
print chr$(12)
if commandinfo(cmd_info_toolbtn)=2 then
print "矩形:x1="+x+",y1="+y
print "x2="+x2+",y2="+y2
else
print "点:x1="+x+",y1="+y
end if
’处理查询结果
for i=1 to i_found
’得到当前对象所在表的名称
s_table=searchinfo(i,search_info_table)
’得到当前对象的行号
i_row_id=searchinfo(i,search_info_row)
if left$(s_table,8)="cosmetic" then
print "对象在装饰图层中!"
else
fetch rec i_row_id from s_table
s_table=s_table+".col1"
print s_table
end if
next
end if
done:
exit sub
ERROR_TRAP:
note error$()
resume done
全部回复(5 )
只看楼主 我来说两句不过数据传输还有待解决
回复 举报
include "icons.def"
declare sub main
declare sub tool_sub
sub main
create buttonpad "查询工具" as
toolbutton calling tool_sub ID 1
icon MI_ICON_ARROW
Cursor MI_CURSOR_ARROW
drawmode DM_CUstom_POINT
helpmsg "在地图窗口中单击\n单击一位置"
separator
toolbutton calling tool_sub ID 2
icon MI_ICON_SEARCH_RECT
cursor MI_CURSOR_FINGER_LEFT
drawmode DM_CUstom_RECT
helpmsg "在地图窗口中绘制一矩形\n绘制一矩形"
width 3
print "位置查询程序现已运行!"
print "从查询工具中选择一工具!"
end sub
sub tool_sub
’当用户使用了查询工具中任一自定义按钮时,调用该子过程
dim x,y,x2,y2 as float
dim i,i_found,i_row_id,i_win_id as integer
dim s_table as alias
onerror goto ERROR_TRAP
i_win_id=frontwindow()
if windowinfo(i_win_id,WIN_INFO_TYPE)<>WIN_MAPPER then
note "这个工具只能在地图窗口中使用!"
exit sub
end if
’判断用户单击得起点
x=commandinfo(cmd_info_x)
y=commandinfo(cmd_info_y)
if commandinfo(cmd_info_toolbtn)=1 then
’用户使用的是点查询工具
’判断点查询选择的对象数目
i_found=searchpoint(i_win_id,x,y)
else
’用户使用的是矩形查询工具
’判断在矩形中有多少个对象
x2=commandinfo(cmd_info_x2)
y2=commandinfo(cmd_info_y2)
i_found=searchrect(i_win_id,x,y,x2,y2)
end if
if i_found=0 then
beep ’没有找到任何对象
else
print chr$(12)
if commandinfo(cmd_info_toolbtn)=2 then
print "矩形:x1="+x+",y1="+y
print "x2="+x2+",y2="+y2
else
print "点:x1="+x+",y1="+y
end if
’处理查询结果
for i=1 to i_found
’得到当前对象所在表的名称
s_table=searchinfo(i,search_info_table)
’得到当前对象的行号
i_row_id=searchinfo(i,search_info_row)
if left$(s_table,8)="cosmetic" then
print "对象在装饰图层中!"
else
fetch rec i_row_id from s_table
s_table=s_table+".col1"
print s_table
end if
next
end if
done:
exit sub
ERROR_TRAP:
note error$()
resume done
end sub
回复 举报