地理信息系統(tǒng)—ArcView用戶界面的自定義_第1頁
地理信息系統(tǒng)—ArcView用戶界面的自定義_第2頁
地理信息系統(tǒng)—ArcView用戶界面的自定義_第3頁
地理信息系統(tǒng)—ArcView用戶界面的自定義_第4頁
地理信息系統(tǒng)—ArcView用戶界面的自定義_第5頁
已閱讀5頁,還剩50頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、地理信息系統(tǒng)Ar 面的自定義第七章ArcView用戶界面的自定義ArcView自定義是指用戶通過調(diào)整ArcView的項目組件及其主菜單、按鈕條、工 具條、彈出式菜單的排列組合方式,以改變 ArcView用戶界面的基本外觀的交互式操作。ArcView的自定義操作有著自身特定的對話框,在對話框之內(nèi),用戶可以根據(jù)自己當(dāng)前研 究項目的特殊需要給用戶界面添加新的控制 項,也可以刪除自己不需要的或根本用不著的 控制項。此外,用戶也可以添加經(jīng)常使用的腳 本,使這些腳本能夠與新增控制項或者基本操 作事件(如打開、關(guān)閉一個文檔類型)相關(guān)聯(lián)。 另外您也可以簡單地將它們納入到您默認(rèn)的設(shè) 置中去。為自己使用方便而自定

2、義ArcView界面,您可以為每一種默認(rèn)類型(如:View. Table.Chart、Layout、Script、Project、Appl 等) 創(chuàng)建自定義設(shè)置,從而創(chuàng)建新的用戶界面。用戶所創(chuàng)建的自定義設(shè)置可以保存成一個 名為default.apr的默認(rèn)文檔文件。該文件被貯 存于用戶設(shè)定的HOME文檔目錄之下,每當(dāng) 用戶啟動ArcView應(yīng)用程序時,系統(tǒng)將會自動 讀取該文檔信息,并使其凌駕于系統(tǒng)默認(rèn)設(shè)置 文件之上,優(yōu)先生成用戶“自定義界面”。ArcView系統(tǒng)界面配置文件也取名為defaultapr,不過它被貯存于系統(tǒng)裝載路徑中 的etc文件夾之內(nèi),如果用戶當(dāng)前打開的項目 路徑之下沒有“用戶自

3、定義的default.apr文 件力則ArcView啟動時將自動讀取該系統(tǒng)配 置文件,生成標(biāo)準(zhǔn)的缺省ArcView界面。第一節(jié)自定義用戶界面如前所述,ArcView的“項目”實際上是 由一系列組件(如:View> Table> Chart等) 所組成的文檔集合。每一種組件或文檔都具有 相似的“圖形用戶界面”(英文縮寫:GUI), 各種類型“組件”的GUI都是由3種基本控制群組所組成,分別為:菜單欄、按鈕條、工具 條。使用ArcView所提供的簡單編程語言Avenue ,用戶可以對GUI進行修改。比如可以添加、刪除或整理組件,可以修改每一種控 制群組的屬性值,可以對每一個組件之下的所

4、 有“控制項”進行編輯。總之,ArcView可以 使用戶隨心所欲地創(chuàng)建一種符合自身需要的自 定義界面。實際上,用戶在進行自定義界面操作時并 不需要使用繁瑣的Avenue編程,通過雙擊 ArcView當(dāng)前界面中的按鈕條或工具條中的任 意空白區(qū),即可彈出一個能夠使您輕松完成全 部自定義工作的“自定義界面對話框”。(如圖7-1)圉7-1 田白白品里一、自定義界面對話框的內(nèi)容由圖71可見,ArcView的自定義界面對 話框分為3大功能區(qū):1、上部區(qū)包括兩個下拉列表框和三個操作按鈕。(1) “類型"(Type)下拉列表框:包括 Project > View、Table > Char

5、t > Layouts Script. Appl七個選項。如圖72左幅。(2) “種類"(Category)下拉列表框:99Type: | ProjectAppl;ProjectViewTableChartLayoutScriptCategory:MenusButtonsToolsI PopupsMenus圖7-2自定義對話框內(nèi)上區(qū)的兩個下拉列表框包括Menus nUIButtons Tools > Popups 四個選項。如圖72右幅所示。(3) “編輯"(Edit)按鈕: 單擊它,將會彈出一個“項目組件自定義”對話框。操縱對話框,可以控制ArcView項目

6、窗口中的組件類型及其排布方式,也可修改各 組件的名稱,比如:根據(jù)視圖的實際內(nèi)容,將 原來的名稱Viewl改為“世界地圖”,將另一 個View的復(fù)制件名稱改為“中國地圖(4) “重置” (Reset)按鈕:單擊它,則放棄當(dāng)前自定義編輯,恢復(fù)界 面的系統(tǒng)設(shè)置值。(5) “創(chuàng)建用戶默認(rèn)文件” (MakeDefault)按鈕:單擊它,則將用戶自定義的界面設(shè)置為'用 戶默認(rèn)文件”。文件名為:default.apr,保存在 $HOME用戶目錄之中。圖7-3項目組件自定義框2、中部區(qū)(控制編輯器)功能:重新組織圖形用戶界面(GUI)。用戶可以通過修改控制項來改變GUI的外表,配 合“描述區(qū)”下側(cè)提供

7、的三個按鈕:添加(New)、 刪除(Delete)、分隔(Separators),可以添加 新的控制項、刪除多余的項以及對控制項的水 平、垂直排列進行分組(通過插入空格實現(xiàn)水 平分組,通過插入一條水平線將垂直項目分 開)。3、底部區(qū)(屬性列表區(qū))位于整個對話框的底部,外形是一個二維 表格。表格動態(tài)反映出上述兩個區(qū)域?qū)?yīng)選項 的綜合屬性信息,這些屬性信息決定著ArcView圖形用戶界面的操作行為及外表。用鼠標(biāo)雙擊二維表的表行任意處,將彈出相應(yīng)的編輯對話框,通過對話框可以實現(xiàn)對表 內(nèi)各屬性項的屬性值的修改。由于表格內(nèi)各個 屬性值類型不同,雙擊則可能帶來三種結(jié)果:其一:如果該行屬性值反映的是“邏輯判

