課件Visual FoxPro數(shù)據(jù)庫-9課件_第1頁
課件Visual FoxPro數(shù)據(jù)庫-9課件_第2頁
課件Visual FoxPro數(shù)據(jù)庫-9課件_第3頁
課件Visual FoxPro數(shù)據(jù)庫-9課件_第4頁
課件Visual FoxPro數(shù)據(jù)庫-9課件_第5頁
已閱讀5頁,還剩46頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

9.1基本控件9.2選擇控件9.3復(fù)雜控件9.4表單集與多重表單本章目錄9.5用戶自定義類*9.1.1命令按鈕控件(COMMANDBUTTON)9.1基本控件表單是應(yīng)用系統(tǒng)的主要界面,是完成用戶所需要任務(wù)的組織者。單一的表單界面不能完成用戶復(fù)雜的工作要求。為此,程序開發(fā)者可以使用“表單控件”工具箱中的25個(gè)可視化的表單控件工具來構(gòu)造表單。控件(Control)可以圖形的形式出現(xiàn),并能顯示數(shù)據(jù)和響應(yīng)用戶或系統(tǒng)操作的對象。如,組成對話框的命令按鈕、列表框、復(fù)選框、文本框、組合框等,就是表單中控件(對象)。這些控件從功能和作用的角度可以分為基本控件、選擇控件和復(fù)雜控件?;究丶畎粹o、標(biāo)簽、文本框、編輯框、線條、形狀和圖像等7類控件。命令按鈕常用于發(fā)布命令,其在“表單控件”工具欄上的圖標(biāo)為。命令按鈕是最常用的控件之一,用于完成某一特定的操作。命令按鈕最常設(shè)置的屬性是Caption,一般使用屬性窗口設(shè)置該屬性,以便修改命令按鈕的標(biāo)題。命令按鈕最常用的事件是Click,在程序設(shè)計(jì)時(shí),將單擊某一命令按鈕時(shí)所要實(shí)現(xiàn)的功能寫成代碼片段,形成一個(gè)Click事件過程。這樣,當(dāng)用戶單擊按鈕后,程序就會(huì)調(diào)用Click事件過程,從而完成相應(yīng)的操作。1.命令按鈕概述命令按鈕的常見屬性如表9-1所示。2.命令按鈕的屬性圖9-1例9-1的實(shí)際運(yùn)行效果圖表9-1常用的命令按鈕屬性及說明【例9-1】設(shè)計(jì)一個(gè)表單,在表單上添加3個(gè)命令按鈕。運(yùn)行程序時(shí),單擊“顯示”,在表單上顯示“你單擊了‘顯示’按鈕”;若單擊“變大”或“變小”按鈕,則表單窗口可增大或減少尺寸。表單實(shí)際運(yùn)行效果圖如圖9-1所示。設(shè)計(jì)步驟,參見P360。命令按鈕常用到的事件有Click、GotFocus、KeyPress、LostFocus、MouseDown、MouseUp和MouseMove等。⑴GotFocus與LostFocus事件當(dāng)該命令按鈕獲得焦點(diǎn)時(shí)所觸發(fā)的事件稱為GotFocus事件。反之當(dāng)該命令按鈕失去焦點(diǎn)時(shí)所觸發(fā)的事件稱為LostFocus事件。⑵KeyPress事件當(dāng)用戶按下并釋放命令按鈕時(shí)觸發(fā)的事件稱為KeyPress事件。詳細(xì)內(nèi)容請參閱本章中的第9.1.3節(jié)。⑶MouseDown事件按下鼠標(biāo)任意按鈕時(shí),所觸發(fā)的事件稱為MouseDown事件。MouseDown事件與Click事件不同,Click事件是用鼠標(biāo)左鍵單擊命令按鈕所觸發(fā)的事件,MouseDown事件不管是用鼠標(biāo)左鍵還是鼠標(biāo)右鍵都能觸發(fā)該事件;Click事件包括鼠標(biāo)鍵的動(dòng)作有壓下和抬起,而MouseDown事件包括鼠標(biāo)鍵的動(dòng)作只有壓下而無抬起。⑷MouseUp事件釋放鼠標(biāo)按鈕時(shí),所觸發(fā)的事件稱為MouseUp事件。⑸MouseMove事件鼠標(biāo)光標(biāo)在某一個(gè)對象上移動(dòng)或停留時(shí),觸發(fā)MouseMove事件。3.命令按鈕的事件

【例9-2】創(chuàng)建一表單,表單保存為Ex09-02.SCX。表單有4個(gè)命令按鈕,分別實(shí)現(xiàn):①單擊“計(jì)數(shù)”按鈕Command1時(shí),要求記錄被單擊的次數(shù)并在窗口中顯示。②單擊“退出”按鈕Command2時(shí),退出程序。③單擊“圖形”按鈕Command3時(shí),變換表單窗口標(biāo)題,顯示“命令按鈕實(shí)例**你按下了圖形按鈕”。④當(dāng)單擊“按一下,看看有什么效果?”按鈕Command4時(shí),使“圖形按鈕”按鈕在失效與可用兩種狀態(tài)之間進(jìn)行切換。表單運(yùn)行的效果如圖9-2所示。設(shè)計(jì)步驟,參見P361。圖9-2例9-2的表單運(yùn)行示意圖標(biāo)簽控件(Label)常用于輸出文本,一般用來在表單上顯示提示信息。用標(biāo)簽控件輸出的文本、提示信息不能編輯、修改。所以標(biāo)簽控件常用來輸出標(biāo)題、顯示處理結(jié)果或標(biāo)識(shí)那些不帶Caption屬性的控件,如文本框(TextBox)。9.1.2標(biāo)簽控件(LABEL)標(biāo)簽控件比較常用的屬性如表9-4所示。1.標(biāo)簽控件的屬性表9-4標(biāo)簽控件的常用屬性要使用標(biāo)簽控件需要注意以下幾點(diǎn):①標(biāo)簽沒有ControSource屬性,因此標(biāo)簽操作不涉及數(shù)據(jù)源。②顯示的文字是通過Caption屬性設(shè)置的。③設(shè)計(jì)時(shí)不能直接編輯修改顯示的文字,但可以在代碼通過重新設(shè)置Caption屬性進(jìn)行修改,并且可以改變字體、大小和顏色等屬性。④在代碼中引用對象時(shí),應(yīng)該使用對象的名稱(Name屬性)加以引用,而不能使用Caption屬性。注意,這一規(guī)則適用于所有對象的引用。標(biāo)簽控件一般不用來觸發(fā)事件,但可以觸發(fā)Click、DbClick、MouseMove等事件,也可以編寫相應(yīng)的事件過程?!纠?-3】如圖9-3所示,設(shè)計(jì)一只有標(biāo)簽的表單,表單保存為Ex09-03.SCX。在表單運(yùn)行時(shí),表單顯示“你好,中國!”,當(dāng)單擊表單空白處,則顯示“中國,你好!”。

