【正文】
查到的所有圖元 1) 建立工程后,在工具箱上單擊右鍵,選擇彈出菜單中的Components…命令,打開(kāi)控件的對(duì)話框,從控件列表中選中MapInfo MapX V4復(fù)選取框,然后選擇確定命令,這時(shí)在Visual Basic的工具箱中出現(xiàn)了新的控件Map X地圖控件。通過(guò)此控件就可以在窗體上加入地圖。 2) 在 工程 菜單中選擇 引用,找到帶 ADO 的選項(xiàng),選上。接著就可以在程序中建立ADO對(duì)象進(jìn)行使用。 3)窗口一:進(jìn)行菜單:使用菜單編輯器完成。工具欄設(shè)計(jì):通過(guò)工具欄控件和圖像列表控件完成。在窗體上加入地圖加入相應(yīng)控件:兩個(gè)組合框架 框架一:一個(gè)標(biāo)簽:標(biāo)注車輛列表 分別為符號(hào)設(shè)置命令按鈕(symStyle):通過(guò)按鈕調(diào)入MapX中的符號(hào)設(shè)計(jì)對(duì)話框。加入車輛按鈕:通過(guò)該按鈕加入要跟蹤的車輛,并把車輛的代號(hào)在列表框中顯示??蚣芏喝齻€(gè)標(biāo)簽:分別標(biāo)注車輛代號(hào)文本框、車牌文本框、駕駛員文本框。文本框: 在車輛代號(hào)文本框、車牌文本框、駕駛員文本框三個(gè)文本框分別顯示由數(shù)據(jù)庫(kù)車輛信息表中查找到的信息。窗口二(查詢窗口):進(jìn)行菜單設(shè)計(jì)加入相應(yīng)控件:一定時(shí)器、兩框架框架一:兩個(gè)標(biāo)簽:它們分別標(biāo)注查詢圖層、特征集列表框。 兩列表框:查詢圖層、特征集列表框框架二: 一個(gè)標(biāo)簽:標(biāo)注查詢結(jié)果列表框 一個(gè)列表框:查詢結(jié)果列表框4)代碼功能設(shè)計(jì)窗口一:Option Explicit聲明相關(guān)全局變量:相關(guān)層變量、相關(guān)圖元變量 聲明私有變量:即ADO對(duì)象各屬性和方法。定義一個(gè)顯示過(guò)程Private Sub showbus(),完成數(shù)據(jù)庫(kù)訪問(wèn),并實(shí)現(xiàn)數(shù)據(jù)綁定,在地圖中顯示定點(diǎn)。在Private Sub Form_Load()過(guò)程中完成:活動(dòng)層的創(chuàng)建、建立ADO連接(連接屬性的設(shè)置)、打開(kāi)連接。在Private Sub Form_Resize()過(guò)程完成:當(dāng)放大窗口時(shí),地圖與控件能充滿整個(gè)屏幕。在Private Sub Command1_Click()即加入跟蹤車輛命令按鈕的響應(yīng)過(guò)程:完成與列表框的連接顯示,列表框?qū)崿F(xiàn)跟蹤車輛代號(hào)的顯示,通過(guò)AssItem方法實(shí)現(xiàn)在Private Sub Command2_Click()即號(hào)設(shè)置命令按鈕響應(yīng)過(guò)程完成:調(diào)出符號(hào)設(shè)計(jì)對(duì)話框,彈出符號(hào)設(shè)置對(duì)話框。該參數(shù)用于實(shí)現(xiàn)數(shù)據(jù)綁定在Private Sub List1_Click()列表框響應(yīng)過(guò)程:當(dāng)選擇列表項(xiàng)時(shí),以所選為條件在數(shù)據(jù)庫(kù)的車輛信息表中查詢相關(guān)信息并在文本框中顯示車輛信息,并啟動(dòng)計(jì)時(shí)器、調(diào)用顯示過(guò)程Private Sub showbus()。在相應(yīng)的工具響應(yīng)和菜單項(xiàng)中的工具項(xiàng)響應(yīng)過(guò)程中設(shè)置相應(yīng)的工具代碼。在Private Sub Search_Click()查詢菜單響應(yīng)過(guò)程中,啟動(dòng)查詢窗口。在Private Sub exit_Click()結(jié)束菜單項(xiàng)中完成程序的退出。窗口二: 定義查詢工具常量和一個(gè)用于查詢顯示的對(duì)象京變量。在Private Sub Form_Load()過(guò)程中創(chuàng)建用戶自定義的查詢工具,更新窗體中的控件。在Private Sub Form_Resize()過(guò)程完成:當(dāng)放大窗口時(shí),地圖與控件能充滿整個(gè)屏幕。在Private Sub Map2_ToolUsed(ByVal ToolNum As Integer, ByVal X1 As Double, ByVal Y1 As Double, ByVal X2 As Double, ByVal Y2 As Double, ByVal Distance As Double, ByVal Shift As Boolean, ByVal Ctrl As Boolean, EnableDefault As Boolean)過(guò)程中完成用戶自定義工具的響應(yīng)過(guò)程。第五章 主要代碼設(shè)計(jì)1.Private Sub Form_Load()過(guò)程中完成:活動(dòng)層的創(chuàng)建、建立ADO連接(連接屬性的設(shè)置)、打開(kāi)連接。 代碼如下:Private Sub Form_Load()‘新建圖層,圖層名為 cars,在空間數(shù)據(jù)結(jié)構(gòu)中位于第二層Set LyrMyLayer = (cars, , 2) Set = LyrMyLayer ‘將新圖層cars設(shè)置為活動(dòng)圖層Set Conn = New ‘建立ADO連接對(duì)象。Set Rs = New ‘建立ADO數(shù)據(jù)記錄對(duì)象Set Rs1 = New Set Comm = New = adUseClient = adModeUnknown = PROVIDER= MSDASQL。 amp。 DRIVER={SQL Server}。 amp。 SERVER=HUANGH。 amp。 DATABASE=BusInfo。 ‘設(shè)置ADO連接字段。 ‘打開(kāi)連接2.顯示過(guò)程Private Sub showbus(),完成數(shù)據(jù)庫(kù)訪問(wèn),并實(shí)現(xiàn)數(shù)據(jù)綁定,在地圖中顯示定點(diǎn)。Private Sub showbus()Dim str As StringDim f As ‘聲明一個(gè)圖元變量Dim fs As ‘聲明一個(gè)圖元集變量If CarNum 15 Then ‘叛斷車輛是否在監(jiān)控范圍 = Conn ‘進(jìn)行數(shù)據(jù)庫(kù)連接 = adOpenForwardOnly ‘進(jìn)行游標(biāo)類型設(shè)置str = bus amp。 CarNum Select * From bus amp。 CInt(CarNum) ‘查找相應(yīng)數(shù)據(jù)庫(kù)表 ‘移至最后的記錄,獲取最新數(shù)據(jù) (dx), (dy)Set f = (Pnt, ) ‘定義一個(gè)符號(hào)圖元Set fs = (f) ‘進(jìn)行數(shù)據(jù)綁定 ‘關(guān)閉記錄,以保證下次能打記錄連接Else ‘車輛不在監(jiān)控范圍Call DispLay ‘調(diào)用Display過(guò)程End IfEnd Sub3. 在Private Sub List1_Click()過(guò)程中當(dāng)選擇列表項(xiàng)時(shí),以所選為條件在數(shù)據(jù)庫(kù)的車輛信息表中查詢相關(guān)信息并在文本框中顯示車輛信息,并啟動(dòng)計(jì)時(shí)器、調(diào)用顯示過(guò)程Dim i As IntegerCarNum = + 1 ‘記憶車輛編號(hào)str1 = Bus amp。 CarNum = Conn ‘打開(kāi)記錄 Select * From Buses ‘進(jìn)行查詢 (BusNum= amp。 CInt(CarNum)) ‘查找所要的車輛信息 = True ‘打開(kāi)文本框,使其可以顯示相關(guān)信息 = True = True = bus amp。 (BusNum) ‘在文本框中顯示相應(yīng)的信息 = (Number) = (Name) (2) ‘通過(guò)刪除圖層的方法,刪除在該層中的所有圖元Set LyrMyLayer = (cars, , 2) ‘創(chuàng)建新圖層,用于顯示Set = LyrMyLayer ‘設(shè)為動(dòng)態(tài)圖層Call showbus ‘調(diào)用過(guò)程showbus = True ‘啟動(dòng)定時(shí)器,達(dá)到連續(xù)顯示功能End sub4.工具設(shè)置Private Sub Layercontrol_Click() ‘圖層控制菜單項(xiàng)響應(yīng) ‘調(diào)用MapX圖層集的圖層控制對(duì)話框,End SubPrivate Sub PanTool_Click() ‘漫游工具響應(yīng) = miPanTool ‘把Map對(duì)象的當(dāng)前工具設(shè)置為漫游工具的常量表達(dá)式End Sub其他工具以相似的方法完成。5.Private Sub Map2_ToolUsed(ByVal ToolNum As Integer, ByVal X1 As Double, ByVal Y1 As Double, ByVal X2 As Double, ByVal Y2 As Double, ByVal Distance As Double, ByVal Shift As Boolean, ByVal Ctrl As Boolean, EnableDefault As Boolean)Dim fs As ‘聲明圖元集對(duì)象Dim obj As Object ‘聲明地圖內(nèi)的一個(gè)對(duì)象Dim pt As New ‘聲明新的地圖內(nèi)的點(diǎn)If ToolNum SEARCH_POINT_TOOL Then ‘清除查詢結(jié)果列表Dim searchType As Integer ‘設(shè)置查詢類型If Shif And Not Ctrl ThensearchType = miSearchTypePartiallyWithinElseIf Ctrl And Not Shit ThensearchType = miSearchTypeEntirelyWithinElsesearchType = miSearchTypeCentroidWithinEnd IfEnd IfSelect Case ToolNumCase SEARCH_DISTANCE_TOOL Dim dist As Double dist = (X1, Y1, X2, Y2) ‘得到查詢距離 X1, Y1 ‘設(shè)置查詢開(kāi)始點(diǎn) Set fs = (pt, dist, miUnitMile, searchType)‘執(zhí)行查詢 For Each obj In fs ‘在查詢結(jié)果列表中加入查詢結(jié)果 amp。 id: amp。 Next If = True Then ‘如果用戶選擇了“在選擇集中加入查詢結(jié)果”菜單項(xiàng) fs ‘則將查詢到的特征集替換選擇集 End If Set pt = Nothing ‘清除對(duì)象變量 Set fs = Nothing Set obj = NothingCase SEARCH_RECTANGLE_TOOL Dim rc As New X1, Y1, X2, Y2 ‘設(shè)置查詢用的矩形 Set fs = (Rs, searchType) ‘指定查詢 For Each obj In fs ‘在查詢結(jié)果列表中加入查詢結(jié)果 amp。 id: amp。 Next If = True Then ‘如果用戶選擇了“在選擇集中加入查詢結(jié)果”菜單項(xiàng) fs ‘則將查詢到的特征集替換選擇集 End If Set pt = Nothing ‘清除對(duì)象變量 Set fs = Nothing Set obj = NothingCase SEARCH_FEATURE_TOOL Dim fly As Set fly = () ‘得到特征查詢圖層 X1, Y1 Set fs = (pt) ‘根據(jù)用戶單擊處,得到用戶希望在查詢中使用的特征 If 0 Then “如果找到特征 Set obj = fs(1) Else MsgBox No feature in collection ‘顯示一消息告訴用戶沒(méi)有找到特征 Exit Sub End If ‘查詢那些在選擇的特征內(nèi)的對(duì)象 Set fs = (obj, searchType) For Each obj In fs ‘在查詢結(jié)果列表框中加入查詢結(jié)果 amp。 id: amp。 Next If = True Then ‘如果用戶選擇了“在選擇集中加入查詢結(jié)果”菜單 fs ‘則將查詢到的特征替換選擇集 End If Set pt = Nothing ‘清除對(duì)象變量 Set fs = Nothing Set obj = NothingCase SEARCH_POINT_TOOL X1, Y1 ‘得到用戶單擊處點(diǎn) Set fs = (pt) ‘執(zhí)行查詢 For Each obj In fs ‘在查詢結(jié)果列表中加入查詢結(jié)果 amp。 id: amp。 Next If = True Then ‘如果用戶選擇了“要選擇集中加入查詢結(jié)果”菜單命令 fs ‘則將查詢到的特征集替換選擇集 End If Set pt = Nothing ‘清除對(duì)象變量 Set fs = Nothing Set obj = Nothing Case Else End Select End Sub其它VB代號(hào)略第六章 測(cè)試與總結(jié)6.1測(cè)試為了驗(yàn)證系統(tǒng)能完成預(yù)定有功能,進(jìn)行了一系統(tǒng)的測(cè)試。在測(cè)試過(guò)程中采用的方法為黑盒子測(cè)試的方法。