8、斷”(回答:是/否)型屬性信息,則雙擊的結(jié) 果將立即在“是/否” 之間進行變換(比如: 原來值為Ihre,則雙 擊后變?yōu)椤癴alse")。| Appl. G et E xt ensionWin.p pl. Initialize Chart.AreaGallery Chart. B-ar Gallery Chart. ColumnG aller Chart. Erase Chart ErasePoly Chart Find RL -l I J,L:L.New.rm r j EtXrr 1其二:如果該行屬性值是一種說明性胡字符串”信息,則雙擊之后,將彈出一個“字符 串”編輯框,在該框內(nèi)用

9、新設(shè)字符串信息取代 舊字符串信息之后,單擊“OK”即可完成編 改。其三:如果該行屬性信息是屬于“Avenue” 函數(shù)型的,則雙擊后將會彈出一個“腳本管理 器"(Script Manager),如圖7-4所示。用戶 根據(jù)需要可以在管理器的列表區(qū)選擇合適的腳 本類型,然后單擊“OK”確認(rèn)。綜合考慮各種控制項屬性,可將底部列表區(qū)的屬性設(shè)置功能概括如下:控制項可見與否?控制項是否活動?與按鈕或工具條相關(guān)的圖標(biāo)設(shè)定 與工具條相關(guān)聯(lián)的光標(biāo)形狀設(shè)定 出現(xiàn)于狀態(tài)欄的提示信息與控制項相關(guān)聯(lián)的幫助主題信息被特定控制項執(zhí)行的Avenue腳本。小結(jié):通過對用戶界面中的菜單、按鈕、工具條以及與每一種控制項相關(guān)

10、聯(lián)的Avenue 腳本的控制,用戶就被賦予一種仔細設(shè)置GUI 以滿足自己的特殊應(yīng)用項目需求的能力。這種 能力可以使用戶以其自置的用戶界面來取代系 統(tǒng)所提供的一成不變的應(yīng)用程序外表。二、ArcVlew項目的自定義窗口我們知道,ArcView的項目窗口是由左、右兩個窗格組成的。左窗格顯示了當(dāng)前項目的 所有組件類型,如:View、Table. Chart等等右窗格則顯示了左窗格被選中的某一組件所包 含的所有文檔列表。與Windows操作平臺的許多應(yīng)用程序窗口相似,您可以通過鼠標(biāo)拖拉的方法調(diào)節(jié)整個 窗口的大小,但與其它“雙窗格”式視窗不同 的是,您不能用同樣拖拉的方法改變ArcView 項目窗口中左窗

11、格的寬度,也就是說,不論項 目窗口的整體怎樣改變,顯示項目組件的左窗 格的寬度總是不變的1、改變ArcView項目窗口組件布局(包括調(diào)整左窗格的寬度)的方法(1)雙擊當(dāng)前視圖工具條或按鈕條的 任意空白處,或者從“項目”菜單中選 擇"自定義”(Customize),彈出一個 “自定義對話框”。(2) 在對話框上部區(qū)內(nèi)單擊“編輯”rm - r-r Xrzt l77t q 、 (Edit)按鈕,彈出“自定義項目類型” (Customize Types)對話框。圖 75(上 層為“窗口自定義對話框”,下層為以“Untitled”為名稱的項目窗口)在自定義對話框內(nèi),分別可以完成組件的“新建”、

12、"復(fù)制”、“刪除”、改變組件的相關(guān)屬 性(如:重命名組件標(biāo)題、改換組件圖標(biāo)、改 換“腳本關(guān)聯(lián)函數(shù)”等)、改變項目組件的排列 次序以及改變項目窗口左窗格寬度等編輯工 作。如果您選中了對話框右側(cè)上、下屬性表之 間的“立即在項目窗口中展示” (Show in Project Window)復(fù)選框,那么您在“自定義 對話框”內(nèi)所做的任何改變都會立即在當(dāng)前 “ArcView的項目窗口”中反映出來。2、“新建”(New)按鈕的作用“新建”允許用戶重新設(shè)置項目窗口左窗格內(nèi)的組件。單擊“新建”,ArcView將顯示出標(biāo)準(zhǔn)默認(rèn)類型的列表:Project、View> Table> Chart

13、、 Layout、Script、Appl;選定其中一種默認(rèn)類 型并單擊“OK”或者雙擊您想添加的默認(rèn)類 型名稱,ArcView自動生成一個新類型,并把 該組件的圖標(biāo)及其默認(rèn)名稱添加到對話框左側(cè) 的組件滾動欄的最上面,自動進入活動狀態(tài)。對于Appl、Project兩種組件來說,如果新建以前就已經(jīng)存在同種組件,則新生組件的 名稱后面自動加上1、2、3等數(shù)字后綴,以示 區(qū)別。新生組件的屬性值被置為“空”,可以進行“刪除”操作。如果想要該組件在項目窗口中顯示出來,則需要選定"Show in Project Window”復(fù)選框。在項目對話框內(nèi),新生組件將顯示于原有 同類組件之前,如果沒有同種

14、組件,則顯示于 組件展示區(qū)最上端。3、“復(fù)制"(Copy)按鈕的作用其功能是在對話框及當(dāng)前項目窗口中生成組件的復(fù)制品,與“新建”過程不同,“復(fù)制” 的結(jié)果將會在對話框中產(chǎn)生一個與原組件屬性 完全一致的新組件。單擊對話框左側(cè)項目組件列表中恰當(dāng)?shù)慕M 件圖標(biāo)選定您想復(fù)制的對象,使其高亮度顯示; 單擊“復(fù)制”按鈕,一個與原組件屬性相同的、 圖標(biāo)一致而名稱相仿(對于Project、AppI類 組件來說,復(fù)制品的名稱是在原組件名稱后順 次加上1、2、3等數(shù)字后綴)的新組件將出現(xiàn) 于組件列表最上面,且自動進入活動狀態(tài)。注意:組件“復(fù)制品”可以進行“刪除” 操作,而原項目組件如果內(nèi)含實質(zhì)性內(nèi)容的話,