設(shè)計(jì)步驟,參見P363。(a)設(shè)計(jì)時(shí)標(biāo)簽顯示的文本(b)運(yùn)行時(shí),單擊表單顯示的文本圖9-3例9-3的表單運(yùn)行示意圖2.標(biāo)簽控件的事件文本框控件是一個(gè)基本控件,它既能顯示信息又能接收用戶輸入的信息。利用文本框用戶可以向表中的字段(備注型字段除外)或內(nèi)存變量輸入各種類型的數(shù)據(jù)或編輯數(shù)據(jù)。9.1.3文本框控件(TEXTBOX)1.文本框的屬性文本框控件與其他控件有共同屬性外,如Top、Left、Height、Width等,還有其特殊的屬性,如表9-5所示。表9-5文本框控件的常用屬性說明:如果將控件的ControlSource屬性設(shè)置為表的字段或內(nèi)存變量,則該字段或內(nèi)存變量的值在文本框中顯示,用戶對這個(gè)值的改變將寫回到表中的字段或變量。移動(dòng)記錄指針將影響文本框的Value屬性的值。文本框控件屬性的使用,其要點(diǎn)如下:⑴Value屬性Value屬性用于指定文本框的值,并在文本框顯示出來。例如,ThisForm.Text1.Value="計(jì)算機(jī)工程"。Value值可以是字符型、數(shù)值型、日期型或邏輯型。要為文本框設(shè)置數(shù)據(jù)類型,用戶既可以使用程序代碼(命令)進(jìn)行設(shè)置,或在“屬性”窗口中設(shè)置,也可以在文本框的生成器對話框中設(shè)置。在屬性中設(shè)置:選中一文本框,找到屬性Value,在屬性值編輯框處輸入:0、{}、.T.,可將文本框數(shù)據(jù)類型改變?yōu)閿?shù)值型、日期型和邏輯型。圖9-4快捷菜單圖9-5“文本框生成器”對話框在“生成器”對話框中設(shè)置:方法是,選中一文本框,單擊右鍵,在彈出如圖9-4所示的快捷菜單中選擇“生成器”命令,打開如圖9-5所示的“文本框生成器”對話框。

⑵InputMask屬性和Format屬性InputMask屬性規(guī)定了在文本框中如何輸入和顯示數(shù)據(jù)。常用的格式符及其功能請參考3.3.2節(jié)中的表3-2。

Format屬性則指定了文本框中的數(shù)據(jù)輸入的限制條件和顯示時(shí)的格式。對于不同的控件,F(xiàn)ormat屬性有不同的設(shè)置值,與InputMask屬性不同的是,它的格式符用于控制控件整體的功能。在文本框中,該屬性的設(shè)置值如表9-6所示。⑶文本框與數(shù)據(jù)的綁定設(shè)置了文本框的ControlSource屬性,則顯示在文本框中的值除保存在Value屬性中外,同時(shí)也保存在ControlSource屬性指定的變量或字段中。表9-6Format屬性的格式符與功能說明⑷檢驗(yàn)文本框的數(shù)據(jù)是否有效若要檢驗(yàn)文本框中的值,可在Valid事件方法程序中寫入相應(yīng)代碼。例如,設(shè)計(jì)一個(gè)用于輸入學(xué)生的成績的表單,如圖9-6所示。規(guī)定其值在0~100之間,則通過文本框的Valid事件代碼中包含下面的代碼,可以檢查輸入值,以確保輸入的分?jǐn)?shù)是否有效。IfVal(This.Value)<0OrVal(This.Value)>100

Messagebox("輸入的成績無效,請重新輸入!",0+64)

This.value=""else ThisForm.Label2.Caption="該生所修課程成績是:"+trim(This.Value)Endif圖9-6Valid事件在表單中的使用⑸PasswordChar屬性

PasswordChar屬性就是用來控件是否顯示用戶實(shí)際輸入值的。如果把該屬性設(shè)置為*號(hào),則當(dāng)輸入密碼時(shí),則在屏幕上只顯示*號(hào)字符,而實(shí)際值將保存在文本框的Value屬性中?!纠?-4】設(shè)計(jì)一個(gè)如圖9-7(a)所示的用戶登錄界面,程序運(yùn)行時(shí),先在兩個(gè)文本框中分別輸入用戶名和口令,然后單擊“確定”命令按鈕執(zhí)行上邊的事件過程,彈出確認(rèn)消息對話框并顯示出用戶名和口令,如圖9-7(b)所示。設(shè)計(jì)步驟,參見P367。對話框是用戶與應(yīng)用程序之間交換信息的最佳途徑之一,具有操作簡單及快速的特點(diǎn)。MessageBox()函數(shù)在對話框中顯示信息,等待用戶單擊按鈕,并返回一個(gè)整數(shù)以標(biāo)明用戶單擊了哪個(gè)按鈕,其語法格式為:

