MSCBSC 移动通信论坛
搜索
登录注册
网络优化工程师招聘专栏 4G/LTE通信工程师最新职位列表 通信实习生/应届生招聘职位

  • 阅读:11950
  • 回复:26
菜鸟学mapbasic连载----第六集(按钮盒设计)
hillyspring
银牌会员
鎵嬫満鍙风爜宸查獙璇


 发短消息    关注Ta 

积分 3257
帖子 435
威望 5485 个
礼品券 406 个
专家指数 668
注册 2006-5-9
专业方向  2G4G优化
回答问题数 0
回答被采纳数 0
回答采纳率 0%
 
发表于 2012-01-13 11:28:54  只看楼主 
按钮盒设计

一个按钮盒是包含一个或多个按钮的浮动窗口。通过在按钮盒中选择一个按钮,用户可以初启各种类型的动作。MapInfo提供了几个标准按钮盒,你可以用MapBasic程序增加新的按钮到一个已存在的按钮盒或者创建一个全新的按钮盒。


1
.选择按钮后的处理

与菜单项相同,每个按钮也有相应的处理程序。当用户选择了一个按钮后,MapBasic会自动调用这个按钮的处理程序。因此,如果你希望每次用户单击一个按钮时显示一个对话框,那么你应该为这个按钮创建一个显示对话框的子过程。


MapBasic程序可以创建三种不同类型的按钮:ToolButtons,ToggleButtons和PushButtons。


·PushButton这种按钮叫做触发式按钮,当用户单击一个触发式按钮时,按钮仍会弹回来,MapBasic调用触发式按钮处理程序。图层控制按钮就是触发式按钮的一个例子,单击图层控制按钮会有一个即时响应(显示一个对话框),但它不会改变按钮的最终状态。


·ToggleButton这种按钮叫做开关式按钮。当用户单击开关式按钮时,按钮变成两
种状态中的一种:按下或没按下。每次用户单击开关式按钮,MapBasic都会调用该按钮的处理程序。图例窗口显示/隐藏按钮就是开关式按钮的一个例子,当单击一个按钮时,立即会有一个响应。显示或者隐藏图例窗口。


·ToolButton这种按钮称为工具按钮。当用户单击工具按钮时,一个工具将处于激活状态,并将始终保持这种状态直到用户选择了另外一个工具。当一种工具处于激活状态并且用户在地图窗口、浏览窗口或布局窗口单击时,MapBasic调用该按钮的处理程序。例如放大工具就是一个工具按钮,选择这个工具后除了鼠标形状改变外不会产生任何其他即时响应,但选择了该工具并且在地图窗口单击时就会有响应了。


2
.与按钮盒相联系的MapBasic语句

下面的语句和函数让你能创建和控制按钮及按钮盒:


Create ButtonPad该语句创建一个新的按钮盒。



Alter ButtonPad
:创建按钮盒以后,你的程序可以修改按钮盒的各种属性,Alter ButtonPad语句可以重定位、显示/隐藏按钮盒或者可以增加或移去按钮盒中的按钮。



Alter Button
:该语句可以修改单个按钮的状态, 可以设置一个按钮可选或者不可选,也可以使某个按钮为当前选择的按钮。



CommandInfo()
:在按钮处理程序中使用CommandInf()函数可以查询关于用户使用按钮的信息。例如用户选择了一个工具按钮并在地图窗口中单击,CommandInfo()函数可以获得单击点的X,Y坐标。除此之外,CommandInfo()函数在按钮处理程序中被调用还有其他一些作用,如判断用户选择了哪个按钮,判断用户在单击时,是否同时按下了Shift键等等。


3
ToolHandler过程

ToolHandler是一个特殊的过程名,它可以让你很方便地在“主”按钮盒中追加一个按钮,如果你的MapBasic程序中包含一个名叫ToolHandler的过程,MapBasic自动在Main按钮盒中增加一个按钮。而后,如果用户选择了这个按钮并在地图窗口、浏览窗口或布局窗口用鼠标单击时,MapBasic自动调用ToolHandler过程。


4
.创建触发式按钮

下面的程序用于创建一个包含一个触发式按钮的按钮盒,button_prompt过程是按钮处理程序。因此,当用户单击该触发式按钮时,MapBasic自动调用过程button_prompt。


Include
icon.def

Declare Sub Main

Declare Sub button_prompt