15、 則不允許進行“刪除”操作。4、“刪除"(Delete)按鈕的作用單擊圖標(biāo),選定對話框左手邊滾動列表中的項目組件,使其高亮度顯示;單擊“刪除” 鈕,完成刪除操作。盡可能避免誤刪除,如果 不小心發(fā)生了誤操作,可以用“新建”按鈕配 合恢復(fù)原組件。也可用vCtrl+Z組合鍵撤消最 后一次操作,使原組件得以恢復(fù)。注意:您可以對“標(biāo)準(zhǔn)默認(rèn)類型”進行刪除或重新命名,但是下一次當(dāng)您裝載ArcView 時,它們將出現(xiàn)在項目窗口中,而且不論是對 系統(tǒng)默認(rèn)文件還是還是您自己目錄下的 Default.apr文件,結(jié)果都會一樣。另外,如果 項目包含被選擇用戶界面的任何文檔,那么“刪 除"按鈕將成為

16、灰色。5、項目窗口中的組件排序您可以使用鼠標(biāo)上下拖放的方法對對話框 左側(cè)滾動列表中的項目組件進行重新排序。您 也可以通過重排Avenue編程語言中的“項目 的VisibleGUIs列表”來達到同一目的。6、改變屬性表中的屬性值當(dāng)前活動組件的屬性是以二列表格的形式 出現(xiàn)在對話框的右側(cè)。通過雙擊屬性表行,您 可以改變屬性設(shè)置。對于那些包含項目名稱或是系統(tǒng)部件的屬 性項,雙擊將彈出一個相應(yīng)管理窗口,如圖標(biāo) 管理器、腳本管理器等等,您可以從管理器的 有效選項中去有針對性地進行選擇O對于那些包含有名稱或者標(biāo)題等字符串信 息的屬性表行來說,雙擊將彈出一個允許您輸 入字符串信息的窗口。如果要清除某一屬性項,

17、方法是先單擊選定它,然后使用Delete或Backspace鍵完成 操作。注意:所有的圖標(biāo)(Icon)屬性值都不允 許“清除”。最后還須注意兩點:一是右上方的屬性表 最好不要修改;二是為項目組件選擇的新圖標(biāo) 最好要具有象征意義。選擇圖標(biāo)的方法是:雙 擊右下側(cè)屬性表的Icon表行。三、GUI控制類型(Categary)的自定義操作如圖72右幅所示,圖形用戶界面的基本控制類型有4種,分別是:菜單、按鈕、工具、彈出式菜單。以下分別對該4種類型的自定義 操作方法做以論述。1、自定義菜單( Customizing Menus )(1)給 菜單欄添加 新菜單操作方法:在自定義對話框上部 的Categary

18、下拉列表中選擇"Memis",于是, 與選定“組件”相對應(yīng)的所有“主菜單及其菜 單項”將顯示于對話框中部的“控制編輯器面 板”之中(如圖7-6)o單擊面板下側(cè)的“NewMenu”按鈕,ArcView將在面板之中當(dāng)前選定菜單的右側(cè)新增一個名為“Menu”的空白主菜 單。注意如果添加前您選定的不是一個主菜單 而是一個菜單項,那么新建的主菜單將會出現(xiàn) 于整個主菜單序列的最右端。“Menu”是新增主菜單的系統(tǒng)默認(rèn)名稱, 用戶可以通過改變菜單的"Label屬性”來變 更新菜單名,方法是:雙擊對話框下部屬性表 內(nèi)的“Label”項調(diào)出字符串輸入替代框,用新 的菜單名稱字符串取

19、代系統(tǒng)默認(rèn)的“Menu”, 即可完成新菜單的換名工作。但要注意:如果您在輸入新的菜單名稱時還想同時為新菜單設(shè)置一個“快捷訪問鍵”,其方法是:在名稱字符串中想要設(shè)置為快捷鍵的字母之前加上一個 符號(參見圖7-6中部菜單顯示區(qū)的各個菜單項)。這樣,Arc View就會在新界面生成 時自動為該快捷訪問字母增加一個下劃線標(biāo) 識??旖萱I生成后,用戶可以通過彈擊AIt+ 字母組合鍵來快速訪問特定菜單。(2)給指定菜單添加菜單項(Menuitem)操作方法:選定一個主菜單或一個菜單項,單擊“新菜單項"(New Item)按鈕,ArcView 將會在當(dāng)前選定菜單或菜單項的下側(cè)增加一個 名為“Item

20、”的新菜單項。注意您每點擊一次按鈕,就會自上而下地新增一個“Item”。與新建"Menu”相類似,儂 Arc View GIS 3.2“Item”是系統(tǒng)給定新建菜 單項的默認(rèn)名稱。要改變其link Boject Windblew Project Ctrl+N名稱或為其設(shè)置快捷訪問鍵,操作方法與上述"Menu相似。Open ProjecL.Close ProjectSave Project Ctrl+S Save Project As.Extensions.Exit圖7寸文件下拉菜單中99(3)在兩個菜單項之間插入“分隔線"(Separator)。有時,為了將下拉菜

