




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2024/8/151
VFP6表單設(shè)計(jì)
2024/8/1527.1設(shè)計(jì)表單
7.1.1設(shè)置數(shù)據(jù)環(huán)境7.1.2創(chuàng)建單文檔和多文檔界面7.1.3用表單集擴(kuò)充表單返回退出2024/8/1537.1設(shè)計(jì)表單
表單又稱為界面或窗體,是VFP提供的一種功能強(qiáng)大的界面。各種對(duì)話框和窗口都是表單的不同表現(xiàn)形式。它可以使用戶在簡(jiǎn)單明了的界面中查看數(shù)據(jù)或?qū)?shù)據(jù)記錄輸入到表中。在表單設(shè)計(jì)器中可以處理下列內(nèi)容:■表單中不同類型的對(duì)象■與表單相關(guān)聯(lián)的數(shù)據(jù)■頂層表單或子表單■能一起操作的多個(gè)表單■基于自定義模板的表單表單和表單集是擁有自己的屬性、事件和方法程序的對(duì)象,在表單設(shè)計(jì)器中可以設(shè)置這些屬性、事件和方法程序。表單集包含了一個(gè)或多個(gè)表單,可以將它們作為一個(gè)整體來操作。例如,如果一個(gè)表單集中有四個(gè)表單,可以在運(yùn)行時(shí)用一個(gè)命令來顯示或隱藏它們。可以通過表單向?qū)?、表單設(shè)計(jì)器和快速表單來創(chuàng)建表單??梢?024/8/154用如下的三種方法之一新建一個(gè)表單:■在“項(xiàng)目管理器”中選定“表單”,并選擇【新建】按鈕?!鲈凇疚募坎藛沃羞x擇【新建】命令,再選定“表單”,再選擇【新建文件】按鈕?!鍪褂肅REATEFORM命令。通過項(xiàng)目管理器創(chuàng)建表單示例1、選擇“文檔”選項(xiàng)卡2、選擇“表單”3、單擊【新建】4、進(jìn)入新建表單程序,彈出“新建表單”對(duì)話框單擊“表單設(shè)計(jì)器”窗口新表單在新表單(Form1)上可以可視化地添加控件并進(jìn)行屬性、方法程序設(shè)計(jì)。2024/8/1557.1.1設(shè)置數(shù)據(jù)環(huán)境
每一個(gè)表單或表單集都包括一個(gè)數(shù)據(jù)環(huán)境(DataEnvironment)。數(shù)據(jù)環(huán)境是一個(gè)對(duì)象,它包含與表單相互作用的表或視圖,以及表單所要求的表之間的關(guān)系??梢栽凇皵?shù)據(jù)環(huán)境設(shè)計(jì)器”中直觀地設(shè)置數(shù)據(jù)環(huán)境,并與表單一起保存。在表單運(yùn)行時(shí),數(shù)據(jù)環(huán)境可以自動(dòng)打開、關(guān)閉表或視圖。而且,通過設(shè)置“屬性”窗口中ControlSource(指定與對(duì)象對(duì)立聯(lián)系的數(shù)據(jù)源)屬性設(shè)置框,在這個(gè)屬性框中列出了數(shù)據(jù)環(huán)境中的所有字段,數(shù)據(jù)環(huán)境將幫助設(shè)置控件用的ControlSource屬性。1、常用數(shù)據(jù)環(huán)境屬性
2024/8/156單擊打開圖片2、向數(shù)據(jù)環(huán)境設(shè)計(jì)器中添加表或視圖向數(shù)據(jù)環(huán)境設(shè)計(jì)器中添加表或視圖時(shí),可以看到屬于表或視圖的字段或索引。若要向數(shù)據(jù)環(huán)境中添加表或視圖,可以按如下步驟來進(jìn)行:(1)打開“數(shù)據(jù)環(huán)境設(shè)計(jì)器”,從“數(shù)據(jù)環(huán)境”菜單中選擇“添加”1、在表單上右擊,彈出表單的快捷菜單2、在快捷菜單中單擊“數(shù)據(jù)環(huán)境”菜單項(xiàng),打開“數(shù)據(jù)環(huán)境設(shè)計(jì)器”3、添加表或視圖的方法與建立查詢時(shí)添加表或視圖相同4、在此框中選擇Student后單擊【添加】2024/8/157
在關(guān)閉了“添加表或視圖”對(duì)話框后,若還想向“數(shù)據(jù)環(huán)境”中添加表或視圖,可采用以下方法之一:
■在“數(shù)據(jù)環(huán)境設(shè)計(jì)器”中右擊,打開數(shù)據(jù)環(huán)境的快捷菜單,從中選擇“添加”菜單項(xiàng),將“添加表或視圖”對(duì)話框再次打開,添加方法與上述相同。
■在“數(shù)據(jù)不境設(shè)計(jì)器”處于激活狀態(tài)時(shí),系統(tǒng)菜單上會(huì)有【數(shù)據(jù)環(huán)境】菜單,可以單擊【數(shù)據(jù)環(huán)境】|【添加】將“添加表或視圖”對(duì)話框再次打開。
■將要添加的表或視圖從打開的項(xiàng)目或“數(shù)據(jù)庫設(shè)計(jì)器”拖放到“數(shù)據(jù)環(huán)境設(shè)計(jì)器”中。若已將“數(shù)據(jù)環(huán)境設(shè)計(jì)器”關(guān)閉了,要添加表或視圖時(shí),除了用前文所介紹的在表單上右擊打開表單的快捷菜單,用快捷菜單操作以外,也可以在系統(tǒng)菜單上單擊【顯示】|【數(shù)據(jù)環(huán)境】,將“數(shù)據(jù)環(huán)境設(shè)計(jì)器”打開,打開了“數(shù)據(jù)環(huán)境設(shè)計(jì)器”后的添加方法與上相同。當(dāng)“數(shù)據(jù)環(huán)境設(shè)計(jì)器”處于活動(dòng)狀態(tài)時(shí),“屬性”窗口會(huì)顯示與數(shù)2024/8/158單擊打開動(dòng)畫據(jù)環(huán)境相關(guān)的對(duì)象及屬性。在“屬性”窗口的“對(duì)象”框中,數(shù)據(jù)環(huán)境的每個(gè)表或視圖,表之間的每個(gè)關(guān)系,以及數(shù)據(jù)環(huán)境本身均是各自獨(dú)立的對(duì)象。要打開“屬性”窗口,可以在表單或“數(shù)據(jù)環(huán)境設(shè)計(jì)器”中右擊,在快捷菜單上選擇【屬性】菜單項(xiàng)在“數(shù)據(jù)環(huán)境設(shè)計(jì)器”中右擊,打開快捷菜單。單擊【屬性】菜單項(xiàng)打開“屬性”窗口。選項(xiàng)卡屬性或方法程序列表屬性值或方法程序?qū)傩约胺椒ǔ绦蚬δ苷f明單擊對(duì)象選擇框2024/8/1593、從數(shù)據(jù)環(huán)境設(shè)計(jì)器中移去表當(dāng)將表從數(shù)據(jù)環(huán)境中移去時(shí),與這個(gè)表有關(guān)的所有的關(guān)系也隨之移去。若要將表和視圖從數(shù)據(jù)環(huán)境設(shè)計(jì)器中移去,可以:(1)在“數(shù)據(jù)環(huán)境設(shè)計(jì)器”中選擇要移去的表或視圖。(2)在“數(shù)據(jù)環(huán)境”快捷菜單中選擇【移去】命令。在“數(shù)據(jù)環(huán)境設(shè)計(jì)器”中選擇要移去的表或視圖。在選定表或視圖上右擊,打開快捷菜單。單擊【移去】2024/8/15104、在數(shù)據(jù)環(huán)境設(shè)計(jì)器中設(shè)置關(guān)系如果添加進(jìn)數(shù)據(jù)環(huán)境設(shè)計(jì)器的表具有在數(shù)據(jù)庫中設(shè)置的永久關(guān)系,這些關(guān)系將自動(dòng)地加到數(shù)據(jù)環(huán)境中。如果表中沒有永久的關(guān)系,可以在數(shù)據(jù)環(huán)境設(shè)計(jì)器中設(shè)置這些關(guān)系。要在數(shù)據(jù)環(huán)境設(shè)計(jì)器中設(shè)置這些關(guān)系,可以將字段從主表拖到相關(guān)表中的相匹配的索引標(biāo)識(shí)上。也可以將字段從主表拖到相關(guān)表中的字段上。如果和主表中的字段對(duì)應(yīng)的相關(guān)表中沒有索引標(biāo)識(shí),系統(tǒng)將提示是否創(chuàng)建索引標(biāo)識(shí)。1、先向表單的“數(shù)據(jù)環(huán)境設(shè)計(jì)器”添加兩個(gè)表,如圖按“學(xué)號(hào)”字段設(shè)置Student表與Grade表的一對(duì)多關(guān)系:在“數(shù)據(jù)環(huán)境設(shè)計(jì)器”中的Student表中選擇“學(xué)號(hào)”字段并將其拖到Grade表的“學(xué)號(hào)”字段上。右擊表間的關(guān)系連接線打開快捷菜單2024/8/1511在快捷菜單中單擊“屬性”,打開屬性窗口:在屬性選擇列表中選擇OneToMany單擊“屬性選擇框”彈出屬性值選擇.T.-真表達(dá)式生成器按鈕取消按鈕確定按鈕屬性選擇框?qū)杀碓O(shè)置為一對(duì)多關(guān)系父表別名如果在建立關(guān)系前Grade表沒有按關(guān)聯(lián)字段(學(xué)號(hào))建立索引,則在將“學(xué)號(hào)”從Student表中拖到Grade表時(shí)將彈出對(duì)話框:?jiǎn)螕簟敬_定】時(shí)系統(tǒng)將先按“學(xué)號(hào)”為Grade表建立索引,然后才建立兩表間的關(guān)系。2024/8/15125、在數(shù)據(jù)環(huán)境設(shè)計(jì)器中編輯關(guān)系在數(shù)據(jù)環(huán)境設(shè)計(jì)器中設(shè)置了一個(gè)關(guān)系后,在表之間將有一條連線指出這個(gè)關(guān)系。若要編輯關(guān)系的屬性,可在“屬性”窗口中從屬性列表框選擇要編輯的關(guān)系。關(guān)系的屬性對(duì)應(yīng)于SETRELATION和SETSKIP命令中的子句和關(guān)鍵字。RelationalExpr(指定基于父表中的字段而又與子表中的索引相關(guān)的表達(dá)式)屬性的默認(rèn)設(shè)置為主表中主關(guān)鍵字字段的名稱。如果相關(guān)表是以表達(dá)式作為索引的,就必須將RelationalExpr屬性設(shè)置為這個(gè)表達(dá)式。例如,如果相關(guān)表以UPPER(cust_id)作為索引,就必須將RelationalExpr屬性設(shè)置為UPPER(cust_id)。如果關(guān)系不是一對(duì)多關(guān)系,必須將OneTOMany屬性(指定是否只有在子表中遍歷了所有相關(guān)記錄之后才移動(dòng)父表記錄的記錄指針)設(shè)置為“假”(.F.)。這對(duì)應(yīng)于使用SETRELATION命令時(shí)不發(fā)出SETSKIP命令。將關(guān)系的OneToMany屬性設(shè)置為“真”(.T.),相當(dāng)于發(fā)出SETSKIP命令。當(dāng)瀏覽父表時(shí),在記錄指針瀏覽完子表中所有的相關(guān)記錄之前,記錄指針一直停留在同一父記錄上。
注意:如果在表單或表單集中想設(shè)置一對(duì)多關(guān)系,必須將OneToMany屬性設(shè)置為“真”(.T.),甚至在數(shù)據(jù)庫中已經(jīng)建立了永久一對(duì)多關(guān)系時(shí)也必須如此。返回2024/8/15137.1.2創(chuàng)建單文檔和多文檔界面
VFP允許創(chuàng)建兩種類型的應(yīng)用程序:■多文檔界面(MDI)各個(gè)應(yīng)用程序由單一的主窗口組成,且應(yīng)用程序的窗口包含在主窗口中或浮動(dòng)在主窗口頂端。VFP基本上是一個(gè)MDI應(yīng)用程序,帶有包含于VFP主窗口中的命令窗口、編輯窗口和設(shè)計(jì)器窗口?!鰡挝臋n界面(SDI)應(yīng)用程序由一個(gè)或多個(gè)獨(dú)立窗口組成,這些窗口均在Windows桌面上單獨(dú)顯示。MicrosoftExchange即是一個(gè)SDI應(yīng)用程序的例子,在該軟件中打開的每條消息均顯示在自己獨(dú)立的窗口中。由單個(gè)窗口組成的應(yīng)用程序通常是一個(gè)SDI應(yīng)用程序,但也有一些應(yīng)用程序綜合了SDI和MDI的特性。例如,VFP將調(diào)試器顯示為一個(gè)SDI應(yīng)用程序,而它本身又包含了自己的MDI窗口。為了支持這兩種類型的界面,VFP允許創(chuàng)建以下幾種類型的表單:■子表單:包含在另一個(gè)窗口中,用于創(chuàng)建MDI應(yīng)用程序的表2024/8/1514表單。子表單不可移至父表單(主表單)邊界之外,當(dāng)其最小化時(shí)將顯示在父表單的底部。若父表單最小化,則子表單也一同最小化?!龈?dòng)表單:屬于父表單(主表單)的一部分,但并不是包含在父表單中。而且,浮動(dòng)表單可以被移至屏幕的任何位置,但不能在父窗口后臺(tái)移動(dòng)。若將浮動(dòng)表單最小化時(shí),它將顯示在桌面的底部。若父表單最小化,則浮動(dòng)表單也一同最小化。浮動(dòng)表單也可用于創(chuàng)建MDI應(yīng)用程序?!鲰攲颖韱危簺]有父表單的獨(dú)立表單,用于創(chuàng)建一個(gè)SDI應(yīng)用程序,或用作MDI應(yīng)用程序中其他子表單的父表單。頂層表單與其他Windows應(yīng)用程序同級(jí),可出現(xiàn)在其前臺(tái)或后臺(tái),并且顯示在Windows任務(wù)欄中。1、指定表單類型創(chuàng)建各種類型表單的方法大體相同,但需設(shè)置特定屬性以指出表單應(yīng)該如何工作。如果創(chuàng)建的是子表單,則不僅需要指定它應(yīng)在另外一個(gè)表單中顯示,而且還需指定是否是MDI類的子表單,2024/8/1515即指出表單最大化時(shí)是如何工作的。如果子表單是MDI類的,它會(huì)包含在父表單中,并共享父表單的標(biāo)題欄、標(biāo)題、菜單以及工具欄。非MDI類的子表單最大化時(shí)將占據(jù)父表單的全部用戶區(qū)域,但仍保留它本身的標(biāo)題和標(biāo)題欄。若要建立一個(gè)子表單,可以:■用“表單設(shè)計(jì)器”創(chuàng)建或編輯表單?!隹蓪⒈韱蔚腟howWindow屬性設(shè)置為下列值之一:●0-在屏幕中:子表單的父表單將為VFP的主窗口?!?-在頂層表單中。當(dāng)子窗口顯示時(shí),子表單的父表單是活動(dòng)的頂層表單。如果希望子窗口出現(xiàn)在頂層表單窗口內(nèi),而不是出現(xiàn)在VFP主窗口內(nèi)時(shí)??蛇x用該項(xiàng)設(shè)置。2024/8/1516■如果希望子表單最大化時(shí)與父表單組合成一體,可設(shè)置表單的MDIForm屬性(指定表單是否為MDI窗口)為“真”(.T.);如果希望子表單最大化時(shí)仍保留為一獨(dú)立的窗口,可設(shè)置表單的MDIForm屬性為“假”(.F.)。浮動(dòng)表單是由子表單變化而來。若要指定為浮動(dòng)表單,可以:■用“表單設(shè)計(jì)器”創(chuàng)建或編輯表單。■可將表單的ShowWindow屬性設(shè)置為以下值之一:●0-在屏幕中。浮動(dòng)表單的父表單將出現(xiàn)在VFP主窗口。●1-在頂層表單中。當(dāng)浮動(dòng)窗口顯示時(shí),浮動(dòng)表單的父表單將是活動(dòng)的頂層表單?!鰧⒈韱蔚腄eskTop屬性(指定表單是否包含在VFP主窗口中)設(shè)置為“真”(.T.)。若要指定頂層表單,可以:■用“表單設(shè)計(jì)器”創(chuàng)建或編輯表單。■將表單的ShowWindow屬性設(shè)置為“2-作為頂層表單”。2024/8/15172、顯示位于頂層表單中的子表單如果所創(chuàng)建的子表單中的ShowWindow屬性設(shè)置為“1-在頂層表單中”,則不需直接指定一頂層表單作為子表單的父表單。而是在子窗口出現(xiàn)時(shí),VFP指派成為該子表單的父表單。若要顯示位于頂層表單中的子表單,可以:■創(chuàng)建頂層表單?!鲈陧攲颖韱蔚氖录a中包含DOFORM命令,指定要顯示的子表單的名稱。例如,在頂層表單中建立一個(gè)按鈕,然后在按鈕的Click事件代碼中包含如下的命令,如圖所示:注意:在顯示子表單時(shí),頂層表單必須是可視的、活動(dòng)的。因此,不能使用頂層表單的Init事件來顯示子表單,因?yàn)榇藭r(shí)頂層表單還未激活?!黾せ铐攲颖韱?,如有必要,觸發(fā)用以顯示表單的事件。2024/8/15183、隱藏VFP主窗口在運(yùn)行頂層表單時(shí),可能不希望VFP主窗口是可視的。使用應(yīng)用程序?qū)ο蟮腣isible屬性(指定對(duì)象是可見還是隱藏)按要求隱藏或顯示VFP主窗口。若要隱藏VFP主窗口,可以:■在表單的Init事件中,包含下列代碼行:Appliction.Visible=.F.■在表單的Destroy事件中,包含下列代碼行:Appliction.Visible=.T.在某些方法程序或事件中,可使用THISFORM.Release命令關(guān)閉表單。注意:也可以在配置文件中包含以下行,用以隱藏VFP主窗口:SCREEN=OFF4、在頂層表單中添加菜單若要在頂層表單中添加菜單,可以:■創(chuàng)建頂層表單的菜單。返回2024/8/1519■將表單的ShowWindow屬性設(shè)置為“2-作為頂層表單”?!鲈诒韱蔚腎nit事件中,運(yùn)行菜單程序并傳遞兩個(gè)參數(shù):Domenuname.mprWITHoForm,LAutoRename其中,oForm是表單的對(duì)象引用。在表單的Init事件中,THIS作為第一個(gè)參數(shù)進(jìn)行傳遞。LAutoRename指定了是否為菜單取一個(gè)新的唯一的名字。如果計(jì)劃運(yùn)行表單的多個(gè)實(shí)例,則將.T.傳遞給LAutoRename。例如,可以使用下列代碼調(diào)用名為mySDImenu的菜單:DOmySDImenu.mprWITHTHIS,.T.7.1.3用表單集擴(kuò)充表單
可以將多個(gè)表單包含在一個(gè)表單集中,作為一組處理。表單集有以下優(yōu)點(diǎn):■可同時(shí)顯示或隱藏表單集中的全部表單?!隹梢钥梢暤恼{(diào)整多個(gè)表單以控制它們的相對(duì)位置?!鲆?yàn)楸韱渭兴斜韱味际窃趩蝹€(gè).SCX文件中用單獨(dú)的數(shù)據(jù)2024/8/1520環(huán)境定義的,可自動(dòng)地同步改變多個(gè)表單中的記錄指針。如果在一個(gè)表單的父表中改變記錄指針,另一個(gè)表單中子表的記錄指針則被更新和顯示。注意:運(yùn)行表單集時(shí),將加載表單集所有表單和表單的所有對(duì)象。加載帶著很多控件的多個(gè)表單會(huì)花幾秒鐘的時(shí)間。1、創(chuàng)建表單集表單集是一個(gè)包含有一個(gè)或多個(gè)表單的父層次的容器??稍凇氨韱卧O(shè)計(jì)器”中創(chuàng)建表單集,若要?jiǎng)?chuàng)建表單集,可從“表單”菜單中,選擇“創(chuàng)建表單集”選項(xiàng)。如果不需要將多個(gè)表單處理為表單組,則不必創(chuàng)建表單集。創(chuàng)建表單集以后,則可向其中添加表單。2、添加和刪除表單創(chuàng)建了表單集以后,可添加新表單或刪除表單。若要向表單集中添加附加的表單,可從“表單”菜單中選擇“添加新表單”。若要從表單集中刪除表單,可以:■在“表單設(shè)計(jì)器”“屬性”窗口的對(duì)象列表框中,選擇要?jiǎng)h除的2024/8/1521表單?!鰪摹氨韱巍辈藛沃羞x擇“移除表單”。如果表單集中只有一個(gè)表單,可刪除表單集而只剩下表單。若要?jiǎng)h除表單集,可從“表單”菜單中選擇“移除表單集”。表單以表的格式存儲(chǔ)在.SCX后綴的文件中。創(chuàng)建表單時(shí),.SCX表包含了一個(gè)表單的記錄,一個(gè)數(shù)據(jù)環(huán)境的記錄,和兩個(gè)內(nèi)部使用記錄。為每個(gè)添加到表單或數(shù)據(jù)環(huán)境中的對(duì)象添加一個(gè)記錄。如果創(chuàng)建了表單集,則為表單集及每個(gè)新表單添加一個(gè)附加的記錄。每個(gè)表單的父容器為表單集,每個(gè)控件的父容器為其所在的表單。注意:當(dāng)運(yùn)行表單時(shí),若不想在表單集中的所有表單的初始時(shí)就設(shè)置為可視的,可以在表單集運(yùn)行時(shí),將不準(zhǔn)備顯示的表單的Visible屬性設(shè)置為“假”(.F.)。要顯示的表單的Visib1e屬性設(shè)置為“真”(.T.)。返回2024/8/15227.2向表單中添加對(duì)象
7.1.1設(shè)置數(shù)據(jù)環(huán)境返回退出7.2.2向表單中添加VFP控件7.2.3向表單中添加數(shù)據(jù)綁定型控件7.2.4向表單中添加用戶自定義對(duì)象7.2.5確定表單中的控件數(shù)目7.2.6在表單中添加屬性和方法程序7.2.7包含預(yù)定義常量2024/8/15237.2.1向表單中添加VFP容器
除表單集和表單外,VFP還提供了四個(gè)基本容器類:命令按鈕組、選項(xiàng)按鈕組、表格和頁框。若要在表單中添加容器對(duì)象,可從“表單控件”工具欄上選擇所需的容器對(duì)象的按鈕(表格、頁框或按鈕組),并在表單中拖動(dòng),調(diào)整到所需要的大小。文本框選項(xiàng)按鈕組微調(diào)控件頁框形狀生成器鎖定標(biāo)簽命令按鈕組列表框計(jì)時(shí)器線條超級(jí)連接查看類命令按鈕組合框圖象ActiveX綁定控件分隔符選定對(duì)象編輯框復(fù)選框表格ActiveX控件容器命令鎖基本容器控件2024/8/1524在表單中添加命令按鈕組或選項(xiàng)按鈕組時(shí),按鈕組默認(rèn)包含兩個(gè)按鈕。在表單中添加頁框時(shí),頁框默認(rèn)包含兩個(gè)頁面,將ButtonCount屬性(指定一個(gè)命令按鈕組或選項(xiàng)按鈕組中按鈕的數(shù)目)或PageCount屬性(指定頁框?qū)ο笾兴械捻摂?shù))設(shè)置為需要的數(shù)目,可以包含更多的按鈕或頁面。向表單中添加表格時(shí),ColumnCount屬性(指定表格、組合框或列表框中列對(duì)象的數(shù)目)的默認(rèn)值為-1,表示處于AutoFill狀態(tài)。這樣,在運(yùn)行時(shí)表格將顯示與RecordSource屬性(指定與表格控件建立聯(lián)系的數(shù)據(jù)源)中指定的表具有同樣字段數(shù)量的列。如果不想處于“AutoFill”狀態(tài),可以設(shè)置表格的ColumnCou-nt屬性為指定列的數(shù)目。VFP中的所有容器對(duì)象都有與它們相關(guān)聯(lián)的記數(shù)屬性和收集屬性。收集屬性是引用其每個(gè)被包含對(duì)象的數(shù)組,記數(shù)屬性是指示其包含的對(duì)象數(shù)的數(shù)值屬性。每個(gè)容器的收集和記數(shù)屬性根據(jù)包含在容器中的對(duì)象類型來命名,下表列出了容器及其相應(yīng)的收集和記數(shù)屬性。2024/8/1525【例7-1】建立一個(gè)只含一個(gè)表格(列數(shù)由提供數(shù)據(jù)的表的字段數(shù)確定)和一個(gè)命令按鈕的表單,運(yùn)行表單時(shí),表格中顯示的內(nèi)容底色紅綠交替。2024/8/1526第2步、單擊表單控件工具欄上的(表格)按鈕;第1步、在項(xiàng)目管理器中選擇“表單”,再單擊【新建】單擊【新建表單】在系統(tǒng)菜單上單擊【顯示】|【表單控件工具欄】第2步、單擊表單控件工具欄上的(表格)按鈕;第3步、在表單上按住鼠標(biāo)左鍵拖出一個(gè)矩形框,釋放鼠標(biāo)。在表單上單擊右鍵,選擇【數(shù)據(jù)環(huán)境】選擇Student表后單擊【添加】單擊【關(guān)閉】關(guān)閉“數(shù)據(jù)環(huán)境設(shè)計(jì)器”第5步、選擇表單上的表格對(duì)象,在“屬性”對(duì)話框中選擇“數(shù)據(jù)”選項(xiàng)卡,在屬性區(qū)域選擇RecordSource屬性,在屬性值框中選擇Student表對(duì)象框中選擇Form1選擇“方法程序”雙擊ActivateEvento=THISFORM.Grid1FORI=1TOo.ColumnCount
IFI%2=0o.Columns(i).BackColor=RGB(0,255,0)ELSEo.Columns(i).BackColor=RGB(255,0,0)ENDIFENDFOR要實(shí)現(xiàn)此功能,可采取如下步驟:第1步、選擇【文件】|【新建】菜單,然后選擇“表單”,再選擇【新建文件】或在項(xiàng)目管理器中選擇“表單”,再單擊【新建】,再在對(duì)話框中選擇【新建文件】;第5步、選擇表單上的表格對(duì)象,在“屬性”對(duì)話框中選擇“數(shù)據(jù)”選項(xiàng)卡,在屬性區(qū)域找到RecordSource屬性,在屬性值輸入文本框中選擇“Student”表。第3步、在表單上按住鼠標(biāo)左鍵拖出一個(gè)矩形框,釋放鼠標(biāo)。第4步、在表單上單擊右鍵,選擇【數(shù)據(jù)環(huán)境】,在彈出的“數(shù)據(jù)環(huán)境設(shè)計(jì)器”中單擊右鍵,選擇【添加】,再在彈出的“添加表或視圖”對(duì)話框中選擇“Student”再按【添加】按鈕,再按【關(guān)閉】按鈕,然后關(guān)閉“數(shù)據(jù)環(huán)境設(shè)計(jì)器”。第6步、選擇表單,再選擇“屬性”上的“方法程序”選項(xiàng)卡,雙擊“ActivateEvent”屬性,在方法程序編輯框中輸入代碼。2024/8/1527第7步、采用相似的方法建立一個(gè)命令按鈕,將Caption屬性(指定對(duì)象文本標(biāo)題)值設(shè)置為“退出”。單擊“命令按鈕”按鈕在表單上單擊,添加“命令”按鈕關(guān)閉表單控件工具欄將Caption屬性值設(shè)置為“退出”在此處更改并輸入單擊注意:二處的值被修改!雙擊“退出”按鈕輸入事件代碼THISFORM.RELEASE關(guān)閉“屬性”窗口和事件代碼編輯窗口并單擊常用工具欄上的運(yùn)行按鈕。表單運(yùn)行結(jié)果:?jiǎn)螕舯韱紊系摹就顺觥堪粹o可以將表單關(guān)閉。返回2024/8/15287.2.2向表單中添加VFP控件
控件工具欄能使用戶很方便地在表單中添加任何一種標(biāo)準(zhǔn)的VFP控件,常用的VFP控件如下所示:復(fù)選框圖像OLE綁定型控件文本框組合框標(biāo)簽OLE容器控件計(jì)時(shí)器命令按鈕線條形狀編輯框列表框微調(diào)若要在表單中添加控件,可在“表單控件”工具欄中選擇所需的控件按鈕(單擊),在表單中單擊或拖動(dòng)按鈕,把它調(diào)整到想要的大小。如在上例中向表單添加了一個(gè)“表格”控件和一個(gè)“命令按鈕”控件。返回2024/8/15297.2.3向表單中添加數(shù)據(jù)綁定型控件
通過給控件的ControlSource屬性設(shè)置字段或給表格的RecordSource屬性設(shè)置表或視圖,可使控件與表、視圖、表的字段、或視圖的字段中的數(shù)據(jù)相聯(lián)系。但也可通過直接將表和視圖從下列位置拖到表單中,以創(chuàng)建數(shù)據(jù)綁定型控件:■“項(xiàng)目管理器”■“數(shù)據(jù)庫設(shè)計(jì)器”■“數(shù)據(jù)環(huán)境設(shè)計(jì)器”“表設(shè)計(jì)器”中“屬性”選項(xiàng)卡的“FieldMapping”設(shè)置或“選項(xiàng)”對(duì)話框的“FieldMapping”選項(xiàng)卡的設(shè)置,是這種方法創(chuàng)建控件類的基礎(chǔ)。上例中將表格的RecordSource屬性設(shè)置為Student,即是將表格的數(shù)據(jù)源與表Student建立聯(lián)系。返回2024/8/15307.2.4向表單中添加用戶自定義對(duì)象
VFP最強(qiáng)大的功能之一就是能創(chuàng)建在應(yīng)用程序不同部分都可以使用和重復(fù)使用的類。如果創(chuàng)建了類,就能將它們添加到表單中。若要基于自定義類上添加對(duì)象,可在“項(xiàng)目管理器”中,將類拖動(dòng)到容器中,當(dāng)給工具欄添加類時(shí),也可直接從“表單控件”工具欄中添加。1、在控件工具欄上添加類庫類庫必須在注冊(cè)后才能在“表單控件”工具欄中顯示出來。若要注冊(cè)類庫,可以:①從“工具”菜單中選擇“選項(xiàng)”打開“選項(xiàng)”對(duì)話框。②在“選項(xiàng)”對(duì)話框中選擇“控件”選項(xiàng)卡。③選擇“添加”按鈕。④在“打開”對(duì)話框中,選擇一個(gè)要加到“選定”列表中的類庫,并選擇“打開”按鈕。⑤重復(fù)步驟③和④?!斑x定”列表中列出了類庫中的類,在“表單設(shè)計(jì)器”中可以和2024/8/1531VFP基類一樣方便地使用這些類。注意:如果要在每次運(yùn)行VFP時(shí)“表單控件”工具欄中的類庫都有效,可在“選項(xiàng)”對(duì)話框中,選擇“設(shè)置為默認(rèn)值”。此外,也可以在“表單設(shè)計(jì)器”中直接注冊(cè)類庫。若要在表單設(shè)計(jì)器中注冊(cè)一個(gè)類庫,可以:①在“表單控件”工具欄中選擇“查看類”按鈕。②從子菜單中選擇“添加”。③在“打開”對(duì)話框中選擇要添加到“表單控件”工具欄上的類庫,然后選擇“打開”按鈕。2、從類庫中添加對(duì)象到表單如果從“選項(xiàng)”對(duì)話框的“類”選項(xiàng)卡或從“查看類”子菜單添加類庫,就能在“表單設(shè)計(jì)器”中訪問它們。若要從“表單控件”工具欄添加自定義對(duì)象,可以:①在“表單控件”工具欄中,選擇“查看類”按鈕。②從已注冊(cè)類庫的列表中選擇一個(gè)類庫,它包含了要加到表單中的控件。返回2024/8/1532③單擊所需要的控件,并在表單中拖動(dòng)到合適大小。注意:如果想從“查看類”工具欄中移去一個(gè)可視類庫,可以在“選項(xiàng)”對(duì)話框的“控件”選項(xiàng)卡中,選擇“選定”列表中列出的一個(gè)可視的類庫,然后選擇“移去”按鈕。當(dāng)向不是基于VFP基類的表單添加對(duì)象時(shí),類庫的相對(duì)路徑(.vcx文件)存儲(chǔ)在表單的.scx文件中。如果要將表單或類庫移到另一個(gè)位置,在運(yùn)行表單時(shí)VFP顯示一個(gè)對(duì)話框,可以人工尋找類庫。7.2.5確定表單中的控件數(shù)目
使用ControlCount屬性可以確定表單中究竟有多少個(gè)控件,而Controls[n]屬性允許引用表單上的任何一個(gè)控件。下面的程序用于打印出當(dāng)前活動(dòng)表單上所有控件的Name屬性:ACTIVATESCREEN&&將輸出打印到VFP主窗口FORnCnt=1TOApplication.ActiveForm.ControlCount
?Application.ActiveForm.Controls[nCnt].NameENDFOR上述程序中的Application也可以用_Screen替換。返回2024/8/15337.2.6在表單中添加屬性和方法程序
可以添加許多個(gè)新的屬性和方法程序到一個(gè)表單。屬性擁有一個(gè)值,方法程序具有調(diào)用它時(shí)被運(yùn)行的過程代碼。新建的屬性和方法程序與其它屬性與方法程序的引用一樣。1、建立一個(gè)新屬性如果有一個(gè)表單集,則在“表單設(shè)計(jì)器”中添加的屬性和方法程序就屬于此表單集。如果沒有建立表單集,則屬性和方法程序?qū)儆诒韱?。若要向表單或表單集中添加新屬性,可以:①從“表單”菜單中選擇“新建屬性”(NewProperty)命令。②在“新建屬性”對(duì)話框中,鍵入屬性名。還可以加入關(guān)于這個(gè)屬性的說明,它將顯示在“屬性”窗口的底部的屬性描述中。2、建立一個(gè)數(shù)組屬性一個(gè)數(shù)組屬性可以像其他屬性一樣都屬于表單或表單集,但不同的是數(shù)組屬性可用VFP的數(shù)組命令和函數(shù)處理它。若要?jiǎng)?chuàng)建一個(gè)數(shù)組屬性,可以:2024/8/1534①添加新屬性到表單。②在“新建屬性”對(duì)話框的“屬性名”框中鍵入數(shù)組屬性稱,并包括數(shù)組的大小和維數(shù)。例如,可在“新建屬性”對(duì)話框的“名稱”框中輸入myarray(10,5),去創(chuàng)建一個(gè)10行5列的二維數(shù)組,若要同時(shí)對(duì)該屬性加以說明,則還可以在下部的“說明”框中輸入需要對(duì)該屬性進(jìn)行說明的內(nèi)容,如“自定義數(shù)組”等。當(dāng)添加數(shù)組屬性到表單時(shí),屬性作為只讀顯示在屬性窗口中??梢栽谶\(yùn)行時(shí)管理數(shù)組,重新設(shè)置數(shù)組的維數(shù),也可對(duì)數(shù)組屬性的元素賦值。3、創(chuàng)建新方法程序也可向表單中添加方法程序,并且可以用調(diào)用表單類方法程序的方式調(diào)用它。若要在表單或表單集中創(chuàng)建一個(gè)新方法程序,可以:①從“表單”菜單中選擇“新方法程序”。②在“新方法程序”對(duì)話框中,輸入方法程序的名稱。還可以包含有關(guān)這個(gè)方法程序的2024/8/1535說明,這是可選的。調(diào)用用戶自定義方法程序和調(diào)用基類方法程序一樣,都使用下面的語法:ObjectName.MethodName建立的方法程序同樣可以接受參數(shù)并返回值,這種情況下,可以使用賦值語句來調(diào)用方法程序:cVariable=ObjectName.MethodName(cParameter,nParameter)7.2.7包含預(yù)定義常量
為了在方法程序中使用預(yù)定義常量,可在表單或表單集中用#INCLUDE命令包含一個(gè)頭文件。頭文件一般包含由#DEFINE預(yù)處理器偽指令定義的編譯時(shí)的常數(shù)。若要在表單中包含文件,可以:①從“表單”菜單中選擇“包含文件”。②在“包含文件”對(duì)話框的“包含文件”文本框中指定文件,或者選擇對(duì)話框按鈕以打開“包含”對(duì)話框并選定文件。③選擇“確定”。返回2024/8/15367.3處理對(duì)象
7.3.1在設(shè)計(jì)時(shí)設(shè)置屬性返回退出7.3.2定義表單行為7.3.3編輯事件代碼和方法程序代碼7.3.4將表單和控件保存為類7.3.5運(yùn)行表單7.3.6在運(yùn)行時(shí)設(shè)置屬性2024/8/15377.3.1在設(shè)計(jì)時(shí)設(shè)置屬性
打開屬性窗口會(huì)顯示選定對(duì)象的屬性或事件。如果選擇了多個(gè)對(duì)象,這些對(duì)象共有的屬性將顯示在“屬性”窗口中。要編輯另一個(gè)對(duì)象的屬性或事件,可在“對(duì)象”框中選擇這個(gè)對(duì)象,或者直接從表單中選擇這個(gè)控件。若要設(shè)置屬性,可首先在“屬性”窗口中,從“屬性和事件”列表中選擇一個(gè)屬性。然后在“屬性設(shè)置”框中,為選中的屬性鍵入或選擇需要的設(shè)置。注意:那些在設(shè)計(jì)時(shí)為只讀的屬性,例如對(duì)象的Class屬性,在屬性窗口的“屬性和事件”列表框中以斜體顯示。如果屬性要求輸入字符值,不必用引號(hào)將這個(gè)值括起來。例如,要將一個(gè)表單的標(biāo)題設(shè)為Student,只需在“屬性設(shè)置”框中鍵入Student;若想讓表單的標(biāo)題是“Student”,即想讓引號(hào)也出現(xiàn)在窗口的標(biāo)題上,在“屬性設(shè)置”框中鍵入“Student”。通過屬性窗口可以將屬性設(shè)置為表達(dá)式或函數(shù)的結(jié)果。若要用表達(dá)式設(shè)置屬性,可以:2024/8/1538■在“屬性”窗口中,選擇“函數(shù)”按鈕來打開“表達(dá)式生成器”。■在“屬性設(shè)置”框中鍵入“=”號(hào),并在后面鍵入表達(dá)式。例如,如果想設(shè)置表單的Caption屬性,使它在運(yùn)行表單時(shí)能夠指示當(dāng)前的活動(dòng)表,可在“屬性設(shè)置”框中鍵入:=Alias()。在屬性窗口中設(shè)置一個(gè)屬性表達(dá)式,并在運(yùn)行時(shí)刻或設(shè)計(jì)時(shí)刻初始化對(duì)象時(shí),才對(duì)這個(gè)屬性表達(dá)式進(jìn)行求值。如果將屬性設(shè)置為用戶自定義函數(shù)的結(jié)果,那么當(dāng)設(shè)置或修改這個(gè)屬性,以及運(yùn)行表單時(shí),對(duì)這個(gè)函數(shù)進(jìn)行求值。如果用戶自定義函數(shù)出現(xiàn)錯(cuò)誤,有可能打不開這個(gè)表單。此外,也可以在對(duì)象的Init事件中將屬性設(shè)置為用戶自定義函數(shù),如下例所示。This.Caption=myfunction()其中myfunction()為自定義函數(shù)名如果用戶自定義函數(shù)出現(xiàn)錯(cuò)誤,就不能運(yùn)行表單,但可以修改它。如果要指定表單的圖標(biāo),將表單的Icon屬性設(shè)置為一個(gè).ico文件的文件名。返回2024/8/15397.3.2定義表單行為
當(dāng)在“表單設(shè)計(jì)器”中設(shè)計(jì)表單時(shí),表單是“可視”的。除非Visible(指定對(duì)象是可見還是隱藏)屬性設(shè)置為“假”(.F.),對(duì)表單的外觀和行為的修改將立刻在表單上反映出來。如果將WindowState(指定表單窗口在運(yùn)行時(shí)是最大化、最小化還是采用普通大?。傩栽O(shè)置為0(普通)、1(最小化)或2(最大化),表單設(shè)計(jì)器中的表單會(huì)立即體現(xiàn)這一設(shè)置。如果將Movable屬性(指定在運(yùn)行時(shí)刻用戶能否移動(dòng)對(duì)象)設(shè)置為“假”(.F.),那么不但用戶在運(yùn)行時(shí)不能移動(dòng)表單,即使在設(shè)計(jì)時(shí)也不能移動(dòng)它。因此應(yīng)該在設(shè)置那些決定表單行為的屬性之前,先完成表單的功能設(shè)計(jì),并添加所有需要的控件。表7-3列出了在設(shè)計(jì)時(shí)常用的表單屬性,它們定義了表單的外觀和行為。2024/8/1540返回2024/8/15417.3.3編輯事件代碼和方法程序代碼
事件是用戶的行為,如單擊鼠標(biāo)或鼠標(biāo)的移動(dòng),也可以是系統(tǒng)行為,如系統(tǒng)時(shí)鐘的進(jìn)程。方法程序是和對(duì)象相聯(lián)系的過程,只能通過程序以特定的方式激活。當(dāng)觸發(fā)事件或激活方法程序時(shí),可以指定要執(zhí)行的代碼。若要編輯事件或方法程序代碼,可以:①從“顯示”菜單中選擇“代碼”命令。②在“過程”框中選擇事件或方法程序。③在編輯窗口中鍵入代碼,在觸發(fā)事件或激活方法程序時(shí)將執(zhí)行這些代碼。例如,如果在表單上已有一個(gè)標(biāo)題為“退出”的命令按鈕,在這個(gè)按鈕的Click事件中可包括這樣一行代碼:THISFORM.Release注意:若要在編輯窗口中查看不同過程,請(qǐng)按【PageDown】或【PageUp】鍵。當(dāng)用戶單擊這個(gè)命令按鈕時(shí),表單被從屏幕和內(nèi)存中刪除。如果不想從內(nèi)存中刪除表單,可以在Click事件代碼中以下一行代碼來代替上一行代碼:THISFORM.hide&&將表單隱藏起來注意:如果表單集、表單或表單集中任何表單上任何對(duì)象的Init事件代碼返回“假”(.F.),就不能創(chuàng)建這個(gè)表單或表單集。返回2024/8/15427.3.4將表單和控件保存為類
也可以將表單或表單上的控件子集保存為類定義。如果您打算創(chuàng)建基于表單的子類,或在其他表單中重新使用這些控件,可將表單作為類定義來保存。若要將表單或選定的控件保存為類定義,可以:①從“文件”菜單中選擇“另存為類”。②在“另存為類”對(duì)話框中選擇“當(dāng)前表單”或“選定控件”。③在“類名”框中輸入類的名稱。④在“文件”框中輸入保存類的文件名。⑤選擇“確定”按鈕。如果沒有給出文件擴(kuò)展名,保存文件時(shí)會(huì)加上默認(rèn)的.vcx擴(kuò)展名,如果將表單保存為類定義,就可以用MODIFYCLASS命令對(duì)它進(jìn)行修改。返回2024/8/15437.3.5運(yùn)行表單
可以從界面直接運(yùn)行表單,或在程序代碼中運(yùn)行表單。1、交互地運(yùn)行表單有幾種方法運(yùn)行設(shè)計(jì)好的表單。如果在“表單設(shè)計(jì)器”中工作,可通過單擊“表單設(shè)計(jì)器”工具欄中的“運(yùn)行”按鈕測(cè)試表單。如果想在“表單設(shè)計(jì)器”重新打開表單,可在工具欄中選擇【修改表單】按鈕。也可以從項(xiàng)目中運(yùn)行表單,或者以編程方式運(yùn)行它。若要以交互方式運(yùn)行表單,可在“項(xiàng)目管理器”中,選擇要運(yùn)行的表單,再選擇“運(yùn)行”按鈕。或者在“命令”窗口中,使用DOFORM命令運(yùn)行表單。也可以從【程序】菜單中選擇【運(yùn)行】來運(yùn)行菜單,在“文件類型”框中選擇“表單”,選定一個(gè)表單再選定【運(yùn)行】按鈕。2、從程序中運(yùn)行表單若想在程序中運(yùn)行表單,需要在與事件相關(guān)聯(lián)的代碼、方法程序代碼或在程序或過程中包含DOFORM命令。2024/8/15443、命名表單對(duì)象默認(rèn)情況下,當(dāng)使用DOFORM命令時(shí),表單對(duì)象的名稱與.scx文件名稱一樣。例如,下面的一行代碼運(yùn)行Student.scx表單。VFP自動(dòng)為這個(gè)表單創(chuàng)建一個(gè)名為Student的對(duì)象變量:DOFORMStudent若要命名表單對(duì)象,請(qǐng)使用DOFORM命令的NAME子句。例如,下面的命令運(yùn)行一個(gè)表單,同時(shí)創(chuàng)建兩個(gè)表單對(duì)象變量名:DOFORMStudentNAMEmystud1DOFORMStudentNAMEmystud2
4、處理表單對(duì)象如果在“命令”窗口發(fā)出DOFORM命令,表單對(duì)象就和一個(gè)公共變量相關(guān)聯(lián),可以通過這個(gè)變量名來訪問表單對(duì)象。例如,在“命令”窗口發(fā)出下面的命令,打開一個(gè)名為Student的表單并改變它的標(biāo)題。DOFORMStudentStudent.Caption=”學(xué)生情況登記”2024/8/1545如果在“命令”窗口發(fā)出下面的命令,在活動(dòng)的輸出窗口中將顯示O,表明Student是一個(gè)對(duì)象:?TYPE(“Student”)如果在程序中發(fā)出DOFORM命令,表單對(duì)象作用范圍限于這個(gè)程序,如果程序或過程運(yùn)行結(jié)束,會(huì)移去對(duì)象,但表單仍然可見。例如可以運(yùn)行下面這個(gè)程序:*formtest.prgDOFORMStudent在運(yùn)行完程序后,表單仍然可見,表單上的所有控件仍然處于活動(dòng)狀態(tài),但TYPE(“Student”)返回U表明Student是沒有定義的變量,因此在“命令”窗口中發(fā)出下面的命令將產(chǎn)生錯(cuò)誤:Student.Caption=”學(xué)生情況登記”但還可以使用應(yīng)用程序?qū)ο蟮腁ctiveForm、Forms和FormCount屬性訪問表單。5、將表單鏈接到表單對(duì)象變量DOFORM命令中的LINKED關(guān)鍵字允許將表單和表單對(duì)象變量2024/8/1546鏈接起來,如果包含了LINKED關(guān)鍵字,當(dāng)與表單對(duì)象相關(guān)聯(lián)的變量超出范圍時(shí),表單將被釋放。例如,下面命令創(chuàng)建一個(gè)鏈接到對(duì)象變量mystud2的表單:DOFORMStudentNAMEmystud2LINKED當(dāng)釋放mystud2時(shí),表單也關(guān)閉。6、關(guān)閉活動(dòng)的表單若想允許用戶通過雙擊控件框,或選擇表單“控件”菜單中的“關(guān)閉”來關(guān)閉活動(dòng)的表單,則需要設(shè)置表單的Closable屬性。若要允許用戶關(guān)閉活動(dòng)表單,可以:①在“屬性”窗口中,將Closable屬性設(shè)置為“真”(.T.)。②使用RELEASE命令。例如,可以通過在“命令”窗口或程序中發(fā)出下面的命令來關(guān)閉和釋放表單Student:RELEASEStudent
也可以在一個(gè)控件,如標(biāo)題為“退出”的命令按鈕的Click事件代碼中包含下面的命令,它允許用戶關(guān)閉和釋放表單:2024/8/1547THISFORM.Release
可以在與表單的對(duì)象相關(guān)聯(lián)的代碼中使用RELEASE命令,但在RELEASE方法程序中卻不會(huì)執(zhí)行包含的任何代碼。
注意:當(dāng)釋放表單時(shí),同時(shí)也從內(nèi)存中釋放了為這個(gè)表單創(chuàng)建的對(duì)象變量。每一個(gè)表單集有一個(gè)單獨(dú)的變量,因此不釋放表單集就不能釋放表單集中的表單。如果想要釋放表單集,可使用RELEASE.THISFORMSET命令。如果想將一個(gè)表單從屏幕移去,不再讓用戶看見或使用它,可以使用THISFORM.Hide命令。返回2024/8/15487.3.6在運(yùn)行時(shí)設(shè)置屬性
表單由控件等對(duì)象組成。每個(gè)對(duì)象都有自己的屬性,對(duì)象的屬性是獨(dú)立存在的,可以分別定義每個(gè)對(duì)象的屬性。打開屬性窗口會(huì)顯示選定對(duì)象的屬性或事件。如果選擇了多個(gè)對(duì)象,這些對(duì)象共有的屬性會(huì)顯示在“屬性”窗口中。要編輯另一個(gè)對(duì)象的屬性或事件??梢栽凇皩?duì)象”框中選擇這個(gè)對(duì)象,或者直接從表單中選擇這個(gè)控件。VFP中對(duì)象的屬性除了能在設(shè)計(jì)時(shí)確定以外,還能在運(yùn)行時(shí)對(duì)屬性進(jìn)行充分的控制。1、在對(duì)象層次上引用對(duì)象若想操作一個(gè)對(duì)象,需要確定它和容器層次的關(guān)系。在容器層次的最高級(jí)(表單集或表單)需要引用對(duì)象變量。除非使用DOFORM命令中的NAME子句,否則對(duì)象變量和.scx文件有相同的名稱。通過引用由點(diǎn)號(hào)(.)分隔的對(duì)象變量、控件和屬性可以處理屬性,如下所示:Objectvariable.[form.]perty=setting2024/8/1549對(duì)象屬性設(shè)置的一般格式說明:..=對(duì)象變量,包含包含對(duì)象的容器及對(duì)象等。容器和對(duì)象間也要用逗點(diǎn)分隔。逗點(diǎn)分隔符逗點(diǎn)分隔符等號(hào)賦值操作控件。其中包含有包含控件的容器,容器和控件也要用逗點(diǎn)分隔。需要設(shè)置值的屬于指定控件的一個(gè)屬性。所賦的值在【例7-1】中使用表單的ActivateEvent事件中使用了下列代碼:o=THISFORM.Grid1o.Columns(i).BackColor=RGB(0,255,0)這兩條命令相當(dāng)于一條命令:THISFORM.Grid1.Columns(i).BackColor=RGB(0,255,0)對(duì)象變量控件屬性值2024/8/1550可在表單或表單集中使用THIS、THISFORM和THISFORMSET引用對(duì)象。例如,要想在單擊命令按鈕時(shí)改變它的標(biāo)題,可在命令按鈕的Click事件代碼中包含下面的命令:THIS.Caption=“保存”2024/8/1551對(duì)象引用示例:在第5章中的面向?qū)ο蟪绦蛟O(shè)計(jì)中曾用到下述命令:設(shè)置Combo2(字體設(shè)置)的ClickEvent事件代碼(工具欄不能屬于一個(gè)表單,只能屬于表單集)THISFORMSET.ActiveForm.ActiveControl.FontName=THIS.VALUE指定表單集指定屬于指定表單集的一個(gè)表單指定屬于指定表單的一個(gè)控件指定屬于指定控件的一個(gè)屬性為指定屬性設(shè)置值設(shè)置Combo3(字號(hào)設(shè)置)的ClickEvent代碼:THISFORMSET.ActiveForm.ActiveControl.FontSize=;VAL(ALLTRIM(THIS.VALUE))
設(shè)置Command1的ClickEvent代碼:THISFORMSET.ActiveForm.ActiveControl.FontBold=;!THISFORMSET.ActiveForm.ActiveControl.FontBoldTHIS.FontBold=THISFORMSET.ActiveForm.ActiveControl.FontBold說明:賦值時(shí)所賦的值既可以是指定值,也可是變量。2024/8/15522、在運(yùn)行時(shí)使用表達(dá)式設(shè)置屬性在運(yùn)行時(shí)也可以使用表達(dá)式或函數(shù)來設(shè)置屬性。若要在運(yùn)行時(shí)將屬性設(shè)置為表達(dá)式,可為屬性指定一個(gè)表達(dá)式,或者為屬性指定一個(gè)用戶自定義函數(shù)的結(jié)果。例如,建立一個(gè)“屬性設(shè)置示例”表單,根據(jù)一個(gè)變量的不同值,可以將一個(gè)按鈕的標(biāo)題設(shè)置為“添加”或“保存”,另一個(gè)按鈕的標(biāo)題設(shè)置為“編輯”或“還原”。首先在創(chuàng)建表單對(duì)象時(shí)中聲明這個(gè)變量并設(shè)置表單的名稱和“退出按鈕”的名稱:
即在表單的InitEvent方法程序中寫入如下代碼(也可在ActivateEvent事件中):PUBLICglediting&&定義變量Glediting=.F.&&為變量賦初始值THISFORM.CAPTION="屬性示例"&&設(shè)置表單名稱THISFORM.COMMAND3.CAPTION="退出"&&將Command3按鈕名設(shè)為“退出”然后在第一個(gè)和第二個(gè)命令按鈕的ClickEvent事件中,分別添加如下代碼:glediting=IIF(glediting=.F.,.T.,.F.)&&當(dāng)點(diǎn)擊事件發(fā)生時(shí),變量值發(fā)生變化THISFORM.Refresh&&調(diào)用表單的刷新方法程序2024/8/1553最后在表單的Refresh方法程序中添加如下代碼:THISFORM.COMMAND1.CAPTION=IIF(glediting=.F.,"添加","保存")THISFORM.COMMAND2.CAPTION=IIF(glediting=.F.,"編輯","還原")dodefault()
第1、2行命令是根據(jù)glediting的值設(shè)置命令按鈕名稱。
Caption設(shè)置中使用了一個(gè)IIF()表達(dá)式。IIF()是一個(gè)函數(shù)。
IIF()的功能是:該函數(shù)計(jì)算一個(gè)邏輯表達(dá)式的值,然后根據(jù)計(jì)算結(jié)果,返回兩個(gè)表達(dá)式中的一個(gè)。如果邏輯表達(dá)式的值為“真”,則返回第一個(gè)表達(dá)式;如果值為“假”,則返回第二個(gè)表達(dá)式。第3條命令的作用是調(diào)用父類中的方法程序。在此處是調(diào)用表單父類中的Refresh方法程序。在表單中單擊【添加】或【編輯】按鈕時(shí),按鈕名改變。當(dāng)再次在表單中單擊【添加】或【編輯】按鈕時(shí),按鈕名再次改變。如此循環(huán)改變。2024/8/15543、設(shè)置多個(gè)屬性用戶可以同時(shí)為一個(gè)表單的多個(gè)對(duì)象設(shè)置多個(gè)屬性,此時(shí)可使用WITH…ENDWITH結(jié)構(gòu)。例如,對(duì)于上面例子中的兩個(gè)命令按鈕,在標(biāo)題名稱變化時(shí)還要使它們的寬度、字體、字體風(fēng)格、背景顏色變化,可在表單的Refresh方法程序代碼中包含下面的語句:IFglediting=.F.
WITHTHISFORM.COMMAND1
.Caption="添加".Width=100.FontName="黑體".FontBold=.T..ForeColor=RGB(0,128,255)ENDWITHWITHTHISFORM.COMMAND2.Caption="編輯".Width=100.FontName="黑體".FontBold=.T..ForeColor=RGB(0,128,255)ENDWITHELSEWITHTHISFORM.COMMAND1.Caption="保存".Width=75.FontName="宋體".FontBold=.F..ForeColor=RGB(0,0,0)ENDWITHWITHTHISFORM.COMMAND2.Caption="還原"2024/8/1555.Width=75.FontName="黑體".FontBold=.F..ForeColor=RGB(0,0,0)ENDWITHENDIFDODEFAULT()表單運(yùn)行后的結(jié)果如圖返回2024/8/15567.4管理表單7.4.1隱藏和釋放表單7.4.2將參數(shù)傳遞到表單7.4.3從表單返回值7.4.4在表單中使用本地和遠(yuǎn)程數(shù)據(jù)退出返回2024/8/15577.4.1隱藏和釋放表單
用戶可以隱藏一個(gè)表單,使它不可見。在隱藏表單后,用戶不能訪問表單上的控件,但仍可以用程序完全控制它們。若要隱藏表單,可使用Hide方法程序。例如,在與命令按鈕的Click事件相關(guān)的代碼中,可以包含下面一行代碼:
THISFORM.Hide當(dāng)用戶單擊命令按鈕時(shí),表單仍在內(nèi)存中,但不可見。當(dāng)用戶完成對(duì)表單的操作后,就可以讓用戶釋放表單。在釋放表單后,用戶就不能再訪問表單的屬性和方法程序了。若要釋放表單,可以使用RELEASEE命令。例如,在與“退出”命令按鈕的Click事件相關(guān)的代碼中包含下面一行代碼:
THISFORM.Release當(dāng)用戶單擊“退出”命令按鈕時(shí),表單被關(guān)閉。返回2024/8/15587.4.2將參數(shù)傳遞到表單
在運(yùn)行表單時(shí),為設(shè)置屬性值或者指定操作的默認(rèn)值,有時(shí)需要將參數(shù)傳遞到表單。若要將參數(shù)傳遞到表單,可以:①創(chuàng)建容納參數(shù)的表單屬性,如ItemName和ItemQuantity②在表單的Init事件代碼中,包含PARAMETERS語句:PARAMETERScString,nNumber③在表單的Init事件代碼中,將參數(shù)分配給屬性:THIS.ItemName=cStringTHIS.ItemQuantity=nNumber例如,現(xiàn)通過向表單傳遞參數(shù),設(shè)置“屬性設(shè)置示例”表單中二個(gè)命令按鈕的FontName和FontSize屬性,在運(yùn)行表單時(shí)改變其字體和字號(hào)。可在表單的Refresh方法程序中的DODEFAULT()命令行前再寫入如下代碼:THISFORM.COMMAND1.FontName=THIS.ItemNameTHISFORM.COMMAND2.FontName=THIS.ItemNameTHISFORM.COMMAND1.FontSize=THIS.ItemQuantityTHISFORM.COMMAND2.FontSize=THIS.ItemQuantity④當(dāng)運(yùn)行表單時(shí),在DOFORM命令中包括一個(gè)WITH子句:DOFORM屬性設(shè)置示例WITH“隸書”,12返回2024/8/15597.4.3從表單返回值
在整個(gè)應(yīng)用程序中都可以使用表單,讓用戶指定值。若要從表單返回值,可以:①將表單的WindowType屬性設(shè)置為1,使表單成為模式表單。②在與表單的UnLoad事件相關(guān)的代碼中,包含一個(gè)帶返回值的RETURN命令。③在運(yùn)行表單的程序或方法程序中,在DOFORM命令中包含TO關(guān)鍵字。例如,對(duì)“屬性設(shè)置示例”表單在運(yùn)行時(shí)向其傳遞參數(shù)設(shè)置命令按鈕的字體和字號(hào),在結(jié)束表單的運(yùn)行時(shí),要求表單將命令按鈕最后的狀態(tài)通過變量返回到一個(gè)變量Sign中:向表單傳遞參數(shù)同前,再進(jìn)行如下設(shè)置:先將表單的Window-Type屬性設(shè)置為“1-模式”;再在表單的UnLoad事件中加入如下代碼:RETURNGlediting然后執(zhí)行下列命令:DOFORM屬性設(shè)置示例WITH"隸書",12TOSign返回2024/8/15607.4.4在表單中使用本地和遠(yuǎn)程數(shù)據(jù)
可以創(chuàng)建這樣的表單,它可以很容易地在使用本地?cái)?shù)據(jù)和遠(yuǎn)程數(shù)據(jù)(例如,存儲(chǔ)在數(shù)據(jù)服務(wù)器上)之間切換。這樣就可以使用本地或測(cè)試數(shù)據(jù)來創(chuàng)建應(yīng)用程序的原型,然后切換到遠(yuǎn)程或?qū)嶋H的數(shù)據(jù)上,而不對(duì)表單做實(shí)質(zhì)性的修改。能夠在本地和遠(yuǎn)程數(shù)據(jù)庫之間切換的關(guān)鍵在于使用的是視圖而不是直接將表單(及其控件)與表鏈接。若要訪問遠(yuǎn)程數(shù)據(jù),則必須在任何事件中使用視圖。因此為了方便本地?cái)?shù)據(jù)與遠(yuǎn)程數(shù)據(jù)的切換,也需為本地?cái)?shù)據(jù)創(chuàng)建視圖。創(chuàng)建表單時(shí),將這兩個(gè)視圖都添加到它的數(shù)據(jù)環(huán)境中,根據(jù)需要進(jìn)行切換。若要?jiǎng)?chuàng)建可在本地和遠(yuǎn)程數(shù)據(jù)間切換的表單,可以:①創(chuàng)建數(shù)據(jù)的兩個(gè)視圖,一個(gè)指向遠(yuǎn)程數(shù)據(jù),另一個(gè)指向本地?cái)?shù)據(jù)。②在表單的“數(shù)據(jù)環(huán)境”中添加這兩個(gè)視圖。③在“數(shù)據(jù)環(huán)境”的“屬性”中,為兩個(gè)視圖設(shè)置同樣的Alias屬性,并將“數(shù)據(jù)環(huán)境”的OpenViews屬性設(shè)置為1:LocalOnly或2:2024/8/1561RemoteOnly(取決于表單運(yùn)行時(shí)使用哪個(gè)視圖)。注意:由于兩個(gè)視圖使用同樣的別名,不要選擇默認(rèn)的0:Local和Remote。④在表單中,添加需要的控件,將ControlSource屬性設(shè)置為視圖的相應(yīng)字段。由于兩個(gè)視圖使用同樣的別名,表單運(yùn)行時(shí)控件將自動(dòng)對(duì)那個(gè)活動(dòng)的視圖作出反應(yīng)。創(chuàng)建表單后,通過改變“數(shù)據(jù)環(huán)境”的OpenView屬性切換視圖的別名??梢栽谑褂谩氨韱卧O(shè)計(jì)器”時(shí)在“數(shù)據(jù)環(huán)境”中做此工作,如果要在運(yùn)行時(shí)切換視圖,還可以寫出代碼并將其附加到某個(gè)事件中。例如,可將這些代碼放入ActivateEnevt事件中:THISFORM.DataEnvironment.OpenViews=2&&使用遠(yuǎn)程視圖如果要?jiǎng)?chuàng)建一個(gè)可在本地和遠(yuǎn)程數(shù)據(jù)間切換的表單,還必須設(shè)計(jì)定位代碼用以容納兩個(gè)視圖,尤其是設(shè)計(jì)具有一對(duì)多關(guān)系的表單。例如,如果表單只訪問本地表或視圖,可在Next命令按鈕中使用下列代碼,用來移動(dòng)指針到臨時(shí)表的下一個(gè)記錄:SKIP1THISFORM.Refresh()2024/8/1562但是,當(dāng)在遠(yuǎn)程視圖中定位時(shí),此代碼無效。因?yàn)榇a假設(shè)臨時(shí)表包含了表單需要的所有數(shù)據(jù)。通常情況下,希望從遠(yuǎn)程數(shù)據(jù)源上下載的數(shù)據(jù)越少越好。解決的辦法是使用帶參數(shù)的視圖。例如,用來編輯客戶信息的視圖定義如下代碼:SELECT*FORMCUSTOMERSWHERECUSTOMERS.COMPANY_NAME=?PCompanyName表單運(yùn)行時(shí),會(huì)在對(duì)話框中提示用戶輸入客戶名或允許用戶在文本框中輸入一個(gè)名稱。“顯示”按鈕的代碼可能與以下代碼相似:pCompanyName=THISFORM.txtpCompanyName.ValueREQUERY(“Customer”)THISFORM.refresh()返回2024/8/15637.5控件使用要點(diǎn)和技巧7.5.1根據(jù)任務(wù)選擇合適的控件
退出7.5.2使用命令按鈕和命令按鈕組控件
7.5.3用于顯示文字、圖形或圖片的控件
7.5.4使用表格控件
7.5.5使用OLE綁定型控件
7.5.6設(shè)置控件的Tab鍵次序
7.5.7允許用戶拖放
7.5.8啟用和廢止控件
返回2024/8/15647.5.1根據(jù)任務(wù)選擇合適的控件VFP的控件具有良好的靈活性和通用性。雖然可以用多種控件來完成某個(gè)特定的任務(wù),但最好保持控件的使用方法的一致性。這樣,當(dāng)用戶一看到所提供的界面,就知道自己能做什么。例如,標(biāo)簽和命令按鈕都具有Click事件,但熟悉圖形界面的用戶更習(xí)慣單擊命令按鈕來執(zhí)行指令。表單的絕大部分功能可以歸為下列幾類:■為用戶提供一組預(yù)先設(shè)定的選擇■接受不能預(yù)先設(shè)定的用戶輸入■在給定范圍內(nèi)接受用戶輸入■允許用戶執(zhí)行特定的命令■在給定的時(shí)間間隔內(nèi)執(zhí)行特定的命令■顯示信息1、預(yù)先設(shè)定選擇的控件確保數(shù)據(jù)庫數(shù)據(jù)有效性的最直接方法之一,就是為用戶提供一組預(yù)先設(shè)定的選項(xiàng)??刂朴脩舻倪x擇,可以保證在數(shù)據(jù)庫中2024/8/1565不存儲(chǔ)無效數(shù)據(jù)??梢杂孟铝锌丶橛脩籼峁┮唤M預(yù)先設(shè)定的選擇:選項(xiàng)組、列表框、下拉列表和復(fù)選框。(1)使用選項(xiàng)組選項(xiàng)組是包含選項(xiàng)按鈕的容器。通常,選項(xiàng)按鈕允許用戶指定對(duì)話框中幾個(gè)操作選項(xiàng)中的一個(gè),而不是輸入數(shù)據(jù)。例如,選項(xiàng)按鈕可以指定是向文件或打印機(jī)輸出結(jié)果還是進(jìn)行打印預(yù)覽。■設(shè)置選項(xiàng)組中的選項(xiàng)按鈕數(shù)目在表單中創(chuàng)建一個(gè)選項(xiàng)組時(shí),它默認(rèn)包含兩個(gè)選項(xiàng)按鈕,改變ButtonCount屬性可以設(shè)置選項(xiàng)組中的選項(xiàng)按鈕數(shù)目。例如,要想使一個(gè)選項(xiàng)組包含六個(gè)選項(xiàng)按鈕,可將這個(gè)選項(xiàng)組的ButtonCount屬性設(shè)置為6。選項(xiàng)組的Value屬性表明用戶選定了哪一個(gè)按鈕。例如,選項(xiàng)組有六個(gè)選項(xiàng)按鈕,如果用戶選擇了第四個(gè)選項(xiàng),選項(xiàng)組的Value屬性就是4。如果選項(xiàng)組的ControlSource屬性是一個(gè)字符型字段,或者如果在運(yùn)行表單之前將Value屬性設(shè)置為一個(gè)字符值,則選項(xiàng)組的Value屬性就是被選中的選項(xiàng)按鈕的標(biāo)題。2024/8/1566■設(shè)置選項(xiàng)按鈕的屬性要想在“表單設(shè)計(jì)器”中人工調(diào)整選項(xiàng)組或命令按鈕組的單個(gè)組件,可從在“屬性”窗口中設(shè)置單個(gè)按鈕的屬性,也可以在運(yùn)行時(shí)通過指定選項(xiàng)按鈕的名稱和屬性值來設(shè)置這些屬性。如,在表單某一控件的某一方法程序中有如下一行代碼,設(shè)置OptionGroup1選項(xiàng)組中Option4按鈕的標(biāo)題:THISFORM.OptionGroup1.Option4.Caption=”按學(xué)號(hào)分類”還可以在運(yùn)行時(shí)使用Buttons屬性,并指定選項(xiàng)按鈕在組中的索引號(hào)來設(shè)置這些屬性。例如,如果Option4是組中的第四個(gè)按鈕,下面一行代碼同樣完成對(duì)Option4標(biāo)題的設(shè)置:THISFORM.OptionGroup1.Buttons(4)Caption=”按學(xué)號(hào)分類”若要設(shè)置組中所有按鈕的屬性,可使用組的SetAll方法程序。下面一行代碼將表單中OptionGroup1選項(xiàng)組的所有按鈕設(shè)置為無效:THISFORM.OptionGroup1.SetAll(“Enabled”,”.F.”,”O(jiān)ptionButton”)SetAll方法程序的功能是為容器對(duì)象中的所有控件或某類控件指定一個(gè)屬性值。其語法格式為:Container.SetAll(<屬性名>,<屬性值>[,<基類>])2024/8/1567■啟用或廢止組中的按鈕前面的示例表明了如何通過編程方式廢止組中的所有選項(xiàng)按鈕。當(dāng)廢止了選項(xiàng)按鈕時(shí),它們使用選項(xiàng)按鈕的DisabledForeColor和DisabledBackColor屬性指定的顏色顯示。也可以將選項(xiàng)組的Visible屬性設(shè)置為“假”(.F.),這樣用戶就不會(huì)看到任何跡象。■判斷當(dāng)前選定的按鈕根據(jù)選項(xiàng)組的Value屬性可以判斷用戶選定了哪個(gè)按鈕。如果按鈕的控件源為數(shù)值型,且組中有五個(gè)按鈕,如果選定了第三個(gè)按鈕,則選項(xiàng)組的Value屬性值為3。如果沒有選定選項(xiàng)按鈕,選項(xiàng)組的Value屬性為0。使用組的Value和Buttons屬性,也可以確定選定選項(xiàng)按鈕的標(biāo)題。例如,下面一行代碼將選定選項(xiàng)的Caption屬性保存到名為cSelected的變量中:*下面的程序代碼添加在表單的OptionGroup1選項(xiàng)組的Click事件方法程序中oGroup=THISFORM.OptionGroup1cSelected=oGroup.Buttons(oGroup.Value).CaptionTHISFORM.Refresh2024/8/1568在表單的InitEvent事件方法程序中添加下面一行代碼:PUBLICcSelected在表單中加入一個(gè)文本框,將其ControlSource屬性設(shè)為cSelected當(dāng)此表單運(yùn)行后,當(dāng)點(diǎn)擊OptionGroup1選項(xiàng)組時(shí),被選中的選項(xiàng)的標(biāo)題會(huì)在表單上的文本框中顯示出來。表單設(shè)計(jì)完成后如圖:當(dāng)運(yùn)行表單并在選項(xiàng)組中單擊Option4時(shí)的表單結(jié)果如圖:■用選項(xiàng)按鈕篩選列表對(duì)一個(gè)表單的數(shù)據(jù)源如果需要有少數(shù)幾種數(shù)據(jù)過濾方式,可以使用2024/8/1569選項(xiàng)按鈕允許用戶在過濾器之間切換。在下面的示例中,假定有一個(gè)包含三個(gè)選項(xiàng)按鈕的選項(xiàng)組和一個(gè)表格控件的表單,表格控件的屬性設(shè)置如下:對(duì)象屬性設(shè)置GRID1GRID1RecordSourceTypeRecordSource1-—?jiǎng)e名Student篩選條件是在選項(xiàng)按鈕的Click事件代碼中設(shè)置的,當(dāng)用戶選擇選項(xiàng)按鈕時(shí),對(duì)表格中數(shù)據(jù)進(jìn)行篩選的事件代碼如下:2024/8/1570請(qǐng)不要忘記在關(guān)閉按鈕的Click事件中或Destroy事件中包含SETFILTERTO命令,以便當(dāng)用戶關(guān)閉表單時(shí)重置篩選條件。注意:當(dāng)表格的數(shù)據(jù)源已經(jīng)更改時(shí),為刷新表格中的數(shù)據(jù),可使用Refresh方法程序。按此方法建立表單且運(yùn)行后的結(jié)果如所示?!鍪褂眠x項(xiàng)按鈕將用戶的選擇存儲(chǔ)到表中在少數(shù)情況下,可以通過選項(xiàng)按鈕獲得用戶信息,并通過保存Caption屬性將這些信息保存在表中。例如,在一個(gè)標(biāo)準(zhǔn)化考試2024/8/1571的應(yīng)用程序中,可以使用選項(xiàng)按鈕,使用戶在多項(xiàng)選擇A、B、C、D中進(jìn)行選擇。還可以用選項(xiàng)按鈕在學(xué)生表中指明性別等。若要將一個(gè)選項(xiàng)按鈕的Caption屬性保存到表中,可以:①將選項(xiàng)組的Value屬性設(shè)置為空字符串。②將選項(xiàng)組的ControlSource屬性設(shè)置為表中的一個(gè)字符型字段。③在選項(xiàng)組的Click事件代碼中加入如下代碼:THISFORM.Refresh例如,在Student表中加入“新生類別”字符型字段,將選項(xiàng)組中選項(xiàng)按鈕的標(biāo)題分別設(shè)置為“城應(yīng)”、“農(nóng)應(yīng)”、“城往”和“農(nóng)往”,并且選項(xiàng)組的ControlSource屬性設(shè)置為“新生類別”,那么當(dāng)用戶選擇標(biāo)題為“城應(yīng)”的選擇項(xiàng)時(shí),“城應(yīng)”將被保存在表Student的“新生類別”字段中。(2)使用列表框和下拉列表框列表框和下拉列表框(即style屬性為2的組合框控件—下拉列表)為用戶提供了包含一些選項(xiàng)和信息的可滾動(dòng)列表。列表框中,任何時(shí)候都能看到多個(gè)項(xiàng);而在下拉列表中,只能看到一個(gè)項(xiàng),用戶可單擊向下按鈕來顯示可滾動(dòng)的下拉列表框。2024/8/1572■常用的列表屬性和方法程序■填充列表框或組合框通過設(shè)置RowSourceType和RowSource屬性,可以用不同數(shù)據(jù)源中的項(xiàng)填充列表框。RowSourceType屬性決定列表框或組合框2024/8/1573的數(shù)據(jù)源類型,如數(shù)組或表,設(shè)置好RowSourceType后,設(shè)置RowSource屬性可指定列表項(xiàng)的數(shù)據(jù)源。RowSourceType共有十種類型:0-無,表示沒有,由程序向列表中添加項(xiàng);1-值;2-別名;3-SQL語句;4-查詢;5-數(shù)組;6-字段;7-文件;8-結(jié)構(gòu);9-彈出式菜單?!鰟?chuàng)建具有多列的列表框雖然列表框默認(rèn)為一列,但VFP中的列表框可以包含任意列。多列列表框和表格的區(qū)別在于,在多列列表框中用戶一次選擇一行,而在表格中用戶可以選擇每個(gè)單元,另外不能直接編輯列表中的數(shù)據(jù)。若要在列表框中顯示多列,可以:①將ColumnCount屬性設(shè)置為所需的列數(shù)。②設(shè)置ColunWidths屬性。例如,如果列表框中有三列,下面的命令將各列寬度分別設(shè)置為60、45和80。THISFORM.LIST1.ColumnWidths=”60,45,80”③將RowSourceType屬性設(shè)置為“6-字段”。2024/8/1574■允許用戶選擇列表框中的多項(xiàng)默認(rèn)情況下,一次只能選定一個(gè)列表項(xiàng),但也可以允許用戶選擇列表中的多個(gè)列表項(xiàng)。若要選擇列表中的多項(xiàng),可將列表的MultiSelect屬性設(shè)置為“真”。為了處理選定的項(xiàng),例如把它們復(fù)制到一個(gè)數(shù)組或在應(yīng)用程序的其他地方使用它們,可以循環(huán)遍歷各列表項(xiàng),處理Selected屬性為“真”的項(xiàng)。下面的代碼包含在列表框的InteractiveChange事件中,在comboselected組合框中顯示這個(gè)列表框中的選定項(xiàng),并且在txtNoSelected文本框中顯示選定項(xiàng)的數(shù)目:nNumberSelect=0
&&跟蹤數(shù)目的變量THISFORM.Combo1.Clear&&清除組合框FORnCnt=1TOTHIS.ListCount
IFTHIS.Selected(nCnt) nNumberSelect=nNumberSelect+1 THISFORM.Combo1.Additem(THIS.List(nCnt)) ENDIFENDFORTHISFORM.Text1.Value=nNumberSelectTHISFORM.Refresh2024/
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 地質(zhì)勘探地震勘探儀器在地震勘探領(lǐng)域的挑戰(zhàn)與機(jī)遇考核試卷
- 比較校內(nèi)外學(xué)習(xí)環(huán)境中創(chuàng)新意識(shí)的啟發(fā)與實(shí)踐能力的提升
- 社交網(wǎng)絡(luò)中的廣告創(chuàng)新模式探討
- 秋季學(xué)習(xí)支持服務(wù)工作計(jì)劃
- 提升表達(dá)能力的戲劇社團(tuán)方案計(jì)劃
- 2025年01月中國(山東)自由貿(mào)易試驗(yàn)區(qū)青島片區(qū)(青島前灣綜合保稅區(qū))管理委員會(huì)公開選聘工作人員35人筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解-1
- 開展主題閱讀活動(dòng)的計(jì)劃
- 科技創(chuàng)新教育的全球視野與實(shí)踐
- 送磚合同范本
- 科技背景下領(lǐng)導(dǎo)者的決策能力培養(yǎng)
- 中央2025年全國婦聯(lián)所屬在京事業(yè)單位招聘93人筆試歷年參考題庫附帶答案詳解
- 《環(huán)境污染對(duì)生態(tài)系統(tǒng)的影響》課件
- 機(jī)器狗:技術(shù)成熟性能優(yōu)越場(chǎng)景剛需放量在即2025
- 《教育強(qiáng)國建設(shè)規(guī)劃綱要(2024-2035年)》解讀-知識(shí)培訓(xùn)
- 《加油站安全管理培訓(xùn)課件》
- 《生態(tài)安全》課件
- 2025年春新人教版一年級(jí)下冊(cè)數(shù)學(xué)全冊(cè)教學(xué)課件
- 1.北京的春節(jié) 練習(xí)題(含答案)
- 抗震支架安裝工程施工方案范文
- GB/T 45071-2024自然保護(hù)地分類分級(jí)
- 農(nóng)業(yè)托管合同范例
評(píng)論
0/150
提交評(píng)論