[cMVarName]=MESSAGEBOX(cMessageText[,nDialogBoxType[,cTitleBarText]])說明:①cMessageText:表示顯示在對話框中的提示信息文本。②nDialogBoxType:指定因?qū)υ捒蚬δ芤蟮陌粹o和圖標(biāo)。一般有3個(gè)參數(shù),其取值和含義如表9-5所示,包括3個(gè)表的內(nèi)容,見表9-7、表9-8和表9-9所示。(a)(b)圖9-7例9-4表單運(yùn)行示意圖2.對話框函數(shù)MessageBox()簡介上述3種參數(shù)值可以相加以達(dá)到所需要的樣式。如要求在對話框顯示“是”、“否”、“取消”3個(gè)按鈕、對話框提示圖標(biāo)為感嘆號(hào)“”圖標(biāo),默認(rèn)選擇“是”按鈕,則“數(shù)值型對話框類型”為:3+48+0,如圖9-8所示。

③cTitleBarText:指定對話框的標(biāo)題。若缺少此項(xiàng),系統(tǒng)給出默認(rèn)的標(biāo)題:MicrosoftVisualFoxPro。下述代碼將顯示如圖9-9所示的對話框。

=Messagebox("請確認(rèn)輸入的數(shù)據(jù)是否正確!",3+48+256,"數(shù)據(jù)檢查")9-7對話框按鈕表9-8對話框圖標(biāo)表9-9對話框默認(rèn)按鈕圖9-8對話框類型舉例

圖9-9帶標(biāo)題文本的對話框類型

Messagebox()返回的值指明了在對話框中選擇哪一個(gè)按鈕,如表9-10所示。④cMVarName:變量名,省略了“變量名”,將忽略返回值。表9-10對話框返回值文本框支持Click、DbClick和RightClick事件,常用的事件還有:⑴InteractiveChange事件當(dāng)用戶通過鍵盤或用鼠標(biāo)更改控件的值時(shí),都會(huì)觸發(fā)該事件。⑵GotFocus事件文本框?qū)ο笸ㄟ^用戶操作或以代碼方式得到焦點(diǎn)時(shí),將會(huì)觸發(fā)該事件。⑶LostFocus事件當(dāng)文本框?qū)ο笫ソ裹c(diǎn)時(shí),將會(huì)觸發(fā)該事件。⑷KeyPress事件當(dāng)用戶按下并釋放鍵時(shí)觸發(fā)該事件,常用于立即檢驗(yàn)按鍵的有效性或?qū)︽I入的字符進(jìn)行格式編排。該事件的使用格式為:LPARAMETERSnKeyCode,nShiftAltCtrl說明:nKeyCode表示所按下鍵的ASCII碼值,如按下“Enter”時(shí),nKeyCode的值為13,表9-11列出了特殊鍵和組合的ASCII編碼值,參見P369。3.文本框的事件和方法

nShiftAltCtrl參數(shù)表示按下的組合鍵(Shift、Ctrl、Alt)的和值,如同時(shí)按下Ctrl和Alt,其nShiftAltCtrl值為6。表9-12列出了單獨(dú)的組合鍵在nShiftAltCtrl中返回的值,參見P369。

注意:①在兩種情況下,表單可接收KeyPress事件:

☆表單中不包含控件,或表單的控件都不可見或未激活。

☆表單的KeyPreview屬性設(shè)置為“真”(.T.)。表單首先接收keypress事件,然后具有焦點(diǎn)的控件才接收此事件。②對任何與ALT鍵的組合鍵,不發(fā)生KeyPress事件。⑸Valid事件當(dāng)文本框失去焦點(diǎn)前觸發(fā)該事件。用來判別文本框中輸入數(shù)據(jù)的合法性,也可用來根據(jù)文本框的數(shù)據(jù)讀取其它信息。⑹When事件控件獲得焦點(diǎn)前觸發(fā)。⑺Refresh方法Refresh方法將重新繪制文本框并刷新其中的值。⑻SetFocus方法文本框控件對象可重新獲得焦點(diǎn),即將文本框變成當(dāng)前活動(dòng)的對象。SetFocus方法的使用格式如下:

Object.SetFocus【例9-5】設(shè)計(jì)一表單,如圖9-10所示。其中左圖為表單設(shè)計(jì)界面,右圖為運(yùn)行界面。表單功能是:當(dāng)用戶在上面輸入文本時(shí),系統(tǒng)可在下面的顯示窗口中同步顯示(以只讀方式)其輸入的文本。設(shè)計(jì)步驟,參見P370?!纠?-6】設(shè)計(jì)一個(gè)表單,表單運(yùn)行時(shí)能顯示“學(xué)生.dbf”中的記錄信息,如圖9-11所示。設(shè)計(jì)步驟,參見P370?!纠?-7】如圖9-12所示,設(shè)計(jì)一個(gè)電話計(jì)費(fèi)的表單界面。在“開始時(shí)間”文本框處單擊鼠標(biāo),系統(tǒng)開始計(jì)時(shí);單擊“結(jié)束時(shí)間”文本框處,結(jié)束計(jì)時(shí)并給出通話時(shí)間;單擊“應(yīng)付金額”文本框處,系統(tǒng)計(jì)算出通話費(fèi)用。假設(shè)每分鐘通話費(fèi)用為0.20元。

設(shè)計(jì)步驟,參見P371。圖9-1例9-5表單運(yùn)行示意圖圖9-11例9-6表單運(yùn)行示意圖圖9-12例9-7表單運(yùn)行示意圖9.1.4編輯框控件(EDITBOX)編輯框與文本框具有以下幾點(diǎn)不同:

①編輯框只能編輯字符型數(shù)據(jù),而文本框除字符型數(shù)據(jù)外,還適用于數(shù)值、邏輯、日期或日期時(shí)間型數(shù)據(jù)。

②編輯框則能輸入多行文本,遇到回車符不會(huì)終止編輯框的輸入。

③編輯框可以和表中的備注型字段綁定在一起,文本框不能。

④編輯框有一個(gè)文本框所沒有的屬性ScrollBars,用來指定編輯框是否含有滾動(dòng)條。當(dāng)屬性值為0時(shí)沒有滾動(dòng)條,當(dāng)屬性值為2時(shí)具有垂直滾動(dòng)條;而文本框因只能輸入一行數(shù)據(jù),所以沒有ScrollBars屬性。1.編輯框的屬性編輯框控件和文本框控件基本相同,由于支持多行編輯,具有一個(gè)ScrollBar屬性。表示編輯框可帶有水平和垂直二個(gè)滾動(dòng)條,其它參見P372。

