亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

VisualBasic中的界面設計原則和編程技巧

2019-11-18 17:32:43
字體:
來源:轉載
供稿:網友
在VB里,MDI(MultipleDocumentInterface,多窗口程序)窗體是這樣定義的:“MDI窗體作為一個程序的后臺窗口,包含著MDIChild屬性為True的窗體”。在一個VB程序中,至多只能存在一個MDI父窗體,可以有多個MDI子窗體;建立一個MDI父窗體的方法是在VB的File菜單里選擇“NewMDIForm”。

在MDI程序運行時,如果子窗口具有菜單,那么當子窗口被激活時,子窗口的菜單就會自動替換父窗口菜單;當子窗口被最小化時,在MDI父窗口里就會出現子窗口的圖標。

Windows的通用圖形界面的出現,使計算機用戶不必通過專門的學習就可以得心應手地使用各種Windows的軟件;不僅如此,它還是程序設計者在設計Windows程序的界面時所必須遵循的標準,這在很大程度上減輕了程序設計者的負擔,使他們能夠把主要精力放在問題的求解和實現上。

VisualBasic的出現,更加簡化了Windows程序界面的設計工作,只需要極少量的代碼,就能實現標準Windows應用程序的界面。但是,如果不了解Windows程序界面設計的原則,或者不熟悉VB下界面編程的技巧,就難以設計和實現既符合一般標準又具有特色的界面。界面設計的原則界面設計具有一般性的原則,最為重要的有:

界面要具有一致性。一致性原則在界面設計中最容易被違反,同時也最容易修改和避免。例如,在菜單和聯機幫助中必須使用相同的術語;對話框必須具有相同的風格。

常用操作要有捷徑。常用操作的使用頻度大,應該減少操作序列的長度。例如,為文件的常用操作如打開、存盤、另存等設置快捷鍵。使常用操作具有捷徑,不僅會提高用戶的工作效率,還使得界面在功能實現上簡潔和高效。

提供簡單的錯誤處理。系統要有錯誤處理的功能。在出現錯誤時,系統應該能檢測出錯誤,并且提供簡單和容易理解的錯誤處理的功能。錯誤出現后系統的狀態不發生變化,或者系統要提供錯誤恢復的指導。

提供信息反饋。對操作人員的重要操作要有信息反饋。對常用操作和簡單操作的反饋可以不作要求,但是對不常用操作和至關重要的操作,系統應該提供信息的反饋。

操作可逆。操作應該可逆。這對于不具備專門的知識的操作人員相當有用??赡娴膭幼骺梢允菃蝹€的操作,或是者一個相對獨立的操作序列。

設計良好的聯機幫助。雖然對于熟練用戶來說,聯機幫助并非必不可少,但是對于大多數不熟練用戶來說,聯機幫助具有非常重要的作用。
菜單設計的原則和編程
菜單設計有如下的一般性原則:
按照系統的功能來組織菜單。

要選用廣而淺的菜單樹,而不是窄而深的菜單樹。

根據菜單選項的含義進行分組;并且按一定的規則排序。菜單選項的標題要力求簡短、含義明確,并且最好以關鍵詞開始。

常用選項要設置快捷鍵。結合以上的原則,菜單編程有以下幾方面的技術和技巧:

菜單選項的分組
在VB中,菜單選項的分組是通過菜單欄分隔橫線實現的。在菜單的一定位置增加一個Caption屬性為“”的菜單項,它在菜單上就表現為一條橫線。在許多情況下,同一個功能菜單下又可以按照菜單選項的功能分為幾組,這時就可以用分隔橫線來實現菜單項的分組。
常用選項快捷鍵的設置
打開菜單設計窗口(MenuDesignWindow),應對于每個菜單選項有相應的快捷鍵(Shortcut)列表,在該表中選擇一個即可。需要注意的是,具有子菜單的菜單或者頂層菜單的快捷鍵不能這樣定義。按照Windows的界面設計原則,頂層菜單的快捷鍵的形式是Alt 字母鍵。它的實現方法在后文另敘。
對于一些常用的功能菜單項,有約定俗成的快捷鍵。例如,文件打開用CTRL O,文件存盤用CRTL S,打印用CTRL P,等等。

為菜單選項定義好快捷鍵之后,菜單上該選項的后面就出現了快捷鍵的文字表示。

