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

  • 閱讀:12120
  • 回復:26
菜鳥學mapbasic連載----第六集(按鈕盒設計)
hillyspring
銀牌會員
鎵嬫満鍙風爜宸查獙璇? style=


 發(fā)短消息    關注Ta 

積分 3152
帖子 435
威望 5490 個
禮品券 406 個
專家指數(shù) 563
注冊 2006-5-9
專業(yè)方向  2G4G優(yōu)化
回答問題數(shù) 0
回答被采納數(shù) 0
回答采納率 0%
 
發(fā)表于 2012-01-13 11:28:54  只看樓主 
按鈕盒設計

一個按鈕盒是包含一個或多個按鈕的浮動窗口。通過在按鈕盒中選擇一個按鈕,用戶可以初啟各種類型的動作。MapInfo提供了幾個標準按鈕盒,你可以用MapBasic程序增加新的按鈕到一個已存在的按鈕盒或者創(chuàng)建一個全新的按鈕盒。


1
.選擇按鈕后的處理

與菜單項相同,每個按鈕也有相應的處理程序。當用戶選擇了一個按鈕后,MapBasic會自動調用這個按鈕的處理程序。因此,如果你希望每次用戶單擊一個按鈕時顯示一個對話框,那么你應該為這個按鈕創(chuàng)建一個顯示對話框的子過程。


MapBasic程序可以創(chuàng)建三種不同類型的按鈕:ToolButtons,ToggleButtons和PushButtons。


·PushButton這種按鈕叫做觸發(fā)式按鈕,當用戶單擊一個觸發(fā)式按鈕時,按鈕仍會彈回來,MapBasic調用觸發(fā)式按鈕處理程序。圖層控制按鈕就是觸發(fā)式按鈕的一個例子,單擊圖層控制按鈕會有一個即時響應(顯示一個對話框),但它不會改變按鈕的最終狀態(tài)。


·ToggleButton這種按鈕叫做開關式按鈕。當用戶單擊開關式按鈕時,按鈕變成兩
種狀態(tài)中的一種:按下或沒按下。每次用戶單擊開關式按鈕,MapBasic都會調用該按鈕的處理程序。圖例窗口顯示/隱藏按鈕就是開關式按鈕的一個例子,當單擊一個按鈕時,立即會有一個響應。顯示或者隱藏圖例窗口。


·ToolButton這種按鈕稱為工具按鈕。當用戶單擊工具按鈕時,一個工具將處于激活狀態(tài),并將始終保持這種狀態(tài)直到用戶選擇了另外一個工具。當一種工具處于激活狀態(tài)并且用戶在地圖窗口、瀏覽窗口或布局窗口單擊時,MapBasic調用該按鈕的處理程序。例如放大工具就是一個工具按鈕,選擇這個工具后除了鼠標形狀改變外不會產生任何其他即時響應,但選擇了該工具并且在地圖窗口單擊時就會有響應了。


2
.與按鈕盒相聯(lián)系的MapBasic語句

下面的語句和函數(shù)讓你能創(chuàng)建和控制按鈕及按鈕盒:


Create ButtonPad該語句創(chuàng)建一個新的按鈕盒。



Alter ButtonPad
:創(chuàng)建按鈕盒以后,你的程序可以修改按鈕盒的各種屬性,Alter ButtonPad語句可以重定位、顯示/隱藏按鈕盒或者可以增加或移去按鈕盒中的按鈕。



Alter Button
:該語句可以修改單個按鈕的狀態(tài), 可以設置一個按鈕可選或者不可選,也可以使某個按鈕為當前選擇的按鈕。



CommandInfo()
:在按鈕處理程序中使用CommandInf()函數(shù)可以查詢關于用戶使用按鈕的信息。例如用戶選擇了一個工具按鈕并在地圖窗口中單擊,CommandInfo()函數(shù)可以獲得單擊點的X,Y坐標。除此之外,CommandInfo()函數(shù)在按鈕處理程序中被調用還有其他一些作用,如判斷用戶選擇了哪個按鈕,判斷用戶在單擊時,是否同時按下了Shift鍵等等。


3
ToolHandler過程

