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

下載本文檔

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

文檔簡介

PAGEPAGE78第七章ArcView用戶界面的自定義ArcView自定義是指用戶通過調(diào)整ArcView的項(xiàng)目組件及其主菜單、按鈕條、工具條、彈出式菜單的排列組合方式,以改變ArcView用戶界面的基本外觀的交互式操作。ArcView的自定義操作有著自身特定的對話框,在對話框之內(nèi),用戶可以根據(jù)自已當(dāng)前研究項(xiàng)目的特殊需要給用戶界面添加新的控制項(xiàng),也可以刪除自己不需要的或根本用不著的控制項(xiàng)。此外,用戶也可以添加經(jīng)常使用的腳本,使這些腳本能夠與新增控制項(xiàng)或者基本操作事件(如打開、關(guān)閉一個文檔類型)相關(guān)聯(lián)。另外您也可以簡單地將它們納入到您默認(rèn)的設(shè)置中去。為自己使用方便而自定義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)界面配置文件也取名為default.apr,不過它被貯存于系統(tǒng)裝載路徑中的etc文件夾之內(nèi),如果用戶當(dāng)前打開的項(xiàng)目路徑之下沒有“用戶自定義的default.apr文件”,則ArcView啟動時將自動讀取該系統(tǒng)配置文件,生成標(biāo)準(zhǔn)的缺省ArcView界面。第一節(jié)自定義用戶界面如前所述,ArcView的“項(xiàng)目”實(shí)際上是由一系列組件(如:View、Table、Chart等)所組成的文檔集合。每一種組件或文檔都具有相似的“圖形用戶界面”(英文縮寫:GUI),各種類型“組件”的GUI都是由3種基本控制群組所組成,分別為:菜單欄、按鈕條、工具條。使用ArcView所提供的簡單編程語言Avenue,用戶可以對GUI進(jìn)行修改。比如可以添加、刪除或整理組件,可以修改每一種控制群組的屬性值,可以對每一個組件之下的所有“控制項(xiàng)”進(jìn)行編輯??傊?,ArcView可以使用戶隨心所欲地創(chuàng)建一種符合自身需要的自定義界面。實(shí)際上,用戶在進(jìn)行自定義界面操作時并不需要使用繁瑣的Avenue編程,通過雙擊ArcView當(dāng)前界面中的按鈕條或工具條中的任意空白區(qū),即可彈出一個能夠使您輕松完成全部自定義工作的“自定義界面對話框”。(如圖7-1)圖7-1用戶自定義界面對話框一、自定義界面對話框的內(nèi)容圖7-1用戶自定義界面對話框由圖7-1可見,ArcView的自定義界面對話框分為3大功能區(qū):上部區(qū)包括兩個下拉列表框和三個操作按鈕?!邦愋汀保═ype)下拉列表框:包括Project、View、Table、Chart、Layout、Script、Appl七個選項(xiàng)。如圖7-2左幅。“種類”(Category)下拉列表框:圖7-2自定義對話框內(nèi)上區(qū)的兩個下拉列表框包括Menus、Buttons、Tools、Popups四個選項(xiàng)。如圖7-2右幅所示。圖7-2自定義對話框內(nèi)上區(qū)的兩個下拉列表框“編輯”(Edit)按鈕:單擊它,將會彈出一個“項(xiàng)目組件自定義”對話框。操縱對話框,可以控制ArcView項(xiàng)目窗口中的組件類型及其排布方式,也可修改各組件的名稱,比如:根據(jù)視圖的實(shí)際內(nèi)容,將原來的名稱View1改為“世界地圖”,將另一個View的復(fù)制件名稱改為“中國地圖”等等。如圖7-3。“重置”(Reset)按鈕:您可以改變屬性設(shè)置。對于那些包含項(xiàng)目名稱或是系統(tǒng)部件的屬性項(xiàng),雙擊將彈出一個相應(yīng)管理窗口,如圖標(biāo)管理器、腳本管理器等等,您可以從管理器的有效選項(xiàng)中去有針對性地進(jìn)行選擇。對于那些包含有名稱或者標(biāo)題等字符串信息的屬性表行來說,雙擊將彈出一個允許您輸入字符串信息的窗口。如果要清除某一屬性項(xiàng),方法是先單擊選定它,然后使用<Delete>或<Backspace>鍵完成操作。注意:所有的圖標(biāo)(Icon)屬性值都不允許“清除”。最后還須注意兩點(diǎn):一是右上方的屬性表最好不要修改;二是為項(xiàng)目組件選擇的新圖標(biāo)最好要具有象征意義。選擇圖標(biāo)的方法是:雙擊右下側(cè)屬性表的Icon表行。三、GUI控制類型(Categary)的自定義操作如圖7-2右幅所示,圖形用戶界面的基本控制類型有4種,分別是:菜單、按鈕、工具、彈出式菜單。以下分別對該4種類型的自定義操作方法做以論述。圖7-6自定義菜單示例1、自定義菜單(CustomizingMenus)圖7-6自定義菜單示例給菜單欄添加新菜單操作方法:在自定義對話框上部的Categary下拉列表中選擇“Menus”,于是,與選定“組件”相對應(yīng)的所有“主菜單及其菜單項(xiàng)”將顯示于對話框中部的“控制編輯器面板”之中(如圖7-6)。單擊面板下側(cè)的“NewMenu”按鈕,ArcView將在面板之中當(dāng)前選定菜單的右側(cè)新增一個名為“Menu”的空白主菜單。注意如果添加前您選定的不是一個主菜單而是一個菜單項(xiàng),那么新建的主菜單將會出現(xiàn)于整個主菜單序列的最右端。“Menu”是新增主菜單的系統(tǒng)默認(rèn)名稱,用戶可以通過改變菜單的“Label屬性”來變更新菜單名,方法是:雙擊對話框下部屬性表內(nèi)的“Label”項(xiàng)調(diào)出字符串輸入替代框,用新的菜單名稱字符串取代系統(tǒng)默認(rèn)的“Menu”,即可完成新菜單的換名工作。但要注意:如果您在輸入新的菜單名稱時還想同時為新菜單設(shè)置一個“快捷訪問鍵”,其方法是:在名稱字符串中想要設(shè)置為快捷鍵的字母之前加上一個“&”符號(參見圖7-6中部菜單顯示區(qū)的各個菜單項(xiàng))。這樣,ArcView就會在新界面生成時自動為該快捷訪問字母增加一個下劃線標(biāo)識??旖萱I生成后,用戶可以通過彈擊<Alt+字母>組合鍵來快速訪問特定菜單。給指定菜單添加菜單項(xiàng)(Menuitem)操作方法:選定一個主菜單或一個菜單項(xiàng),單擊“新菜單項(xiàng)”(NewItem)按鈕,ArcView將會在當(dāng)前選定菜單或菜單項(xiàng)的下側(cè)增加一個名為“Item”的新菜單項(xiàng)。注意您每點(diǎn)擊一次按鈕,就會自上而下地新增一個“Item”。圖7-7文件下拉菜單中的“分隔線”與新建“Menu”相類似,“Item”是系統(tǒng)給定新建菜單項(xiàng)的默認(rèn)名稱。要改變其名稱或?yàn)槠湓O(shè)置快捷訪問鍵,操作方法與上述圖7-7文件下拉菜單中的“分隔線”在兩個菜單項(xiàng)之間插入“分隔線”(Separator)。有時,為了將下拉菜單項(xiàng)按功能進(jìn)行分組,使菜單項(xiàng)分區(qū)一目了然,往往需要在菜單項(xiàng)之間插入“分隔線”。方法是:選定其下側(cè)為另一分組的特定菜單項(xiàng),單擊“Separator”按鈕,則面板之中當(dāng)前選擇項(xiàng)的下側(cè)將出現(xiàn)一個空行,這樣當(dāng)自定義結(jié)果反映到ArcView項(xiàng)目界面中的相應(yīng)下拉菜單項(xiàng)時,空行則顯示為一個立體“分隔線”。如圖7-7的“文件”下拉菜單所示。改變主菜單或菜單項(xiàng)排列次序要改變主菜單的排列次序,方法是:鼠標(biāo)拖動主菜單向左或向右移動,直到理想位置后松開鼠標(biāo)左鍵。要改變菜單項(xiàng)上下排列關(guān)系,則需用鼠標(biāo)上下拖動,不過在此應(yīng)特別注意菜單項(xiàng)位置的變化所引起的菜單下拉列表分組的改變(分隔線位置的變化)。刪除多余的菜單或菜單項(xiàng)方法是:選定操作對象,彈擊<Delete>鍵。注意對“主菜單”的刪除操作將會引起其下所屬的菜單項(xiàng)全部消失。圖7-8自定義按鈕及添加新按鈕視圖2、自定義按鈕(CustomizingButtons)圖7-8自定義按鈕及添加新按鈕視圖(1)添加新按鈕首先,在“Category”下拉列表中選定“按鈕”(Buttons),自定義對話框中部的“控制編輯器面板”中將隨即展示出與項(xiàng)目組件相適用的所有系統(tǒng)默認(rèn)按鈕類型。選定想要在其后添加新項(xiàng)目的對象按鈕,單擊面板下側(cè)的“新建”(New)按鈕,ArcView自動在當(dāng)前選定按鈕右側(cè)生成一個空白的新按鈕,如圖7-8上幅(左起第二個為新建按鈕)。由上圖的下部屬性表“Icon”行可見,新建按鈕的圖標(biāo)為“空白”(Empty)。如果您想為其指定一個圖標(biāo),則須鼠標(biāo)雙擊該行,彈出一個“圖標(biāo)管理器”(圖7-8下幅),之后單擊選定管理器圖標(biāo)瀏覽區(qū)中符合您需求的理想圖標(biāo),然后點(diǎn)“OK”鈕,完成圖標(biāo)設(shè)置。至于新建按鈕應(yīng)該具備什么樣的屬性,只有在進(jìn)一步熟悉了ArcView的控制項(xiàng)屬性配置知識之后,方可正確設(shè)定。(2)在按鈕之間插入“空格”(Separator)單擊“Separator”按鈕,可以在當(dāng)前按鈕條內(nèi)選定的按鈕右側(cè)插入一個相當(dāng)于半個按鈕寬度的“空格”。利用Separator,用戶可以將當(dāng)前按鈕條中的所有按鈕按照功能進(jìn)行分組。(3)刪除一個按鈕或“空格”先選定要刪除的對象,然后彈擊鍵盤中的<Delete>鍵即可。當(dāng)前對象被刪除后,其原來位置右側(cè)的所有按鈕及空格將依次向左移動相應(yīng)距離。(4)移動按鈕或空格操作方法與移動“菜單”或“菜單項(xiàng)的方法基本一致。3、自定義工具條(CustomizingTools)ArcView工具條內(nèi)的所有工具實(shí)際上是屬于“工具菜單”,也就是說,它是為了操作方便而將當(dāng)前菜單欄中的某些常用菜單項(xiàng)設(shè)置成可以使用鼠標(biāo)直接點(diǎn)擊的“按鈕”。圖7-9給工具條添加新工具項(xiàng)(1)給工具條添加新的工具菜單項(xiàng)圖7-9給工具條添加新工具項(xiàng)方法是:在自定義對話框內(nèi)選定“組件類型”及“控制類型(這里為Tools)”;在已經(jīng)存在的工具列表中選定想要在其后增加新項(xiàng)的“當(dāng)前工具項(xiàng)”,單擊下側(cè)的“工具菜單”(ToolMenu)按鈕。ArcView立即在當(dāng)前選項(xiàng)的右側(cè)新增一個空白的“工具菜單按鈕”(如圖7-9所示,左起第二鈕為新建“工具”,其下側(cè)兩個空白鈕為連續(xù)點(diǎn)擊“Tool”兩次而生成的“新建”下拉工具)。另外,給“空白新建工具”指定圖標(biāo)的方法與上述為“新建按鈕”指定圖標(biāo)的方法相同,這里不再重復(fù)。(2)給整個工具條或工具菜單添加一個新“工具”方法與1相似,只是操作時要以“Tool”按鈕取代“ToolMenu”按鈕。注意:只有新建的ToolMenu可以使用“Tool”創(chuàng)建下拉工具,系統(tǒng)原有的工具菜單如果沒有被指定下拉工具條,那么用戶也不可能為其自定義下拉工具。原有的或者是新建的包含下拉工具條的“工具菜單”,在其右下角都有一種很小的“黑色倒三角形”標(biāo)志。(3)刪除或移動一個工具或工具菜單項(xiàng)方法與自定義按鈕的相關(guān)方法一致。4、自定義彈出式菜單(CustomizingPopups)ArcView的項(xiàng)目組件可以有彈出式菜單,也可以沒有。除了需要在當(dāng)前活動文檔區(qū)域用鼠標(biāo)右鍵單擊調(diào)用之外,彈出式菜單的大部分項(xiàng)目與視圖菜單欄中的對應(yīng)項(xiàng)的功能是完全一致的。彈出式菜單的主要特點(diǎn)是操作非常方便快捷。雖然每一種用戶界面可能含有零到多個Popups,但在同一時間內(nèi)卻只有一個彈出式菜單是活動的。缺省情況下,在彈出式菜單設(shè)置區(qū),通常第一個,也就是最左邊的一個是當(dāng)前活動的Popup。您可以在“顯示區(qū)”用鼠標(biāo)左右拖動的方法來簡單地設(shè)置當(dāng)前活動項(xiàng)。您也可以用Avenue腳本來完成同樣的工作(參見本節(jié)稍后部分)。(1)向PopupSet編輯區(qū)添加新的彈出式菜單首先在自定義對話框內(nèi)指定組件類型(Type)與控制項(xiàng)類型(Category//Popup),ArcView自動將現(xiàn)存的與之相關(guān)的彈出式菜單顯示于“控制編輯器面板”中(如圖7-10)。單擊下側(cè)的“NewPopup”按鈕,ArcView則將一個名為“Popup”的新的彈出式菜單添加于當(dāng)前選項(xiàng)的右側(cè)(參見右圖的面板顯示區(qū)的兩個同名菜單)。新的彈出式菜單生成后,如果想要更換其名稱,則須在對話框下部的“屬性”表格內(nèi)雙擊其“Label”表行,在隨即彈出的字符串輸入框內(nèi)鍵入新的名稱,單擊“OK”確定。雖然在GUI之中,彈出式菜單的“Label名稱”并不顯示,但是您可以使用它來定義彈出式菜單的內(nèi)容及其作用。(2)給指定的彈出式菜單添加新的菜單項(xiàng)(MenuItems)圖7-10給指定的彈出式菜單添加新項(xiàng)在對話框的“控制編輯器面板”中,選定想要添加菜單項(xiàng)的彈出式菜單,然后單擊下側(cè)的“新增項(xiàng)目”(NewItem)按鈕,ArcView自動在當(dāng)前彈出式菜單下增加一個新的菜單項(xiàng)目,注意每點(diǎn)擊一下“按鈕”,將增加一個新項(xiàng)目。圖7-10彈出式菜單列表區(qū)的最右側(cè)是在“Popup新建菜單”之下連續(xù)增加的4個“MenuItems”的示例,它們的默認(rèn)名稱均為“Item”,其中在第3個與第4個Item之間還添加了一個“分隔線”圖7-10給指定的彈出式菜單添加新項(xiàng)新建的各個“Item”,其名稱都可以通過改變屬性表內(nèi)的“Label屬性”值來變更。如果想要在“新名稱字符串”中設(shè)置一個字母為快捷鍵,則需要在該字母前添加一個“&”字符標(biāo)識,這樣,在圖形用戶界面生成后,就可以使用<Alt+字母>的組合鍵直接調(diào)用該菜單項(xiàng)。注意每一個菜單項(xiàng),其快捷鍵字母都應(yīng)當(dāng)是“唯一”的,不重復(fù)的。(3)在“控制編輯器面板”中指定“活動”的彈出式菜單圖7-11快捷菜單的“分隔線”方法是:選定想置其于活動狀態(tài)的彈出式菜單項(xiàng),比如圖7-10中最右端的“Popup”新建項(xiàng)。用鼠標(biāo)左鍵將其拖拉至顯示區(qū)最左端,釋放左鍵,則該“圖7-11快捷菜單的“分隔線”(4)給彈出式菜單項(xiàng)添加一個“分隔線”(Separator)添加水平“分隔線”可以將較多的菜單項(xiàng)分成不同的邏輯群組。操作方法是:單擊選定想要添加“分隔線”的上鄰菜單項(xiàng),點(diǎn)擊“Separator”按鈕,則當(dāng)前選項(xiàng)之下被插入一個“空行”,當(dāng)在GUI之中右鍵單擊調(diào)用該彈出式菜單時,可以看到在該“空行”上下兩個菜單項(xiàng)之間將出現(xiàn)一個立體“分隔線”(如圖7-11所示)。(5)刪除一個彈出式菜單或其菜單項(xiàng)方法是先選定要刪除的對象,然后彈擊<Delete>鍵。(6)移動彈出式菜單或其菜單項(xiàng)方法與移動“工具項(xiàng)”或“按鈕項(xiàng)”的方法一致。(7)置另一個彈出式菜單為“活動菜單”(active)如前所述,您可以通過Avenue來完成缺省活動菜單的設(shè)置工作。舉例如下:假定您的視圖用戶界面包含3種彈出式菜單:一種支持普通功能,一種支持管理“城市主題”的特殊功能,另一種支持管理“省區(qū)主題”的特殊功能。在ArcView視圖運(yùn)行時,您想分3種情況分置活動菜單:當(dāng)“城市主題”處于活動狀態(tài)時,置第二種彈出式菜單為“活動菜單”;當(dāng)“省區(qū)主題”處于活動狀態(tài)時,置第三種彈出式菜單為“活動菜單”;當(dāng)其它主題處于活動狀態(tài)或當(dāng)前沒有主題在活動時,置普通功能菜單(第一種)為“活動菜單”。以下是一個腳本更新的例子,要求首先將普通功能的彈出式菜單置為缺省設(shè)置,而其它為專門主題服務(wù)的功能性彈出式菜單被冠于對應(yīng)的主題名稱。腳本示例:theView=av.GetActiveDocif(theView.GetActiveThemes.Count=0)thenexitendfirstActive=theView.GetActiveThemes.Get(0)activePopup=self.GetControls.FindByLabel(firstActive.GetName)if(activePopup=nil)thenself.SetActive(self.GetControls.Get(0))’usedefaultelseself.SetActive(activePopup)end該更新腳本應(yīng)當(dāng)與ArcView的視圖用戶界面彈出式菜單設(shè)置的變更事件相關(guān)聯(lián),并位于下列相關(guān)設(shè)置語句之下:av.FindGUI(“View”).GetPopups.SetUpdate(“viewPopup.update”)第二節(jié)Avenue程序語言初步一、Avenue導(dǎo)言Avenue是ArcView內(nèi)置的程序語言與開發(fā)環(huán)境。作為一種“面向?qū)ο蟮某绦蛘Z言”,它可以完成ArcView所有的對象(包括請求)的管理工作??梢哉f,ArcView的圖形用戶界面及其所有的文檔操作與運(yùn)行都離不開Avenue的語言環(huán)境與Avenue腳本文檔。Avenue有許多用途。如前所述,您可以使用Avenue語言去自定義ArcView的工作界面與工作方式。您可以創(chuàng)建您所需要的GUI,為交互的圖形控制項(xiàng)設(shè)置內(nèi)部屬性。您甚至可以用Avenue語言開發(fā)出一種基于GUI的完整的應(yīng)用程序。此外,您還可以將已經(jīng)編寫好的Avenue腳本與諸如打開或關(guān)閉一個項(xiàng)目一類的其它操作事件相鏈接。二、面向?qū)ο蟪绦蛟O(shè)計(jì)語言的基本原理近年來,面向?qū)ο蟮南到y(tǒng)與程序語言普遍受歡迎。描述一種“面向?qū)ο蟮沫h(huán)境”的最好的方式也許就是將其與其他更多的傳統(tǒng)程序設(shè)計(jì)環(huán)境相比較。在如同F(xiàn)ortran或C的傳統(tǒng)程序語言環(huán)境之中,不同語言的差別主要表現(xiàn)在“數(shù)據(jù)”與展示數(shù)據(jù)的“動作”之間。這些以編程工具建造的應(yīng)用程序經(jīng)常分享著一個強(qiáng)大的中心焦點(diǎn)。這樣,在那些象“速算表”或者“Dbase”管理系統(tǒng)的應(yīng)用程序之間,一個明顯的區(qū)別就表現(xiàn)在應(yīng)用程序與被應(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)成的模板。一個孤立的對象就是一個類的特例。比如:一個項(xiàng)目可能包含許多“視圖”,而其中的每一個視圖就是一個“視圖類”的特例。因?yàn)椤邦悺笔菍ο?,所以它們可以依次與更高級的或者是更多的同級類發(fā)生聯(lián)系(如圖7-12)。這樣,視圖類就應(yīng)是比其自身更普遍的文檔類的成員,而文檔類的主要成員除過“視圖類”之外,還可能包括“表格類”、“圖表類”、“圖面配置類”以及“腳本編輯器”等。所有文檔類的成員都繼承著“文檔總類”的通用屬性。而組成類的單獨(dú)成員則繼承著將它們統(tǒng)一在一起的附加屬性。“對象”通過相互傳遞“請求”而相關(guān)?!罢埱蟆笔且环N機(jī)制,它可以控制一個對象。如打開視圖的請求、返回一個對象的相關(guān)信息的請求、獲得當(dāng)前活動視圖的請求等等。以“獲得當(dāng)前活動視圖”的請求為例來說明:該請求將作為一個對象被發(fā)送到Avenue中,結(jié)果返回了另一個對象,該對象就是包含了視圖名稱的字符串。一個Avenue語句是由“對象”以及發(fā)送給對象的“請求”所構(gòu)成的。返回的對象既可以被貯存到一個變量之中,也可以作為另一種“請求”再次傳遞出去。當(dāng)然,“請求”也可以接受“條件”,只有當(dāng)條件符合時才會返回一個對象。比如:一種只是為了“尋找一個具有指定名稱的主題”的請求,就必然要接受一個“條件”。三、Avenue腳本一個Avenue腳本,實(shí)質(zhì)上就是一種由一系列Avenue語句組成的,能夠完成特定任務(wù)的計(jì)算機(jī)程序。下面討論兩個Avenue腳本的例子:例一:與“放大”(ZoomIn)菜單項(xiàng)相關(guān)聯(lián)的Avenue腳本程序背景:從視圖菜單欄內(nèi)的“視圖”菜單中選取“放大”(ZoomIn)項(xiàng),其對應(yīng)的Avenue腳本控制語句如下:theView=av.GetActiveDoctheView..GetDisplay.ZoomIn(125)第一個語句是將“請求”GetActiveDoc返回的“對象”av指派給變量theView。第二個語句的意思是:將GetDisplay.對活動文檔的“請求”作為返回“對象”,順序傳遞給“ZoomIn”請求(注意:活動文檔可以返回當(dāng)前視圖能夠被拖拉選中的任意屏幕區(qū)域)。放大(ZoomIn)請求會將語句給定的數(shù)值作為其操作的依據(jù)條件,上例中數(shù)值為125。這樣,在以上兩行腳本中,活動視圖的范圍被“對象”確定,而且由指定的125%的數(shù)值因子而產(chǎn)生最終的縮放結(jié)果。另一方面,用戶也可以通過單擊“視圖工具條”中的“放大”工具來完成相同的縮放操作。對于縮放所依據(jù)的條件,您要么在視圖中用“放大”工具拖拉出一個您所希望的矩形放大框,要么直接用鼠標(biāo)點(diǎn)擊出一個放大中心點(diǎn),兩種條件與方式都可滿足視圖放大的需要。如果在一個Avenue腳本中要同時照顧兩種方式,則相應(yīng)腳本如下:例二:與“放大”工具相關(guān)聯(lián)的Avenue腳本theView=av.GetActiveDocr=theView.ReturnUserRectd=theView.GetDisplayif(r<>nil)thend.ZoomToRect(r)elsed.ZoomIn(125)d.panTo(d.ReturnUserPoint)end與上一個腳本一樣,本腳本的第一句的功能也是返回當(dāng)前活動文檔的名稱,并將其指派給變量theView;第二句的功能是:將用戶在視圖中拖拉出的矩形框作為輸入值,一個ReturnUserRect請求被建立于活動視圖之上,并將該矩形的范圍值指派給變量r;第三句使用GetDisplay請求獲取活動視圖的顯示范圍,然而該句與上一個腳本第三句的只是傳遞一個放大請求不同的是,它將顯示區(qū)范圍值直接指派給變量d。從第4句開始到第8句,本腳本使用了“條件語句”。首先考察指派給變量r的值,如果其值不等于0(例如當(dāng)用戶在視圖中拖拉出一個合法的矩形框時),那么,該矩形的范圍值將作為ZoomtoRect請求的依據(jù)條件,也就是變量d。如果用戶沒有在當(dāng)前視圖中拖拉出一個合法的矩形框(比如他只是在視圖顯示區(qū)內(nèi)單擊了一下鼠標(biāo)左鍵),那么r的值將等于0,這樣將直接導(dǎo)致else及其以下語句被執(zhí)行。在此情況下,ZoomIn請求再次依據(jù)“125”的條件去運(yùn)行,使當(dāng)前顯示區(qū)范圍(d變量)圍繞中心點(diǎn)按125%的比例而放大。結(jié)果,顯示區(qū)范圍也自然被定位于視圖中心或者將用戶原來單擊的那一點(diǎn)推移至放大后的視圖中央。第8句實(shí)質(zhì)上就是將從ReturnUserPoint對當(dāng)前顯示區(qū)(d變量)的請求中返回的點(diǎn)位作為“PanTo”請求的作用點(diǎn)。這樣,在這4個條件語句中,當(dāng)前活動文檔被確定,而且縮放顯示通過兩種方式之一來完成,即要么依據(jù)用戶在視圖中指定的矩形區(qū)域,要么依據(jù)在視圖顯示區(qū)指定的一個點(diǎn)位來縮放。四、Avenue的語法本節(jié)不想對Avenue的語法做過多的描述,只是為了使讀者順利讀懂Avenue腳本而提供了一個快捷的語法指導(dǎo)。1、“對象”與“請求”混合語句的書寫方法如前所述,在Avenue程序語言中一般都包含著較多的用于發(fā)送“對象”的“請求”。給對象發(fā)送“請求”的最普通格式就是在描述“對象”的字串之后緊跟一個“請求”字串,而兩者之間用“句號”或“圓點(diǎn)號”分隔。比如:在theView.GetDisplay語句片斷中,theView就是一個“對象”,而GetDisplay則是給該對象發(fā)出的操作“請求”。在同一個Avenue語句中,允許同時使用多個“請求”,但“請求”與“請求”之間也必須以“圓點(diǎn)號”相分隔。如上例之中就有這么一個語句:theView..GetDisplay.ZoomIn(125)2、變量賦值語句的寫法在Avenue語句中,指派給一個變量的“對象”必須使用“等號”。比如:theView=GetActiveDoc就是一個賦值語句,它表示要將GetActiveDoc請求返回的對象直接指派給變量theView。注意:如果一個字符串被指派給一個變量,則該字符串必須用雙引號括起來。如:賦值語句theProv=“陜西省”、theCont=”China”。3、語句中大、小寫的約定雖然Avenue腳本的執(zhí)行不區(qū)分大小寫,但為了便于檢查,或者使自己或別人能順利讀懂語句,在腳本的實(shí)際寫作中仍需要尊人一定的習(xí)慣:即“變量名”以小寫字母開頭,而“對象”與“請求”則以大寫字母打頭。4、圓括號的使用在Avenue腳本中,所有給“請求”提供數(shù)值依據(jù)的“條件”——條件語句中的“條件”必須用“圓括號”括起來。上例中的if(r<>nil)then語句就是如此。5、“注釋”信息的書寫語法規(guī)定:腳本之中的所有“注釋”信息,不論是單獨(dú)成行的,還是跟隨在Avenue語句之后,都必須以“單引號”或“單撇號”打頭。如下例:’ThisentireLineisacomment.(英文字串——獨(dú)立成行)theView=GetActiveDoc‘Gettheactiveviewdocument.(英文字串——加在語句之后)’上行語句意欲“將獲得的視圖文檔指派給變量theView”。(漢字字串——獨(dú)立成行)五、Avenue腳本的創(chuàng)建與調(diào)試生成Avenue腳本的步驟共分5步。即:調(diào)用“腳本編輯器”,輸入Avenue語句;匯編(Compile)腳本調(diào)試(Debug)腳本運(yùn)行(Run)腳本將腳本與任意的控制項(xiàng)(Control)鏈接創(chuàng)建腳本的方法雙擊ArcView項(xiàng)目窗口左窗格中的“腳本”(Script)圖標(biāo),或者先單擊該圖標(biāo),然后再點(diǎn)擊窗口頂部的“新建”(New)按鈕。圖7-12新建腳本的方法及“編輯器”圖7-12新建腳本的方法及“編輯器”注意:ArcView的腳本組件與其它任何組件一樣,都有可能包含多個(腳本)文檔,您只能一次選定一個活動文檔,并對它進(jìn)行各種操作。當(dāng)一個腳本編輯窗口成為當(dāng)前活動文檔時,ArcView的圖形用戶界面就會轉(zhuǎn)換成適應(yīng)該腳本各種操作的相應(yīng)界面(參見圖7-12大窗口上部GUI)。該界面也會因?qū)δ_本操作的目的的不同而不同。圖7—14是針對腳本的GUI菜單的各控制項(xiàng)示例。由圖可見,“編輯”菜單設(shè)置了與腳本編輯有關(guān)的實(shí)用控制項(xiàng)。而“腳本”菜單則視腳本創(chuàng)建步驟的不同其可用選項(xiàng)也有所不同。圖的中幅為腳本輸入與編改階段的菜單視圖,右幅則是當(dāng)中幅菜單的“匯編”(Compile)被選定、腳本創(chuàng)建進(jìn)入?yún)R編(編譯)階段時的菜單視圖,注意圖中可用菜單控制項(xiàng)的增加情況。圖7-13“腳本”編輯與控制的相關(guān)菜單此外,Avenue腳本既可以直接在“腳本編輯器”內(nèi)通過輸入而新生,也可以從一個文本文件或已經(jīng)存在于ArcView之中的“系統(tǒng)腳本”中導(dǎo)入,導(dǎo)入的工具分別為“腳本菜單”中的“LoadSystemScript”以及圖7-13“腳本”編輯與控制的相關(guān)菜單圖7-15調(diào)出一個已存在腳本的舉例一般來說,為了進(jìn)一步熟悉Avenue腳本的內(nèi)部組織及語法約定,用戶可以隨時通過“LoadSystemScript”菜單調(diào)出系統(tǒng)已有的腳本進(jìn)行分析研究。圖7-14是一個調(diào)出的“View.HotLink腳本”的實(shí)例。圖7-15調(diào)出一個已存在腳本的舉例圖7-14調(diào)出一個已存在腳本的舉例(三)對成熟腳本進(jìn)行“匯編圖7-14調(diào)出一個已存在腳本的舉例當(dāng)一個Avenue腳本編輯完成后,使用按鈕條中的“匯編”(Compile)按鈕,或者調(diào)用“腳本”主菜單下的“匯編”(Compile)菜單項(xiàng),均可以將當(dāng)前腳本轉(zhuǎn)換成一種可執(zhí)行格式。注意:腳本只有在被執(zhí)行了“匯編”(編譯)之后,才能進(jìn)一步執(zhí)行“運(yùn)行”、“鏈接”等操作。否則,后續(xù)的任何操作選項(xiàng)或按鈕都是“不可選”(灰色)的。腳本“調(diào)試”(Debug)及“運(yùn)行”(Run)在大多數(shù)情況下,用戶新編的腳本在“運(yùn)行”時,會難免有某些錯誤出現(xiàn)。比如:缺少的執(zhí)行的“條件”、變量書寫有誤、在系統(tǒng)內(nèi)置的文檔類中找不到用戶鍵入的某些對象(如“請求”)等等。圖7-15調(diào)試、運(yùn)行的有關(guān)按鈕檢查及修正錯誤的最好的辦法是不斷調(diào)用“調(diào)試”工具和“運(yùn)行”操作。其中,“運(yùn)行”操作會將腳本的錯誤按順序依次顯示出來。而“調(diào)試”則有幾個實(shí)用按鈕工具可以借用。(如圖7-15,其中,左一為“編譯”鈕;左二為“運(yùn)行圖7-15調(diào)試、運(yùn)行的有關(guān)按鈕1、“分步”(Step)按鈕(左起第三鈕)其功能是使用戶可以按次序分步瀏覽和檢查腳本語句。每單擊一次該鈕,黃色高亮度顯示區(qū)向后跳動一個“對象”。2、“套索定位斷點(diǎn)”(ToggleBreakPoint)按鈕(右起第二鈕)其功能是在當(dāng)前腳本中設(shè)置運(yùn)行“斷點(diǎn)”。即控制“運(yùn)行查錯”至斷點(diǎn)處結(jié)束。3、“檢查變量”(ExamineVariables)按鈕(右起第一鈕)圖7-16腳本中的“變量”列表功能是調(diào)出腳本中所有變量的列表窗(圖7-1圖7-16腳本中的“變量”列表圖7-17項(xiàng)目屬性框最后需要強(qiáng)調(diào):只有當(dāng)一個腳本能夠在腳本窗口中順利運(yùn)行圖7-17項(xiàng)目屬性框六、腳本與ArcView對象的“鏈接”(Link)建立腳本與“項(xiàng)目”事件的“鏈接”在ArcView的項(xiàng)目窗口屬性管理中,單擊選中“項(xiàng)目”菜單下的“屬性”項(xiàng),打開“項(xiàng)目屬性對話框”(如圖7-17)。在該對話框中,您可以將您創(chuàng)建的或系統(tǒng)原有的腳本與項(xiàng)目的“開始”(StartUp)及“關(guān)閉”(ShutDown)事件相鏈接。也就是說,當(dāng)項(xiàng)目被啟動時,在執(zhí)行默認(rèn)文件之前,ArcView首先打開“開始腳本”;當(dāng)項(xiàng)目被“關(guān)閉”時,ArcView自動執(zhí)行您指定的“關(guān)閉腳本”。建立“鏈接”的方法是:在圖7-18的“StartUp”和“ShutDown”文本輸入框內(nèi)輸入您想要設(shè)置的腳本名稱?;蛘邌螕粑谋据斎肟蛴覀?cè)的腳本打開按鈕,也可以彈出“腳本管理器列表”,在列表中找到并雙擊您想設(shè)置的腳本即可。注意:在這里,人工輸入的腳本名稱必須完整有效,同時該腳本還必須事先被納入到當(dāng)前項(xiàng)目目錄的腳本管理器列表中去。另外,項(xiàng)目及腳本的存貯目錄也可以在圖7-18所示“項(xiàng)目屬性對話框”的“工作目錄”(WorkDirectory)文本框中重新設(shè)置。建立腳本與控制項(xiàng)的“鏈接”在本章前面所述的“自定義ArcView”部分中,您已經(jīng)了解了怎樣用“自定義窗口”設(shè)置自己的圖形用戶界面。實(shí)際上,您除了可以創(chuàng)建或添加GUI的三大元素——菜單、按鈕和工具的內(nèi)部“控制項(xiàng)”之外,還可以編改它們各自的屬性列表(位于自定義對話框底部),并將合適的“腳本”指派給它們。使用這種方法,您就可以完成當(dāng)前所選的“控制項(xiàng)”與特定“腳本”之間的鏈接關(guān)系。圖7-18建立腳本與控制項(xiàng)的“鏈接”示例圖7-18是一個在“自定義對話框”中建立“控制項(xiàng)”與“腳本”之間的鏈接關(guān)系的圖形示例。圖中,組件類型(Type)選擇的是“視圖”(View);GUI界面元素(Category)選擇的是“菜單”(Menu);而在“菜單列表區(qū)”選擇的是菜單控制項(xiàng)“關(guān)閉所有”(Close&All)。這樣,在對話框的底部屬性列表中就展示出與“關(guān)閉所有”控制項(xiàng)相關(guān)的所有普通屬性。注意:在該屬性列表的第一行原本顯示了與“單擊”(Click)操作相關(guān)聯(lián)的鏈接腳本——ProjectCloseAll。如果想要重置腳本。操作方法為:雙擊該行,彈出一個“腳本管理器”(如圖中偏右側(cè)),該管理器羅列了系統(tǒng)內(nèi)置的所有已經(jīng)存在的腳本,如果您想鏈接的腳本并不在該列表之內(nèi)(比如目標(biāo)腳本是一個由“腳本編輯器”創(chuàng)建的新腳本),則可單擊“新腳本”(New)按鈕。這樣就會彈出一個“腳本名稱選擇”對話框,在新對話框文本區(qū)輸入目標(biāo)腳本名,單擊“OK”即可完成“目標(biāo)腳本圖7-18建立腳本與控制項(xiàng)的“鏈接”示例七、完善應(yīng)用項(xiàng)目一旦一個應(yīng)用項(xiàng)目已經(jīng)完成,那么最后一步就是使它固化。這個過程的第一步可以是創(chuàng)建“開始”和“關(guān)閉”腳本。其余步驟包括:嵌入腳本、腳本加密以及項(xiàng)目鎖定。“嵌入腳本”包括將腳本貯存于“腳本編輯器”中,以及進(jìn)一步將其貯存于項(xiàng)目內(nèi)部的“腳本列表單”。通過腳本的嵌入大大減少了與項(xiàng)目相關(guān)聯(lián)的外部文檔的數(shù)量,因此既減輕了ArcView系統(tǒng)的負(fù)擔(dān),也使得項(xiàng)目的內(nèi)容更豐富、更齊全。然而,由于嵌入到ArcView系統(tǒng)內(nèi)的腳本能夠顯示于“腳本管理器”窗口的腳本列表中,因此任何一個ArcView用戶都可以通過運(yùn)行Avenue而將該腳本加載于“腳本編輯器”中。為了避免個人私有的腳本被其他公共用戶所修改,您可以啟用Avenue腳本的“加密”保護(hù)功能。“加密”實(shí)際上是將一個腳本(文本型)轉(zhuǎn)換成只能由機(jī)器識別的“內(nèi)碼”格式。因?yàn)椤凹用堋边^程是不可逆的,所以用戶應(yīng)當(dāng)事先對非加密腳本創(chuàng)建一個備份,以備將來編改原始腳本之需要。最后,一個完整的項(xiàng)目可以通過對項(xiàng)目文件的加密而鎖定(固化)。固化的項(xiàng)目也就自然喪失了訪問其自定義對話框,以及更進(jìn)一步通過編寫附加腳本而修改其界面的能力。與加密腳本一樣,加密項(xiàng)目文件的過程也是不可逆的,所以如果有必要,在加密之前應(yīng)對項(xiàng)目文件做備份。第三節(jié)ArcView與其它應(yīng)用程序的集成在許多情形下,ArcView只是一個大的解決方案的片斷。實(shí)際上,通過與其它應(yīng)用程序,如Excel、Access、Lotus等的集成整合,可以創(chuàng)造出比ArcView本身功能強(qiáng)大得多的軟件集成環(huán)境。ArcView除過可以與其它應(yīng)用程序集成外,您也可以將您自己運(yùn)用VB、C或者C++語言編寫的程序作為一種“腳本”添加到ArcView環(huán)境中去,以便完成ArcView原本無法完成的特殊任務(wù)。ArcView提供了好幾種與其它應(yīng)用程序相集成的方法。在所有操作系統(tǒng)平臺上,您都可以使用“遙控”程序(RemoteProcedureCall——簡稱RPC)去創(chuàng)建ArcView與其它應(yīng)用程序之間相交互的所謂“客戶機(jī)/服務(wù)器”型的關(guān)系。在視窗(Windows)系統(tǒng)之中,您可以使用“動態(tài)數(shù)據(jù)交換(DDE)”,或者使用Avenue的“動態(tài)鏈接庫(DLL)”功能調(diào)用來自于Avenue以外的外部函數(shù)去具體創(chuàng)建上述關(guān)系。至于具體采取哪個更合適的方法,則要視您需要執(zhí)行的具體任務(wù),以及您想要集成的應(yīng)用程序系統(tǒng)層面的具體情況而定。一、用系統(tǒng)命令集成應(yīng)用程序使用“System.Execute(命令字符串)”格式鏈接應(yīng)用程序就如同在字符型操作系統(tǒng)(如Unix、Dos)提示符下直接鍵入“系統(tǒng)命令字符串”去執(zhí)行某一具體的操作任務(wù)一樣,您可以在ArcView系統(tǒng)中的Avenue腳本中按以上格式直接輸入字符串,并通過與某個GUI控制項(xiàng)(如菜單、按鈕、工具等)的鏈接,以實(shí)現(xiàn)與其它應(yīng)用程序鏈接或集成的目的。我們以在當(dāng)前ArcView用戶界面中添加一個“控制項(xiàng)”,使ArcView與另一應(yīng)用程序Excel相鏈接的操作為例來說明。第一步:在“項(xiàng)目”窗口的“腳本”組件內(nèi)創(chuàng)建一個新腳本,并輸入如下字串:system.Execute("c:\p

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論