菜單選項的使能與禁止、可見與隱藏為了表示菜單選項的一些特殊功能,可能要用到菜單選項的使能與禁止、可見與隱藏屬性。當因為某種原因使得某個選項所代表的功能不能被實現時,就應該禁止該選項被選中。菜單選項的使能與禁止是通過改變改選項的Enabled屬性實現的。舉例來說,假設菜單選項名為nmuName,則禁止該選項可以如下實現:

mnuName.Enabled=False
同理,隱藏一個選項可以用
mnuName.Visible=False
來實現,而使一個隱藏的選項恢復可見則用
mnuName.Visible=True
實現。
菜單項的隱藏與恢復可見常常用在動態菜單的實現中。
菜單項的動態裝入
菜單項的動態裝入是指菜單項的個數不固定,并且能夠在需要時動態地裝入。最簡單的例子就是文件菜單中最近打開的文件的列表。在第一次打開文件之前,該列表是空的,并且不在文件菜單中出現;打開一個文件后,該列表不再是空的,并且文件菜單中出現代表被打開文件的菜單項。

在上面的例子里,就綜合運用了菜單項的下標屬性(Index)、標題屬性(Caption)、可見屬性(Visible)以及菜單項的裝入方法(LoadMethod)。

具體的實現過程如下:

在文件菜單里增加一個菜單項,標題任意,并假設菜單項的Name屬性是opened_files_list;

更改菜單項opened_files_list的可見屬性,使opened_files_list.Visible=False

更改菜單項opened_files_list的下標屬性,使
opened_files_files_list.Index=0

在程序中控制菜單項opened_files_list的動態裝入。
假設要顯示打開過的第二文件的文件名,并且該文件名存放在一個文件名數組opened_file_name里。以下的代碼就實現了這一功能:
Loadopened_files_list(1)
opened_files_lise(1).Caption="&2" opened_file_name(1)
opened_files_list(1).Visible=True
需要注意的是,對于下標為0的菜單項,不能用Load方法。因為在程序執行時,該菜單項就已經被裝入到內存里了;另外,在菜單項的標題屬性字符里的“&”字符具有特殊的含義,它的作用是在顯示該屬性字符串的同時,并不顯示“&”本身,而緊跟“&”的字符在顯示時具有下劃線,并且該字符成為熱鍵。

如果下標不為0的菜單項不再需要,為了減少對內存資源的占用,可以用Unload方法把它從內存卸出;同樣地,不能用Unload卸出下標為0的菜單項。

彈出式菜單的實現(PopupMenuMethod)
VB中在菜單設計窗口(MenuDesignWindow)中設計的菜單是下拉式菜單。下拉式菜單是用戶在任何時候都可以在頂端菜單條上選擇后拉出的菜單,而彈出式菜單則是在程序界面的一定區域內點按鼠標鍵后出現的菜單。在某些情況下,彈出式菜單會使系統功能的實現更加簡潔和高效,使用起來更加得心應手。
Widnows程序的彈出式菜單一般是當用戶在程序的桌面上點按鼠標鍵時出現的。彈出式菜單多用于實現系統的附加或增強功能。彈出式菜單的內容,可以隨點按鼠標鍵的位置不同而變化。由于彈出的菜單要覆蓋屏幕的一部分,所以應盡量縮短菜單里的文字。

在VB中,彈出式菜單的實現要用到下拉式菜單設計的技術和PopupMenu方法。具體的做法是:

在菜單設計窗口(MenuDesignWindow)里設計好相應窗體的彈出式菜單。要注意的是,要彈出的菜單必須至少有一個子菜單;因而這個菜單不能有快捷鍵,并且Checked屬性必須是False。再把彈出式菜單的Visible屬性改為False。

在具有設計好的彈出式菜單的窗體的Form_Click中加入以下代碼(假設彈出式菜單的Name屬性是mnuExample):
SubForm_Click()
PopupMenumnuExample
EndSub
如果要求只有按下鼠標左鍵或者右鍵才能激活菜單,就必須在Form_MouseDown里加入如下代碼:
SubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)
IfButton=2thenButton=2表示鼠標右鍵
PopupMenumnuExample
EndIf
PopupMenu的完整句法是:
[Form.]PopupMenumenuname[flags[,x[,y]]]

