



下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第六章 表單設計與應用表單(Form)可以把它理解為應用程序的界面.示范.表單的英文是Form從現在起,請大家注意本章中提到的每一個概念的英文名字并記住它.創建表單的方法和前面創建其他東西的方法類似,有以下幾種方法:(1) 文件à新建à表單(2) 項目管理器中,展開到文檔,選表單,新建(3) 命令方式:CREATE FORM不管用哪種方法,都將打開表單設計器窗口.同時激活的還有表單控件工具欄和屬性工具欄.演示放一個按鈕,并將按鈕的標題改成”確定”.運行后看效果.如果要深入地學習怎么樣設計表單,有必要在講表單設計之前闡述幾個概念6.1面向對象的概念編程序有兩種方法:一種稱為面
2、向過程的方法,一種稱為面向對象的方法.所謂面向過程的方法,就是傳統的,手工輸入命令,從程序的第一行起一直寫到程序的最后一行.這種方法效率低,代碼不具有可重用性.所謂面向對象的編程方法,就是我們面向的不再是一行行的程序語言,而是面對著一個一個的具體對象,對這些具體對象進行編程就可以了.什么叫對象?對象就是一個個具體的東西,例如一個按鈕,一個對話框,一個表單,這些都可以看成是一個對象.我們只需要面向這些按鈕,表單等等對象來編寫程序就行了.面向對象的編程方法有點類似與組合家具的拼裝.設想,假如我們要打一個柜子,要求有五個抽屜,一個柜門,面向過程的方法就是上山去采木,然后干燥木頭,量線距木,刨子刨木頭
3、打成一塊塊的板材,依此做成框架和五個抽屜等等.而面向對象的方法則是現在已經有了現成的抽屜,框架和柜門,我們只要把它們拿過來拼裝一下就行了.面向對象的方法也是這樣,假如我們要編寫一個程序界面,這個界面有兩個按鈕,一張表格,如果系統已經給我們提供好了按鈕和表格的半成品(就象抽屜,抽屜這個半成品我已經做好了,直接拿來改一改就行),一樣的,我們只要把系統提供給我們的這個按鈕和表格直接拿來稍做修改就完成了,根本不需要為怎么樣生成這個按鈕而傷腦筋去寫程序.這就是面向對象的編程方法.有了面向對象的技術,我們只需要去關心如何組合和調試系統給我們提供的配件就行了.6.1.1對象與類的概念(1)對象: 對象的含義
4、實際上有廣義和狹義兩種理解。廣義上說,對象就是一個實體,例如現實生活中的一張桌子、一張椅子,都可以看成一個對象;狹義上來說,只局限在程序設計的范疇內,那么程序中的一個按鈕,一個表單等等,都叫做對象。(2)類:類的概念用不著把它理解得太抽象,就從字面上來理解就行了.就是指一個劃分.例如,所有的動物都是動物類,所有的貓都是貓類.在座的都是人類.在計算機中,所有的按鈕都屬于按鈕類,所有的表單都屬于表單類,等等.書中還提到了子類與繼承的問題.這個問題也可以形象化地來理解.如貓類,它就是動物類的子類.所謂繼承,是指子類可以自動父類的一些特點.如貓類,它是動物類的子類,那么動物類的一些特點,貓都可以自動擁
5、有,這個就叫繼承VFP中的對象可以分為兩大基類,即容器類和控件類。與此對應,VFP對象也分為容器對象和控件對象。分別介紹如下:(1) 容器類對象容器類可以包含其他對象,并且允許訪問這些對象。例如表單,它本身就是一個大的容器類,它里面可以放置按鈕、文本框等等。又比如一個命令按鈕組,它里面可以容放很多命令按鈕,所以它也是一個容器類對象。容器類及其能包含的對象如表6-1所示:表6-1 容器類對象對象名稱語法名稱工具欄圖標 能包含的對象表單集Formset表單,工具欄表單Form頁框, 任意控件,容器,或自定義對象命令按鈕組CommandGroup命令按鈕選項按鈕組OptionGroup選項按鈕容器C
6、ontainer任意控件頁框PageFrame頁面頁面Page任意控件,容器和自定義對象表格Grid表格列工具欄ToolBar任意控件,頁框和容器(2) 控件類對象控件類對象通常是指一個可以以圖形化的方式顯示出來并能與用戶進行交互的對象。區別于容器類對象,它其中不能再包含別的對象。表6-2列出了常用的控件類對象。表6-2 控件類對象對象名稱語法名稱工具欄圖標 說 明文本框Text用于編輯字段或變量的內容復選框Check用于邏輯型數據選擇輸入組合框Combo打開一個列表供選擇(不可多選)命令按鈕Command用于啟動一個事件,完成某項任務標簽Lable用于顯示要說明的文字編輯框Edit用于字符型
7、變量和備注型字段的編輯超級鏈接HyperLink可以使活動文件轉入URL圖像Image顯示.bmp圖片線條Line用于顯示水平或豎直或對角線的圖形列表框List顯示一列數據供選擇(可多選)定時器Timer用于后臺計時控制形狀Shape用于顯示矩形到圓的圖形控制微調Spinner可通過單擊上下箭頭微調框內的數值當要在表單中添加這些對象時,只需要單擊“控件工具欄”中的相應圖標按鈕,然后在表單的適當位置再次單擊即可。被安放的對象將會以其語法名稱后跟序號來默認命名,如Text1,Text2等等。當在程序中引用它們時,只需指出其名稱(如Text1,Text2)即可。6.1.2 對象的屬性 對象的屬性描述
8、事物的特性和狀態。比方說,描述學生的姓名、性別、出生日期等,這些都是學生這個對象的屬性。又例如,表單中的一個按鈕,它就是一個對象,那么對于按鈕這個對象來說,它又有如下的一些屬性: Caption: 該屬性指的是這個按鈕的標題名。 Enabled: 該按鈕是否可用。 ForeColor: 這個按鈕的前景顏色。 Visible: 這個按鈕是否可見。例:改變caption屬性的值,使之成為”OK”,則按鈕的標題變為”OK” 改變visible屬性值使之成為.f.,則按鈕不可見.6.1.3 對象的事件和方法每個對象都可以對一個被稱為事件的動作進行識別和響應。事件是一種預先定義好的特定的動作,由用戶或系
9、統激活。在多種情況下,事件是通過用戶的交互操作產生的。例如,對一部電話來說,電話是一個對象,那么我們拿起電話聽筒的時候,拿電話的這個動作就激發了一個事件(接聽電話的事件)。在VFP中,可以激發事件的用戶動作主要包括:鼠標的點擊、鼠標的移動、鍵盤的按下等等,都可以觸發一個事件。例如鼠標的點擊,它就是一個click事件。方法是規定對象如何實現其行為的程序或過程。它是一個程序,這個程序可以是相對于某個事件而編寫的, 比方說對于一個click事件,我們可以為它編制一個方法,一旦click事件發生,系統就會調用這個方法來完成相應的程序動作。這是相對于某個事件的方法,但是方法本身也可以獨立于事件之外,與任
10、何事件都不發生聯系。事件集合雖然范圍很廣,但卻是固定的,用戶不能創建新的事件。然而方法程序集合卻可以無限擴展。VFP中常用的事件和方法有:(1) Init事件在對象建立時引發。在表單對象的Init事件引發之前,將先引發它所包含的控件對象的Init事件,所以在表單對象的Init事件代碼中能夠訪問它所包含的所有控件對象。(2) Destroy事件在對象釋放時引發。表單對象的Destroy事件在它所包含的控件對象的Destroy事件引發之前引發,所以在表單對象的Destroy事件代碼中能夠訪問它所包含的所有控件對象。(3) Error事件當對象方法或事件代碼在運行過程中產生錯誤時引發。事件引發時,系
11、統會把發生的錯誤類型和錯誤發生的位置等參數傳遞給事件代碼,事件代碼可以據此對錯誤進行相應的處理(4) Load事件在表單對象建立之前引發,即運行表單時,先引發表單的Load事件,再引發表單的Init事件。(5) Unload事件在表單對象釋放時引發,是表單對象釋放時最后一個要引發的事件。比如在關閉包含一個命令按鈕的表單時,先引發表單的Destroy事件,然后引發命令按鈕的Destroy事件,最后引發表單的Unload事件。(6) Click事件用鼠標單擊對象時引發。(7) DbClick事件用鼠標雙擊對象時引發。(8) RightClick事件用鼠標右擊對象時引發。(9) Interactiv
12、eChange事件當用鼠標或鍵盤通過交互式改變一個控件的值時引發。(10) Release方法將表單從內存中釋放(清除)。比如表單有一個命令按鈕,如果希望單擊該命令按鈕時關閉表單,就可以將該命令按鈕的Click事件代碼設置為: ThisForm.Release(11) Refresh方法重新刷新表單或控件及它的所有值。當表單被刷新時,表單上的所有控件也都被刷新。當頁框被刷新時,只有活動頁被刷新。(12) Show方法顯示表單。該方法將表單的Visible屬性設置為.T.,并使表單成為活動對象。(13) Hide方法隱藏表單。該方法將表單的Visible屬性設置為.F.。(14) SetFocu
13、s方法此控件獲得焦點,使其成為活動對象。如果一個控件的Enambled屬性值或Visible屬性值為.F.,將不能獲得焦點。6.1.4 對象(類)的特性對象之間是有差別的,但是它們之間存在著一些共性,即繼承性、多態性和封裝性。這也是類所具有的特性,因此在這里一并講述。(1) 繼承性:指如果一個對象是在另一個對象的基礎上產生的,那么這個對象自動擁有原來對象的全部特征(當然也可以為它再加上一些新的特征)。這種繼承的特性可以極大地簡化數據庫系統的代碼編制的復雜程度。(2) 多態性:指不同的對象可能具有相同的屬性、方法和事件類型。例如,相關聯的幾個對象可以同時包含Refresh方法和Click事件,盡
14、管具體的屬性值、方法代碼可能有所不同。也就是說,當某個過程將其中一個對象作為參數傳遞時,它不必知道參數是何種類型的對象,只需要調用Refresh方法即可。這一特性提高了應用系統開發的獨立性。(3) 封裝性:指對象的屬性、方法和事件代碼都存入對象中,對象調用的一般用戶不需要了解該對象的屬性,方法和事件代碼,只需要知道這個對象具有哪些屬性、事件和方法,如何使用這些屬性、事件、方法即可。例如,對一個按扭,我們只需要知道它有click這個事件、有caption這個屬性,至于它的這些事件、屬性是如何被計算機所捕獲的,我們并不需要知道。這就是它的封裝性。6.1.5 容器中對象及層次的引用在VFP中,當我們
15、使用了容器對象后,就會產生對象的嵌套層次關系。當我們引用嵌套層次關系中的對象的時候,往往需要指明對象在嵌套層次中的位置,這時,我們就需要用到如下的幾個屬性或關鍵字: This: 當前對象。光標落在什么上面,或者當前正在對什么編程? Parent: 當前對象的直接容器對象,即父對象。 ThisForm: 當前對象所處的表單。 ThisFormSet: 當前對象所處的表單集。其中,Parent是屬性,其他三個是關鍵字。他們在對象嵌套的層次關系中分別指明不同的引用對象。例如:This.Caption=“OK” *當前對象的標題設為“OK”。This.Parent.BackColor=RGB(1920
16、0) *設置當前控件所在的表單的前景色為暗紅色。例:表單中有一個按鈕command1和一個頁框pageframe1,頁框中包含兩個頁面page1和page2,其中分別包含一個文本框text1和一個按鈕command1.注意這里有兩個command1(1)假設當前對象為command1(正在對command1編程),要引用page1里的text1:Thisform.pageframe1.page1.text1.value=OKThis.parent.pageframe1.page1.text1.value=”OK”(2)假設當前對象為page2中的command1,要引用page1中的text1
17、:Thisform.pageframe1.page1.text1.value=OKThis.parent.parent.page1.text1.value=OK6.1.6 對象的屬性,方法及事件的調用(1) 對象的屬性設置及引用方法設置對象的單個屬性 既可以在運行時也可以在設計時為它進行屬性設置。語法是: <對象>.<屬性>=<屬性值>例如,設置button1的標題屬性為“退出”:button1.caption=“退出”設置對象的多個屬性 當需要對某個對象的多個屬性進行設置時,可以使用WITHENDWITH結構簡化設置的過程。例如,在表單form1中,要設置
18、表格grid1的列的多個屬性,可以使用以下語法結構:WITH Form1. Grid1. Column1.width=5.Resizable=.F.ForColor=RGB(0,0,0).BackColor=RGB(255,255,255).SelectOnEntry=.T.ENDWITH(2) 調用方法程序如果對象已經創建,便可以在應用程序中的任何一個地方調用這個對象的方法程序。語法是:<對象>.<方法>例如,下列語句調用方法程序來顯示表單,并將光標的焦點設置在文本框上:frsFormSet.frmForm1.showfrsFormSet.frmForm1.txtGe
19、tText1.setFocus在表達式中,有返回值的方法程序必須以圓括號結尾。例如,下列語句將用戶自定義的GetNewCaption方法程序的返回值設置成表單的標題:Form1.Caption=Form1.GetNewCaption( )傳遞方法程序的參數必須放在方法程序名后面的圓括號中,例如,Form1.show(nStyle)即將nStyle傳遞給Form1的show方法程序代碼。6.2 Visual Foxpro 6.0的編程工具與步驟6.2.1 表單設計器表單設計器的啟動方法和控件擺放的方法前面已經介紹過。以下重點介紹它的其他一些附加窗口和工具欄。 1. 屬性窗口(如圖6-4所示)(1
20、) 對象下拉列表框該框標識當前選定的對象。單擊右端的向下箭頭,可看到包含當前表單、表單集和全部控件的層次列表,我們可以從列表中選擇要更改其屬性的表單或控件。注意,其中對象的擺放是按層次規則的,因此我們可以從中清楚地看到對象之間的包含關系。(2) 選項卡選項卡可按分類顯示屬性、事件和方法程序。 全部: 顯示全部屬性,事件和方法程序。 數據: 顯示有關對象數據特征和屬性。 方法程序: 顯示方法程序和事件。 布局: 顯示所有的布局屬性。 其他: 顯示其他和用戶自定義的屬性。由于對象的屬性和方法在這里被歸類顯示(并按首字母排序),因此可以幫助我們在設置相關屬性時快速查找。例如,要設置按鈕的Captio
21、n屬性,由于是和布局有關的,所以切換到布局選項卡,并按字母序就可以快速找到;又如要看到此按鈕所有相關的方法程序,只需切換到方法程序選項卡,尋找其中是“用戶自定義過程”的項即可。屬性的設置方法是直接在屬性設置框中鍵入值;而方法程序的查看和編輯方法是先選定該控件要設置的事件或方法,然后用鼠標雙擊,在彈出的事件方法代碼框中修改和編輯,完成后直接關閉該代碼窗口。2. 表單設計器工具欄(如書上圖6.8所示)其中的按鈕依次為: 設置TAB鍵次序:顯示當按下Tab鍵時,焦點從一個對象移向另一個對象的跳轉次序。(設置方法參書P184) 數據環境:顯示該表單運行時所需要的數據環境。(下面介紹) 屬性窗口:顯示或
22、隱藏所選對象的屬性窗口。 代碼窗口:顯示或隱藏所選對象的代碼窗口,用戶可以在其中查看和編輯對象的事件代碼。 表單控件工具欄:顯示或隱藏“表單控件”工具欄。 調色板工具欄:顯示或隱藏“調色板”工具欄。 布局工具欄:顯示或隱藏“布局”工具欄。 表單生成器:啟動表單生成器,快速生成表單。 自動格式:啟動“自動格式生成器”對話框,為所選表單提供顯示風格。至少選一個控件才能激活此按鈕。6.4.3 數據環境每一表單或表單集都包含一個數據環境。數據環境是一個對象,它包含與表單相互作用的表或視圖,以及表單所要求的表之間的關系。用戶可以使用“數據環境設計器”直觀地、可視化地設置表單數據環境,并與表單一起保存在表
23、單文件中。1.打開數據環境設計器方法一:“顯示”à”數據環境”方法二:在表單空白處(不放控件的地方)右擊,彈出數據環境設計器2.向數據環境添加表或視圖3.從數據環境移去表或視圖在環境中單擊選中要移去的表或視圖后,按右邊的”移去”按鈕.6.2.3 用表單生成器創建快速表單在利用表單設計器創建表單時,一旦表單設計器被激活時,在VFP系統主菜單上會增加一個“表單”的菜單,我們可以選擇其中的“快速表單”命令來生成一個簡單的快速表單,如圖所示。圖 表單生成器選擇需要的數據庫和表,將表中所有字段添加到“選定字段”框中,然后選“樣式”選項卡,在“樣式”中選擇一種樣式。單擊“確定”按鈕,即可生成快速
24、表單。執行表單時系統會提示保存表單。用表單生成器生成的只是個表單外形,要用“表單設計器”加以修改和完善。例如,對剛才生成的快速表單添加四個按鈕控件和一個容器控件:先添一個容器,在容器里放置四個按鈕,并調整四個按鈕在容器的中央,可使用布局工具欄使之布局合適。(如圖7-6)圖 用表單生成器生成快速表單6.2.4控件的屬性及方法的編輯前面添加了四個命令按鈕控件,運行表單可以發現,它們不起任何作用。若要它們能響應事件,就要設置控件的屬性及方法。例如:要求四個命令按鈕能響應如下事件: 單擊COMMAND1:顯示上一條記錄。 單擊COMMAND2:顯示下一條記錄。 單擊COMMAND3:顯示第一條記錄。
25、單擊COMMAND4:顯示最后一條記錄。我們先設置COMMAND1的屬性。步驟如下:1. 打開屬性窗口,在選擇對象下拉表框中選中COMMAND1。2. 在“布局”選項卡中選擇“Caption”(標題),在文本框中將原標題“Command1”改為“上一條記錄”。這時按鈕COMMAND1的標題變為“上一條記錄”。3. 在“方法程序”選項卡中選擇“Click Event”(單擊事件),雙擊。4. 在彈出的“COMMAND1.CLICK”代碼窗口中輸入如下的方法程序:IF .NOT. BOF()SKIP 1THISFORM.REFRESHELSETHISFORM.COMMAND1.ENABLED=.F
26、. ENDIF IF .NOT. EOF()THISFORM. COMMAND2.ENABLED=.T. ENDIF5. 關閉代碼窗口。COMMAND1的單擊事件的方法程序即編寫完成。6. 其它三個按鈕的屬性設置同上。將COMMAND2的Caption設置為“下一條記錄”,方法程序為:IF .NOT. EOF()SKIPTHISFORM.REFRESH ELSETHISFORM.COMMAND2.ENABLED=.F. ENDIF IF .NOT. BOF()THISFORM.COMMAND1.ENABLED=.T. ENDIF將COMMAND3的Caption設置為“第一條記錄”,方法程序為
27、: GO TOP THISFORM.REFRESH IF .NOT. EOF()THISFORM. COMMAND2.ENABLED=.T. ENDIF IF .NOT. BOF()THISFORM.COMMAND1.ENABLED=.T. ENDIF將COMMAND4的Caption設置為“最后一條記錄”,方法程序為: GO BOTTOM THISFORM.REFRESH IF .NOT. EOF()THISFORM. COMMAND2.ENABLED=.T. ENDIF IF .NOT. BOF()THISFORM.COMMAND1.ENABLED=.T. ENDIF最后,我們再設置容器控
28、件Container1的布局屬性:選中容器控件,在“布局”選項卡中選中Special Effect,設置為“凹下”,使之產生凹下的效果。6.2.5 表單的運行表單設計完成后,可運行一下看效果是否滿意。執行表單主要有兩種方法: 方法1: 選擇“表單”菜單中的“執行表單”命令 方法2: 在命令窗口中輸入命令: DO FORM 表單文件名 NOSHOW如果使用了NOSHOW子句,表單運行時將不顯示,直到表單對象的Visiable屬性被設置為.T.或者調用了SHOW方法。(翻到書P192)6.6基本型控件6.6.1標簽(Label)標簽用以顯示文本.1.Caption屬性被顯示的文本在Caption屬
29、性中指定.需要注意的是,在設計代碼時,應該用Name屬性值來引用標簽而不是用Caption屬性.同樣的概念也可類推到按鈕等.如以下”確定”按鈕,在程序代碼中如要引用這個按鈕應該是button1.而不是”確定”(以上屬性也適用于其他大多數控件)2.Alignment屬性指定標簽在表單中的對齊方式.0-左對齊,1-右對齊,2-居中(以上屬性也適用于其他大多數控件)3.F-屬性Fontsize:字體的大小Forecolor:字體的顏色Fontunderline:字體是否有下劃線FontItalic:字體是否斜體FontBold:字體是否是粗體6.6.2命令按鈕(Command Button)命令按鈕
30、用來完成某個特定功能.實現該功能的代碼放在click事件中,用戶通過單擊該按鈕就可以執行這段代碼.1. Enabled屬性指定該按鈕是否可用.如將其值設置為.F.,則該按鈕灰顯.2. Visible屬性指定該對象是否可見.如將其值設置為.F.,則該按鈕不可見.(以上兩屬性也適用于其他大多數控件)6.6.3文本框(Text)為表單提供輸入框.1. ControlSource屬性為文本框指定要綁定的數據源.(可以是一個字段或內存變量).運行時,文本框首先顯示該變量的內容.而用戶對文本框的編輯結果,也會最終保存到該變量中.(該屬性也適用于編輯框,復選框,列表框,組合框等控件)2. Value屬性該文
31、本框的值.可以通過設置該屬性為文本框指定初始值.若要在運行時不讓用戶改變所顯示的文本,可把文本框的ReadOnly屬性設置為.T.,或者把文本框的Enabled屬性設為.F.(該屬性也適用于其他大多數控件)3.PasswordChar屬性設置回顯字符.例如,將該屬性值設置為*,則不論用戶輸入什么字符都將以*回顯.常用于密碼的輸入框.6.6.4 編輯框(Edit)編輯框用于輸入或更改文本的內容。與文本框不同的是,編輯框可以輸入多段文字。編輯框一般用來顯示長的字符型字段或備注型字段(將編輯框與備注型字段綁定),并且允許用戶編輯文本。編輯框也可顯示一個文本文件或剪貼板中的文本。1.HideSelec
32、tion屬性指當編輯框失去焦點時,編輯框中選定的文本是否依然處于選定狀態.如果設置為.T.(默認值),則表示當失去焦點時,編輯框中選定的文本不顯示為選定狀態,只有當再次獲得焦點時才重新處于選定狀態;如果該屬性值設置為.F.,則表示失去焦點時,該編輯框中選定的文本仍處于選定狀態.1.ReadOnly屬性指定用戶能否對編輯框中的內容進行修改.默認為.F.,即非只讀.如果設置為.T.,則該編輯框為只讀.ReadOnly屬性和Enabled屬性是有區別的.盡管在Readonly屬性為.T.和Enabled屬性為.F.的情形下該編輯框都無法編輯,但前種情況下光標依然可以落入其中,而后者則不行.本特點也適
33、用于其他一些控件(文本框,表格等)2.ScrollBars屬性為了方便用戶處理長文本的數據,VFP還提供了可用來顯示垂直滾動條的ScollBars屬性。該值為2(默認值)時,允許有滾動條,為0時則沒有滾動條.3.SelStart屬性返回用戶在編輯框中所選文本的起始點位置或插入點位置.該屬性也適用于文本框,組合框等控件4.SelLength屬性返回用戶在編輯框中所選文本的字符數.若沒有文本被選定,則返回05.SelText屬性返回用戶編輯區內選定的文本,如果沒有選定任何文本,則返回空串書例6.6設置編輯框的hideselection屬性為.F.設置查找按鈕的click事件代碼:n=AT(&quo
34、t;example",Thisform.edit1.value)if n<>0thisform.edit1.selstart=n-1thisform.edit1.sellength=len("example")elsewait windows "ûÓÐÆ¥Åä" timeout 1endif設置替換按鈕的click事件代碼:if thisform.edit1.seltext='example'thisform.edit1.seltext
35、='exercise'elsewait windows 'ûÓÐÑ¡ÔñÐèÒªÖû»µÄµ¥´Ê' timeout 1endif6.6.5 復選框(Check) 復選框是從多個選項中選擇任意個選項,可以選一個,也可以多選或全選。1.Caption屬性用來指定復選框旁邊的標題2.ControlSource屬性指明復選框所綁定的數據源.作為數據
36、源的字段變量或內存變量,其類型可以是數值型或邏輯型.對于數值型變量,值0.1.2(.null.)分別對應復選框未被選中,被選中和不確定.對于邏輯型變量,.f.,.t.null.分別表示它的未被選中,被選中和不確定3.value屬性如果沒有設置controlsource屬性,那么可以通過value屬性來設置或返回復選框的狀態.該屬性默認值為0【例】利用復選框來控制輸入或輸出文本的字體風格。 編寫表單的Activate事件代碼:this.text1.setfocus 為復選框的click事件編寫的代碼:thisform.text1.fontbold=this.valuethisform.text1
37、.fontitalic=this.valuethisform.text1.fontunderline=this.value復選框支持圖形按鈕形式,只需將復選框的style屬性設置為1-圖形,然后分別設置picture、downpicture和disablepicture屬性為所需要的圖象,這樣就可以把復選框設計成圖文并茂的圖形按鈕形式了。其中,picture為正常狀態時按鈕的圖象,downpicture為按鈕按下時的圖象,disablepicture為按鈕不可用時的圖象。6.6.6 列表框(List) 列表框顯示一列數據,用戶可以從中選擇一個或多個數據存入到指定變量中.列表框要顯示哪個數據表中
38、的數據呢?1. RowsourceType屬性和RowSource屬性RowsourceType屬性指明列表框中條目的數據源類型,RowSource屬性指明列表框中條目的數據源.其具體含義見書上p201表6.15最常見的一種情況是列表框要顯示的數據處在哪個數據表中,就把它的rowsourcetype屬性設置成6-字段,再把它的rowsource屬性設置成相應的字段值.例如,在表單中放上一個list和一個command,設置表單的數據環境為課程.dbf,然后將這個list的rowsourcetype屬性設置成6-字段,再把它的rowsource屬性設置成相應的字段.運行即可看出效果. 2.Col
39、umnCount屬性指定列表框的列數3.ControlSource屬性指定要綁定的數據源4.Value屬性返回列表框中被選中的條目.該屬性可以是字符型(默認),也可以是數值型.如果ControlSource屬性指定了字段或內存變量,那么Value屬性與ControlSource屬性指定的變量就會具有相同的數據和類型.對于列表框和組合框,該屬性只讀.5.MultiSelect屬性指定用戶能否在列表框中進行多重選擇.0或.f.(默認)不可多選,1或.t.可多選,由用戶按CTRL鍵來實現多選.6.list屬性用以存取列表框中數據條目的字符串數組.見書例8.Selected屬性指出列表框內的某個條目是
40、否處于選定狀態.如書例.例如在前面的例子中,為command的click事件加上如下代碼:if thisform.list1.selected(3)messagebox('選中了!')endif運行表單,當list中的第三個條目被選中時,按下按鈕就會彈出對話9.additem方法為列表框增加一個新條目【例】為列表框添加四個選項ABCD。首先設置列表框list1的RowSourceType取值為0,然后為列表框所在的表單的init事件添加如下代碼:thisform.list1.additem(A')thisform.list1.additem(B')thisfor
41、m.list1.additem(C')thisform.list1.additem(D')則每次表單啟動初始化的時候都會為列表框添加四個選項。【例】刪除列表框中的一個選項C。thisform.list1.removeitem(3)6.6.7 組合框(Combo) 使用組合框可以把相關的信息以列表框的形式顯示出來。我們可以通過設置它的style屬性來指定組合框的類型。0-下拉組合框 2-下拉列表框(1)下拉組合框:用戶可以單擊下拉組合框上的按鈕以查看選擇項,也可以直接在按鈕旁邊的框中直接輸入一個新項。 (2)下拉列表框它與下拉組合框的區別是:下拉組合框允許直接輸入新內容,并將新內
42、容作為一個項直接添加到組合框對象中,下拉列表框不允許輸入新內容,只能在列表項中選擇現有項目。1.怎樣給組合框中的下拉列表里添加值呢?可以簡單地用生成器來生成.右擊彈出生成器.添加的值是手工輸入的數據在”列表項”中選擇”手工輸入數據”,然后在下面的列中手工輸入添加的值如果是數據表中的字段值,則選擇”表或視圖中的字段”2.Value屬性返回組合框中被選中的條目.該屬性可以是字符型(默認),也可以是數值型.例如,為上例的表單添加一個按鈕,寫入click事件代碼:if bo1.value='計算方法'messagebox('ok!')endif則當組合框選中了計算方法后
43、,會彈出ok!書例6.7(略)表單的load和unload事件代碼:close database all組合框的Interactive事件代碼t_table=this.valueselect 1use &t_tablethisform.list1.rowsource=t_table命令按鈕”確定”的click事件代碼:sele 1set fields tofor i=1 to thisform.list1.listcountif thisform.list1.selected(i)mf=thisform.list1.list(i)set fields to &mfendifen
44、dforbrowse6.6.8 計時器(Timer)計時器獨立于用戶的操作,它對時間作出反應,在一定的時間間隔內觸發執行某一任務。在運行過程中計時器控件是不可見的,因此不考慮該控件的位置和大小。它的主要屬性是:Interval: 規定計時器觸發的時間間隔,單位是ms。它的取值范圍是02 147 483 647,即最長時間間隔不超過24天。【例】制作不斷閃現的圖片。在表單中添加一個圖片控件image1,并設置好圖片源。(設置好圖像控件的stretch屬性為1,然后再選擇圖象文件!)思路: 不斷地改變圖片對象的Visible屬性來實現“閃爍”的效果。 為計時器填寫Init事件代碼:PUBLIC c
45、ccc=-1 為計時器填寫Timer事件代碼:cc=-ccIF cc=1THISFORM.image1.visible=.t.ELSETHISFORM.image1.visible=.f.ENDIF 為計時器的Interver屬性設置為500,即每500毫秒觸發一次程序。運行表單,即可看到圖片的閃爍效果。如果要使其越閃越快,只需在末尾再加兩句:if erval>20erval=erval-15endif如果在放完的時候給出提示信息,只需要在上面的if語句中再加一句:Else
46、Messagebox(放完了!還看!)運行后發現確實有效果,但是死循環.需要在這之后再加上這幾句:thisform.releaseclear eventsquit6.7容器型控件容器型控件主要有命令組,選項組,表格,頁框等.容器與其所包含的控件一般都有自己的屬性,方法和事件,例如頁框和它所包含的頁面都有自己的Enabled屬性.如果是要指明其中的某一個頁面的Enabled屬性而不是整個頁框的Enabled屬性,必須從屬性窗口的對象下拉列表框中來選中它.其他的容器型控件也是如此,例如要為命令組中某一個命令按鈕的click事件編程,必須先在屬性窗口的對象下拉列表框中來選中它后再雙擊,否則就是對整個
47、命令按鈕組的click事件進行編程了.6.7.1命令按鈕組(CommandGroup)1.ButtonCount屬性指定命令組中按鈕的數目2.Buttons屬性用于存取命令組中各按鈕的數組.用戶可以利用該數組為命令組中的命令按鈕設置屬性或調用其方法.例如:ThisForm.myCommandG.Buttons(2).Visible=.f.即將命令組myCommandG中的第2個按鈕設置成隱藏的.3.Value屬性返回命令組中的當前按鈕的值.該值可以是數值型也可以是字符型.如果是數值型(默認),則指明是第幾個按鈕;如果是字符型,則指明的是Caption屬性為該值的按鈕.例:DO CASE CASE This.Value=1 *第一個按鈕被按下后要執行的動作 CASE This.value=2 *第二個按鈕被按下后要執行的動作 ENDCASE或者這樣寫:DO CASE CASE This.Value=確定 *確定按鈕被按下后要執行的動作 CASE This.value=取消 *取消按鈕被按下
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 寧波水平鋼支撐施工方案
- 綏化學院《景觀工程技術》2023-2024學年第二學期期末試卷
- 上海外國語大學賢達經濟人文學院《食品物理學》2023-2024學年第二學期期末試卷
- 餐飲安全培訓
- 上海電影藝術職業學院《互動敘事2》2023-2024學年第一學期期末試卷
- 《品味火鍋》課件
- 2025至2031年中國大功率干濕兩用吸塵器行業投資前景及策略咨詢研究報告
- 2025至2031年中國固定式(凸)焊機行業投資前景及策略咨詢研究報告
- 2025年新版試用期員工勞動合同模板大全
- 2025至2031年中國半流體齒輪潤滑脂行業投資前景及策略咨詢研究報告
- 國家開放大學《課程與教學論》形考任務1-4參考答案
- 【MOOC】跨文化交際-蘇州大學 中國大學慕課MOOC答案
- 九宮數獨200題(附答案全)
- 高處作業審批表
- 諾基亞LTE FDD設備技術說明(2)
- 清篩車挖掘輸送裝置
- 實名核驗(法人)業務辦理表
- 離合齒輪的工藝規程與專用夾具設計
- 武漢土地使用稅和土地征稅等級現行標準
- SCR法和Contirod法銅桿生產線的比較資料講解
- 繪本PPT:胡椒生長在哪里
評論
0/150
提交評論