顯示選項
程式碼決定對話方塊將如何裝入記憶體與如何顯示。下表描述各種類型的顯示任務以及用來執行這些任務的關鍵字。
Show方法裝入窗體並設定它的Visible屬性為True。傳遞給Show方法的參數標識了該對話框的類型。如果style參數省略或設定為vbModeless或0(預設),則對話方塊為無模式類型,如果style參數為vbModal或1,則對話方塊為模式類型。
當選取「確定」或「取消」退出對話方塊時,可使用Unload語句或Hide方法。例如:
UnloadfrmAbout
-或者-
frmAbout.Hide
Unload語句把對話框從記憶體中刪除,而Hide方法只是透過設定對話框的Visible屬性為False將其從視窗中刪除。當卸載窗體時,該窗體本身以及它的控制項都會從記憶體中卸載(包括在運行時裝入的任何控制項)。當隱藏窗體時,該窗體以及它的控制項仍留在記憶體中。 當需要節省記憶體空間時,最好卸載窗體,因為卸載窗體可以釋放記憶體。如果經常使用對話框,可以選取隱藏窗體。隱藏窗體仍可以保留與它關聯的任何數據,包括屬性值、列印輸出和動態建立的控制項。窗體被隱藏後,可以繼續從程式碼引用隱藏窗體的屬性與控制項。
各種顯示類型的設計
MicrosoftWindows是與裝置無關的——基於視窗的應用程式可以在許多不同顯示解析度與顏色濃度的電腦中運行。同樣,用VisualBasic編寫的應用程式也會在不同類型的顯示器上運行,在設計應用程式時需要考慮到這一點。
設計與解析度無關的窗體
預設情況下,當改變螢幕解析度時,MicrosoftVisualBasic不會改變窗體與控制項的尺寸。這意味著在解析度為1024×768的螢幕上設計的窗體,在解析度為640×480的螢幕中運作時會伸出螢幕的邊界之外。如果想要建立不管使用什麼樣的螢幕解析度都能有相同比例的窗體和控件,必須在最低的解析度下設計窗體,或將改變窗體的程式碼加入程式。
避免尺寸問題的最簡單的方法是在640×480的分辨率下設計窗體。如果喜歡在高一些的解析度下工作,仍需要考慮窗體在低一些的解析度下將如何顯示。實現這一點的方法是用「FormLayout」視窗預覽窗體的大小和位置。您也可以使用「ResolutionGuides」觀察在低解析度時螢幕的哪些部分是可見的。要切換到“ResolutionGuides”,可以在“FormLayout”視窗點擊滑鼠右鍵,從彈出式選單上選擇“ResolutionGuides”選單項目。
在運行時,VisualBasic會根據設計時的位置來放置窗體。如果設計時在1024×768的解析度上運行,並把窗體放到螢幕的右下角,則當它在比較低的解析度下運行時該窗體可能看不見。為了避免這種情況的發生,在設計時可從「FormLayout」視窗的彈出式選單選擇「StartupPosition」選單項目來設定窗體的啟動位置。同樣,您也可以在運行時用下面的FormLoad事件中的程式碼來設定窗體的位置:
PRivateSubForm_Load()
Me.Move0,0
EndSub
儘管設定窗體的Left與Top的屬性都為0也能有相同的效果,但Move方法只要一步就能完成。
VisualBasic使用與設備無關的度量單位,緹,是用來計算尺寸與位置的單位。 Screen物件的兩個屬性TwipsPerPixelX與TwipsPerPixelY可以用來決定運行時的顯示尺寸。應用這些屬性,可以編寫程式碼來調整窗體以及控制項的尺寸與位置。
PrivateSubSetControls()
DimXAsInteger
DimYAsInteger
X=Screen.TwipsPerPixelX
Y=Screen.TwipsPerPixelY
SelectCaseX,Y
Case15,15
'重新改變控制尺寸及移動控制。
txtName.Height=200
txtName.Width=500
txtName.Move200,200
'增加為其它分辨率編寫的代碼。
…
EndSub
也需要知道在設計時VisualBasic本身視窗的位置。如果在高解析度下把「工程」視窗放置到螢幕的右邊,那麼會發現在低解析度下開啟工程時,它不再是可訪問的了。
設計不同濃度的顏色
在設計應用程式時,也需要考慮執行應用程式電腦可能的顏色顯示能力。有些計算機可以顯示256色或更多的顏色,而有些則只能顯示16種顏色。如果使用256色的調色板來設計窗體,那麼在16色上顯示時,抖動(模仿無效顏色的一種方法)會使窗體上的一些元素消失。
為了避免這種情況,最好把應用程式使用的顏色侷限在Windows標準的16種顏色。這些顏色由VisualBasic的顏色常數來表示(如vbBlack、vbBlue和vbCyan等等)。如果在應用程式中需要用16種以上的顏色,那麼對於文字、按鈕以及其他介面元素仍然應堅持用標準顏色。
設計時心裡想著用戶
除非創建VisualBasic應用程式完全只供自己使用,否則創作的價值只能由其他人來評估。應用程式的使用者介面對使用者有極大的影響——無論程式碼在技術上多麼卓越,或者優化得多麼的好,如果使用者發現應用程式很難使用,那麼他們就很難很好地接受它。
身為程式設計師,毫無疑問,對電腦方面技術已非常熟悉。因而很容易忘記大多數用戶不理解(也許並不在意)隱藏在應用程式後面的技術。把應用程式看作達到目的工具:完成任務的方法想像中應比沒有電腦的幫助更容易。
一個設計得好的使用者介面把使用者與基礎技術隔離開來,使完成預定的任務變得容易。在設計應用程式使用者介面的過程中,需要時時想到使用者。如何能無需指導就發現應用程式的各種各樣的功能?當錯誤發生時,應用程式如何響應?在幫助或輔助用戶方面將提供些什麼?設計是否以一種藝術美來使用戶高興?以上這些問題的答案以及其他有關使用者為中心的設計問題,在本節中都將涉及。
介面設計的基礎
不必成為創建使用者介面的藝術家——大多數使用者介面設計的原則,與任一門基礎藝術課中所講授的基礎設計的原則相同。構圖、顏色等的基本的設計原則,就像它們應用在紙張或油畫上一樣,也能很好地在一台電腦的螢幕上應用。
雖然VisualBasic能透過簡單地將控制項拖曳並放置到窗體上而使得建立使用者介面非常容易,但是,在設計之前稍微規劃一下就能讓應用程式的可用性有很大地改觀。可能需要先在紙上畫出窗體開始設計,決定需要哪些控件,不同元素的相對重要性,以及控件之間的關係。
構圖:應用程式的觀感與感覺
窗體的構圖或佈局不僅影響它的美感,而且也極大地影響應用程式的可用性。構圖包括諸如控制項的位置、元素的一致性、動態、空白空間的使用、設計的簡單性等因素。
控件的位置
在大多數介面設計中,不是所有的元素都一樣重要。仔細地設計是必要的,以確保越是重要的元素越要很快地顯現給使用者。重要的或頻繁存取的元素應放在顯著的位置上,而較不重要的元素應該降級到不太顯著的位置上。
在大多數語言中我們習慣在一頁之中從左到右、自上到下地閱讀。對於電腦螢幕也如此,大多數使用者的眼睛會先註視螢幕的左上部位,所以最重要的元素應放在螢幕的左上部位。例如,如果窗體上的資訊與客戶有關,則它的名字欄位應顯示在它能最先被看到的地方。而按鈕,如“確定”或“下一個”,應放置在螢幕的右下部位;使用者在未完成對窗體的操作之前,通常不會訪問這些按鈕。
把元素與控制項分成組也很重要。盡量把資訊依照功能或關係進行邏輯地分組。因為他們的功能彼此相關,所以定位資料庫的按鈕應被形象化分成一組,而不是分散在窗體的四處。對資訊也是一樣,名字欄位與地址通常分在一組,因為它們聯繫緊密。在許多情況下,可以使用框架控制項來幫助加強控制項之間的連結。
介面元素的一致性
在使用者介面設計中,一致性是一種優點。一致的外觀與感覺可以在應用程式中創造一種和諧,任何東西看起來都那麼協調。如果介面缺乏一致性,則很可能引起混淆,並使應用程式看起來非常混亂、沒有有條理、價值降低,甚至可能引起對應用程式可靠性的懷疑。
為了保持視覺上的一致性,在開始開發應用程式之前應先建立設計策略和類型約定。諸如控制項的類型、控制項的尺寸、分組的標準以及字體的選取等設計元素都應該事先確定。可以創建設計樣板來幫助設計。
在VisualBasic中有大量的控制項可供使用,這可能會引起有人想使用所有的控制項。為了避免這種引誘,選取能很好地適合特定應用程式的控制項子集。雖然列錶框、組合框、網格以及樹等控制項都可用於表示資訊列表,最好還是盡可能使用一種類型。
還有,盡量適當地使用控件,雖然TextBox控件可以設定成唯讀並用來顯示文本,但Label控件通常更適用於此目的。在為控制項設定屬性時請保持一致性,如果在一個地方為可編輯的文字使用白色背景,除非有很好的理由,否則不要在別的地方再使用灰色。
在應用程式中不同的窗體之間保持一致性對其可用性有非常重要的作用。如果在一個窗體上使用了灰色背景以及三維效果,而在另一個窗體上使用白色背景,則這兩個窗體就顯得毫不相干。選定一種類型並在整個應用程式保持一致,即使這意味著要重新設計某些功能。
動感:窗體與其功能匹配
動感是物件功能的可見線索。雖然對這個術語也許還不熟悉,但動感的實例四處可見。自行車上的把手,手放在它的上面,動感會將把手用手扣緊這件事顯現出來。按下按鈕、旋轉旋鈕和點亮電燈的開關等都能進行動感表示,一看到它們就可以看出其用處。
使用者介面也使用動感。例如,用在指令鈕上的三維立體效果使得他們看起來像是被按下去的。如果設計平面邊框的指令按鈕的話,就會失去這種動感,因而不能清楚地告訴使用者它是一個指令按鈕。在某些情況下,平面的按鈕也許是適合的,例如遊戲或多媒體應用程式;只要在整個應用程式中保持一致就很好。
文字框也提供了一種動感,使用者可以期望帶有邊框和白色背景的框,框中包含可編輯的文字。顯示不含邊框的文字方塊(BorderStyle=0)也有可能,這使它看起來像一個標籤,並且不能明顯地提示使用者它是可編輯的。
空白空間的使用
在使用者介面中使用空白空間有助於突出元素和改善可用性。空白空間不必非得是白色的-它被認為是窗體控制項之間以及控制項四周的空白區域。一個窗體上有太多的控制項會導致介面雜亂無章,使得尋找一個欄位或控制項非常困難。在設計中需要插入空白空間來突出設計元素。
各控制項之間一致的間隔以及垂直與水平方向元素的對齊也可以使設計更可用。就像雜誌中的文本一樣,安排得行列整齊、行距一致,整齊的介面也會使其容易閱讀。
VisualBasic提供了幾個工具,讓控制項的間距、排列和尺寸的調整變得非常容易。 「排列」、「以相同大小製作」、「水平間距」、「垂直間距」和「在窗體中央」等指令都可以在「格式」選單中找到。
保持介面的簡明
介面設計最重要的原則也許就是簡化。對於應用程式而言,如果介面看起來很難,則可能程式本身也很難。稍微深入考慮一下便有助於創建看上去(實際上也是)用起來都很簡單的介面。從美學的角度來講,整齊、簡單明了的設計常常更可取。
在介面設計中,一個普遍易犯的錯誤就是試圖用介面來模仿真實世界的物件。例如,想像一下要求創建完整的保險單的應用程式。很自然的反應就是在螢幕上設計完全仿照保單的介面。這樣做會出現幾個問題:保險單的形狀與尺寸和螢幕上的形狀有很大不同,要非常完善地複製這樣的表格會將其限制在文字方塊與複選框中,而對使用者並沒有真正的好處。
最好是設計出自己的、也能提供原始保險單列印副本(附列印預覽)的介面。透過從原始保單建立欄位的邏輯群組,並使用有標籤的介面或幾個連結的窗體,就可以不要求滾動螢幕而顯示所有的資訊。也可以使用附加的控件,例如具有選取預先安裝的列錶框,這些控件可以減少打字工作量。
也可以取出不常用的函數並將它們移到它們自己的窗體中去,來簡化許多應用程式。提供缺省有時也可以簡化應用程式;如果十個用戶中有九個選取加粗的文本,就把文本粗體設為缺省值,而不要叫用戶每次都選取一遍(不要忘記提供一個選項可以覆蓋該缺省值)。嚮導也有助於簡化複雜的或不常用的任務。
簡化與否最好的檢驗就是在應用中觀察應用程式。如果有代表性的使用者沒有線上幫助就無法立即完成想要完成的任務,那麼就需要重新考慮設計了。
使用色彩與影像
在介面上使用顏色可以增加視覺上的感染力,但是濫用的現像也時常發生。許多顯示器能夠顯示數百萬種顏色,這很容易使人們要全部使用它們。如果在開始設計時沒有仔細考慮,顏色也會像其他基本設計原則一樣,出現許多問題。
每個人對顏色的喜愛有很大的不同,使用者的品味也會各不相同。顏色能夠引發強烈的情感,如果正在設計針對全球讀者的程序,那麼某些顏色可能有文化上的重大意義。一般說來,最好保守傳統,採用一些柔和的、更中性化的顏色。
當然,預期的讀者以及試圖傳達的語氣與情緒也會影響對顏色的選擇。明亮的紅色、綠色和黃色適用於小孩子使用的應用程序,但是在銀行應用程式中它很難帶來財務責任感。
少量明亮色彩可以有效地突出或吸引人們對重要區域的注意。作為經驗之談,應盡量限制應用程式所用顏色的種類,而且色調也應該保持一致。如果可能的話,最好堅持標準的16色的調色板;在16色顯示器上觀看時,抖動會使得其他一些顏色顯示不出來。 使用顏色時另一個需要考慮的問題就是色盲。有一些人無法分辨不同的基底色(如紅色與綠色)組合之間的差異。對於有這種情況的人,綠色背景上的紅色文字就會看不見。
圖像和圖標
圖片與圖標的使用也可以增加應用程式的視覺上的趣味,但是,細心的設計也是必不可少的。不用文本,圖像就可以形像地傳達訊息,但常常不同的人對圖像的理解也不一樣。
帶有表示各種功能的圖示的工具列,它是一種很有用的介面設備,但如果不能輕易辨識圖示所表示的功能,反而會事與願違。在設計工具列圖示時,應查看其它的應用程式以了解已經創建了什麼樣的標準。例如,許多應用程式使用一張角落有捲邊的紙來表示「新檔案」圖示。也許還有更好的比喻來表示這項功能,但改用其它的表示方法會造成用戶的混淆。
考慮圖像文化上的意義也非常重要。許多程式使用田園風格的帶有一面旗幟的郵箱(圖6.21)來代表郵件功能。這原本是美國的圖標;其他國家或文化的用戶也許不把它看作郵箱。
在設計自己的圖示與圖像時,應盡量使它們簡單。具有多種顏色的複雜的圖片,作為16×16像素的工具列圖標,或者在高分辨率的螢幕上顯示時,都不能很好地適應。
選取字體
字體也是使用者介面的重要部分,因為它們常常給使用者傳遞重要的訊息。需選取在不同的解析度和不同類型的顯示器上都能容易閱讀的字體。最好盡量堅持使用簡單的無襯線字體或襯線字體。通常手寫字體或其他裝飾性字體的列印效果比螢幕上的效果更好,而且字體越小讀起來越難。
除非計劃按應用程式來配置字體,否則應堅持使用標準Windows字體,如Arial、NewTimesRoman或System。如果使用者的系統沒有包含指定的字體,系統會使用替代的字體,其結果可能與設想的完全不一樣。如果正在為國際讀者設計,需要調查在預想的語言裡可用什麼字體。還有,在為其他語言設計時,需要考慮文本的擴展──有些語言的文本串可以多佔50%以上的空間。
還有,在選取字體時,設計的一致性非常重要。大多數情況下,不應在應用程式中使用兩種以上字體。太多的字體會使得應用程式看起來像罰款通知單。
->