改變flags的值可以控制彈出式菜單的表現形式。Flags有兩組值。第一組值用來控制菜單的顯示方式,包括POPUPMENU_LEFTALIGNPOPUPMENU_CENTERALIGN,POPUPMENU_RIGHTALIGN,分別表示以x為左邊界,以x為中心和以x為右邊界的顯示方式,并且以x為左邊界是缺省的方式;另外一組值用來控制菜單項的選中方式,包括POPUPMENU_LEFTBUTTON和POPUPMENU_RIGHTBUTTON,分別表示左鍵選中和左/右鍵選中均可,并且左鍵選中是缺省的方式。Flags的值由上面的兩組值經過OR運算得出。例如,要求左對齊顯示并且左鍵選中為準,則應有:

flags=POPUPMENU_LEFTALIGNORPOPUPMENU_LEFTBUTTON

x和y用來定義菜單彈出的位置、缺省是鼠標點中的位置。

菜單項的其他屬性
用ALT 字母鍵激活頂層菜單,或者在菜單激活后用字母鍵激活一個菜單項,必須學會使用&。&用在菜單項的標題屬性(Caption)里。它的用法和作用與在用C語言編制的Windows程序中的用法和作用相同。
有時希望頂層菜單之間的間隔大一些,或者某個頂層菜單出現在菜單條的最右端,這時就要用到標題屬性是空格的菜單。如果一個菜單的標題是由多個空格組成的,那么這個菜單在菜單條上就占用跟空格的個數相應的空間,并且它后面的菜單也順序地后移;如果這個菜單的Visible屬性是False,那么它就跟不存在一樣。

窗口設計的原則和舉例
下面是一個浮動窗口技術的例子。為了引起用戶的注意,或者必須保證含有重要信息的窗口不被其他窗口覆蓋,就要用到浮動窗口技術,建立一個“總在最前面”(TopMost)的窗口。具體的做法是:
(1)在VB程序中加入如下的聲明:

DeclareFunctionSetWindowPosLib"user"(Byvalh,Byvalhb,Byvalx,Byvaly,By
valcx,Byvalcy,Byvalf)AsInteger
GlobalConstSWP_NOMOVE=2
GlobalConstSWP_NOSIZE=1
GlobalConstHWND_TOPMOST=1
GlobalConstHWND_NOTOPMOST=2
GlobalConstFLAGS=SWP_NOMOVEOrSWP_NOSIZE

(2)假設要把窗體frmExample設置成總在最前面的窗口,只要在frmExample窗體的Form_Load

過程里加入以下代碼:

Dimsuccess

success=SetWindowPos(frmExample.hWnd,HWND_TOPMOST,0,0,0,0,FLAGS)

如果要取消總在最前面的特性,則可以執行如下的代碼:

success=SetWindowPos(frmExample.hWnd,HWND_NOTOPMOST,0,0,0,0,FLAGS)

success不等于0表示SetWindowPos執行成功。

