菜鳥學(xué)mapbasic連載----第四集(用戶對(duì)話框)
今天我們開始學(xué)習(xí)用戶對(duì)話框,用戶對(duì)話框?qū)ξ覀儊碚f使我們可以很好的和MAPINFO進(jìn)行交互操作,而且是圖形化界面,便于我們?nèi)粘5牟僮鳌?/font>
---------------------------------------------------
Dialog語句用來創(chuàng)建用戶對(duì)話柜。如果你的應(yīng)用程序使用了Dialog語句,那么程序執(zhí)行時(shí)MapInfo會(huì)顯示一個(gè)對(duì)話框,接著讓用戶與對(duì)話框以交互方式對(duì)話,當(dāng)用戶關(guān)閉了
該對(duì)話框(如按了OK或Cancel按鈕),MapInfo將執(zhí)行Dialog語句后面的其他語句。在執(zhí)行了Dialog語句以后我們可以用CommandInfo()函數(shù)檢測用戶選擇了OK還是Cancel。
出現(xiàn)在對(duì)話框中的每一組件都稱為一個(gè)控件(control)。例如:每一個(gè)OK按鈕是一個(gè)控件,每一個(gè)Cancel按鈕也是一個(gè)控件。為了增加控件到對(duì)話框中,可以用Dialog語句中的Control子句。下面的語句創(chuàng)建了一個(gè)帶有四個(gè)控件的對(duì)話框,這四個(gè)控件分別為StaticText、EditText、OkButton和CancelButton:
Dim s_searchfor
As
String
Dialog
Title
Search”
Control StaticText
Title “Enter string to find:”
Control EditText
Into s_searchfor
Control OkButton
Title
“確定”
Control CancelButton
Title
“取消”
If CommandInfo(CMD_INFO_DLG_OK)
Then
Print
s_searchfor
End If
這個(gè)Dialog語句將產(chǎn)生下面的對(duì)話框(見圖):
[attach]208489[/attach]
Dialog語句的執(zhí)行結(jié)果(1)
1.控件的尺寸和位置
如果你想改變對(duì)話框中控件的尺寸大小,可以在Dialog語句中增加可選的Width和Height子句。如果你想改變控件的位置,可以在Dialog語句中包含可選的Position子句。例如上面的例子中,你不希望把兩個(gè)按鈕放在默認(rèn)位置,則可以增加Position子句如下:
Dialog
Title
“Search”
......
Control 0kButton
Title
“查找”
Position 30,30
Control CancelButtcn
Title
“取消”
Position
90,30
這個(gè)例子是對(duì)前一個(gè)例子的兩個(gè)控件作了改動(dòng),一是對(duì)OK按鈕改變了它的位置和標(biāo)題,二是對(duì)Cancel按鈕改變了它的位置。最終顯示結(jié)果如下(見圖)。
[attach]208490[/attach]
Dialog語句的執(zhí)行結(jié)果(2)
位置和尺寸依賴于對(duì)話框單位,一個(gè)對(duì)話框單位是四分之一個(gè)字符寬度和八分之一個(gè)字符高度。對(duì)話框的左上角的位置指定為(1,1),所以下面的Position子句所指的位置是距對(duì)話框左邊界五個(gè)字符和距頂部兩個(gè)字符的位置:
Position
20,16
同樣你可以用Width和Height子句指定每個(gè)控件的尺寸。
2.控件的類型
前面的例子已經(jīng)包括了對(duì)話框中的四種控件類型(StaticText、EditText、OkButton和CancelButton)。 圖10-7顯示了MapBasic所有的對(duì)話框控件類型。
·StaticText控件是一個(gè)非交互式控件,可以讓你在對(duì)話框中包含一個(gè)標(biāo)號(hào)。例如:
Control StaticText T1tte “面板文本”
position 20,5
·EditText控件是一個(gè)文本框,用戶可以在此區(qū)域中輸入一些信息。例如:
Control EditText
Value
“文件名”
‘初值
Into filename
‘把輸入框中的內(nèi)容存入變量filename
Position
20,120
·GroupBox控件是一個(gè)左上角帶標(biāo)號(hào)的矩形,它只起一個(gè)分隔的作用。例如:
Control RadioGroup
Title
“編輯文本將存于:”
Position
10,100
Width
160
Height 40
·Radiogroup控件是一個(gè)單選按鈕集,所謂單選按鈕集就是同一時(shí)間只能有一個(gè)按鈕被選中。例如:
Control RadioGroup
Title
“&R單選一;&O單選二”
Value
l
Into
ctrl_val
ID2
Position
20,32
·PenPicker,BrushPicker,F(xiàn)ontPicker和SymbolPicker控件都是讓用戶選擇一個(gè)圖文的式樣(線型、填充圖案、字體或者符號(hào))。圖中的PenPicker控件顯示了一條直線。
[attach]208491[/attach]
MapBasic對(duì)話框的控件類型
Control子句如下:
Control PenPicker
Title
“線路”
Position
20,70
Into pen_variable
ID 3
·ListBox控件是一個(gè)滾動(dòng)式列表,用戶可以選擇其中的一項(xiàng),MapBasic自動(dòng)在列表框的右邊追加一個(gè)垂直滾動(dòng)條。例如:
Control ListBox
Title “列表選擇框;選項(xiàng)1;選項(xiàng)2;選項(xiàng)3;選項(xiàng)4:選項(xiàng)5;選項(xiàng)6”
Value 4
Into
i_quarter
ID4
Position
105,25
Width 80 Height 40
·MultiBox控件與ListBox控件相同,除了用戶可以用Shift或Ctrl鍵加鼠標(biāo)單擊來選擇列表中的兩個(gè)或多個(gè)項(xiàng)。
·PopMenu控件是作為一個(gè)右邊帶下箭頭的文本項(xiàng)出現(xiàn)的,當(dāng)用戶單擊該控件時(shí),將彈出一個(gè)菜單,允許用戶選擇。例如:
Control PopupMenu
Titte
“下拉式菜單;選項(xiàng)—1;選項(xiàng)—2”
Value 2
Into
i_scope
ID 6
Position
90,5
·CheckBox控件是一個(gè)帶框的標(biāo)號(hào),用戶可以單擊該控件來設(shè)置或清除復(fù)選框。例
如:
Control
CheckBox
Title
“功能確認(rèn)框”
ID7
Position
l0,150
·Button是最普通的控件,因?yàn)閹缀趺總(gè)對(duì)話框都至少有一個(gè)Button. MapBasic提供了兩種特殊的Button控件OkButton和CancelButton。
Control
OkButton
Title
“確定”
Position
50,180
Calling
Ok_Sub
Control
CancelButton
Title
“取消”
Position
120,180
每一個(gè)對(duì)話框都不應(yīng)有多個(gè)OkButton或CancelButton。每個(gè)控件都是可選的, 但作為一個(gè)通用的規(guī)則,每個(gè)對(duì)話框應(yīng)該至少有一個(gè)Ok或Cancel按鈕,以便用戶可以關(guān)閉對(duì)話框。如果控件帶有處理程序,MapBasic先執(zhí)行這些處理程序,然后繼續(xù)執(zhí)行Dialog下面的語句。
---------------------------------------------------
最后上傳本次 例子的源代碼,喜歡的拖鞋們,可以自己看看。
[ 本帖最后由 hillyspring 于 2011-12-5 20:02 編輯 ]
2011-12-5 20:00:45 下載次數(shù): 102
dialog.zip (1.14 KB)
掃碼關(guān)注5G通信官方公眾號(hào),免費(fèi)領(lǐng)取以下5G精品資料
1、回復(fù)“YD5GAI”免費(fèi)領(lǐng)取《中國移動(dòng):5G網(wǎng)絡(luò)AI應(yīng)用典型場景技術(shù)解決方案白皮書》
2、回復(fù)“5G6G”免費(fèi)領(lǐng)取《5G_6G毫米波測試技術(shù)白皮書-2022_03-21》
3、回復(fù)“YD6G”免費(fèi)領(lǐng)取《中國移動(dòng):6G至簡無線接入網(wǎng)白皮書》
4、回復(fù)“LTBPS”免費(fèi)領(lǐng)取《《中國聯(lián)通5G終端白皮書》》
5、回復(fù)“ZGDX”免費(fèi)領(lǐng)取《中國電信5G NTN技術(shù)白皮書》
6、回復(fù)“TXSB”免費(fèi)領(lǐng)取《通信設(shè)備安裝工程施工工藝圖解》
7、回復(fù)“YDSL”免費(fèi)領(lǐng)取《中國移動(dòng)算力并網(wǎng)白皮書》
8、回復(fù)“5GX3”免費(fèi)領(lǐng)取《 R16 23501-g60 5G的系統(tǒng)架構(gòu)1》
|