21、單項按功能進行分組,使菜單項分區(qū)一目了然,往往需要在菜單項之 間插入“分隔線”。方法是:選定其下側(cè)為另一 分組的特定菜單項,單擊“Separator”按鈕, 則面板之中當(dāng)前選擇項的下側(cè)將出現(xiàn)一個空 行,這樣當(dāng)自定義結(jié)果反映到ArcView項目界 面中的相應(yīng)下拉菜單項時,空行則顯示為一個 立體“分隔線”。如圖7-7的“文件”下拉菜單 所示。(4)改變主菜單或菜單項排列次序要改變主菜單的排列次序,方法是:鼠標(biāo)拖動主菜單向左或向右移動,直到理想位置后 松開鼠標(biāo)左鍵。要改變菜單項上下排列關(guān)系, 則需用鼠標(biāo)上下拖動,不過在此應(yīng)特別注意菜 單項位置的變化所引起的菜單下拉列表分組的 改變(分隔線位置的變化)

22、。(5)刪除多余的菜單或菜單項方法是:選定操作對象,彈擊Delete鍵。注意對“主菜單”的刪除操作將會引起其下所 屬的菜單項全部消失。2、自定義按 鈕(Customizing Buttons )(1)添加新 按鈕CaiejJW I Button?Moke Default圖7-8自定義按鈕及添加新按鈕視圖首先,在 “Category”下 拉列表中選定 “按鈕” (Buttons ),自定義對話框中部的“控制編輯器面板”中將隨 即展示出與項目組件相適用的所有系統(tǒng)默認(rèn)按 鈕類型。選定想要在其后添加新項目的對象按 鈕,單擊面板下側(cè)的“新建”(New)按鈕, ArcView自動在當(dāng)前選定按鈕右側(cè)生成一個

23、空 白的新按鈕,如圖78上幅(左起第二個為新 建按鈕)。由上圖的下部屬性表“Icon”行可見,新建按鈕的圖標(biāo)為“空白”(Empty)。如果您想 為其指定一個圖標(biāo),則須鼠標(biāo)雙擊該行,彈出 一個“圖標(biāo)管理器”(圖7-8下幅),之后單擊 選定管理器圖標(biāo)瀏覽區(qū)中符合您需求的理想圖 標(biāo),然后點“OK”鈕,完成圖標(biāo)設(shè)置。至于新建按鈕應(yīng)該具備什么樣的屬性,只有在進一步熟悉了 ArcView的控制項屬性配置知識之后,方可正確設(shè)定。(2)在按鈕之間插入“空格” (Separator)單擊“Separator”按鈕,可以在當(dāng)前按鈕 條內(nèi)選定的按鈕右側(cè)插入一個相當(dāng)于半個按鈕 寬度的“空格。利用Separator,用

24、戶可以將當(dāng)前按鈕條中的所有按鈕按照功能進行分組。(3)刪除一個按鈕或“空格先選定要刪除的對象,然后彈擊鍵盤中的Delete鍵即可。當(dāng)前對象被刪除后,其原來 位置右側(cè)的所有按鈕及空格將依次向左移動相 應(yīng)距離。(4)移動按鈕或空格操作方法與移動“菜單”或“菜單項的方 法基本一致。3、自定義工具條(Customizing Tools )ArcView工具條內(nèi)的所有工具實際上是屬 于“工具菜單”,也就是說,它是為了操作方便 而將當(dāng)前菜單欄中的某些常用菜單項設(shè)置成可 以使用鼠標(biāo)直接點擊的“按鈕”。,人-r- 口 2 FHiTFFl r(1)給工具條 添加新的工具菜單 項方法是:在自 定義對話框內(nèi)選定“組

25、件類型”及“控制類型(這里為Tools)”; 在已經(jīng)存在的工具列表中選定想要在其后增加 新項的“當(dāng)前工具項”,單擊下側(cè)的“工具菜單” (ToolMenu)按鈕。ArcView立即在當(dāng)前選項 的右側(cè)新增一個空白的“工具菜單按鈕”(如圖79所示,左起第二鈕為新建“工具”,其下側(cè)兩個空白鈕為連續(xù)點擊“Tool”兩次而生成的 “新建”下拉工具)。另外,給“空白新建工具”指定圖標(biāo)的方法與上述為“新建按鈕”指定圖標(biāo)的方法相同, 這里不再重復(fù)。(2 )給整個工具條或工具菜單添加一個新 “工具”方法與1相似,只是操作時要以“Tool” 按鈕取代“ToolMemi”按鈕。注意:只有新建的ToolMenu可以使用

26、 “Tool”創(chuàng)建下拉工具,系統(tǒng)原有的工具菜單 如果沒有被指定下拉工具條,那么用戶也不可 能為其自定義下拉工具。原有的或者是新建的 包含下拉工具條的“工具菜單”,在其右下角都 有一種很小的“黑色倒三角形”標(biāo)志。(3)刪除或移動一個工具或工具菜單項方法與自定義按鈕的相關(guān)方法一致。4、自定義彈出式菜單(Customizing Popups)ArcView的項目組件可以有彈出式菜單, 也可以沒有。除了需要在當(dāng)前活動文檔區(qū)域用 鼠標(biāo)右鍵單擊調(diào)用之外,彈出式菜單的大部分 項目與視圖菜單欄中的對應(yīng)項的功能是完全一 致的。彈出式菜單的主要特點是操作非常方便 快捷。雖然每一種用戶界面可能含有零到多個 Popu

27、ps,但在同一時間內(nèi)卻只有一個彈出式菜 單是活動的。缺省情況下,在彈出式菜單設(shè)置 區(qū),通常第一個,也就是最左邊的一個是當(dāng)前 活動的Popup。您可以在“顯示區(qū)”用鼠標(biāo)左 右拖動的方法來簡單地設(shè)置當(dāng)前活動項。您也 可以用Avenue腳本來完成同樣的工作(參見 本節(jié)稍后部分)。(1)向PopupSet編輯區(qū)添加新的彈出式 菜單首先在自定義對話框內(nèi)指定組件類型(Type)與控制項類型(Category Popup),ArcView自動將現(xiàn)存的與之相關(guān)的彈出式菜單顯示于“控制編輯器面板”中(如圖7-10)o 單擊下側(cè)的"New Popup”按鈕,ArcView則 將一個名為“Popup”的新