ToolHandler是一個特殊的過程名,它可以讓你很方便地在“主”按鈕盒中追加一個按鈕,如果你的MapBasic程序中包含一個名叫ToolHandler的過程,MapBasic自動在Main按鈕盒中增加一個按鈕。而后,如果用戶選擇了這個按鈕并在地圖窗口、瀏覽窗口或布局窗口用鼠標單擊時,MapBasic自動調用ToolHandler過程。


4
.創(chuàng)建觸發(fā)式按鈕

下面的程序用于創(chuàng)建一個包含一個觸發(fā)式按鈕的按鈕盒,button_prompt過程是按鈕處理程序。因此,當用戶單擊該觸發(fā)式按鈕時,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。它創(chuàng)建了一個自定義用戶按鈕盒Custom,而且在這個按鈕盒中有一個按鈕。關鍵詞PushButton表示MapBasic創(chuàng)建的是一個觸發(fā)式按鈕。Icon子句告訴MapBasic,將在按鈕上顯示哪個圖標。標識符MI_ICON_ZOOM_QUESTION在文件icons.def中已定義。Calling子句告訴MapBasic,當用戶選擇了該按鈕時,調用過程button_prompt。HelpMsg子句定義了在狀態(tài)欄上顯示的按鈕幫助信息。


5
.向“主”按鈕盒增加一個按鈕

前面的例子是用Create ButtonPad語句創(chuàng)建一個全新的按鈕盒,MapBasic允許向MapInfo已存在的按鈕盒增加新的按鈕。例如下面的例子是向“主”按鈕盒增加新的按鈕:


Alter ButtonPad

Add Separator新按鈕與舊按鈕之間增加一個分隔符
Add PushButton
Icon MI_ICON_ZOOM_QUESTION
Calling button_prompt
HelpMsgDisplays the Query dialog\nQuery
Show

6
.創(chuàng)建工具按鈕

下面的例子中創(chuàng)建了一個工具按鈕,當用戶選擇該按鈕,并在地圖窗口中拖拉鼠標時將畫出一條直線。


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)
這里可以創(chuàng)建基于x1,y1,x2,y2的對象。

End Sub