【例9-8】設(shè)計(jì)一個(gè)表單,在表單中添加一編輯框,要求該編輯框與“學(xué)生.dbf”表中的備注字段“特長”相綁定,以便編輯備注型字段內(nèi)容。當(dāng)在編輯框中選定一段文本并單擊文本框時(shí),能在文本框中顯示出編輯框中選定的文本,如圖9-13所示。設(shè)計(jì)步驟,參見372。圖9-13例9-8示意圖編輯框常用的事件和方法與文本框相同,這里不再進(jìn)行敘述?!纠?-9】設(shè)計(jì)一個(gè)表單,功能是在表單上單擊“打印”命令按鈕,可以打印顯示九九乘法表,如圖9-14所示。設(shè)計(jì)步驟,參見373。2.編輯框的事件和方法圖9-14例9-9運(yùn)行示意圖線條(Line)控件用于在表單上畫各種類型的線條,包括斜線、水平線和垂直直線。9.1.5線條控件(LINE)線條的常用屬性見表9-14所示。1.線條控件的屬性表9-14線條控件常用的屬性及說明線條控件的主要事件有Click、DbClick和RightClick等,主要方法有Drag、Move等。2.線條控件的事件與方法1.形狀控件的屬性9.1.6形狀控件(SHAPE)形狀控件主要用于創(chuàng)建矩形、圓或橢圓形狀的對象。形狀控件是一種圖形控件,不能直接對其進(jìn)行修改,但可以通過形狀的屬性設(shè)置、事件程序的應(yīng)用來修改形狀。與線條類似,形狀控件也有BorderStyle、BorderColor和BorderWidth等屬性,其含義也一樣,形狀的大小由屬性Curvature和Width以及Height來決定;而形狀的填充方案則由FillStyle屬性來決定。形狀常用屬性如表9-15所示。表9-16形狀控件常用的屬性及說明形狀控件的主要事件有Click、DbClick和RightClick等,主要方法有Drag、Move等。2.形狀控件的事件與方法9.1.7圖像控件(IMAGE)1.圖像控件的屬性圖像控件用于圖像輸出,只能顯示而不能直接修改圖像。通過圖像控件的運(yùn)用,可以使應(yīng)用程序的界面顯得更富有生機(jī)和活力。圖像控件允許在表單中添加.bmp、.gif、.jpg或.ico圖像文件,常用的屬性如表9-16。表9-16圖像控件常用的屬性及說明圖像控件與形狀控件一樣,其主要事件有Click、DbClick和RightClick等,主要方法有Drag、Move等。2.圖像控件的事件與方法【例9-10】設(shè)計(jì)一個(gè)如圖9-15所示的表單。表單中含有一個(gè)標(biāo)簽控件、一個(gè)形狀控件、一個(gè)圖像控件和7個(gè)命令按鈕控件。要求單擊命令按鈕“直角方形”、“圓角方形”和“圓形”按鈕時(shí),標(biāo)簽控件將顯示直角方形、圓角方形和圓形字樣,并且相應(yīng)形狀控件相應(yīng)地改變形狀;單擊“圖片1”、“圖片2”和“圖片3”等命令按鈕時(shí),可顯示不同的圖片。單擊“退出”命令按鈕則關(guān)閉并退出表單。

設(shè)計(jì)步驟,參見P375。

注意:①線條、形狀和圖像只能在設(shè)計(jì)時(shí)設(shè)置,但設(shè)置好后無論在設(shè)計(jì)時(shí)還是在運(yùn)行時(shí)都可改變其屬性。②若形狀控件遮住了某一其他控件,則無論在設(shè)計(jì)時(shí)還是在運(yùn)行時(shí),對被遮控件擊鼠標(biāo)鍵均無效,此時(shí)應(yīng)將形狀控件置后,可使用格式菜單的置后(或布局工具欄的相應(yīng)置后按鈕)命令來設(shè)置。圖9-15例9-9表單的運(yùn)行效果圖9.2.1命令按鈕組控件(COMMANDGROUP)9.2選擇控件選擇的控件有命令按鈕組、選項(xiàng)按鈕、復(fù)選框、微調(diào)器等。表9-18命令按鈕組常用的屬性1.命令按鈕組的屬性表9-18給出了命令按鈕組常用的各屬性與說明。命令按鈕組控件包含若干個(gè)命令按鈕。命令按鈕組與組內(nèi)的各命令按鈕都有自己的屬性、事件和方法程序,因而既可單獨(dú)操作各命令按鈕,也可對組控件進(jìn)行整體操作。要對命令按鈕組內(nèi)的各命令按鈕分別進(jìn)行編輯,可右擊命令按鈕組,在彈出的快捷菜單中選擇“編輯”命令,這時(shí)命令按鈕組被一淡綠色的邊框所包圍,然后再單擊要編輯的命令按鈕即可。要為命令按鈕組設(shè)置常用屬性,右擊命令按鈕組,在彈出的快捷菜單中選擇“生成器”命令,即可打開命令按鈕組的“命令組生成器”對話框,如圖9-16所示。對話框包括:按鈕選項(xiàng)卡和布局選項(xiàng)卡等兩個(gè)選項(xiàng)卡,如圖9-17所示。圖9-16命令組生成器圖9-17命令組生成器-布局選項(xiàng)卡2.命令按鈕組的事件

