MSCBSC 移動通信論壇
搜索
登錄注冊
網(wǎng)絡優(yōu)化工程師招聘專欄 4G/LTE通信工程師最新職位列表 通信實習生/應屆生招聘職位

  • 閱讀:9307
  • 回復:19
菜鳥學mapbasic連載----第二集(菜單)
hillyspring
銀牌會員
鎵嬫満鍙風爜宸查獙璇? style=


 發(fā)短消息    關注Ta 

積分 3152
帖子 435
威望 5490 個
禮品券 406 個
專家指數(shù) 563
注冊 2006-5-9
專業(yè)方向  2G4G優(yōu)化
回答問題數(shù) 0
回答被采納數(shù) 0
回答采納率 0%
 
發(fā)表于 2011-11-27 19:48:56  只看樓主 
周日好忙哦,上午健步,下午寫周報,還要看看周六參數(shù)策略之后的全網(wǎng)KPI變化,吃了晚飯散步了一個小時,買了點吃的,終于有空完MAPBASIC了。
今天,就從用戶菜單開始學起吧,這是最基本的,而且是看得見的東西,效果容易體現(xiàn)。

菜單是圖形用戶界面中最重要的元素,MapBasic讓你能夠控制MapInfo菜單結構的
每一個方面。

1
.菜單的基本元素
MapInf0菜單結構包括下列基本元素(見圖):


[attach]206908[/attach]



MapInfo的菜單結構

菜單欄(Menu Bar)是橫貫MapInfo工作區(qū)域頂部的水平條。默認的Mgplnfo菜單欄包括[文件]、[編輯]、[對象]、[查詢]等等。
菜單Menu)在菜單欄上可以下拉的命令列表,例如大多數(shù)應用程序都包括[文件]菜單和[編輯]菜單。

·菜單頂(Menu Item)是出現(xiàn)在菜單上的一個個相互獨立的命令。例如:[文件]菜單一般包括以下菜單項:[打開]、[關閉]、[保存]和[打印]。


菜單、菜單欄、菜單項是相互聯(lián)系的。每個菜單都是菜單項的集合。而菜單欄又是一個或多個菜單的集合。


2
.增加新的菜單項

向己存在的菜單增加菜單項可以用Alter Menu語句,例如下面的例子是向[查詢]菜單增加兩個菜單項(一個叫[年度報告],另一個叫[季度報告]):


Alter Menu
查詢
Add

年度報告 Calling report_sub
季度報告,Calling report_sub_q

對于每一個用戶定義菜單項,Alter Menu語句都指定一個Calling于句,這個子句指定當用戶選擇這個菜單項時,什么事情將會發(fā)生。在上例中,如果用戶選擇了菜單項[年度報告],MapInfo將調用子過程report_sub;如果用戶選擇了菜單項[季度報告],MapInfo將調用于過程report_sub_q,當然這兩個過程必須在同一個應用程序的其他地方已經(jīng)定義。用戶也可創(chuàng)建一些菜單項,它們調用標準MapInfo命令,而不是調用MapBasic于過程。在MapInfo中,定義文件menu.def包含所有菜單代碼的定義列表(如M_FILE_NEW和M_EDIT_UNDO)。這個文件中的每一項定義對應一個MapInfo的標準菜單命令(例如M_EDIT_UNDO對應[編輯]菜單中[轍消]命令)。如果一個菜單項的Calling子句指定了一個menu.def中的菜單代碼,則當用戶選擇了一個菜單項時,MapInfo調用相應的MapInfo命令。例如:


Alter Menu
查詢
Add

顏色代碼地臥圖,Calling M_MAP_HEMATIC

3
.移去舊的菜單項

一個應用程序可以移去單獨的菜單項。下面的語句是從MapInfo的[表]>[表維護]菜單中移去[刪除表]項:


Alter Menu“表維護”Remove M_TABLE_DELETE


這里的標識符M_TABLE DELETE是在菜單定義文件menu.def中定義的代碼。