28、的彈出式菜單添加 于當(dāng)前選項的右側(cè)(參見右圖的面板顯示區(qū)的 兩個同名菜單)。新的彈出式菜單生成后,如果想要更換其名稱,則須在對話框下部的“屬性”表格內(nèi)雙 擊其“Label”表行,在隨即彈出的字符串輸入 框內(nèi)鍵入新的名稱,單擊“OK”確定。雖然 在GUI之中,彈出式菜單的“Label名稱”并 不顯示,但是您可以使用它來定義彈出式菜單 的內(nèi)容及其作用。(2)給指定的 彈出式菜單添加新 的菜單項(Menu Items )認(rèn)上一U在對話框的“控制編輯器面板”中,選定想要添加菜單項 的彈出式菜單,然后單擊下側(cè)的“新增項目(New Item)按鈕,ArcView自動在當(dāng)前彈出 式菜單下增加一個新的菜單項目

29、,注意每點擊 一下“按鈕”,將增加一個新項目。圖7-10彈 出式菜單列表區(qū)的最右側(cè)是在“Popup新建菜 單”之下連續(xù)增加的4個“Menu Items”的示 例,它們的默認(rèn)名稱均為“Item”,其中在第3 個與第4個Item之間還添加了一個“分隔線”(Separator )o新建的各個“Item”,其名稱都可以通過改變屬性表內(nèi)的aLabel屬性"值來變更。如果 想要在“新名稱字符串”中設(shè)置一個字母為快 捷鍵,則需要在該字母前添加一個字符 標(biāo)識,這樣,在圖形用戶界面生成后,就可以 使用vAlt+字母的組合鍵直接調(diào)用該菜單項。注意每一個菜單項,其快捷鍵字母都應(yīng)當(dāng)是“唯 一”的,不重復(fù)的。

30、(3)在“控制編輯器面板”中指定“活動的彈出式菜單方法是:選定想置其于活動狀態(tài)的彈出式菜單項,比如圖7-10中最右端的“Popup”圖7-11快捷菜單的新建項。用鼠標(biāo)左鍵將其拖拉 至顯示區(qū)最左端,釋放左鍵,則該"Popup” 將被新指定為彈出式菜單活動項。(4)給彈出式菜單項添加一個“分隔線”(Separator)添加水平“分隔線”可以將較多的菜單項 分成不同的邏輯群組。操作方法是:單擊選定 想要添加“分隔線”的上鄰菜單項,點擊"Separator"按鈕,則當(dāng)前選項之下被插入一 個“空行”,當(dāng)在GUI之中右鍵單擊調(diào)用該彈 出式菜單時,可以看到在該“空行”上下兩個

31、菜單項之間將出現(xiàn)一個立體“分隔線”(如圖7-11所不)。(5)刪除一個彈出式菜單或其菜單項方法是先選定要刪除的對象,然后彈擊Delete鍵。(6)移動彈出式菜單或其菜單項方法與移動“工具項”或“按鈕項”的方 法一致。(7)置另一個彈出式菜單為“活動菜單” (active )如前所述,您可以通過Avenue來完成缺省活動菜單的設(shè)置工作。舉例如下:假定您的視圖用戶界面包含3種彈出式菜單:一種支持普通功能,一種支持管理“城市 主題”的特殊功能,另一種支持管理“省區(qū)主 題”的特殊功能。在ArcView視圖運行時,您 想分3種情況分置活動菜單:當(dāng)“城市主題處于活動狀態(tài)時,置第二種彈出式菜單為“活 第三種

32、彈出式菜單為“活動菜單當(dāng)其它主題 處于活動狀態(tài)或當(dāng)前沒有主題在活動時,置普 通功能菜單(第一種)為“活動菜單”。以下是 一個腳本更新的例子,要求首先將普通功能的 彈出式菜單置為缺省設(shè)置,而其它為專門主題 服務(wù)的功能性彈出式菜單被冠于對應(yīng)的主題名 稱。動菜單當(dāng)“省區(qū)主題”處于活動狀態(tài)時,I一 一 國腳本示例:theView=av.GetActiveDocexitend if(activePopup=nil) thenelseself.SetActive(activePopup)end該更新腳本應(yīng)當(dāng)與ArcView的視圖用戶界 面彈出式菜單設(shè)置的變更事件相關(guān)聯(lián),并位于 下列相關(guān)設(shè)置語句之下:av.

33、FindGUI(uView59).GetPopups.SetUpda te(uviewPopup.update?,)第二節(jié)Avenue程序語言初步一、Avenue 導(dǎo)言Avenue是ArcView內(nèi)置的程序語言與開發(fā)環(huán)境。作為一種“面向?qū)ο蟮某绦蛘Z言。可以完成ArcView所有的對象(包括請求)的 管理工作??梢哉f,ArcView的圖形用戶界面 及其所有的文檔操作與運行都離不開Avenue 的語言環(huán)境與Avenue腳本文檔。Avenue有許多用途。如前所述,您可以使用Avenue語言去自定義ArcView的工作界面 與工作方式。您可以創(chuàng)建您所需要的GUI,為 交互的圖形控制項設(shè)置內(nèi)部屬性。您甚

34、至可以 用Avenue語言開發(fā)出一種基于GUI的完整的 應(yīng)用程序。此外,您還可以將已經(jīng)編寫好的Avenue 腳本與諸如打開或關(guān)閉一個項目一類的其它操 作事件相鏈接。二、面向?qū)ο蟪绦蛟O(shè)計語言的基本原理近年來,面向?qū)ο蟮南到y(tǒng)與程序語言普遍受歡迎。描述一種“面向?qū)ο蟮沫h(huán)境”的最好 的方式也許就是將其與其他更多的傳統(tǒng)程序設(shè) 計環(huán)境相比較。在如同F(xiàn)ortran或C的傳統(tǒng)程 序語言環(huán)境之中,不同語言的差別主要表現(xiàn)在“數(shù)據(jù)”與展示數(shù)據(jù)的“動作”之間。這些以 編程工具建造的應(yīng)用程序經(jīng)常分享著一個強大 的中心焦點。這樣,在那些象“速算表”或者“Dbase” 管理系統(tǒng)的應(yīng)用程序之間,一個明顯的區(qū)別就 表現(xiàn)在應(yīng)用程