命令按鈕組常用的事件有Click、DbClick、RightClick和InterActiveChange等。命令按鈕組的Value屬性指明單擊哪個(gè)按鈕?!纠?-11】創(chuàng)建一表單,在表單添加有3個(gè)命令按鈕的按鈕組CommandGroup1,來實(shí)現(xiàn)移動(dòng)數(shù)據(jù)表中記錄的功能,當(dāng)記錄指針移到文件頭或文件末尾時(shí)提示用戶已到記錄頭部或末尾。表單的運(yùn)行界面如圖9-18所示。設(shè)計(jì)步驟,參見378。圖9-18例9-11表單運(yùn)行示意圖選擇項(xiàng)按鈕是一個(gè)包含選項(xiàng)按鈕的容器,它通常包含若干個(gè)選項(xiàng)按鈕,但用戶只能從中選擇一個(gè),也可一個(gè)也不選。在表單中創(chuàng)建一個(gè)選項(xiàng)按鈕組時(shí),默認(rèn)包含兩個(gè)選項(xiàng)按鈕。9.2.2選項(xiàng)按鈕組控件(OPTIONGROUP)1.命令按鈕組的屬性選項(xiàng)按鈕組的主要屬性見表9-19所示。表9-19選項(xiàng)按鈕組常見屬性及其說明說明:如果ControlSource是一個(gè)數(shù)值字段,根據(jù)按鈕是否被選中,在字段中寫入0或1。如果ControlSource是邏輯型的,則根據(jù)按鈕是否被選中,在字段中寫入“真”(.T.)或“假”(.F.)。如果記錄指針在表中移動(dòng),則更新選項(xiàng)按鈕的值,以反映字段中的新值。如果選項(xiàng)按鈕的OptionGroup控件(不是選項(xiàng)按鈕本身)的ControlSource是一個(gè)字符型字段,當(dāng)選擇該選項(xiàng)按鈕時(shí),選項(xiàng)按鈕的標(biāo)題就保存在字段中。選項(xiàng)按鈕組常見事件有Click、DbClick、RightClick和InterActiveChange等?!纠?-12】設(shè)計(jì)一表單,表單在運(yùn)行時(shí),用戶能通過表單上顏色選項(xiàng)組來改變編輯框文本顏色,運(yùn)行效果如圖9-19所示。設(shè)計(jì)步驟,參見380。2.選項(xiàng)按鈕組的事件圖9-19例9-12表單運(yùn)行效果圖復(fù)選框控件主要用來反映某些條件成立與否,即讓用戶指定一個(gè)邏輯狀態(tài):“真”(.T.)或“假”(.F.)。復(fù)選框是一個(gè)可與數(shù)據(jù)相結(jié)合的控件,可通過設(shè)置ControlSource屬性來維護(hù)變量、數(shù)值或邏輯型字段。9.2.3復(fù)選框控件(CHECKBOX)表9-20復(fù)選框控件常見的屬性1.復(fù)選框的屬性復(fù)選框的主要屬性如表9-20所示。主要事件有Click、DbClick、RightClick和InterActiveChange等。【例9-13】在例【9-12】的基礎(chǔ)上,添加一復(fù)選框,表單運(yùn)行時(shí),用戶能通過表單上復(fù)選框按鈕來確定文本框中顯示的字形。如圖9-21所示。設(shè)計(jì)步驟,參見P382。2.復(fù)選框的事件微調(diào)控件允許用戶從鍵盤上輸入數(shù)據(jù)到控件中,此外還允許用戶通過微調(diào)控件右側(cè)的向上或向下箭頭來增加或減少控件的數(shù)值。9.2.4微調(diào)控件(SPINNER)圖9-21例9-13表單運(yùn)行效果圖1.微調(diào)控件的屬性微調(diào)控件常見的屬性如表9-21所示。表9-21微調(diào)控件的常用屬性及其說明微調(diào)控件有DownClick、UpClick和InteractiveChange事件。其中,DownClick事件的發(fā)生是在按下微調(diào)控件的向下箭頭所引起的觸發(fā)事件;UpClick事件是按下微調(diào)控件的向上箭頭所引起的觸發(fā)事件;InteractiveChange事件發(fā)生在當(dāng)用戶使用鍵盤或鼠標(biāo)更改微調(diào)控件的值時(shí)所觸發(fā)的事件。2.微調(diào)控件的事件圖9-22例9-14表單運(yùn)行效果圖【例9-14】創(chuàng)建一表單,表單的功能可實(shí)現(xiàn)通過微調(diào)控件的值來改變文本框的值,其運(yùn)行結(jié)果如圖9-22所示。設(shè)計(jì)步驟,參見384。在表單設(shè)計(jì)中,能提供較為復(fù)雜功能和作用的控件有列表框、組合框、計(jì)時(shí)器、頁框、表格、容器和Active等控件。9.3復(fù)雜控件9.3.1列表框控件(LISTBOX)為了保證數(shù)據(jù)庫中不會(huì)存儲(chǔ)錯(cuò)誤的數(shù)據(jù),最簡單的方法是提供一組預(yù)先設(shè)定的值讓用戶選擇,列表框就具有這一功能的控件。在列表框中一次可以選擇一項(xiàng),也可以選擇多項(xiàng)。列表框控件常用的屬性如表9-22所示。1.列表框控件的屬性表9-22列表框常用屬性

RowSourceType屬性用于控制列表框數(shù)據(jù)來源的類型,該屬性的取值有9種類型,分別為0-無、1-值、2-別名、3-SQL語句、4-查詢(QPR)、5-數(shù)組、6-字段、7-文件、8-結(jié)構(gòu)和9-彈出式菜單,其含義見表9-23所示。表9-23RowSourceType屬性值含義

列表框常見的事件有Click、DbClick、InterActiveChange、GotFocus和LostFocus,但大多數(shù)程序編寫DbClick事件過程或InterActiveChange事件過程。表9-23RowSourceType屬性值含義(續(xù))2.列表框常用的事件列表框常見的方法有AddListItem/AddItem、RemoveItem和Clear。其含義分別是在列表框中添加一個(gè)列表項(xiàng)、清除一個(gè)列表項(xiàng)和清除列表框所有的項(xiàng)。3.列表框常用的方法

①AddListItem/AddItem方法:向列表框添加一個(gè)新項(xiàng)目,格式是:

Object.AddListItem/AddItem(cItem[,nIndex][,nColumn])其中:cItem為添加到控件中的字符串表達(dá)式;nIndex指定控件中放置數(shù)據(jù)項(xiàng)的位置,如果指定的nIndex已存在,數(shù)據(jù)項(xiàng)將插入到這個(gè)位置,在這個(gè)數(shù)據(jù)項(xiàng)后面的其他所有數(shù)據(jù)項(xiàng)在列表框的列表區(qū)中向下移一個(gè)位置;nColumn指定控件的列,新數(shù)據(jù)項(xiàng)加入到此列中,默認(rèn)值為1。在使用AddItem方法時(shí),系統(tǒng)將根據(jù)Sorted屬性的設(shè)置,是否將列表框中條目按照字典順序顯示。