按鈕的定義中使用了DrawMode子句,它告訴MapBasic用戶是否可以用這個工具進行拖拉。上面的例子中使用了DM_CUSTOM_LINE繪圖模式,因此,用戶可以用該工具進行單擊并拖拉,就像用戶使用MapInfo標準畫線工具一樣。

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

    • flyda7805055 威望 +20 個, 專家指數(shù) +2
      · 原創(chuàng)內容,鼓勵 詳細.. 發(fā)表與:2012-1-19 14:27:11
    • eagle520tt 威望 +20 個, 專家指數(shù) +2
      · 加分,很專業(yè)的討論 詳細.. 發(fā)表與:2012-1-13 18:07:26
    • huda188 專家指數(shù) +5 , 威望 +11 個
      · 確實是很專業(yè),望持續(xù)更新 詳細.. 發(fā)表與:2012-1-13 14:13:28
    • 道家書生 專家指數(shù) +2 , 威望 +20 個
      · 精品教程, 詳細.. 發(fā)表與:2012-1-13 12:01:58
     
    [充值威望,立即自動到帳] [VIP貴賓權限+威望套餐] 另有大量優(yōu)惠贈送活動,請光臨充值中心
    充值擁有大量的威望和最高的下載權限,下載站內資料無憂
    hillyspring
    銀牌會員
    鎵嬫満鍙風爜宸查獙璇? style=


     發(fā)短消息    關注Ta 

    積分 3152
    帖子 435
    威望 5490 個
    禮品券 406 個
    專家指數(shù) 563
    注冊 2006-5-9
    專業(yè)方向  2G4G優(yōu)化
    回答問題數(shù) 0
    回答被采納數(shù) 0
    回答采納率 0%
     
    發(fā)表于 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會員,百萬通信專業(yè)資料立即下載,支付寶、微信付款,簡單、快速!]
    hillyspring
    銀牌會員
    鎵嬫満鍙風爜宸查獙璇? style=


     發(fā)短消息    關注Ta 

    積分 3152
    帖子 435
    威望 5490 個
    禮品券 406 個
    專家指數(shù) 563
    注冊 2006-5-9
    專業(yè)方向  2G4G優(yōu)化
    回答問題數(shù) 0
    回答被采納數(shù) 0
    回答采納率 0%
     
    發(fā)表于 2012-01-13 11:46:09  只看樓主 
    那么我們現(xiàn)在開始自己做一個 按鈕盒。
    本按鈕盒里有三個 按鈕,第一個為 查看頻點,第二個為 查看上一個頻點, 第三個為 查看下一個頻點。

    第一個按鈕我選用 樣式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]

    這里就可以看到所有默認的樣式,你可以根據(jù)自己的喜好選擇自己的按鈕, 至于DIY按鈕我還正在研究中。。

    那還我們繼續(xù)。。點擊第一個按鈕 ,彈出 查看頻點對話框,如下:
    [attach]215071[/attach]

    輸入頻點后,完成查看頻點,如下:

    [attach]215072[/attach]

    到此按鈕練習結束了,希望同學們利用按鈕制作出更加美觀,實用,簡潔的 maoinfo插件。

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

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

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


     發(fā)短消息    關注Ta 

    公益·慈善勛章   C友·紀念勛章   紀念勛章·七周年   C友·魅力勛章   財富勛章·小財主   C友·登錄達人   紀念勛章·九周年   紀念勛章·十周年  
    積分 3759
    帖子 649
    威望 430148 個
    禮品券 139 個
    專家指數(shù) 514
    注冊 2011-6-13
    專業(yè)方向  網優(yōu)
    來自 南京
    回答問題數(shù) 0
    回答被采納數(shù) 0
    回答采納率 0%
     
    發(fā)表于 2012-01-13 13:41:25  QQ
    精品 收藏了 在學習了

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





    天行健 君子以自強不息;
    地勢坤 君子以厚德載物!
     
    [2分鐘擁有VIP權限和充足威望,可下載站內任何資料] [快速找到一份高薪的通信行業(yè)職位]
    jielee2136
    初級會員



     發(fā)短消息    關注Ta 

    積分 470
    帖子 92
    威望 3589 個
    禮品券 0 個
    專家指數(shù) 10
    注冊 2011-12-15
    專業(yè)方向  網優(yōu)
    回答問題數(shù) 0
    回答被采納數(shù) 0
    回答采納率 0%
     
    發(fā)表于 2012-01-13 13:49:36 
    頂一個。。。。。。。。。

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

     
    最新通信職位:廣東通信人才網 | 北京通信人才網 | 上海通信人才網 | 南京通信人才網 | 西安通信人才網 | 重慶通信人才網 | 中國通信人才網
    huda188
    版主
    鎵嬫満鍙風爜宸查獙璇? style=


     發(fā)短消息    關注Ta 

    專家·初級勛章   精華發(fā)帖   紀念勛章·七周年   財富勛章·萬元戶   C友·魅力勛章   活動·積極勛章   財富勛章·財運連連   財富勛章·小財主   C友·活躍勛章   C友·勤奮勛章   公益·環(huán)保勛章   紀念勛章·四周年   財富勛章·富甲一方   活動·第二屆通信技術杯   紀念勛章·六周年   通信正能量   紀念勛章·八周年   紀念勛章·九周年  
    積分 11249
    帖子 2063
    威望 55292 個
    禮品券 652 個
    專家指數(shù) 74
    注冊 2009-5-20
    專業(yè)方向  項目管理
    回答問題數(shù) 0
    回答被采納數(shù) 0
    回答采納率 0%
     
    發(fā)表于 2012-01-13 14:12:11 
    呵呵 不錯樓主技術達人 多多更新

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





    ==============================
    *當年迎風尿三尺,如今順風尿濕鞋,哎,老了*
    =====
    ====
    ===
    ==
    =
    huda188
     
    [2分鐘擁有VIP權限和充足威望,可下載站內任何資料] [快速找到一份高薪的通信行業(yè)職位]
    xinhaoqi
    銀牌會員
    鎵嬫満鍙風爜宸查獙璇? style=


     發(fā)短消息    關注Ta 

    紀念勛章·七周年   C友·登錄達人  
    積分 2894
    帖子 543
    威望 4536 個
    禮品券 85 個
    專家指數(shù) 179
    注冊 2010-1-14
    專業(yè)方向  TD系統(tǒng)優(yōu)化 LTE網絡優(yōu)化
    回答問題數(shù) 0
    回答被采納數(shù) 0
    回答采納率 0%
     
    發(fā)表于 2012-01-14 14:50:06 
    樓主很強悍啊 頂起 嚴重頂起

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





    Keep on going,Never give up!
     
    熱點: 通信招聘職位 | 網絡優(yōu)化全集 | WCDMA精品 | TD-SCDMA學習資料 | EVDO | MGW媒體網關資料
    程恒蛋蛋
    初級會員
    鎵嬫満鍙風爜宸查獙璇? style=


     發(fā)短消息    關注Ta 

    積分 177
    帖子 34
    威望 254 個
    禮品券 0 個
    專家指數(shù) 7
    注冊 2012-1-11
    專業(yè)方向  移動通信技術
    來自 河北
    回答問題數(shù) 0
    回答被采納數(shù) 0
    回答采納率 0%
     
    發(fā)表于 2012-01-15 17:44:28  QQ

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

     
    熱點: 通信招聘職位 | 網絡優(yōu)化全集 | WCDMA精品 | TD-SCDMA學習資料 | EVDO | MGW媒體網關資料
    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:21:55  QQ
    多謝樓主分享。學習

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

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


     發(fā)短消息    關注Ta 

    積分 35197
    帖子 582
    威望 262863 個
    禮品券 50 個
    專家指數(shù) 30
    注冊 2009-3-18
    專業(yè)方向  網規(guī)網優(yōu)
    來自 四川成都
    回答問題數(shù) 0
    回答被采納數(shù) 0
    回答采納率 0%
     
    發(fā)表于 2012-01-16 09:48:41  QQ
    樓主很強悍,頂一下

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

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



     發(fā)短消息    關注Ta 

    積分 1500
    帖子 300
    威望 437 個
    禮品券 0 個
    專家指數(shù) 0
    注冊 2011-5-8
    專業(yè)方向  網絡
    回答問題數(shù) 0
    回答被采納數(shù) 0
    回答采納率 0%
     
    發(fā)表于 2012-01-19 12:30:50 
    非常好的,支持一下。

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

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


     發(fā)短消息    關注Ta 

    C友·登錄達人   活動·攝影達人   紀念勛章·九周年  
    積分 14513
    帖子 1632
    威望 734805 個
    禮品券 122 個
    專家指數(shù) 45
    注冊 2007-6-6
    專業(yè)方向 
    回答問題數(shù) 0
    回答被采納數(shù) 0
    回答采納率 0%
     
    發(fā)表于 2012-01-19 15:40:45 
    太好了,每一行字都是辛苦。

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

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



     發(fā)短消息    關注Ta 

    積分 8665
    帖子 184
    威望 1927 個
    禮品券 0 個
    專家指數(shù) 12
    注冊 2007-2-13
    專業(yè)方向  通信
    回答問題數(shù) 0
    回答被采納數(shù) 0
    回答采納率 0%
     
    發(fā)表于 2012-01-19 15:46:59 
    好東西,有機會要下來學一學。

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

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



     發(fā)短消息    關注Ta 

    積分 1368
    帖子 442
    威望 4554 個
    禮品券 0 個
    專家指數(shù) -842
    注冊 2011-6-29
    專業(yè)方向  通信工程
    回答問題數(shù) 0
    回答被采納數(shù) 0
    回答采納率 0%
     
    發(fā)表于 2012-01-19 15:55:39 
    *** 作者被禁止或刪除 內容自動屏蔽 ***
    xuming0827
    鉆石會員



     發(fā)短消息    關注Ta 

    積分 10926
    帖子 1411
    威望 14652 個
    禮品券 10 個
    專家指數(shù) 5
    注冊 2009-3-2
    專業(yè)方向  網絡優(yōu)化
    回答問題數(shù) 0
    回答被采納數(shù) 0
    回答采納率 0%
     
    發(fā)表于 2012-01-19 17:32:38 
    好東西,謝謝樓主分享!

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

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

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

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

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