35、序與被應(yīng)用程序操縱的數(shù)據(jù)之 間。然而,在一個“面向?qū)ο蟮南到y(tǒng)”之中,一切都被視作“對象數(shù)據(jù)是對象、應(yīng)用程序 是對象,甚至連用戶界面都被看成是一個統(tǒng)一 的系統(tǒng)環(huán)境之中的對象。在這樣的程序語言之 中,描述數(shù)據(jù)的對象與那些專用于數(shù)據(jù)建模的 工具對象之間的區(qū)別之不過是被指定的內(nèi)部屬 性不同罷了。在這種系統(tǒng)中,各個對象之間的關(guān)系由一個正式建立的等級分類所圈定。一個類就是一 個由一些具有相似的普通屬性的對象所構(gòu)成的 模板。一個孤立的對象就是一個類的特例。比 如:一個項目可能包含許多“視圖”,而其中的 每一個視圖就是一個“視圖類”的特例。因為“類”是對象,所以它們可以依次與 更高級的或者是更多的同級類發(fā)生聯(lián)

36、系(如圖7-12)o這樣,視圖類就應(yīng)是比其自身更普遍的文檔類的成員,而文檔類的主要成員除過“視 圖類”之外,還可能包括“表格類、“圖表類”、“圖面配置類”以及“腳本編輯器”等。所有 文檔類的成員都繼承著“文檔總類”的通用屬 性。而組成類的單獨成員則繼承著將它們統(tǒng)一 在一起的附加屬性?!皩ο蟆蓖ㄟ^相互傳遞“請求”而相關(guān)?!罢埱蟆笔且环N機制,它可以控制一個對象。如打開視圖的請求、返回一個對象的相關(guān)信息 的請求、獲得當(dāng)前活動視圖的請求等等。以“獲 得當(dāng)前活動視圖”的請求為例來說明:該請求 將作為一個對象被發(fā)送到Avenue中,結(jié)果返 回了另一個對象,該對象就是包含了視圖名稱 的字符串。一個Avenu

37、e語句是由“對象”以及發(fā)送給對象的“請求”所構(gòu)成的。返回的對象既可 以被貯存到一個變量之中,也可以作為另一種“請求”再次傳遞出去。當(dāng)然,“請求”也可以 接受“條件”,只有當(dāng)條件符合時才會返回一個 對象。比如:一種只是為了 “尋找一個具有指 定名稱的主題”的請求,就必然要接受一個“條 件”。三、Avenue腳本一個Avenue腳本,實質(zhì)上就是一種由一 系列Avenue語句組成的,能夠完成特定任務(wù) 的計算機程序。下面討論兩個Avenue腳本的 例子:例一:與“放大”(Zoom In)菜單項相關(guān) 聯(lián)的Avenue腳本程序背景:從視圖菜單欄內(nèi)的“視圖”菜 單中選取“放大”(Zoom In)項,其對應(yīng)的

38、Avenue腳本控制語句如下:theView=av.GetActiveDoctheView.GetDisplay.ZoomIn(125)第一個語句是將"請求"GetActiveDoc返回的“對象” av指派給變量theView。第二個語句的意思是:將GetDisplay.對活動文檔的“請求”作為返回“對象”,順序傳遞 給“Zoomln”請求(注意:活動文檔可以返回 當(dāng)前視圖能夠被拖拉選中的任意屏幕區(qū)域)。放 大(Zoomln)請求會將語句給定的數(shù)值作為其 操作的依據(jù)條件,上例中數(shù)值為125。這樣,在以上兩行腳本中,活動視圖的范圍被“對象”確定,而且由指定的125%的數(shù) 值因

39、子而產(chǎn)生最終的縮放結(jié)果。另一方面,用戶也可以通過單擊“視圖工 具條”中的“放大”工具來完成相同的縮放操 作。對于縮放所依據(jù)的條件,您要么在視圖中 用“放大”工具拖拉出一個您所希望的矩形放 大框,要么直接用鼠標(biāo)點擊出一個放大中心點, 兩種條件與方式都可滿足視圖放大的需要。如108果在一個Avenue腳本中要同時照顧兩種方式,則相應(yīng)腳本如下:例二:與“放大”工具相關(guān)聯(lián)的Avenue腳本theView=av.GetActiveDoc r=theView.ReturnUserRectd=theView.GetDisplay if(r< >nil) then d.ZoomToRect(r)e

40、lse d.ZoomIn(125)d.panTo(d.ReturnUserPoint) end與上一個腳本一樣,本腳本的第一句的功能也是返回當(dāng)前活動文檔的名稱,并將其指派 給變量theView;第二句的功能是:將用戶在 視圖中拖拉出的矩形框作為輸入值,一個ReturnUserRect請求被建立于活動視圖之上,并將該矩形的范圍值指派給變量r;第三句使 用GetDisplay請求獲取活動視圖的顯示范圍,109然而該句與上一個腳本第三句的只是傳遞一個 放大請求不同的是,它將顯示區(qū)范圍值直接指 派給變量d。從第4句開始到第8句,本腳本使用了“條件語句”。首先考察指派給變量r的值,如果其 值不等于0 (

41、例如當(dāng)用戶在視圖中拖拉出一個 合法的矩形框時),那么,該矩形的范圍值將作 為ZoomtoRect請求的依據(jù)條件,也就是變量如果用戶沒有在當(dāng)前視圖中拖拉出一個合 法的矩形框(比如他只是在視圖顯示區(qū)內(nèi)單擊 了一下鼠標(biāo)左鍵),那么r的值將等于0,這樣 將直接導(dǎo)致else及其以下語句被執(zhí)行。在此情 況下,Zoomln請求再次依據(jù)“125”的條件去 運行,使當(dāng)前顯示區(qū)范圍(d變量)圍繞中心 點按125%的比例而放大。結(jié)果,顯示區(qū)范圍 也自然被定位于視圖中心或者將用戶原來單擊 的那一點推移至放大后的視圖中央。第8句實 質(zhì)上就是將從ReturnUserPoint對當(dāng)前顯示區(qū)(d變量)的請求中返回的點位作為“