②RemoveItem方法:從列表框中移去一項(xiàng),使用格式是:

Object.RemoveItem(nIndex)其中:nIndex指定一個(gè)整數(shù),它對應(yīng)于被移去項(xiàng)在控件中的顯示順序,nIndex常用ListIndex屬性值來替代指定的整數(shù)。③Clear方法:清除列表框控件的內(nèi)容,該方法使用格式為:

Object.Clear說明:使Clear方法程序有效,須將RowSourceType屬性置為0(無)圖9-23例9-15表單運(yùn)行效果圖【例9-15】設(shè)計(jì)一個(gè)表單表單上含有3個(gè)標(biāo)簽控件Label1~Label3;3個(gè)列表框List1~List3,要求運(yùn)行時(shí)添加用于選擇數(shù)據(jù)表的表名和列表?xiàng)l目,雙擊“數(shù)據(jù)庫表”列表項(xiàng)可移去該項(xiàng)目,其運(yùn)行效果如圖9-23所示。設(shè)計(jì)步驟,參見P387。

組合框控件實(shí)際上是文本框和列表框功能的組合。由前面的知識(shí)可知,用戶可以使用文本框輸入數(shù)據(jù),在列表框中用戶只能從給定的條目中選擇;而組合框則兼有兩者功能。有兩種類型的組合框,一種下拉組合框,另一種是下拉列表框,兩者可通過Style屬性進(jìn)行設(shè)置。9.3.2組合框控件(COMBOBOX)1.組合框的屬性列表框?qū)傩院头椒ù蟛糠忠策m用于組合框,但組合框沒有MultiSelect屬性,即不能多重選擇。組合框的幾個(gè)不同屬性如表9-25所示。表9-25組合框的常見屬性及說明組合框與列表框的主要區(qū)別在于,列表框總是顯示所有的條目,而組合框通常只顯示一個(gè)條目,待用戶單擊它的向下箭頭后,才顯示下拉列表框中的條目,所以組合框比列表框可以節(jié)省表單區(qū)域空間。組合框控件不僅能響應(yīng)一般的Click、DbClick、InterActiveChange事件,還能響應(yīng)DropDown事件,該事件在單擊下拉箭頭鍵以后即將下拉其列表部分時(shí)發(fā)生。組合框控件常用的方法有AddItem、AddListItem、RemoveItem和Requery。AddItem、AddListItem、RemoveItem方法的使用格式和列表框相同。而Requery方法(也可用于列表框)的使用格式為:

組合框.Requery功能是重新查詢列表框控件所建立的行源。使用Requery方法可以確??丶邪钚碌臄?shù)據(jù)。Requery方法重新查詢RowSource屬性,并且使用新的值更新列表。2.組合框的事件與方法圖9-24例9-16表單運(yùn)行效果圖【例9-16】設(shè)計(jì)一個(gè)修改“課程”表中課時(shí)數(shù)的表單,要求列表框中顯示“課程號(hào)”、“課程名稱”和“課時(shí)數(shù)”;用組合框的選項(xiàng)來替換“課程”表中相應(yīng)的課時(shí)數(shù)。運(yùn)行效果如圖9-24所示。設(shè)計(jì)步驟,參見P388?!纠?-17】如圖9-25所示,創(chuàng)建一表單,添加一個(gè)組合框,實(shí)現(xiàn)一個(gè)簡單的查詢。運(yùn)行表單時(shí),選擇并單擊組合框中某選項(xiàng)(或在組合框中直接輸入學(xué)生名字并按回車鍵),表單顯示相應(yīng)學(xué)生的情況。設(shè)計(jì)步驟,參見P389。【例9-18】如圖9-26所示,在文本框中輸入數(shù)據(jù),按回車添加到下拉組合框中,在列表中選定項(xiàng)目,單擊鼠標(biāo)右鍵可移去選定項(xiàng)。設(shè)計(jì)步驟,參見P390。計(jì)時(shí)器控件只是在設(shè)計(jì)表單時(shí)才顯示出來,而在表單運(yùn)行時(shí)是不可見的,所以無論把計(jì)時(shí)器放在表單的什么地方,都不會(huì)影響表單的界面。計(jì)時(shí)器能周期性地產(chǎn)生Timer事件,可用來處理反復(fù)發(fā)生的動(dòng)作。圖9-26例9-18表單運(yùn)行示意圖圖9-25例9-17表單的運(yùn)行效果9.3.3計(jì)時(shí)器控件(Timer)1.計(jì)時(shí)器控件計(jì)時(shí)器常用的屬性見表9-27所示。2.計(jì)時(shí)器的屬性表9-27計(jì)時(shí)器控件的常見屬性及其說明計(jì)時(shí)器使用的要點(diǎn)如下:⑴計(jì)時(shí)器每當(dāng)計(jì)時(shí)間隔一到時(shí)就會(huì)產(chǎn)生一個(gè)Timer事件,因此需將執(zhí)行的代碼編寫在Timer事件中。⑵定時(shí)間隔通過Interval屬性設(shè)置,定時(shí)單位為毫秒。⑶啟動(dòng)計(jì)時(shí)器工作通過Enabled屬性設(shè)置,如果希望計(jì)時(shí)器在加載表單時(shí)就開始工作,需將Enabled屬性設(shè)計(jì)為.T.;否則為.F.。有Reset和Timer事件。Reset事件是重置計(jì)時(shí)器控件從0開始時(shí)間時(shí)所觸發(fā)的事件,Timer事件是計(jì)時(shí)器在間隔Interval時(shí)間后所觸發(fā)的事件?!纠?-19】設(shè)計(jì)一表單,通過計(jì)時(shí)器控制上面的動(dòng)態(tài)字符串在表單窗口內(nèi)逐漸變大(在大到表單無法容納時(shí),又會(huì)縮小到原來的大小),下面的字符串從左到右滾動(dòng),在滾動(dòng)到表單右側(cè)邊框時(shí),再返回原來的原始位置繼續(xù)向右滾動(dòng),運(yùn)行界面如圖9-27所示。設(shè)計(jì)步驟,參見P391。3.計(jì)時(shí)器的事件圖9-27例9-19表單運(yùn)行效果圖頁框是個(gè)包含頁面(Page)的容器,頁面中又可包含各類控件,頁框又稱為選項(xiàng)卡或選頁卡。主要屬性如表9-28所示。9.3.4頁框控件(PAGEFRAME)1.頁框控件頁框控件也支持Click等事件過程,但一般不編寫該事件代碼。支持Activate事件,該事件當(dāng)表單集、表單或頁面對象被激活時(shí),或者顯示工具欄對象時(shí)發(fā)生。2.頁框控件的事件表9-28頁框控件的常用屬性及說明【例9-20】設(shè)計(jì)一表單,表單上有三個(gè)頁面的頁框,如圖9-28所示。第一頁面和第二頁面可通過文本框維護(hù)數(shù)據(jù)庫,第三頁面通過表格顯示和維護(hù)數(shù)據(jù)庫。表單以文件名Ex09-20.SCX進(jìn)行保存。設(shè)計(jì)步驟,參見P392。圖9-28例9-20表單運(yùn)行效果圖(a)第一個(gè)頁面(b)第二個(gè)頁面(c)第三個(gè)頁面表格控件不是表,它作為容器,可包含列控件(Column);而列又可包含列標(biāo)題Header控件和文本框Text控件。這些都是控件,都有自己的屬性、事件和方法程序。這樣表格控件就形成了一種層次結(jié)構(gòu)。利用這種層次結(jié)構(gòu),可以靈活地控制表格單元,對表或視圖中的數(shù)據(jù)進(jìn)行顯示編輯處理。9.3.5表格控件(GRID)1.表格控件表格層次體現(xiàn)了表格的組成,如表9-29所示。3.表格的屬性2.表格的組成表9-30表格中各控件的常用屬性與說明組成表格各控件的屬性及其說明如表9-30所示。表9-29表格的組成部分說明:如果ControlSource是表中的字段,當(dāng)用戶編輯列中的數(shù)值時(shí),實(shí)際是在直接編輯字段中的值。要將整個(gè)表格和數(shù)據(jù)綁定,可設(shè)置表格的RecordSource屬性。4.表格使用要點(diǎn)表9-30表格中各控件的常用屬性與說明(續(xù))⑴和其他控件一樣,可將表格控件添加到表單中,之后再在表單中把它調(diào)整為適當(dāng)?shù)奈恢煤痛笮?。⑵通過ColumnCount屬性來設(shè)置表格列數(shù),若為-1(默認(rèn)值)表示運(yùn)行時(shí)表格列數(shù)與其他鏈接的表的列數(shù)相同。⑶設(shè)計(jì)時(shí)可以改變表格列的寬度和高度。如調(diào)整寬度,可選擇表格對象的列(這時(shí)表格周圍被一個(gè)粗框圍起),將鼠標(biāo)指針置于表格列的標(biāo)題之間,此時(shí)指針變成左右兩個(gè)方向的箭頭“”,拖動(dòng)鼠標(biāo)即可調(diào)節(jié)寬度;也可在屬性窗口中通過設(shè)置Width和Height屬性進(jìn)行設(shè)置。⑷可以為整個(gè)表格設(shè)置數(shù)據(jù)源,以便在表格中顯示數(shù)據(jù),也可為每個(gè)列單獨(dú)設(shè)置數(shù)據(jù)源。具體操作如下:①為整個(gè)表格設(shè)置數(shù)據(jù)源,先通過RecordSourceType屬性指定數(shù)據(jù)類型,可供選擇的類型,有0-表、1-別名、3-提示、4-查詢(.QPR)、5-SQL說明。然后通過RecordSourece屬性指定表名、別名或查詢文件(.qpr)。如果RecordSourceType屬性值為4,則RecordSourece屬性值須設(shè)置為空串(””)。②利用ControlSource屬性為某列指定數(shù)據(jù)源,鍵入要顯示的表中的字段名,如學(xué)生.姓名。③表格控件可以創(chuàng)建一對多的表單,如可以用一個(gè)文本框或組合框指定父表中的某個(gè)索引字段值,而利用表格控件顯示子表中對應(yīng)的多個(gè)記錄,但事先應(yīng)該在表單的數(shù)據(jù)環(huán)境中包含兩個(gè)表并設(shè)置它們的一對多關(guān)系。5.表格控件的事件和方法表格有Click、DbClick等事件,常見的方法有Refresh、SetFocus。【例9-21】設(shè)計(jì)一個(gè)如圖9-29所示的表單,要求在下拉列表框中選定一個(gè)學(xué)生,則在表格中顯示該生的成績。設(shè)計(jì)步驟,參見P395。圖9-29例9-21運(yùn)行效果圖【例9-22】試根據(jù)“學(xué)生.DBF”數(shù)據(jù)表,設(shè)計(jì)一查詢表單,其功能可以通過選項(xiàng)按選擇學(xué)號(hào)或姓名,在文本框中輸入查詢值,查詢相關(guān)記錄,表格控件中的數(shù)據(jù)隨之改變,如圖9-30所示。操作步驟,參見P396。圖9-30例9-22表單運(yùn)行效果圖容器(Container)控件本身不具有數(shù)據(jù)結(jié)合特性,因此無法將光標(biāo)停留在這些控件對象上,也不能用Tab鍵進(jìn)行選擇。由于容器控件的封閉性,且外形具立體感,用戶可用容器控件對程序界面進(jìn)行修飾。9.3.6容器控件(CONTAINER)1.容器控件2.容器常用的屬性容器控件最主要的作用是將表單中的對象歸類。其主要屬性及事件如表9-32所示。圖9-31例9-23表單運(yùn)行效果圖【例9-23】如圖9-31所示,試設(shè)計(jì)一個(gè)表單,在表單中用戶可以輸入一個(gè)華氏溫度,然后單擊轉(zhuǎn)換命令按鈕就轉(zhuǎn)換得到相應(yīng)的攝氏溫度,而輸入一個(gè)攝氏溫度則可以得到其相應(yīng)的華氏溫度。設(shè)計(jì)步驟,參見P397。表9-32容器的主要屬性屬性說明BackStyle設(shè)置一個(gè)對象的背景是否透明。BorderColor設(shè)定容器邊框的顏色。