Sub Main

Create ButtonPad CustomAs
PushButton
Icon MI_ICON_ZOOM_QUESTION

Calling button_prompt
HelpMsg Displays query dialog\nQuery
Show
End Sub
Sub button_prompt
......
End Sub

主过程只包含一个语句:Create ButtonPad。它创建了一个自定义用户按钮盒Custom,而且在这个按钮盒中有一个按钮。关键词PushButton表示MapBasic创建的是一个触发式按钮。Icon子句告诉MapBasic,将在按钮上显示哪个图标。标识符MI_ICON_ZOOM_QUESTION在文件icons.def中已定义。Calling子句告诉MapBasic,当用户选择了该按钮时,调用过程button_prompt。HelpMsg子句定义了在状态栏上显示的按钮帮助信息。


5
.向“主”按钮盒增加一个按钮

前面的例子是用Create ButtonPad语句创建一个全新的按钮盒,MapBasic允许向MapInfo已存在的按钮盒增加新的按钮。例如下面的例子是向“主”按钮盒增加新的按钮:


Alter ButtonPad

Add Separator新按钮与旧按钮之间增加一个分隔符
Add PushButton
Icon MI_ICON_ZOOM_QUESTION
Calling button_prompt
HelpMsgDisplays the Query dialog\nQuery
Show

6
.创建工具按钮

下面的例子中创建了一个工具按钮,当用户选择该按钮,并在地图窗口中拖拉鼠标时将画出一条直线。


Include
icons.def
Includemapbasic.def
Declare Sub Main
Declare Sub draw_via_button

Sub Main

Create ButtonPad 用户As
ToolButton
Icon MI_ICON_LINE
DrawMode DM_CUSTOM_LINE
Cursor MI_CURSOR_CROSSHAIR
Calling draw_via_button
HelpMsg Draws a line on a Map Window\nDraw Line
Show
End Sub

Sub draw_via_button

Dim x1,x2,y1,y2 As Float
If WindowInfo(FrontWindow(),WIN_INFO_TYPE)<>WIN_MAPPER Then
NoteThis tool may only be used on a Map Window.
Exit Sub
End If
x1 = CommandInfo(CMD_INFO_X)
y1 = CommandInfo(CMD_INFO_Y)
x2 = CommandInfo(CMD_INFO_X2)
y2 = CommandInfo(CMD_INFO_Y2)
这里可以创建基于x1,y1,x2,y2的对象。

End Sub


按钮的定义中使用了DrawMode子句,它告诉MapBasic用户是否可以用这个工具进行拖拉。上面的例子中使用了DM_CUSTOM_LINE绘图模式,因此,用户可以用该工具进行单击并拖拉,就像用户使用MapInfo标准画线工具一样。