42、PanTo請求的作用點。這樣,在這4個條件語句中,當(dāng)前活動文 檔被確定,而且縮放顯示通過兩種方式之一來 完成,即要么依據(jù)用戶在視圖中指定的矩形區(qū) 域,要么依據(jù)在視圖顯示區(qū)指定的一個點位來 縮放。四、Avenue的語法本節(jié)不想對Avenue的語法做過多的描述, 只是為了使讀者順利讀懂Avenue腳本而提供 了一個快捷的語法指導(dǎo)。1、“對象”與“請求”混合語句的書寫方法如前所述,在Avenue程序語言中一般都包含著較多的用于發(fā)送“對象”的“請求”。給 對象發(fā)送“請求”的最普通格式就是在描述“對 象”的字串之后緊跟一個“請求”字串,而兩 者之間用“句號”或“圓點號”分隔。比如: 在 theView.

43、GetDisplay 語句片斷中,theView 就是一個“對象",而GetDisplay則是給該對 象發(fā)出的操作“請求,在同一個Avenue語句中,允許同時使用多個“請求”,但“請求”與“請求”之間也必 須以“圓點號”相分隔。如上例之中就有這么 一個語句:theView.GetDisplay.ZoomIn(125)2、變量賦值語句的寫法在Avenue語句中,指派給一個變量的“對 象”必須使用“等號”。比如:theView=GetActiveDoc就是一個賦值語句,它表示要將GetActiveDoc請求返回的對象直接 指派給變量the Vie Wo注意:如果一個字符串被指派給一個變量

44、, 則該字符串必須用雙引號括起來。如:賦值語 句 theProv="陜西省"、theCont=wChina59 o3、語句中大、小寫的約定雖然Avenue腳本的執(zhí)行不區(qū)分大小寫, 但為了便于檢查,或者使自己或別人能順利讀 懂語句,在腳本的實際寫作中仍需要尊人一定 的習(xí)慣:即“變量名”以小寫字母開頭,而“對 象”與“請求”則以大寫字母打頭。4、括號的使用在Avenue腳本中,所有給“請求”提供數(shù)值依據(jù)的“條件”條件語句中的“條件”括號”括起來。上例中的if(rv >nil)then語句就是如此。5、“注釋”信息的書寫語法規(guī)定:腳本之中的所有“注釋”信息,不論是單獨成行的

45、,還是跟隨在Avenue語句 之后,都必須以“單引號”或“單撇號”打頭。如下例:'This entire Line is a comment.(英文字 串獨立成行)theView=GetActiveDoc6Get theactiveview document.(英文字串加在語句之后)'上行語句意欲“將獲得的視圖文檔指派 給變量theView”。(漢字字串獨立成行) 五、Avenue腳本的創(chuàng)建與調(diào)試1、生成Avenue腳本的步驟 共分5步。即:(1)調(diào)用“腳本編輯器”,輸入Avenue 語句;(2)匯編(Compile)腳本(3)調(diào)試(Debug)腳本(4)運行(Run)腳本(5

46、)將腳本與任意的控制項(Control)鏈接2、創(chuàng)建腳本的方法雙擊ArcView項目窗口左窗格中的“腳本(Script)圖標(biāo),或者先單擊該圖標(biāo),然后再 點擊窗口頂部的“新建”(New)按鈕。圖7-12新建腳本的方法及“編輯器”117兩種操作方法都將彈出一個“腳本編輯器窗口”(Script Window),如圖 7-13 內(nèi)框。注意:ArcView的腳本組件與其它任何組 件一樣,都有可能包含多個(腳本)文檔,您 只能一次選定一個活動文檔,并對它進行各種 操作。當(dāng)一個腳本編輯窗口成為當(dāng)前活動文檔 時,ArcView的圖形用戶界面就會轉(zhuǎn)換成適應(yīng) 該腳本各種操作的相應(yīng)界面(參見圖7-12大窗 口上部G

47、UI)o該界面也會因?qū)δ_本操作的目 的的不同而不同。圖714是針對腳本的GUI 菜單的各控制項示例。由圖可見,“編輯”菜單設(shè)置了與腳本編輯有關(guān)的實用控制項。而“腳本”菜單則視腳本 創(chuàng)建步驟的不同其可用選項也有所不同。圖的中幅為腳本輸入與編改階段的菜單視圖,右幅 則是當(dāng)中幅菜單的“匯編”(Compile)被選定、 腳本創(chuàng)建進入?yún)R編(編譯)階段時的菜單視圖, 注意圖中可用菜單控制項的增加情況。此外,Avenue腳本既可以直接在“腳本編Script Window JUndoCtrkZEind.贏螂F3Replace.CuiCtrlfXCopyCtrkCEasteDrkVSelect AllDelet

48、e Left Ctrl+UCommentBemove Comment目Window HelpWiridov-j HefoEroperties.Eroperties.Compile§.tep嬲加nF5StepF8BunF5TaggiiBjeakpaimClear All Breakpoints 屏則整詢膽晚“廖震Toggle BreakpointClear fill BreakpointExamine Variables. Ctrl+ELoad System Script.Load 工ext File.Write Text File.Load System Script.Load I

49、ext File.鬼rite Text File.Embed ScriptScript.Embed Script “后岫翅口加電, _“ rtLrt r A ”輯器”內(nèi)通過輸入而新生,也可以從一個文本 文件或已經(jīng)存在于ArcView之中斷系統(tǒng)腳本” 中導(dǎo)入,導(dǎo)入的工具分別為“腳本菜單”中的“Load System Script” 以及"Load Text File”。 (參見圖713中、右幅)一般來說,為了進一步熟悉Avenue腳本Q Seriptl|一the View - av . GetAct iveDcc.f ound =p = theVieu . Get Display Re