BorderWidth設(shè)定容器邊框的寬度。Name設(shè)置對象的名稱。SpecialEffect設(shè)置容器的三維效果。Picture設(shè)置容器要顯示的圖像文件。9.3.7Activex控件1.使用OleControl控件向表單添加OLE對象或控件表單控件工具欄中有兩個(gè)ActiveX控件,分別稱為OleControl控件和OleBoundControl控件。前者不能將OLE對象與表的通用字段相連接,故稱為非綁定型控件;而后者可以將OLE對象綁定到數(shù)據(jù)表中的通用型字段上,故稱為綁定型控件。如可以將MicrosoftExcel電子表格或Word文檔等嵌入或鏈接到表的通用型字段上進(jìn)行顯示。Windows的System(或System32)文件夾下帶有.ocx擴(kuò)展名的文件都是ActiveX控件,可以把它們添加到表單控件工具欄中。利用ActiveX控件可以使用其他系統(tǒng)提供的數(shù)據(jù),擴(kuò)大數(shù)據(jù)的使用范圍,增強(qiáng)VisualFoxPro的功能。選定OleControl控件向表單添加控件時(shí),屏幕上將彈出一個(gè)如圖9-32所示的插入對象對話框,其中的3個(gè)選項(xiàng)按鈕決定了是插入對象還是插入控件。下面介紹這3個(gè)選項(xiàng)按鈕的區(qū)別與功能。

圖9-32“插入對象”對話框2.使用OleBoundControl控件綁定通用型字段【例9-24】創(chuàng)建一表單,通過“上一天”和“下一天”按鈕改變?nèi)諝v的日期值,表單運(yùn)行效果如圖9-34所示。設(shè)計(jì)步驟,參見P399。單擊表單工具欄的ActiveX綁定控件,然后在表單上拖動(dòng)到期望的大小,并將它的ControlSource屬性和表中通用型字段綁定在一起,就可以用這個(gè)對象顯示通用字段的內(nèi)容。OleBoundControl綁定型控件的主要屬性有ControlSource屬性,用于表中的通用型字段的控件結(jié)合;Sizeable屬性,設(shè)置是否允許調(diào)整圖像的大??;Stretch屬性,指定如何對圖像進(jìn)行尺寸調(diào)整以放入一個(gè)控件。圖9-34例9-24表單運(yùn)行效果圖【例9-25】創(chuàng)建一表單,通過綁定型ActiveX控件顯示數(shù)據(jù)表“照片”字段的內(nèi)容,表單運(yùn)行效果如圖9-38所示。設(shè)計(jì)步驟,參見P400。圖9-38例9-25運(yùn)行效果圖9.4.1表單集9.4表單集與多重表單在一個(gè)應(yīng)用程序中,通常包含多個(gè)窗口,而一個(gè)表單只顯示一個(gè)窗口,這就需要多窗口的操作界面設(shè)計(jì)。表單集與多重表單能為用戶提供多界面的操作能力。表單集有以下幾個(gè)好處:在VisualFoxPro中,允許將多個(gè)表單包含在一個(gè)“表單集”中,可以對包含的表單作為一個(gè)組進(jìn)行處理,使用表單集有以下幾個(gè)好處:①能一次顯示或隱藏表單集中的全部表單。②可以調(diào)整表單集中多個(gè)表單,控制它們的相對位置。③能為表單集設(shè)置數(shù)據(jù)環(huán)境,可以使多個(gè)表單的記錄指針自動(dòng)同步移動(dòng)。即當(dāng)改變某個(gè)表單的父表記錄指針時(shí),另一個(gè)表單中子表的記錄將自動(dòng)更新和顯示。運(yùn)行表單集時(shí),將加載表單集所有表單和表單的所有對象。不管同一表單集中包含多少個(gè)表單,但它們都使用同一數(shù)據(jù)環(huán)境對象,用戶在進(jìn)行程序開發(fā)時(shí)務(wù)須高度注意。1.創(chuàng)建表單集表單集是在“表單設(shè)計(jì)器”中創(chuàng)建的。在打開表單設(shè)計(jì)器狀態(tài)下,選擇“表單”下拉菜單中的“創(chuàng)建表單集”命令,如圖9-39所示。2.在表單集中添加和移去表單創(chuàng)建表單集后就可以添加或移去表單。這也是在“表單”菜單中進(jìn)行,分別單擊“添加新表單”或“移除表單”命令即可,如圖9-40所示。如果表單集中只有表單,則可刪除表單集而只剩下表單。9-39創(chuàng)建表單集9-40在表單集中添加表單或移除表單要?jiǎng)h除整個(gè)表單集,打開“表單”菜單,單擊“移除表單集”命令。說明:

3.刪除表單集【例9-26】設(shè)計(jì)一個(gè)如圖9-41所示含有兩個(gè)表單的表單集,表單集及兩個(gè)表單要求如下:①單擊左表單的“標(biāo)題”(Check1)復(fù)選框,可隱藏表單標(biāo)題;單擊“移動(dòng)欄”(Check2)復(fù)選框可移動(dòng)表單的位置;單擊“極小化按鈕”(Check3)和“極大化按鈕”(Check4)復(fù)選框,則取消極小化和極大化按鈕。②單擊右表單的“改變左表單標(biāo)題”按鈕(Command1)可改變左表單的標(biāo)題;單擊“改變右表單標(biāo)題”按鈕(Command2)可改變右表單的標(biāo)題;單擊“隱藏左表單”按鈕(Command3)可隱藏左表單;單擊“關(guān)閉”按鈕(Command4)可關(guān)

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論