[ 本帖最后由 hillyspring 于 2012-1-13 11:33 编辑 ]
扫码关注5G通信官方公众号,免费领取以下5G精品资料
  • 1、回复“ZGDX”免费领取《中国电信5G NTN技术白皮书
  • 2、回复“TXSB”免费领取《通信设备安装工程施工工艺图解
  • 3、回复“YDSL”免费领取《中国移动算力并网白皮书
  • 4、回复“5GX3”免费领取《 R16 23501-g60 5G的系统架构1
  • 5、回复“iot6”免费领取《【8月30号登载】物联网创新技术与产业应用蓝皮书——物联网感知技术及系统应用
  • 6、回复“6G31”免费领取《基于云网融合的6G关键技术白皮书
  • 7、回复“IM6G”免费领取《6G典型场景和关键能力白皮书
  • 8、回复“SPN2”免费领取《中国移动SPN2.0技术白皮书
  • 共获得 4 次点评 我要点评

    • flyda7805055 威望 +20 个, 专家指数 +2
      · 原创内容,鼓励 详细.. 发表与:2012-1-19 14:27:11
    • eagle520tt 威望 +20 个, 专家指数 +2
      · 加分,很专业的讨论 详细.. 发表与:2012-1-13 18:07:26
    • huda188 专家指数 +5 , 威望 +11 个
      · 确实是很专业,望持续更新 详细.. 发表与:2012-1-13 14:13:28
    • 道家书生 专家指数 +2 , 威望 +20 个
      · 精品教程, 详细.. 发表与:2012-1-13 12:01:58
     
    [充值威望,立即自动到帐] [VIP贵宾权限+威望套餐] 另有大量优惠赠送活动,请光临充值中心
    充值拥有大量的威望和最高的下载权限,下载站内资料无忧
    hillyspring
    银牌会员
    鎵嬫満鍙风爜宸查獙璇


     发短消息    关注Ta 

    积分 3257
    帖子 435
    威望 5485 个
    礼品券 406 个
    专家指数 668
    注册 2006-5-9
    专业方向  2G4G优化
    回答问题数 0
    回答被采纳数 0
    回答采纳率 0%
     
    发表于 2012-01-13 11:40:31  只看楼主 
    技术问题,回答得专家指数,快速升级
    Create ButtonPad 说明如下:
    Create ButtonPad { title_string | ID pad_num } As
    button_definition [ button_definition ... ]
    [ Title title_string ]
    [ Width w ]
    [ Position ( x, y ) [ Units unit_name ] ]
    [ ToolbarPosition ( row, column ) ]
    [ { Show | Hide } ]
    [ { Fixed | Float } ]


    Alter ButtonPad 的说明如下:
    Alter ButtonPad { current_title | ID pad_num }
    [ Add button_definition [ button_definition ... ] ]
    [ Remove { handler_num | ID button_id } [ , ... ] ]
    [ Title new_title ]
    [ Width w ]
    [ Position ( x, y ) [ Units unit_name ] ]
    [ ToolbarPosition ( row, column ) ]
    [ { Show | Hide } ]
    [ { Fixed | Float } ]
    [ Destroy ]

    项目太多我就不解释了,大家自己悟一下就行了,看英文基本就看懂了。

    [ 本帖最后由 hillyspring 于 2012-1-13 11:42 编辑 ]

    对本帖内容的看法? 我要点评

     
    [立即成为VIP会员,百万通信专业资料立即下载,支付宝、微信付款,简单、快速!]
    hillyspring
    银牌会员
    鎵嬫満鍙风爜宸查獙璇


     发短消息    关注Ta 

    积分 3257
    帖子 435
    威望 5485 个
    礼品券 406 个
    专家指数 668
    注册 2006-5-9
    专业方向  2G4G优化
    回答问题数 0
    回答被采纳数 0
    回答采纳率 0%
     
    发表于 2012-01-13 11:46:09  只看楼主 
    那么我们现在开始自己做一个 按钮盒。
    本按钮盒里有三个 按钮,第一个为 查看频点,第二个为 查看上一个频点, 第三个为 查看下一个频点。

    第一个按钮我选用 样式182,第二个236,第三个238
    第一个按钮代码如下,其他依此类推:
    Create ButtonPad"用户"As
    PushButton
    Icon182
    Calling freq
    HelpMsg"\nfreqsearch"
    Show
    fixed
    最终按钮效果如下:

    [attach]215068[/attach]

    很多童鞋可能会问,我怎么知道 每一个按钮的样式呢,到底那里能看得到按钮的样式呢。
    这里我告诉大家,其实MAPINFO里有一个自带的插件,也就是 \MAPBASIC\ICONDEMO\ICONDEMO.MBX这个插件。
    当我们加载这个插件后就可以看到所有MAPINFO默认的按钮样式。如下图:
    [attach]215069[/attach]

    这里就可以看到所有默认的样式,你可以根据自己的喜好选择自己的按钮, 至于DIY按钮我还正在研究中。。

    那还我们继续。。点击第一个按钮 ,弹出 查看频点对话框,如下:
    [attach]215071[/attach]

    输入频点后,完成查看频点,如下:

    [attach]215072[/attach]

    到此按钮练习结束了,希望同学们利用按钮制作出更加美观,实用,简洁的 maoinfo插件。

    [ 本帖最后由 hillyspring 于 2012-1-13 12:02 编辑 ]

    对本帖内容的看法? 我要点评

     
    最新通信职位:广东通信人才网 | 北京通信人才网 | 上海通信人才网 | 南京通信人才网 | 西安通信人才网 | 重庆通信人才网 | 中国通信人才网
    yuqingshun
    银牌会员
    鎵嬫満鍙风爜宸查獙璇


     发短消息    关注Ta 

    公益·慈善勋章   C友·纪念勋章   纪念勋章·七周年   C友·魅力勋章   财富勋章·小财主   C友·登录达人   纪念勋章·九周年   纪念勋章·十周年  
    积分 3759
    帖子 649
    威望 430148 个
    礼品券 139 个
    专家指数 514
    注册 2011-6-13
    专业方向  网优
    来自 南京
    回答问题数 0
    回答被采纳数 0
    回答采纳率 0%
     
    发表于 2012-01-13 13:41:25  QQ
    精品 收藏了 在学习了

    对本帖内容的看法? 我要点评





    天行健 君子以自强不息;
    地势坤 君子以厚德载物!
     
    热点: 通信招聘职位 | 网络优化全集 | WCDMA精品 | TD-SCDMA学习资料 | EVDO | MGW媒体网关资料
    jielee2136
    初级会员



     发短消息    关注Ta 

    积分 470
    帖子 92
    威望 3589 个
    礼品券 0 个
    专家指数 10
    注册 2011-12-15
    专业方向  网优
    回答问题数 0
    回答被采纳数 0
    回答采纳率 0%
     
    发表于 2012-01-13 13:49:36 
    顶一个。。。。。。。。。

    对本帖内容的看法? 我要点评

     
    最新通信职位:广东通信人才网 | 北京通信人才网 | 上海通信人才网 | 南京通信人才网 | 西安通信人才网 | 重庆通信人才网 | 中国通信人才网
    huda188
    版主
    鎵嬫満鍙风爜宸查獙璇


     发短消息    关注Ta 

    专家·初级勋章   精华发帖   纪念勋章·七周年   财富勋章·万元户   C友·魅力勋章   活动·积极勋章   财富勋章·财运连连   财富勋章·小财主   C友·活跃勋章   C友·勤奋勋章   公益·环保勋章   纪念勋章·四周年   财富勋章·富甲一方   活动·第二届通信技术杯   纪念勋章·六周年   通信正能量   纪念勋章·八周年   纪念勋章·九周年  
    积分 11249
    帖子 2063
    威望 55292 个
    礼品券 652 个
    专家指数 74
    注册 2009-5-20
    专业方向  项目管理
    回答问题数 0
    回答被采纳数 0
    回答采纳率 0%
     
    发表于 2012-01-13 14:12:11 
    呵呵 不错楼主技术达人 多多更新

    对本帖内容的看法? 我要点评





    ==============================
    *当年迎风尿三尺,如今顺风尿湿鞋,哎,老了*
    =====
    ====
    ===
    ==
    =
    huda188
     
    [2分钟拥有VIP权限和充足威望,可下载站内任何资料] [快速找到一份高薪的通信行业职位]
    xinhaoqi
    银牌会员
    鎵嬫満鍙风爜宸查獙璇


     发短消息    关注Ta 

    纪念勋章·七周年   C友·登录达人  
    积分 2894
    帖子 543
    威望 4536 个
    礼品券 85 个
    专家指数 179
    注册 2010-1-14
    专业方向  TD系统优化 LTE网络优化
    回答问题数 0
    回答被采纳数 0
    回答采纳率 0%
     
    发表于 2012-01-14 14:50:06 
    楼主很强悍啊 顶起 严重顶起

    对本帖内容的看法? 我要点评





    Keep on going,Never give up!
     
    热点: 通信招聘职位 | 网络优化全集 | WCDMA精品 | TD-SCDMA学习资料 | EVDO | MGW媒体网关资料
    程恒蛋蛋
    初级会员
    鎵嬫満鍙风爜宸查獙璇


     发短消息    关注Ta 

    积分 177
    帖子 34
    威望 254 个
    礼品券 0 个
    专家指数 7
    注册 2012-1-11
    专业方向  移动通信技术
    来自 河北
    回答问题数 0
    回答被采纳数 0
    回答采纳率 0%
     
    发表于 2012-01-15 17:44:28  QQ

    对本帖内容的看法? 我要点评

     
    [2分钟拥有VIP权限和充足威望,可下载站内任何资料] [快速找到一份高薪的通信行业职位]
    adsn
    银牌会员
    鎵嬫満鍙风爜宸查獙璇


     发短消息    关注Ta 

    财富勋章·万元户   财富勋章·财运连连   纪念勋章·九周年  
    积分 2586
    帖子 521
    威望 301951 个
    礼品券 35 个
    专家指数 -59
    注册 2010-5-19
    专业方向  TDS/TDL
    来自 JiangxLep
    回答问题数 0
    回答被采纳数 0
    回答采纳率 0%
     
    发表于 2012-01-16 09:21:55  QQ
    多谢楼主分享。学习

    对本帖内容的看法? 我要点评

     
    [2分钟拥有VIP权限和充足威望,可下载站内任何资料] [快速找到一份高薪的通信行业职位]
    jiangsq
    资深元老
    鎵嬫満鍙风爜宸查獙璇


     发短消息    关注Ta 

    积分 35197
    帖子 582
    威望 262863 个
    礼品券 50 个
    专家指数 30
    注册 2009-3-18
    专业方向  网规网优
    来自 四川成都
    回答问题数 0
    回答被采纳数 0
    回答采纳率 0%
     
    发表于 2012-01-16 09:48:41  QQ
    楼主很强悍,顶一下

    对本帖内容的看法? 我要点评

     
    [2分钟拥有VIP权限和充足威望,可下载站内任何资料] [快速找到一份高薪的通信行业职位]
    itboos
    高级会员



     发短消息    关注Ta 

    积分 1500
    帖子 300
    威望 437 个
    礼品券 0 个
    专家指数 0
    注册 2011-5-8
    专业方向  网络
    回答问题数 0
    回答被采纳数 0
    回答采纳率 0%
     
    发表于 2012-01-19 12:30:50 
    非常好的,支持一下。

    对本帖内容的看法? 我要点评

     
    [2分钟拥有VIP权限和充足威望,可下载站内任何资料] [快速找到一份高薪的通信行业职位]
    pcx9988
    钻石会员
    鎵嬫満鍙风爜宸查獙璇


     发短消息    关注Ta 

    C友·登录达人   活动·摄影达人   纪念勋章·九周年  
    积分 14513
    帖子 1632
    威望 734805 个
    礼品券 122 个
    专家指数 45
    注册 2007-6-6
    专业方向 
    回答问题数 0
    回答被采纳数 0
    回答采纳率 0%
     
    发表于 2012-01-19 15:40:45 
    太好了,每一行字都是辛苦。

    对本帖内容的看法? 我要点评

     
    热点: 通信招聘职位 | 网络优化全集 | WCDMA精品 | TD-SCDMA学习资料 | EVDO | MGW媒体网关资料
    昆明烧豆腐
    金牌会员



     发短消息    关注Ta 

    积分 8665
    帖子 184
    威望 1427 个
    礼品券 0 个
    专家指数 12
    注册 2007-2-13
    专业方向  通信
    回答问题数 0
    回答被采纳数 0
    回答采纳率 0%
     
    发表于 2012-01-19 15:46:59 
    好东西,有机会要下来学一学。

    对本帖内容的看法? 我要点评

     
    热点: 通信招聘职位 | 网络优化全集 | WCDMA精品 | TD-SCDMA学习资料 | EVDO | MGW媒体网关资料
    c_l_q
    禁止访问



     发短消息    关注Ta 

    积分 1373
    帖子 442
    威望 4554 个
    礼品券 0 个
    专家指数 -837
    注册 2011-6-29
    专业方向  通信工程
    回答问题数 0
    回答被采纳数 0
    回答采纳率 0%
     
    发表于 2012-01-19 15:55:39 
    *** 作者被禁止或删除 内容自动屏蔽 ***
    xuming0827
    钻石会员



     发短消息    关注Ta 

    积分 10926
    帖子 1411
    威望 14652 个
    礼品券 10 个
    专家指数 5
    注册 2009-3-2
    专业方向  网络优化
    回答问题数 0
    回答被采纳数 0
    回答采纳率 0%
     
    发表于 2012-01-19 17:32:38 
    好东西,谢谢楼主分享!

    对本帖内容的看法? 我要点评

     
    [2分钟拥有VIP权限和充足威望,可下载站内任何资料] [快速找到一份高薪的通信行业职位]

    快速回复主题    
    标题
    内容
     上传资料请点左侧【添加附件】

    当前时区 GMT+8, 现在时间是 2024-04-18 17:33:15
    渝ICP备11001752号  Copyright @ 2006-2016 mscbsc.com  本站统一服务邮箱:mscbsc@163.com

    Processed in 0.480891 second(s), 38 queries , Gzip enabled
    TOP
    清除 Cookies - 联系我们 - 移动通信网 - 移动通信论坛 - 通信招聘网 - Archiver