50、 t u r n User Po i ri t for each t m t he V i cv. Get Ac 11 vdlicnosif ( (t .HasActribuces) and (t.GetHotField < > nil) ) then rezs = t FindByPoint(p) for each rcc m xccsthsField = t .GecHotFieid found - truetheVal = t .RGCurnValuGStringC theFiGid.G0tNarriGz rez) av .Run(t.fetHotSeriptNamez th

51、eVai) end ©nd end if (not found) thenSysteM.Bsepund«lI 2_P皮1 7_1匚=國山一入口右的內(nèi)部組織及語法約定,用戶可以隨時通過 "Load System Script”菜單調(diào)出系統(tǒng)已有的腳 本進行分析研究。圖7-14是一個調(diào)出的 “View.HotLink腳本”的實例。G SeriptltheView - av. GetAct iveDcc/f ound = faloo p = theVieu.GetDisplay ReturnnserPointfor each 匕 in t he V i cv. Get A

52、c 11 vcllicneif ( (t .HasActribuces) and (t. GetHotField < > nil) ) then reza = t FindByFoint(p) for each rcc in xccg thsField = c .GecHotFieid found - true th©Vai = t .RGturnVaLuGStringC theFiGld.GstNarriGz roz) av.Run(t. fetKotScriptNarnez the Vai) end©nd end if (not found) then Sy

53、steM.Bsepund"I 2_F團>7 1 /】田山一人口右(三)對成熟腳本進行“匯編”(Compile) 當(dāng)一個Avenue腳本編輯完成后,使用按 鈕條中的“匯編”(Compile)按鈕,或者調(diào)用118“腳本”主菜單下的“匯編”(Compile)菜單 項,均可以將當(dāng)前腳本轉(zhuǎn)換成一種可執(zhí)行格式。注意:腳本只有在被執(zhí)行了 “匯編”(編譯)之后,才能進一步執(zhí)行“運行”、“鏈接”等操 作。否則,后續(xù)的任何操作選項或按鈕都是“不 可選”(灰色)的。3、腳本“調(diào)試” (Debug)及“運行又Rim)在大多數(shù)情況下,用戶新編的腳本在“運行”時,會難免有某些錯誤出現(xiàn)。比如:缺少 的執(zhí)行的

54、“條件”、變量書寫有誤、在系統(tǒng)內(nèi)置的文檔類中找不到用戶鍵入的某些對象(如"請檢查及修正錯誤的最好的辦法是不斷調(diào)用“調(diào)試"工和“運行”操作。其中,“運行”回國囹四畫圖 7-15操作會將腳本的錯誤按順序依次顯示出來。而 “調(diào)試”則有幾個實用按鈕工具可以借用。(如 圖715,其中,左一為“編譯”鈕;左二為“運 行”鈕)。1、“分步”(Step)按鈕(左起第三鈕)其功能是使用戶可以按次序分步瀏覽和檢查腳本語句。每單擊一次該鈕,黃色高亮度顯 示區(qū)向后跳動一個“對象”。2、“套索定位斷點“(Toggle Breakpoint) 按鈕(右起第二鈕)其功能是在當(dāng)前腳本中設(shè)置運行“斷點”。即

55、控制“運行查錯”至斷點處結(jié)束。3、“檢查變量”(Examine Variables)按鈕(右起第一鈕)功能是調(diào)出腳本中所有變量的列表窗(圖0KtheViewGlobalsVariables: LocalsLocalsrm7-16),在窗口中逐一檢查變量名稱及其書寫語 法。窗口提供了一種迅速排列腳本變量并即時 修正其錯誤的方式。修改無誤后單擊“OK” 確定。131最后需要強調(diào):只有當(dāng)一個腳本能夠在腳本窗口中順利運行語法檢查沒有報錯時,ry ,r tS? tZf建立腳本與“項目”事件的“鏈接該腳本才可以與任意一個已經(jīng)存在的或者用戶 新建的ArcView控制項相關(guān)聯(lián),使其真正成為 系統(tǒng)的一部分。六、

56、腳本與ArcView對象的“鏈接” (Link)在ArcView的項目 窗口屬性管理中,單擊 選中“項目”菜單下的“屬性”項,打開“項目屬性對話框”(如圖7-17)o在該對話框中,您可以將您創(chuàng)建的或系 統(tǒng)原有的腳本與項目的“開始”(Startup)及 “關(guān)閉"(ShutDown)事件相鏈接。也就是說, 當(dāng)項目被啟動時,在執(zhí)行默認(rèn)文件之前, ArcView首先打開“開始腳本”;當(dāng)項目被“關(guān) 閉”時,ArcView自動執(zhí)行您指定的“關(guān)閉腳 本建立“鏈接”的方法是:在圖7-18的“Startup”和“ShutDown”文本輸入框內(nèi)輸 入您想要設(shè)置的腳本名稱?;蛘邌螕粑谋据斎?框右側(cè)的腳本打開按鈕,也可以彈出“腳本管 理器列表”,在列表中找到并雙擊您想設(shè)置的腳 本即可。注意:在這里,人工輸入的腳本名稱必須 完整有效,同時該腳本還必須事先被納入到當(dāng) 前項目目錄的腳本管理器列表中去。另外,項 目及腳本的存貯目錄也可以在圖7-18所示“項 目屬性對話框”的“工作目錄” (WorkDirectory)文本框中重新設(shè)置。2、建立腳本與控制項的“鏈接”在本章前面所述的“自定義ArcView”部 分中,您已經(jīng)了解了怎樣用“自定義窗口”設(shè)置自己的圖形用戶界面。實際上,您除了可以 工具的內(nèi)部“控制項”

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論