在MDI程序里,有一個窗口是所有其他窗口的父窗口,各個子窗口完成相對獨立的功能,就像是多個獨立的工具組合起來一樣。在這方面,MSWord和Windows的FileManager是最好的例子。->


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
疯狂做受xxxx高潮欧美日本| 亚洲欧美精品suv| 久久精品国产亚洲| 亚洲精品98久久久久久中文字幕| 亚洲欧美一区二区三区情侣bbw| 成人福利视频网| 欧美人与性动交a欧美精品| 丝袜亚洲欧美日韩综合| 7777kkkk成人观看| 欧洲亚洲免费在线| 精品福利在线视频| 2021国产精品视频| 精品av在线播放| 国产日韩视频在线观看| 亚洲精品一区av在线播放| 色av中文字幕一区| 久久精品国产久精国产一老狼| 亚洲国产古装精品网站| 色狠狠av一区二区三区香蕉蜜桃| 羞羞色国产精品| 亚洲精品免费一区二区三区| 岛国av一区二区| 丝袜亚洲欧美日韩综合| 亚洲国产精品99久久| 日韩av在线网址| 亚洲色无码播放| 色99之美女主播在线视频| 成人免费视频在线观看超级碰| 国内精品久久久久久中文字幕| 国产精品白丝jk喷水视频一区| zzjj国产精品一区二区| 丰满岳妇乱一区二区三区| 欧美电影在线观看高清| 精品国产一区二区三区四区在线观看| 一级做a爰片久久毛片美女图片| 亚洲天堂第一页| 欧美日韩999| 久久久久中文字幕| 懂色av影视一区二区三区| 国产精品三级网站| 日本亚洲精品在线观看| 日韩有码在线视频| 欧美日韩在线视频一区二区| 性亚洲最疯狂xxxx高清| 欧美精品成人91久久久久久久| 日韩视频在线免费| 精品日本美女福利在线观看| 亚洲精品美女久久| 亚洲aa中文字幕| 久久夜色精品国产亚洲aⅴ| 国内精品美女av在线播放| 亚洲第一视频网站| www亚洲精品| 超碰97人人做人人爱少妇| 97精品在线视频| 成人网页在线免费观看| 亚洲精品一区二区三区婷婷月| 国产午夜精品全部视频播放| 9.1国产丝袜在线观看| 4444欧美成人kkkk| 日韩国产欧美区| 久久精品99久久久香蕉| 一夜七次郎国产精品亚洲| 久久久国产精品视频| 亚洲网站视频福利| 亚洲国产精品小视频| 三级精品视频久久久久| 日韩亚洲精品视频| 这里只有精品在线播放| 国产精品福利在线观看网址| 66m—66摸成人免费视频| 日韩在线观看av| 成人免费淫片aa视频免费| 美女视频黄免费的亚洲男人天堂| 日韩国产欧美精品一区二区三区| 亚洲情综合五月天| 久久精品国产欧美亚洲人人爽| 不卡av日日日| 俺去亚洲欧洲欧美日韩| 播播国产欧美激情| 九九视频这里只有精品| 亚洲一区二区久久久| 国产精品视频久久| 国产精品日韩在线观看| 欧美成人精品激情在线观看| 亚洲精品不卡在线| 日本精品久久中文字幕佐佐木| 亚洲国产美女久久久久| 亚洲女人被黑人巨大进入| 欧美成在线观看| 青青在线视频一区二区三区| 性色av一区二区三区红粉影视| 亚洲人成毛片在线播放| 日韩在线观看免费av| 欧美一级大片在线免费观看| 久久伊人91精品综合网站| 57pao成人永久免费视频| 麻豆一区二区在线观看| 国产亚洲精品久久久久动| 精品国产拍在线观看| 亚洲精品乱码久久久久久按摩观| 久久国产精品久久久久| 国产成人精品免费久久久久| 国产精品入口日韩视频大尺度| 欧美亚洲在线观看| 亚洲欧美一区二区激情| 91精品在线观看视频| 亚洲最新视频在线| 69av成年福利视频| 精品视频在线播放| 日韩电影大全免费观看2023年上| 91精品久久久久久久久青青| 最近2019中文字幕第三页视频| 欧美在线视频播放| 国产99久久精品一区二区 夜夜躁日日躁| 久久精品视频播放| 伊是香蕉大人久久| 久久综合久久美利坚合众国| 欧美日本啪啪无遮挡网站| 国语自产精品视频在线看一大j8| 亚洲第一av网| 欧美精品videos另类日本| 亚洲人在线视频| 国产成人一区二区三区电影| 国产精品mp4| 国产精品69久久| 97超碰国产精品女人人人爽| 欧美一级电影久久| 久久99青青精品免费观看| 欧美在线不卡区| 久久精品国产一区| 欧美精品第一页在线播放| 日本亚洲精品在线观看| 国产精品国产福利国产秒拍| 亚洲成人国产精品| 久久久久999| 久久久久国色av免费观看性色| 色综合视频网站| 久久视频在线免费观看| 九九九久久国产免费| 伊人久久男人天堂| 91久久国产精品| 亚洲欧美制服综合另类| 日韩精品视频在线免费观看| 国产精品久久综合av爱欲tv| 精品久久久av| 亚洲国产精品99久久| 欧美大片网站在线观看| 78m国产成人精品视频| 在线观看精品自拍私拍| 91国内揄拍国内精品对白| 九九热精品在线| 日韩精品在线视频观看| 国产精品久久久久久久7电影| 欧美激情在线观看| 欧美老肥婆性猛交视频| 成人a视频在线观看| 国产啪精品视频网站| 久久伊人免费视频| 疯狂做受xxxx欧美肥白少妇| 欧洲亚洲免费视频| 久久精品国产清自在天天线| 精品国产欧美成人夜夜嗨| 欧美高清视频在线|