如果想從菜單中移去多個菜單項,有兩種方法:一種方法是把所有你想移去的菜單項的列表放在Alter Menu … Remove語句中:另一種方法是用Create Menu … 語句重新定義一個菜單,它只包括你想要的那些菜單項,如下面的語句創(chuàng)建了一個新版本的[地圖]菜單,它僅包括三個菜單項([圖層控制]、[前一視圖]和[選項])

Create Menu
地圖 As
圖層控制 Calling
M_MAP_LAYER_CONTROL,

前一視圖
Calling
M_MAP_PREVIOUS,

選項
Calling M_MAP_OPTIONS


4
.創(chuàng)建新的菜單

要創(chuàng)建一個全新的菜單可以使用Create Menu語句。例如:


Create
Menu
TextBox
As

&Create Text Boxes ...
Ca11ing create_sub,

Close TextBox

Calling bye,

About TextBox…
Calling about


建好的菜單需要把它加到菜單欄上才能看得見,可以用下面的A1ter Menu Bar語句:


Alter Menu Bar
Add
TexBox

事實上,不斷地往菜單欄上增加新的菜單是不現(xiàn)實的,因為菜單欄上剩余的空間是有限的,不久整個菜單欄就會被占滿。我們可以用另一種技術,即把一個菜單作為另一個菜單的子菜單。例如,前面的例子中建立了一個TextBox菜單,可以把這個菜單作為[工具]菜單下的一個子菜單,請看下面的語句:


Alter Menu
工具 Add
(-,
插入分隔線
TextBox
As
TextBox

5
.修改一個菜單項

MapBasic語言可以對一個單獨的菜單項進行下列操作:


·灰化一個菜單項,以使用戶不能選擇該菜單項。


·使一個灰化的菜單項恢復正常。


·可以改變菜單項的名字。


要修改一個菜單項可以用Alter Menu Item語句,該語句有幾個可選的子句Enable、Disable、Check、UnCheck等,使用這些子句可以實現(xiàn)你要的修改。下面的例子是先建立一個用戶菜單:


Create Menu
OverView
As

&Setup OverView Calling OverView,
(Suspend Tracking
Calling
MenuToggler,

(Pick Frame Style
Calling PickFrame,

(-,
Close OverView
Calling
Bye,

(-,,
Abut Overview
Calling About


其中的[Pick Frame Style]菜單項初始是不可選的(灰化的),這是因為在定義該菜單項時,在菜單項名字的每一個字母前加了一個字符“(”,在必要的時候要使該菜單項可選,則可用下面的語句:


Alter Menu Item
PickFrame
Enable


如果又要使該菜單項不可選,可用下面的語句:


Alter Menu Item
PickFrame
Disable


你同樣可以用Alter Menu Item語句去改變一個菜單項的名字。例如,上面例子的Ovewiew菜單中有一個名叫[Supend Tracking]的菜單項,如果想把該菜單項的名字改為[Resume Tracking]可以這樣做:


Alter Menu
Item MenuToggler Text
Resume Tracking

6
.重定義菜單欄

從菜單欄中移去或增加菜單可以用下面的語句:


Alter Menu Bar Remove
查詢

Alter Menu Bar Add
地圖, 瀏覽

上面第一個語句是從菜單欄上移去[查詢]菜單,而第二個語句是在菜單欄的右邊增加兩個菜單[地圖]和[瀏覽],這兩個MapInfo標準菜單一般不在菜單欄上顯示,只有當相應的地圖窗口或瀏覽窗口被打開時,它們才出現(xiàn)在菜牧欄上。在菜單欄上增加一個菜單,總是放在最右邊。有時我們想把菜單插入到原有的菜單中間,如想把[工具]菜單插入到[窗口]

菜單的左邊可以用下面的語句:

Alter
Menu Bar Remove ID6, ID7


Alter
Menu Bar Add
工具, ID6, ID7

這里第一個語句是先移去菜單欄上的[窗口]菜單(ID號為6)和[幫助]菜單(ID號為7),第二個語句是在菜單欄上增加三個菜單[工具],[窗口],[幫助]。這樣就完成了菜單的插入。如果你想完全控制菜單欄上各菜單的頃序,或者你想自已創(chuàng)建一個全新的菜單欄,那么你可以直接用Create Menu Bar語句,如:


Create Menu Bar
As



文件, 編輯, 地圖, 查詢, 幫助

Create Menu Bar As Default語句可以使菜單欄恢復到MapInfo標準定義狀態(tài)。


7
.快捷鍵和熱鍵的定義

快捷鍵就是不用鼠標而直接使用鍵盤就可以讓用戶訪問菜單或菜單項的組合鍵。典型的快捷鍵是用菜單或菜單項名中帶下劃線的字母來表示的,例如在windows中激活MapInfo的[文件]菜單的快捷鍵是<A1t—F>。當想用帶下劃線的字母來表示一個菜單項的快捷鍵時,可以直接在你想定義的快捷鍵的字母前加上字符(&),例如:


Create
Menu
TextBox
As

&Create TextBoxes
Calling create_sub


......


這樣C就是該菜單項的快捷鍵,當TextBox菜單被激活時,你直接可以用C鍵來選擇該菜單項。


熱鍵是讓用戶在不激活菜單的情況下,就可以執(zhí)行菜單命令的組合鍵?旖萱I是用鍵盤來使用菜單,而熱鍵是可以完全避免使用菜單。下面的程序是給一個用戶菜單項定義了一個熱鍵(Ctrl—Z):


Alter Menu
查詢
Add

新報告+Chr&(9)+Ctrl-Z/W^%122
Calling
new_sub

這里Chr$(9)表示插入一個tab字符,/w^%122是MapInfo的熱鍵代碼,其中/w表示這是Windows版本的MapInfo熱鍵代碼。^表示Ctrl鍵,%122指的是字母“Z”(122是字母“Z”的ASCII碼).
----------------------------------------------------

菜單的基本情況已經(jīng)介紹完了,那么下面我就開始自己動手來制作一個新的菜單。


我想制作一個名字為NSN的菜單,里面有三項


分別為


Create Text Boxes...


Close TextBox


About TextBox


然后給第一項一個快捷鍵,為SHIFT+Z


思路已經(jīng)完成,現(xiàn)在開始正式編程了


先建立一個新菜單,NSN,把子項加進去


create menu "NSN" as


"Create Text Boxes...",


"Close TextBox",


"About TextBox"

然后我們給第一項一個快捷鍵,為shift+z


代碼如下:


create menu "NSN" as


"Create Text Boxes..." + Chr$(9) + "shift-Z /W#z",


"Close TextBox",


"About TextBox"

這里重點講一下快捷鍵的設定:
/WZ
就是快捷鍵為Z

/W#Z就是快捷鍵為SHIFT+Z
/W@Z就是快捷鍵為ALT+Z
/W^Z就是快捷鍵為CRTL+Z
我為什么選擇
shift呢,應為MAP默認的很多快捷鍵就是CRTL的,為了避免不必要的沖突,我選擇用shift做為快捷鍵。


快捷鍵加好了,現(xiàn)在把NSN的菜單加到菜單一欄中去,代碼如下:

alter menu bar add


"NSN"


create menu "NSN" as


"Create Text Boxes..." + Chr$(9) + "shift-Z /W#z",


"Close TextBox",


"About TextBox"


[attach]206909[/attach]

好了,現(xiàn)在所有的代碼都已經(jīng)完成了,對代碼編譯后生成MBX文件,導入map中去,
效果如下

[attach]206907[/attach]

效果如預期,出現(xiàn)了一個新菜單NSN,里面有三項,而且快捷鍵為SHIFT+Z。
今天就到這里了,我去吃橘子了。水果有益健康

[ 本帖最后由 hillyspring 于 2011-11-27 22:34 編輯 ]
掃碼關注5G通信官方公眾號,免費領取以下5G精品資料
  • 1、回復“YD5GAI”免費領取《中國移動:5G網(wǎng)絡AI應用典型場景技術解決方案白皮書
  • 2、回復“5G6G”免費領取《5G_6G毫米波測試技術白皮書-2022_03-21
  • 3、回復“YD6G”免費領取《中國移動:6G至簡無線接入網(wǎng)白皮書
  • 4、回復“LTBPS”免費領取《《中國聯(lián)通5G終端白皮書》
  • 5、回復“ZGDX”免費領取《中國電信5G NTN技術白皮書
  • 6、回復“TXSB”免費領取《通信設備安裝工程施工工藝圖解
  • 7、回復“YDSL”免費領取《中國移動算力并網(wǎng)白皮書
  • 8、回復“5GX3”免費領取《 R16 23501-g60 5G的系統(tǒng)架構1
  • 共獲得 1 次點評 我要點評

    • eagle520tt 威望 +20 個
      · 加分,很專業(yè)的資料 詳細.. 發(fā)表與:2011-11-28 10:28:13
     
    [充值威望,立即自動到帳] [VIP貴賓權限+威望套餐] 另有大量優(yōu)惠贈送活動,請光臨充值中心
    充值擁有大量的威望和最高的下載權限,下載站內資料無憂
    0965022
    中級會員
    鎵嬫満鍙風爜宸查獙璇? style=


     發(fā)短消息    關注Ta 

    積分 688
    帖子 137
    威望 181 個
    禮品券 0 個
    專家指數(shù) 3
    注冊 2011-11-16
    專業(yè)方向  工程建設
    回答問題數(shù) 0
    回答被采納數(shù) 0
    回答采納率 0%
     
    發(fā)表于 2011-11-29 13:29:10  QQ
    這個東西好復雜呢不懂函數(shù)啊 大哥

    對本帖內容的看法? 我要點評

     
    [立即成為VIP會員,百萬通信專業(yè)資料立即下載,支付寶、微信付款,簡單、快速!]
    hillyspring
    銀牌會員
    鎵嬫満鍙風爜宸查獙璇? style=


     發(fā)短消息    關注Ta 

    積分 3152
    帖子 435
    威望 5490 個
    禮品券 406 個
    專家指數(shù) 563
    注冊 2006-5-9
    專業(yè)方向  2G4G優(yōu)化
    回答問題數(shù) 0
    回答被采納數(shù) 0
    回答采納率 0%
     
    發(fā)表于 2011-11-29 15:56:33  只看樓主 
    這也算難?如果是VBA熟悉的,基本看一眼就明白怎么回事了,都不用怎么解釋

    對本帖內容的看法? 我要點評

     
    最新通信職位:廣東通信人才網(wǎng) | 北京通信人才網(wǎng) | 上海通信人才網(wǎng) | 南京通信人才網(wǎng) | 西安通信人才網(wǎng) | 重慶通信人才網(wǎng) | 中國通信人才網(wǎng)
    道家書生
    金牌會員
    鎵嬫満鍙風爜宸查獙璇? style=


     發(fā)短消息    關注Ta 

    管理·勤奮勛章   C友·進步勛章   管理·優(yōu)秀勛章   紀念勛章·七周年   C友·登錄達人   紀念勛章·八周年  
    積分 8802
    帖子 1599
    威望 199234 個
    禮品券 405 個
    專家指數(shù) 487
    注冊 2011-1-22
    專業(yè)方向  WCDMA、CDMA 1X及TD-LTE
    來自 曼谷
    回答問題數(shù) 0
    回答被采納數(shù) 0
    回答采納率 0%
     
    發(fā)表于 2012-01-14 16:23:56 
    提升一下第二章,雖然樓上說熟悉VBA的一看就明白了,但個人認為這個原創(chuàng)之作會是入門C友的精品之作。

    對本帖內容的看法? 我要點評





    報告集結網(wǎng)盤:http://dobbinslee.2kuai.com
     
    [2分鐘擁有VIP權限和充足威望,可下載站內任何資料] [快速找到一份高薪的通信行業(yè)職位]
    adsn
    銀牌會員
    鎵嬫満鍙風爜宸查獙璇? style=


     發(fā)短消息    關注Ta 

    財富勛章·萬元戶   財富勛章·財運連連   紀念勛章·九周年  
    積分 2586
    帖子 521
    威望 301951 個
    禮品券 35 個
    專家指數(shù) -59
    注冊 2010-5-19
    專業(yè)方向  TDS/TDL
    來自 JiangxLep
    回答問題數(shù) 0
    回答被采納數(shù) 0
    回答采納率 0%
     
    發(fā)表于 2012-01-16 09:20:16  QQ
    多謝樓主分享。學習

    對本帖內容的看法? 我要點評

     
    最新通信職位:廣東通信人才網(wǎng) | 北京通信人才網(wǎng) | 上海通信人才網(wǎng) | 南京通信人才網(wǎng) | 西安通信人才網(wǎng) | 重慶通信人才網(wǎng) | 中國通信人才網(wǎng)
    oolong
    金牌會員
    鎵嬫満鍙風爜宸查獙璇? style=


     發(fā)短消息    關注Ta 

    財富勛章·萬元戶   紀念勛章·六周年  
    積分 6142
    帖子 347
    威望 7409 個
    禮品券 5 個
    專家指數(shù) -20
    注冊 2007-4-16
    專業(yè)方向  數(shù)據(jù)業(yè)務優(yōu)化
    回答問題數(shù) 0
    回答被采納數(shù) 0
    回答采納率 0%
     
    發(fā)表于 2012-01-19 23:14:35 
    好東西,必須要頂

    對本帖內容的看法? 我要點評

     
    [2分鐘擁有VIP權限和充足威望,可下載站內任何資料] [快速找到一份高薪的通信行業(yè)職位]
    zhjd
    金牌會員



     發(fā)短消息    關注Ta 

    積分 8901
    帖子 337
    威望 1432 個
    禮品券 0 個
    專家指數(shù) 21
    注冊 2007-11-6
    專業(yè)方向 
    回答問題數(shù) 0
    回答被采納數(shù) 0
    回答采納率 0%
     
    發(fā)表于 2012-01-29 14:05:00 
    這個可以收藏!!

    對本帖內容的看法? 我要點評

     
    熱點: 通信招聘職位 | 網(wǎng)絡優(yōu)化全集 | WCDMA精品 | TD-SCDMA學習資料 | EVDO | MGW媒體網(wǎng)關資料
    mchorse
    高級會員



     發(fā)短消息    關注Ta 

    積分 1561
    帖子 19
    威望 3504 個
    禮品券 0 個
    專家指數(shù) 11
    注冊 2008-6-13
    專業(yè)方向  GSM
    回答問題數(shù) 0
    回答被采納數(shù) 0
    回答采納率 0%
     
    發(fā)表于 2012-01-30 11:33:01 
    很好很詳細,非常有用

    對本帖內容的看法? 我要點評

     
    [2分鐘擁有VIP權限和充足威望,可下載站內任何資料] [快速找到一份高薪的通信行業(yè)職位]
    janlen521
    初級會員
    鎵嬫満鍙風爜宸查獙璇? style=


     發(fā)短消息    關注Ta 

    積分 300
    帖子 57
    威望 2127 個
    禮品券 10 個
    專家指數(shù) 15
    注冊 2009-12-29
    專業(yè)方向  TD網(wǎng)優(yōu)
    回答問題數(shù) 0
    回答被采納數(shù) 0
    回答采納率 0%
     
    發(fā)表于 2012-01-31 11:20:54 
    有附件嗎?看看,。學學,頂

    對本帖內容的看法? 我要點評

     
    [2分鐘擁有VIP權限和充足威望,可下載站內任何資料] [快速找到一份高薪的通信行業(yè)職位]
    wxf8672
    初級會員



     發(fā)短消息    關注Ta 

    積分 392
    帖子 79
    威望 576 個
    禮品券 0 個
    專家指數(shù) -3
    注冊 2011-8-3
    專業(yè)方向  移動通信
    回答問題數(shù) 0
    回答被采納數(shù) 0
    回答采納率 0%
     
    發(fā)表于 2012-02-01 09:06:39 
    學習了~~學習了~~學習了~~

    對本帖內容的看法? 我要點評

     
    [2分鐘擁有VIP權限和充足威望,可下載站內任何資料] [快速找到一份高薪的通信行業(yè)職位]
    億卟
    中級會員
    鎵嬫満鍙風爜宸查獙璇? style=


     發(fā)短消息    關注Ta 

    C友·貢獻勛章   紀念勛章·九周年  
    積分 739
    帖子 206
    威望 60647 個
    禮品券 49 個
    專家指數(shù) -291
    注冊 2011-12-13
    專業(yè)方向  網(wǎng)絡優(yōu)化
    來自 甘肅酒泉
    回答問題數(shù) 0
    回答被采納數(shù) 0
    回答采納率 0%
     
    發(fā)表于 2012-02-04 16:04:34 
    頂 頂。。。。。。。。。。。!

    對本帖內容的看法? 我要點評

     
    熱點: 通信招聘職位 | 網(wǎng)絡優(yōu)化全集 | WCDMA精品 | TD-SCDMA學習資料 | EVDO | MGW媒體網(wǎng)關資料
    weeker3344
    中級會員
    鎵嬫満鍙風爜宸查獙璇? style=


     發(fā)短消息    關注Ta 

    積分 683
    帖子 149
    威望 4366 個
    禮品券 0 個
    專家指數(shù) -62
    注冊 2012-6-25
    專業(yè)方向  移動GSM TD LTE
    來自 浙江杭州
    回答問題數(shù) 0
    回答被采納數(shù) 0
    回答采納率 0%
     
    發(fā)表于 2012-06-25 21:02:00  QQ
    很好的帖子學會創(chuàng)建了哈哈

    對本帖內容的看法? 我要點評

     
    [2分鐘擁有VIP權限和充足威望,可下載站內任何資料] [快速找到一份高薪的通信行業(yè)職位]
    網(wǎng)優(yōu)小馬
    高級會員



     發(fā)短消息    關注Ta 

    積分 1235
    帖子 254
    威望 5361 個
    禮品券 0 個
    專家指數(shù) -35
    注冊 2012-4-11
    專業(yè)方向  網(wǎng)優(yōu)
    回答問題數(shù) 0
    回答被采納數(shù) 0
    回答采納率 0%
     
    發(fā)表于 2012-07-21 13:57:00 
    哈哈學習 學習

    對本帖內容的看法? 我要點評

     
    熱點: 通信招聘職位 | 網(wǎng)絡優(yōu)化全集 | WCDMA精品 | TD-SCDMA學習資料 | EVDO | MGW媒體網(wǎng)關資料
    shennan2010
    新手上路
    鎵嬫満鍙風爜宸查獙璇? style=


     發(fā)短消息    關注Ta 

    積分 -392
    帖子 11
    威望 90727 個
    禮品券 5 個
    專家指數(shù) -447
    注冊 2011-7-15
    專業(yè)方向  網(wǎng)絡優(yōu)化
    回答問題數(shù) 0
    回答被采納數(shù) 0
    回答采納率 0%
     
    發(fā)表于 2013-08-08 14:33:58 
    很好,但才剛看到

    對本帖內容的看法? 我要點評

     
    [2分鐘擁有VIP權限和充足威望,可下載站內任何資料] [快速找到一份高薪的通信行業(yè)職位]
    411611
    中級會員
    鎵嬫満鍙風爜宸查獙璇? style=


     發(fā)短消息    關注Ta 

    積分 1034
    帖子 232
    威望 18987 個
    禮品券 8 個
    專家指數(shù) -126
    注冊 2011-9-21
    專業(yè)方向  無線網(wǎng)優(yōu)
    回答問題數(shù) 0
    回答被采納數(shù) 0
    回答采納率 0%
     
    發(fā)表于 2013-09-01 21:17:34 
    繼續(xù)學習,但是在原有按鈕中添加菜單的弄不上去

    對本帖內容的看法? 我要點評

     
    [2分鐘擁有VIP權限和充足威望,可下載站內任何資料] [快速找到一份高薪的通信行業(yè)職位]

    快速回復主題    
    標題
    內容
     上傳資料請點左側【添加附件】

    當前時區(qū) GMT+8, 現(xiàn)在時間是 2025-04-05 22:05:38
    渝ICP備11001752號  Copyright @ 2006-2016 mscbsc.com  本站統(tǒng)一服務郵箱:mscbsc@163.com

    Processed in 0.965869 second(s), 41 queries , Gzip enabled
    TOP
    清除 Cookies - 聯(lián)系我們 - 移動通信網(wǎng) - 移動通信論壇 - 通信招聘網(wǎng) - Archiver