




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、.Visual FoxPro經(jīng)典教程:第九章:創(chuàng)建表單第九章:創(chuàng)建表單利用表單,可以讓用戶(hù)在熟悉的界面下查看數(shù)據(jù)或?qū)?shù)據(jù)輸入數(shù)據(jù)庫(kù)。但表單提供的遠(yuǎn)不止一個(gè)界面:它還提供豐富的對(duì)象集,這些對(duì)象能響應(yīng)用戶(hù)(或系統(tǒng))事件,這樣就能使用戶(hù)盡可能方便和直觀地完成信息管理工作。本章內(nèi)容要點(diǎn): · 設(shè)計(jì)表單 · 創(chuàng)建新表單 · 在表單中添加對(duì)象 · 處理對(duì)象 · 管理表單 設(shè)計(jì)表單Visual FoxPro 提供了一個(gè)功能強(qiáng)大的表單設(shè)計(jì)器,使得設(shè)計(jì)表單的工作變得又快又容易。在表單設(shè)計(jì)器中可以處理下列內(nèi)容: · 表單中不同類(lèi)型的對(duì)象。 ·
2、與表單相關(guān)聯(lián)的數(shù)據(jù)。 · 頂層表單或子表單。 · 能一起操作的多個(gè)表單。 · 基于自定義模板的表單。 表單和表單集是擁有自己的屬性、事件和方法程序的對(duì)象,在表單設(shè)計(jì)器中可以設(shè)置這些屬性、事件和方法程序。表單集包括了一個(gè)或多個(gè)表單,可以將它們作為一個(gè)整體來(lái)操作。例如,如果在表單集中有四個(gè)表單,可以在運(yùn)行時(shí)用一個(gè)命令顯示或隱藏它們。創(chuàng)建新表單在“表單設(shè)計(jì)器”中可以新建表單,而且在設(shè)計(jì)時(shí)刻就能看見(jiàn)其中各對(duì)象顯示在用戶(hù)面前的外觀。若要新建一個(gè)表單 · 請(qǐng)?jiān)凇绊?xiàng)目管理器”中選定“表單”,并選擇“新建”按鈕。 -或者 -· 從“文件”菜單中選擇“新建”命令
3、,選定“表單”按鈕并選擇“新建文件”按鈕。 -或者 -· 使用CREATE FORM命令。 表單設(shè)計(jì)器帶下列工具欄的:表單設(shè)計(jì)器、表單控件、布局和調(diào)色板有關(guān)“表單設(shè)計(jì)器”的詳細(xì)內(nèi)容,請(qǐng)參閱用戶(hù)指南中的第八章“用表單管理數(shù)據(jù)”。有關(guān)工具欄的詳細(xì)內(nèi)容,請(qǐng)?jiān)凇皫椭敝胁檎摇肮ぞ邫凇?,并選擇與所需信息有關(guān)的工具欄。設(shè)置數(shù)據(jù)環(huán)境每一表單或表單集都包括一個(gè)數(shù)據(jù)環(huán)境。數(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)打開(kāi)、關(guān)閉表和視圖。而且,通過(guò)設(shè)置“屬性”窗口中Control
4、Source 屬性設(shè)置框,在這個(gè)屬性框中列出數(shù)據(jù)環(huán)境的所有字段,數(shù)據(jù)環(huán)境將幫助您設(shè)置控件的ControlSource 屬性。若要打開(kāi)數(shù)據(jù)環(huán)境設(shè)計(jì)器 1. 從“顯示”菜單中選擇“數(shù)據(jù)環(huán)境”。 2. 從快捷方式菜單中選擇“添加”。 3. 在“添加表或視圖”對(duì)話(huà)框中選擇一表或視圖添加到數(shù)據(jù)環(huán)境中去。 數(shù)據(jù)環(huán)境設(shè)計(jì)器常用數(shù)據(jù)環(huán)境屬性下面是在屬性窗口中經(jīng)常設(shè)置的數(shù)據(jù)環(huán)境屬性:屬性說(shuō)明默認(rèn)設(shè)置AutoCloseTables控制當(dāng)釋放表或表單集時(shí),是否關(guān)閉表或視圖?!罢妗?.T.)AutoOpenTables控制當(dāng)運(yùn)行表單時(shí),是否打開(kāi)數(shù)據(jù)環(huán)境中的表或視圖?!罢妗?.T.)InitialSelectedAli
5、as當(dāng)運(yùn)行表單時(shí)選定的表或視圖。設(shè)計(jì)時(shí)刻為 ” 。如果沒(méi)有指定,在運(yùn)行時(shí)首先加到“數(shù)據(jù)環(huán)境”中的臨時(shí)表最先被選定。向數(shù)據(jù)環(huán)境設(shè)計(jì)器中添加表或視圖向數(shù)據(jù)環(huán)境設(shè)計(jì)器中添加表或視圖時(shí),可以看到屬于表或視圖的字段和索引。若要向數(shù)據(jù)環(huán)境中添加表或視圖 1. 在“數(shù)據(jù)環(huán)境設(shè)計(jì)器”中,從“數(shù)據(jù)環(huán)境”菜單中選擇“添加”。 2. 在“添加表或視圖”對(duì)話(huà)框中,從列表中選擇一個(gè)表或視圖。 -或者 -如果沒(méi)有打開(kāi)的數(shù)據(jù)庫(kù)或項(xiàng)目,請(qǐng)選擇“其他”來(lái)選擇表。也可以將表或視圖從打開(kāi)的項(xiàng)目或“數(shù)據(jù)庫(kù)設(shè)計(jì)器”拖放到“數(shù)據(jù)環(huán)境設(shè)計(jì)器”中。當(dāng)“數(shù)據(jù)環(huán)境設(shè)計(jì)器”處于活動(dòng)狀態(tài)時(shí),“屬性”窗口會(huì)顯示與數(shù)據(jù)環(huán)境相關(guān)聯(lián)的對(duì)象及屬性。在“屬性”
6、窗口的對(duì)象框中,數(shù)據(jù)環(huán)境的每個(gè)表格或視圖、表格之間的每個(gè)關(guān)系,以及數(shù)據(jù)環(huán)境本身均是各自獨(dú)立的對(duì)象。從數(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ì)器中設(shè)置關(guān)系如果添加進(jìn)數(shù)據(jù)環(huán)境設(shè)計(jì)器的表具有在數(shù)據(jù)庫(kù)中設(shè)置的永久關(guān)系,這些關(guān)系將自動(dòng)地加到數(shù)據(jù)環(huán)境中。如果表中沒(méi)有永久的關(guān)系,您可以在數(shù)據(jù)環(huán)境設(shè)計(jì)器中設(shè)置這些關(guān)系。若要在數(shù)據(jù)環(huán)境設(shè)計(jì)器中設(shè)置關(guān)系 · 將字段從主表拖動(dòng)到相關(guān)表中的相匹配的索引標(biāo)識(shí)上。 數(shù)據(jù)環(huán)
7、境設(shè)計(jì)器及在表間設(shè)置的關(guān)系 您也可以將字段從主表拖動(dòng)到相關(guān)表中的字段上。如果和主表中的字段對(duì)應(yīng)的相關(guān)表中沒(méi)有索引標(biāo)識(shí),系統(tǒng)將提示您是否創(chuàng)建索引標(biāo)識(shí)。在數(shù)據(jù)環(huán)境設(shè)計(jì)器中編輯關(guān)系在數(shù)據(jù)環(huán)境設(shè)計(jì)器中設(shè)置了一個(gè)關(guān)系后,在表之間將有一條連線(xiàn)指出這個(gè)關(guān)系。若要編輯關(guān)系的屬性 · 在“屬性”窗口中,從名稱(chēng)列表框選擇要編輯的關(guān)系。 關(guān)系的屬性對(duì)應(yīng)于SET RELATION 和SET SKIP命令中的子句和關(guān)鍵字。RelationalExpr 屬性的默認(rèn)設(shè)置為主表中主關(guān)鍵字字段的名稱(chēng)。如果相關(guān)表是以表達(dá)式作為索引的,就必須將 RelationalExpr 屬性設(shè)置為這個(gè)表達(dá)式。例如,如果相關(guān)表以 UP
8、PER(cust_id) 作為索引,就必須將 RelationalExpr 屬性設(shè)置為 UPPER(cust_id)。如果關(guān)系不是一對(duì)多關(guān)系,必須將OneToMany 屬性設(shè)置為“假”(.F.)。這對(duì)應(yīng)于使用SET RELATION命令時(shí)不發(fā)出SET SKIP命令。將關(guān)系的OneToMany 屬性設(shè)置為“真”(.T.),相當(dāng)于發(fā)出 SET SKIP命令。當(dāng)您瀏覽父表時(shí),在記錄指針瀏覽完子表中所有的相關(guān)記錄之前,記錄指針一直停留在同一父記錄上。注釋 如果在表單或表單集中想設(shè)置一對(duì)多關(guān)系,必須將 OneToMany 屬性設(shè)置為“真”(.T.),甚至在數(shù)據(jù)庫(kù)中已經(jīng)建立了永久一對(duì)多關(guān)系時(shí)也必須如此。創(chuàng)
9、建單文檔和多文檔界面Visual Foxpro 允許創(chuàng)建兩種類(lèi)型的應(yīng)用程序: · 多文檔界面 (MDI) 各個(gè)應(yīng)用程序由單一的主窗口組成,且應(yīng)用程序的窗口包含在主窗口中或浮動(dòng)在主窗口頂端。Visual FoxPro 基本上是一個(gè) MDI 應(yīng)用程序,帶有包含于 Visual FoxPro 主窗口中的命令窗口,編輯窗口和設(shè)計(jì)器窗口。 · 單文檔界面 (SDI) 應(yīng)用程序由一個(gè)或多個(gè)獨(dú)立窗口組成,這些窗口均在 Windows 桌面上單獨(dú)顯示。Microsoft Exchange 即是一個(gè) SDI 應(yīng)用程序的例子,在該軟件中打開(kāi)的每條消息均顯示在自己獨(dú)立的窗口中。 由單個(gè)窗口組成的
10、應(yīng)用程序通常是一個(gè) SDI 應(yīng)用程序,但也有一些應(yīng)用程序綜合了 SDI 和MDI 的特性。例如,Visual FoxPro 將調(diào)試器顯示為一 SDI 應(yīng)用程序,而它本身又包含了自己的MDI 窗口。為了支持這兩種類(lèi)型的界面,Visual FoxPro 允許創(chuàng)建以下幾種類(lèi)型的表單: · 子表單:包含在另一個(gè)窗口中,用于創(chuàng)建 MDI 應(yīng)用程序的表單。子表單不可移至父表單(主表單)邊界之外,當(dāng)其最小化時(shí)將顯示在父表單的底部。若父表單最小化,則子表單也一同最小化。 · 浮動(dòng)表單:屬于父表單(主表單)的一部分,但并不是包含在父表單中。而且,浮動(dòng)表單可以被移至屏幕的任何位置,但不能在父窗
11、口后臺(tái)移動(dòng)。若將浮動(dòng)表單最小化時(shí),它將顯示在桌面的底部。若父表單最小化,則浮動(dòng)表單也一同最小化。浮動(dòng)表單也可用于創(chuàng)建 MDI 應(yīng)用程序。 · 頂層表單:沒(méi)有父表單的獨(dú)立表單,用于創(chuàng)建一個(gè) SDI 應(yīng)用程序,或用作 MDI 應(yīng)用程序中其他子表單的父表單。頂層表單與其他 Windows 應(yīng)用程序同級(jí),可出現(xiàn)在其前臺(tái)或后臺(tái),并且顯示在 Windows 任務(wù)欄中。 子表單、浮動(dòng)表單和頂層表單指定表單類(lèi)型創(chuàng)建各種類(lèi)型表單的方法大體相同,但需設(shè)置特定屬性以指出表單應(yīng)該如何工作。如果創(chuàng)建的是子表單,則不僅需要指定它應(yīng)在另外一個(gè)表單中顯示,而且還需指定是否是MDI 類(lèi)的子表單,即指出表單最大化時(shí)是如
12、何工作的。如果子表單是 MDI 類(lèi)的,它會(huì)包含在父表單中,并共享父表單的標(biāo)題欄、標(biāo)題、菜單以及工具欄。非 MDI 類(lèi)的子表單最大化時(shí)將占據(jù)父表單的全部用戶(hù)區(qū)域,但仍保留它本身的標(biāo)題和標(biāo)題欄。若要建立一個(gè)子表單 1. 用“表單設(shè)計(jì)器”創(chuàng)建或編輯表單。 2. 可將表單的ShowWindow屬性設(shè)置為下列值之一: o 0 - 在屏幕中 (默認(rèn))。子表單的父表單將為 Visual FoxPro 主窗口。 o 1 - 在頂層表單中。當(dāng)子窗口顯示時(shí),子表單的父表單是活動(dòng)的頂層表單。如果希望子窗口出現(xiàn)在頂層表單窗口內(nèi),而不是出現(xiàn)在 Visual FoxPro 主窗口內(nèi)時(shí),可選用該項(xiàng)設(shè)置。 3. 如果希望子表
13、單最大化時(shí)與父表單組合成一體,可設(shè)置表單的MDIForm 屬性為“真”(.T.);如果希望子表單最大化時(shí)仍保留為一獨(dú)立的窗口,可設(shè)置表單的MDIForm 屬性為“假”(.F.)。 浮動(dòng)表單是由子表單變化而來(lái)。若要指定為浮動(dòng)表單 1. 用“表單設(shè)計(jì)器”創(chuàng)建或編輯表單? 2. 可將表單的ShowWindow 屬性設(shè)置為以下值之一: o 0 - 在屏幕中 (默認(rèn))。浮動(dòng)表單的父表單將出現(xiàn)在 Visual FoxPro 主窗口。 o 1 - 在頂層表單中。當(dāng)浮動(dòng)窗口顯示時(shí),浮動(dòng)表單的父表單將是活動(dòng)的頂層表單。 3. 將表單的Desktop 屬性設(shè)置為“真”(.T.)。 若要指定頂層表單 1. 用“表單
14、設(shè)計(jì)器”創(chuàng)建或編輯表單。 2. 將表單的ShowWindow 屬性設(shè)置為“2 - 作為頂層表單”。 顯示位于頂層表單中的子表單如果所創(chuàng)建的子表單中的ShowWindow 屬性設(shè)置為“1 - 在頂層表單中”,則不需直接指定一頂層表單作為子表單的父表單。而是在子窗口出現(xiàn)時(shí),Visual FoxPro 指派成為該子表單的父表單。若要顯示位于頂層表單中的子表單 1. 創(chuàng)建頂層表單。 2. 在頂層表單的事件代碼中包含DO FORM命令,指定要顯示的子表單的名稱(chēng)。 例如,在頂層表單中建立一個(gè)按鈕,然后在按鈕的Click 事件代碼,包含如下的命令:DO FORM MyChild注釋 在顯示子表單時(shí),頂層表單
15、必須是可視的、活動(dòng)的。因此,不能使用頂層表單的Init 事件來(lái)顯示子表單,因?yàn)榇藭r(shí)頂層表單還未激活。3. 激活頂層表單,如有必要,觸發(fā)用以顯示子表單的事件。隱藏 Visual FoxPro 主窗口在運(yùn)行頂層表單時(shí),可能不希望 Visual FoxPro 主窗口是可視的。使用應(yīng)用程序?qū)ο蟮腣isible 屬性按要求隱藏或顯示 Visual FoxPro 主窗口。若要隱藏 Visual FoxPro 主窗口 1. 在表單的Init 事件中,包含下列代碼行: 2. Application.Visible = .F.3. 在表單的Destroy 事件中,包含下列代碼行: 4. Application.
16、Visible = .T.在某些方法程序或事件中,可使用THISFORM.Release命令關(guān)閉表單。注釋 也可以在配置文件中包含以下行,用以隱藏 Visual FoxPro 主窗口。SCREEN = OFF有關(guān)設(shè)置 Visual FoxPro 的詳細(xì)內(nèi)容,請(qǐng)參閱安裝指南中的第三章“配置 Visual FoxPro”。在頂層表單中添加菜單若要在頂層表單中添加菜單 1. 創(chuàng)建頂層表單的菜單。有關(guān)創(chuàng)建頂層表單菜單的詳細(xì)內(nèi)容,請(qǐng)參閱第十一章“設(shè)計(jì)菜單與工具欄”。 2. 將表單的ShowWindow屬性設(shè)置為“2 - 作為頂層表單”。 3. 在表單的Init 事件中,運(yùn)行菜單程序并傳遞兩個(gè)參數(shù):DOm
17、enuname.mpr WITHoForm, lAutoRenameoForm 是對(duì)表單的對(duì)象引用。在表單的Init 事件中,THIS 作為第一個(gè)參數(shù)進(jìn)行傳遞。IAutoRename 指定了是否為菜單取一個(gè)新的唯一的名字。如果計(jì)劃運(yùn)行表單的多個(gè)實(shí)例,則將 .T. 傳遞給IAutoRename。例如,可以使用下列代碼調(diào)用一個(gè)名為mySDImenu的菜單:DO mySDImenu.mpr WITH THIS, .T.用表單集擴(kuò)充表單可以將多個(gè)表單包含在一個(gè)表單集中,作為一組處理。表單集有以下優(yōu)點(diǎn): · 可同時(shí)顯示或隱藏表單集中的全部表單。 · 可以可視的模式調(diào)整多個(gè)表單以控制它
18、們的相對(duì)位置。 · 因?yàn)楸韱渭兴斜韱味际窃趩蝹€(gè) .scx 文件中用單獨(dú)的數(shù)據(jù)環(huán)境定義的,可自動(dòng)地同步改變多個(gè)表單中的記錄指針。如果在一個(gè)表單的父表中改變記錄指針,另一個(gè)表單中子表的記錄指針則被更新和顯示。 注釋 運(yùn)行表單集時(shí),將加載表單集所有表單和表單的所有對(duì)象。加載帶有多個(gè)控件的多個(gè)表單會(huì)花幾秒鐘的時(shí)間。創(chuàng)建表單集表單集是一個(gè)包含有一個(gè)或多個(gè)表單的父層次的容器。可在“表單設(shè)計(jì)器”中創(chuàng)建表單集。若要?jiǎng)?chuàng)建表單集 · 從“表單”菜單中,選擇“創(chuàng)建表單集”選項(xiàng)。 如果不需要將多個(gè)表單處理為表單組,則不必創(chuàng)建表單集。創(chuàng)建表單集以后,則可向其中添加表單。添加和刪除表單創(chuàng)建了表單集
19、以后,可添加新表單或刪除表單。若要向表單集中添加新表單 · 從“表單”菜單中,選擇“添加新表單”。 若要從表單集中刪除表單 1. 在“表單設(shè)計(jì)器”“屬性”窗口的對(duì)象列表框中,選擇要?jiǎng)h除的表單。 2. 從“表單”菜單中選擇“移除表單”。 如果表單集中只有一個(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è)
20、記錄。每個(gè)表單的父容器為表單集,每個(gè)控件的父容器為其所在的表單。提示 當(dāng)運(yùn)行表單集時(shí),若不想在最初讓表單集里的所有表單可視的。可以在表單集運(yùn)行時(shí),將不希望顯示的表單的Visible 屬性設(shè)置為“假”(.F.)。將希望顯示的表單,其 Visible 屬性設(shè)置為“真”(.T.)。在表單中添加對(duì)象為了在表單中設(shè)計(jì)所需的功能,您需要添加合適的控件,設(shè)置表單和控件屬性并編寫(xiě)代碼??梢詫⑾铝蓄?lèi)型的對(duì)象添加到表單中: · 控件 · 容器 · 用戶(hù)自定義類(lèi) · OLE 對(duì)象 深入了解容器和控件對(duì)象Visual FoxPro 中的對(duì)象根據(jù)它們所基于的類(lèi)的性質(zhì)可分為兩類(lèi):
21、· 容器可以作為其他對(duì)象的父對(duì)象。例如,一個(gè)表單作為一個(gè)容器,是放在其中的復(fù)選框的父對(duì)象。 · 控件可以包含在容器中,但不能作為其他對(duì)象的父對(duì)象。例如復(fù)選框就不能包含其他任何的對(duì)象。 在“表單設(shè)計(jì)器”中既可以設(shè)計(jì)容器,也可以設(shè)計(jì)控件。容器可以包含列標(biāo)頭,除了表單、表單集、工具欄、計(jì)時(shí)器和其他列對(duì)象控件之外的任何對(duì)象命令按鈕組命令按鈕表單集表單、工具欄表單頁(yè)框、表格、任何控件表格列選項(xiàng)按鈕組選項(xiàng)按鈕頁(yè)框頁(yè)面頁(yè)面表格、任何控件添加 Visual FoxPro 容器除表單集和表單外,Visual FoxPro 還提供四個(gè)基本容器類(lèi)。Visual FoxPro 容器類(lèi)命令按鈕組選項(xiàng)
22、按鈕組表格頁(yè)框若要在表單中添加容器對(duì)象 · 從“表單控件”工具欄上選擇所需的容器對(duì)象的按鈕(表格、頁(yè)框或按鈕組),并在表單中拖動(dòng),調(diào)整到想要的大小。 在表單中添加命令按鈕組或選項(xiàng)按鈕組時(shí),默認(rèn)情況下,按鈕組包含兩個(gè)按鈕。在表單中添加頁(yè)框時(shí),頁(yè)框默認(rèn)包含兩個(gè)頁(yè)面。將ButtonCount 屬性或PageCount 屬性設(shè)置為需要的數(shù)目,可以包含更多的按鈕或頁(yè)面。向表單中添加表格時(shí),ColumnCount 屬性的默認(rèn)值為 -1,表示處于 AutoFill 狀態(tài)。這樣,在運(yùn)行時(shí)表格將顯示與 RowSource 表中的字段同樣數(shù)量的列。如果不想處于“AutoFill”狀態(tài),可以設(shè)置表格的Co
23、lumnCount 屬性為指定列的數(shù)目。有關(guān)這些容器對(duì)象的詳細(xì)內(nèi)容,請(qǐng)參閱第十章“使用控件”。收集和記數(shù)屬性Visual FoxPro 中的所有容器對(duì)象都有與它們相關(guān)聯(lián)的記數(shù)屬性和收集屬性。收集屬性是引用其每個(gè)被包含對(duì)象的數(shù)組。記數(shù)屬性是指示其包含的對(duì)象數(shù)的數(shù)值屬性。每個(gè)容器的收集和記數(shù)屬性根據(jù)包含在容器中的對(duì)象類(lèi)型來(lái)命名。下表列出了容器及其相應(yīng)的收集和記數(shù)屬性。容器收集屬性記數(shù)屬性應(yīng)用程序ObjectsFormsCountFormCount表單集FormsFormCount表單ObjectsControlsCountControlCount頁(yè)框PagesPageCount頁(yè)ControlsC
24、ontrolCount表格ColumnsColumnCount命令按鈕組ButtonsButtonCount選項(xiàng)按鈕組ButtonsButtonCount列ControlsControlCount工具欄ControlsControlCount容器ControlsControlCount控件ControlsControlCount這些屬性以編程方式循環(huán)地處理所包含的所有或指定的對(duì)象。例如,以下幾行代碼設(shè)置在表格中列的BackColor 屬性,以實(shí)現(xiàn)紅色與綠色的交替出現(xiàn)功能:o = THISFORM.grd1FOR i = 1 to o.ColumnCount IF i % 2 = 0 &
25、&偶數(shù)列 o.Columns(i).BackColor = RGB(0,255,0) &&綠色 ELSE o.Columns(i).BackColor = RGB(255,0,0) &&紅色 ENDIFENDFOR向表單中添加 Visual FoxPro 控件控件工具欄能使您很方便地在表單中添加任何一種標(biāo)準(zhǔn)的Visual FoxPro 控件。標(biāo)準(zhǔn) Visual FoxPro 控件復(fù)選框超級(jí)鏈接列表框微調(diào)控件組合框圖象ActiveX 綁定控件文本框命令按鈕標(biāo)簽ActiveX 控件計(jì)時(shí)器編輯框線(xiàn)條形狀若要在表單中添加控件 · 在“表單控件”工具欄中
26、選擇所需的控件按鈕,在表單中單擊或拖動(dòng)按鈕,把它調(diào)整到想要的大小。 有關(guān)選擇控件的詳細(xì)內(nèi)容,請(qǐng)參閱第十章“使用控件”。向表單中添加數(shù)據(jù)綁定型控件通過(guò)設(shè)置控件的ControlSource 屬性為字段或表格的RecordSource 屬性為表或視圖,可使控件與表、視圖、表的字段或視圖字段中的數(shù)據(jù)相聯(lián)系。但也可通過(guò)直接將表和視圖從下列位置拖到表單中,以創(chuàng)建數(shù)據(jù)綁定型控件: · “項(xiàng)目管理器” · “數(shù)據(jù)庫(kù)設(shè)計(jì)器” · “數(shù)據(jù)環(huán)境設(shè)計(jì)器” “表設(shè)計(jì)器”中“字段”選項(xiàng)卡的“匹配字段類(lèi)型到類(lèi)”設(shè)置或“選項(xiàng)”對(duì)話(huà)框的“字段映象”選項(xiàng)卡的設(shè)置,是這種方法創(chuàng)建控件類(lèi)的基礎(chǔ)。有關(guān)設(shè)置
27、默認(rèn)控件類(lèi)的詳細(xì)內(nèi)容,請(qǐng)參閱“表設(shè)計(jì)器”或“選項(xiàng)”對(duì)話(huà)框中的“字段映象”選項(xiàng)卡。在表單中添加用戶(hù)自定義對(duì)象Visual FoxPro 最強(qiáng)大的功能之一就是能創(chuàng)建在應(yīng)用程序不同部分都可以使用和重復(fù)使用的類(lèi)。如果創(chuàng)建了類(lèi),您就能將它們添加到表單中。若要基于自定義類(lèi)上添加對(duì)象 · 在“項(xiàng)目管理器”中,將類(lèi)拖動(dòng)到容器中。 當(dāng)給工具欄添加類(lèi)時(shí),也可直接從“表單控件”工具欄中添加。在控件工具欄上添加類(lèi)庫(kù)類(lèi)庫(kù)必須在注冊(cè)后才能在“表單控件”工具欄中顯示出來(lái)。若要注冊(cè)類(lèi)庫(kù) 1. 從“工具”菜單中選擇“選項(xiàng)”。 2. 在“選項(xiàng)”對(duì)話(huà)框中選擇“控件”選項(xiàng)卡。 3. 選擇“添加”按鈕。 4. 在“打開(kāi)”對(duì)話(huà)
28、框中,選擇一個(gè)要加到“選定”列表中的類(lèi)庫(kù),并選擇“打開(kāi)”按鈕。 5. 重復(fù)步驟 3 和4。 “選定”列表中列出了類(lèi)庫(kù)中的類(lèi),在“表單設(shè)計(jì)器”中可以和Visual FoxPro基類(lèi)一樣方便地使用這些類(lèi)?!斑x項(xiàng)”對(duì)話(huà)框的“控件”選項(xiàng)卡提示 如果要在每次運(yùn)行 Visual FoxPro 時(shí)“表單控件”工具欄中的類(lèi)庫(kù)都有效,可在“選項(xiàng)”對(duì)話(huà)框中,選擇“設(shè)置為默認(rèn)值”。也可以在“表單設(shè)計(jì)器”中直接注冊(cè)類(lèi)庫(kù)。若要在表單設(shè)計(jì)器中注冊(cè)一個(gè)類(lèi)庫(kù)1. 在“表單控件”工具欄中選擇“查看類(lèi)”按鈕。 2. 從子菜單中選擇“添加”。 “查看類(lèi)”按鈕的子菜單。 · 在“打開(kāi)”對(duì)話(huà)框中選擇要添加到“表單控件”工具欄
29、上的類(lèi)庫(kù),然后選擇“打開(kāi)”按鈕。 從類(lèi)庫(kù)中添加對(duì)象到表單如果您從“選項(xiàng)”對(duì)話(huà)框的“控件”選項(xiàng)卡或從“查看類(lèi)”子菜單添加類(lèi)庫(kù),您就能在“表單設(shè)計(jì)器”中訪(fǎng)問(wèn)它們。若要從“表單控件”工具欄添加自定義對(duì)象1. 在“表單控件”工具欄中,選擇“查看類(lèi)”按鈕。 2. 從已注冊(cè)類(lèi)庫(kù)的列表中選擇一個(gè)類(lèi)庫(kù),它包含了要加到表單中的控件。 工具欄與選定庫(kù)中的控件放在一起。已添加到“查看類(lèi)”子菜單中的用戶(hù)自定義類(lèi)庫(kù) 3. 單擊所需要的控件,并在表單中拖動(dòng)到合適大小。 注釋 如果想從“查看類(lèi)”工具欄中移去一個(gè)可視類(lèi)庫(kù),可以在“選項(xiàng)”對(duì)話(huà)框的“控件”選項(xiàng)卡中,選擇“選定”列表中列出的一個(gè)可視的類(lèi)庫(kù),然后選擇“移去”按鈕。如
30、果向不是基于 Visual FoxPro基類(lèi)的表單添加對(duì)象,類(lèi)庫(kù)的相對(duì)路徑(.vcx 文件)存儲(chǔ)在表單的.scx 文件中。如果要將表單或類(lèi)庫(kù)移到另一個(gè)位置,在運(yùn)行表單時(shí) Visual FoxPro 將顯示一個(gè)對(duì)話(huà)框,用于人工尋找類(lèi)庫(kù)。確定表單中的控件數(shù)目使用ControlCount 屬性可以確定表單中究競(jìng)有多少個(gè)控件,而Controlsn 屬性允許引用表單上的任何一個(gè)控件。下面的程序用于打印出當(dāng)前活動(dòng)表單上所有控件的Name 屬性:ACTIVATE SCREEN &&將輸出打印到 Visual FoxPro主窗口FOR nCnt = 1 TO Application.Activ
31、eForm.ControlCount ? Application.ActiveForm.ControlsnCnt.NameENDFOR在表單中添加屬性和方法程序可以向表單中添加任意多個(gè)新的屬性和方法程序。屬性擁有一個(gè)值,而方法程序擁有一個(gè)過(guò)程代碼,當(dāng)調(diào)用方法程序時(shí),即運(yùn)行這一過(guò)程代碼。新建的屬性和方法程序?qū)儆诒韱?,您可以象引用其他屬性或方法程序那樣引用它們。新建屬性如果已有一個(gè)表單集,那么在“表單設(shè)計(jì)器”中加入的屬性和方法程序就屬于表單集。如果沒(méi)有建立表單集,則屬性和方法程序?qū)儆诒韱?。若要在表單或表單集中添加新屬?1. 從“表單”菜單中選擇“新建屬性”命令。 2. 在“新建屬性”對(duì)話(huà)框中,鍵
32、入屬性的名稱(chēng)。還可以加入關(guān)于這個(gè)屬性的說(shuō)明,它將顯示在“屬性”窗口的底部。 在表單中添加屬性 創(chuàng)建數(shù)組屬性數(shù)組屬性和其他屬性一樣都屬于表單或表單集,不同的是可用 Visual FoxPro 的數(shù)組命令和函數(shù)處理它。若要?jiǎng)?chuàng)建一個(gè)數(shù)組屬性 1. 在表單中添加新屬性。 2. 在“新建屬性”對(duì)話(huà)框的“名稱(chēng)”框中鍵入數(shù)組屬性的名稱(chēng),包括數(shù)組的大小和維數(shù)。 例如,要?jiǎng)?chuàng)建一個(gè) 10 行的二維數(shù)組,應(yīng)在“新建屬性”對(duì)話(huà)框的“屬性名”框中鍵入 arrayprop10,2。在表單中添加完數(shù)組屬性后,屬性在屬性窗口中以只讀方式顯示。您可以在運(yùn)行時(shí)刻管理數(shù)組,重新設(shè)置數(shù)組的維數(shù),也可對(duì)數(shù)組屬性的元素賦值。有關(guān)使用數(shù)組
33、屬性的示例,請(qǐng)參閱本章稍后的“管理表單的多個(gè)實(shí)例”。創(chuàng)建新方法程序您可在表單中添加方法程序,并且可以用調(diào)用表單類(lèi)方法程序的方式調(diào)用它。若要在表單或表單集中創(chuàng)建一個(gè)新方法程序 1. 從“表單”菜單中選擇“新建方法程序”。 2. 在“新建方法程序”對(duì)話(huà)框中,鍵入方法程序的名稱(chēng)。還可以包含有關(guān)這個(gè)方法程序的說(shuō)明,這是可選的。 調(diào)用用戶(hù)自定義方法程序和調(diào)用基類(lèi)方法程序一樣,都使用下面的語(yǔ)法:ObjectName.MethodName您建立的方法程序同樣可以接受參數(shù)并返回值,這種情況下,您可以使用賦值語(yǔ)句來(lái)調(diào)用方法程序:cVariable =ObjectName.MethodName(cParamete
34、r,nParameter)包含預(yù)定義常量為了在方法程序中使用預(yù)定義常量,可在表單或表單集中用#INCLUDE命令包含一個(gè)頭文件。頭文件一般包含由#DEFINE 預(yù)處理器偽指令定義的編譯時(shí)的常數(shù)。若要在表單中包含文件 1. 從“表單”菜單中選擇“包含文件”。 2. 在“包含文件”對(duì)話(huà)框的“包含文件”文本框中指定文件。 -或者 -選擇對(duì)話(huà)框按鈕,打開(kāi)“包含”對(duì)話(huà)框并選定文件。3. 選擇“確定”。 處理對(duì)象在設(shè)計(jì)時(shí)刻有幾種方法處理對(duì)象: · 在“表單設(shè)計(jì)器”窗口中通過(guò)拖動(dòng)來(lái)設(shè)置對(duì)象的大小和位置。 · 選擇“布局”工具欄上的對(duì)齊工具,或者選擇“格式”菜單中的選項(xiàng)可以對(duì)齊控件。
35、183; 在“調(diào)色板”工具欄中選擇前景和背景顏色來(lái)設(shè)置顏色。 · 在“屬性”窗口中設(shè)置屬性。表單或表單集中對(duì)象的屬性主要是在屬性窗口中設(shè)置。 在設(shè)計(jì)時(shí)刻設(shè)置屬性打開(kāi)“屬性”窗口會(huì)顯示選定對(duì)象的屬性或事件。如果選擇了多個(gè)對(duì)象,這些對(duì)象共有的屬性將顯示在“屬性”窗口中。要編輯另一個(gè)對(duì)象的屬性或事件,可在“對(duì)象”框中選擇這個(gè)對(duì)象,或者直接從表單中選擇這個(gè)控件。“屬性”窗口若要設(shè)置屬性 1. 在“屬性”窗口中,從屬性和事件列表中選擇一個(gè)屬性。 2. 在屬性設(shè)置框中,為選中的屬性鍵入或選擇需要的設(shè)置。 注釋 那些在設(shè)計(jì)時(shí)刻為只讀的屬性,例如對(duì)象的Class 屬性,在屬性窗口的屬性和事件列表框中
36、以斜體顯示。如果屬性要求輸入字符值,不必用引號(hào)將這個(gè)值括起來(lái)。例如,要將一個(gè)表單的標(biāo)題設(shè)為 CUSTOMER,只需在屬性設(shè)置框中鍵入 CUSTOMER;若想讓表單的標(biāo)題是“CUSTOMER”,即想讓引號(hào)也出現(xiàn)在窗口的標(biāo)題上,在屬性設(shè)置框中鍵入“CUSTOMER”。使用表達(dá)式設(shè)置屬性通過(guò)屬性窗口,您可以將屬性設(shè)置為表達(dá)式或函數(shù)的結(jié)果。若要用表達(dá)式設(shè)置屬性 · 在“屬性”窗口中,選擇“函數(shù)”按鈕來(lái)打開(kāi)“表達(dá)式生成器”。 -或者 -· 在屬性設(shè)置框中鍵入“=”號(hào),并在后面鍵入表達(dá)式。 例如,如果您想設(shè)置表單的Caption 屬性,使它在運(yùn)行表單時(shí)能夠指示當(dāng)前的活動(dòng)表,可在屬性設(shè)置
37、框中鍵入 =ALIAS( )。在屬性窗口中設(shè)置一個(gè)屬性表達(dá)式,以及在運(yùn)行時(shí)刻或設(shè)計(jì)時(shí)刻初始化對(duì)象時(shí),才對(duì)這個(gè)屬性表達(dá)式進(jìn)行求值。如果建立了對(duì)象,除非您或用戶(hù)明確地改變它,屬性設(shè)置都不會(huì)改變。疑難解答 如果將屬性設(shè)置為用戶(hù)自定義函數(shù)的結(jié)果,那么當(dāng)設(shè)置或修改這個(gè)屬性,以及運(yùn)行表單時(shí),將對(duì)這個(gè)函數(shù)進(jìn)行求值。如果用戶(hù)自定義函數(shù)出現(xiàn)錯(cuò)誤,有可能打不開(kāi)這個(gè)表單。也可以在對(duì)象的Init 事件中將屬性設(shè)置為用戶(hù)自定義函數(shù),如下例所示:THIS.Caption = myfunction( )如果用戶(hù)自定義函數(shù)出現(xiàn)錯(cuò)誤,就不能運(yùn)行表單,但可以修改它。定義表單行為當(dāng)您在“表單設(shè)計(jì)器”中設(shè)計(jì)表單時(shí),表單是“活”的:除
38、非Visiable 屬性設(shè)置為“假”(.F.),您對(duì)表單的外觀和行為的修改將立刻在表單上反映出來(lái)。如果將WindowState 屬性設(shè)置為 1 最小化或2 最大化,表單設(shè)計(jì)器中的表單會(huì)立即體現(xiàn)這一設(shè)置。如果將Movable 屬性設(shè)置為“假”(.F.),那么不但用戶(hù)在運(yùn)行時(shí)刻不能移動(dòng)表單,即使在設(shè)計(jì)時(shí)刻也不能移動(dòng)它。因此您應(yīng)該在設(shè)置那些決定表單行為的屬性之前,先完成表單的功能設(shè)計(jì),并添加所有需要的控件。下表列出了在設(shè)計(jì)時(shí)刻常用的表單屬性,它們定義了表單的外觀和行為:屬性說(shuō)明默認(rèn)值A(chǔ)lwaysOnTop控制表單是否總是處在其他打開(kāi)窗口之上?!凹佟?.F.)AutoCenter控制表單初始化時(shí)是否讓
39、表單自動(dòng)地在 Visual FoxPro 主窗口中居中?!凹佟?.F.)BackColor決定表單窗口的顏色。255,255,255BorderStyle決定表單是否沒(méi)有邊框,還是具有單線(xiàn)邊框、雙線(xiàn)邊框或系統(tǒng)邊框。如果 BorderStyle 為 3 可調(diào)邊框,用戶(hù)就能重新改變表單大小。3Caption決定表單標(biāo)題欄顯示的文本。Form1Closable控制用戶(hù)是否能通過(guò)雙擊“關(guān)閉”框來(lái)關(guān)閉表單?!罢妗?.T.)DataSession控制表單或表單集里的表是否能在可全局訪(fǎng)問(wèn)的工作區(qū)中打開(kāi),或僅能在表單或表單集所屬的私有工作區(qū)內(nèi)打開(kāi)。1MaxButton控制表單是否具有最大化按鈕。真 (.T.)
40、MinButton控制表單是否具有最小化按鈕。真 (.T.)Movable控制表單是否能移動(dòng)到屏幕的新位置。真 (.T.)ScaleMode控制對(duì)象的尺寸和位置屬性的度量單位是 foxels 還是像素。由“選項(xiàng)”對(duì)話(huà)框中的設(shè)置決定。由“選項(xiàng)”對(duì)話(huà)框中的設(shè)置決定。Scrollbars控制表單所具有的滾動(dòng)條類(lèi)型。0 - 無(wú)TitleBar控制標(biāo)題欄是否顯示在表單的頂部。1 - 打開(kāi)ShowWindow控制表單是否在屏幕中、懸浮在頂層表單中或作為頂層表單出現(xiàn)。0 - 在屏幕中WindowState控制表單是否最小化、最大化還是正常狀態(tài)。0 - 普通WindowType控制表單是否非模式表單(默認(rèn))還
41、是模式表單。如果表單是模式表單,用戶(hù)在訪(fǎng)問(wèn)應(yīng)用程序用戶(hù)界面中任何其他單元前必須關(guān)閉這個(gè)表單。0 - 無(wú)模式您可以使用LockScreen 屬性,使控件布局屬性在運(yùn)行時(shí)的調(diào)整看起來(lái)更清晰。指定表單的圖標(biāo)在 Visual FoxPro for Windows 中,可指定表單的圖標(biāo);當(dāng)該表單在 Windows NT 窗口中最小化或位于 Windows 95 的標(biāo)題欄上時(shí)顯示為這個(gè)圖標(biāo)。如果要指定表單的圖標(biāo),將表單的Icon 屬性設(shè)置為一個(gè) .ICO 文件的文件名。若要指定表單的圖標(biāo) 1. 打開(kāi)表單。 2. 打開(kāi)“屬性”窗口。 3. 將Icon屬性設(shè)置為希望顯示的.ico 文件。 編輯事件代碼和方法程
42、序代碼事件是用戶(hù)的行為,如單擊鼠標(biāo)或鼠標(biāo)的移動(dòng),也可以是系統(tǒng)行為,如系統(tǒng)時(shí)鐘的進(jìn)程。方法程序是和對(duì)象相聯(lián)系的過(guò)程,只能通過(guò)程序以特定的方式激活。有關(guān)事件和方法程序的討論,請(qǐng)參閱第三章“面向?qū)ο蟪绦蛟O(shè)計(jì)”。當(dāng)觸發(fā)事件或激活方法程序時(shí),您可以指定要執(zhí)行的代碼。若要編輯事件或方法程序代碼 1. 從“顯示”菜單中選擇“代碼”命令。 2. 在“過(guò)程”框中選擇事件或方法程序。 3. 在編輯窗口中鍵入代碼,在觸發(fā)事件或激活方法程序時(shí)將執(zhí)行這些代碼。 例如,如果在表單上已有一個(gè)標(biāo)題為“退出”的命令按鈕,在這個(gè)按鈕的Click 事件中可包括這樣一行代碼:THISFORM.Release提示 若要在代碼編輯窗口中
43、查看不同過(guò)程,請(qǐng)按 PGDN或 PGUP 鍵。當(dāng)用戶(hù)單擊這個(gè)命令按鈕時(shí),表單被從屏幕和內(nèi)存中刪除。如果不想從內(nèi)存中釋放表單,可在 click 事件中以這樣一行代碼代替:THISFORM.Hide注釋 如果表單集、表單或表單集中任何表單上任何對(duì)象的Init 事件代碼返回“假”(.F.),就不能創(chuàng)建這個(gè)表單或表單集。保存表單在運(yùn)行表單之前需要先將它保存。如果在未保存之前就試圖運(yùn)行這個(gè)表單或關(guān)閉表單設(shè)計(jì)器,Visual FoxPro 將提示是否保存已做過(guò)的修改。若要保存表單 · 在“表單設(shè)計(jì)器”中,從“文件”菜單中選擇“保存”命令。 將表單和控件保存為類(lèi)您也可以將表單或表單上的控件子集保存
44、為類(lèi)定義。如果您打算創(chuàng)建基于表單的子類(lèi),或在其他表單中重新使用這些控件,可將表單作為類(lèi)定義來(lái)保存。若要將表單或選定的控件保存為類(lèi)定義 1. 從“文件”菜單中選擇“另存為類(lèi)”。 2. 在“另存為類(lèi)”對(duì)話(huà)框中,選擇“當(dāng)前表單”或“選定控件”。 “另存為類(lèi)”對(duì)話(huà)框 3. 在“類(lèi)名”框中輸入類(lèi)的名稱(chēng)。 4. 在“文件”框中輸入保存類(lèi)的文件名。 5. 選擇“確定”按鈕。 如果您沒(méi)有給出文件擴(kuò)展名,保存文件時(shí)會(huì)加上默認(rèn)的.VCX 擴(kuò)展名,如果將表單保存為類(lèi)定義,您就可以用 MODIFY CLASS命令對(duì)它進(jìn)行修改。有關(guān)創(chuàng)建類(lèi)的詳細(xì)內(nèi)容,請(qǐng)參閱第三章“面向?qū)ο蟪绦蛟O(shè)計(jì)”。運(yùn)行表單您可以從界面直接運(yùn)行表單,或
45、在程序代碼中運(yùn)行表單。交互地運(yùn)行表單有幾種方法可以運(yùn)行設(shè)計(jì)好的表單。如果在“表單設(shè)計(jì)器”中工作,可通過(guò)單擊“表單設(shè)計(jì)器”工具欄中的“運(yùn)行”按鈕測(cè)試表單。如果想在“表單設(shè)計(jì)器”重新打開(kāi)表單,關(guān)閉運(yùn)行表單或在工具欄中選擇“修改表單”按鈕。您也可以從項(xiàng)目中運(yùn)行表單,或者以編程方式運(yùn)行它。若要以交互方式運(yùn)行表單 · 在“項(xiàng)目管理器”中,選擇要運(yùn)行的表單,再選擇“運(yùn)行”按鈕。 -或者 -· 在“命令”窗口中,使用DO FORM命令運(yùn)行表單。 您也可以從“程序”菜單中選擇“運(yùn)行”來(lái)運(yùn)行表單,在“文件類(lèi)型”框中選擇“表單”,選定一個(gè)表單再選定“運(yùn)行”按鈕。從程序中運(yùn)行表單若想在程序中運(yùn)行
46、表單,需要在與事件相關(guān)聯(lián)的代碼、方法程序代碼或在程序或過(guò)程中包含DO FORM命令。命名表單對(duì)象默認(rèn)情況下,當(dāng)使用 DO FORM命令時(shí),表單對(duì)象的名稱(chēng)與 .scx 文件名稱(chēng)一樣。例如,下面的一行代碼運(yùn)行 Customer.scx。Visual FoxPro 自動(dòng)為這個(gè)表單創(chuàng)建一個(gè)名為 customer 的對(duì)象變量:DO FORM Customer若要命名表單對(duì)象 · 請(qǐng)使用DO FORM命令的NAME 子句。 例如,下面的命令運(yùn)行一個(gè)表單,同時(shí)創(chuàng)建兩個(gè)表單對(duì)象變量名:DO FORM Customer NAME frmCust1DO FORM Customer NAME frmCus
47、t2處理表單對(duì)象如果在“命令”窗口發(fā)出DO FORM命令,表單對(duì)象就和一個(gè)公共變量相關(guān)聯(lián),您可以通過(guò)這個(gè)變量名來(lái)訪(fǎng)問(wèn)表單對(duì)象。例如,在“命令”窗口發(fā)出下面的命令,打開(kāi)一個(gè)名為 Customer 的表單并改變它的標(biāo)題。DO FORM CustomerCustomer.Caption = "Hello"如果在“命令”窗口發(fā)出下面的命令,在活動(dòng)的輸出窗口中將顯示 O,表明 Customer 是一個(gè)對(duì)象:? TYPE("Customer")如果在程序中發(fā)出DO FORM命令,表單對(duì)象作用范圍限于這個(gè)程序,如果程序或過(guò)程運(yùn)行結(jié)束,會(huì)移去對(duì)象,但表單仍然可見(jiàn)。例如您
48、可以運(yùn)行下面這個(gè)程序:*formtest.prgDO FORM Customer在運(yùn)行完程序后,表單仍然可見(jiàn),表單上的所有控件仍然處于活動(dòng)狀態(tài),但 TYPE("Customer") 返回 U 表明 Customer 是沒(méi)有定義的變量。因此在“命令”窗口中發(fā)出下面的命令將產(chǎn)生錯(cuò)誤:Customer.Caption = "Hello"但您還可以使用應(yīng)用程序?qū)ο蟮腁ctiveForm、Forms 和FormCount 屬性訪(fǎng)問(wèn)表單。將表單鏈接到表單對(duì)象變量DO FORM命令中的LINKED 關(guān)鍵字允許將表單和表單對(duì)象變量鏈接起來(lái)。如果包含了 LINKED 關(guān)鍵
49、字,當(dāng)與表單對(duì)象相關(guān)聯(lián)的變量超出范圍時(shí),表單將被釋放。例如,下面命令創(chuàng)建一個(gè)鏈接到對(duì)象變量 frmCust2 的表單:DO FORM Customer NAME frmCust2 LINKED當(dāng)釋放 frmCust2 時(shí),表單也關(guān)閉。關(guān)閉活動(dòng)的表單若想允許用戶(hù)通過(guò)單擊“關(guān)閉”按鈕,或選擇由這個(gè)表單控制的菜單中的“關(guān)閉”命令來(lái)關(guān)閉活動(dòng)的表單,需要設(shè)置表單的Closable 屬性。若要允許用戶(hù)關(guān)閉活動(dòng)表單 · 在“屬性”窗口中,將Closable 屬性設(shè)置為“真”(.T.)。 -或者 -· 使用RELEASE命令。 例如,您可以通過(guò)在“命令”窗口或程序中發(fā)出下面的命令來(lái)關(guān)閉和釋
50、放表單 frmCustomer:RELEASE frmCustomer也可以在一個(gè)控件,比如標(biāo)題為“退出”的命令按鈕的Click 事件代碼中包含下面的命令,它允許用戶(hù)關(guān)閉和釋放表單:THISFORM.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è)表單從屏幕移去,不再讓用戶(hù)看見(jiàn)或使用它,可以使
51、用 THISFORM.Hide命令。在運(yùn)行時(shí)刻設(shè)置屬性Visual FoxPro 中的對(duì)象模式能讓您在運(yùn)行時(shí)刻對(duì)屬性進(jìn)行充分的控制。在對(duì)象層次上引用對(duì)象若想操作一個(gè)對(duì)象,需要確定它和容器層次的關(guān)系。在容器層次的最高級(jí)(表單集或表單)需要引用對(duì)象變量。除非使用DO FORM命令中的NAME 子句,否則對(duì)象變量和.scx 文件有相同的名稱(chēng)。通過(guò)引用由點(diǎn)號(hào) (.) 分隔的對(duì)象變量、控件和屬性可以處理屬性:perty =Setting下表列出的屬性或關(guān)鍵字使在對(duì)象層次上引用對(duì)象變得更容易:屬性或關(guān)鍵字引用ActiveControl當(dāng)前活動(dòng)表
52、單中具有焦點(diǎn)的控件ActiveForm當(dāng)前活動(dòng)表單ActivePage當(dāng)前活動(dòng)表單中的活動(dòng)頁(yè)P(yáng)arent對(duì)象的直接容器THIS對(duì)象或?qū)ο蟮倪^(guò)程或事件THISFORM包含對(duì)象的表單THISFORMSET包含對(duì)象的表單集例如,若要改變表單集中 frmCust 表單的一個(gè)命令按鈕的標(biāo)題,這個(gè)表單集保存在 Custview.scx 文件中,可在程序中或命令窗口中使用下面的命令:CustView.frmCust.cmdButton1.Caption = "Edit"可在表單或表單集中使用 THIS、THISFORM 和THISFORMSET 引用對(duì)象。例如,要想在單擊命令按鈕時(shí)改變它
53、的標(biāo)題,可在命令按鈕的Click 事件代碼中包含下面的命令:THIS.Caption = "Edit"下表給出了使用 THISFORMSET、THISFORM、THIS 和Parent 設(shè)置對(duì)象的示例:命令包含命令的地方THISFORMSET.frm1.cmd1.Caption = 'OK'表單集中除frm1之外任何表單中任何控件的事件或方法程序代碼。THISFORM.cmd1.Caption = 'OK'所在表單中除 cmd1 之外任何控件的事件或方法程序代碼。THIS.Caption = 'OK'想要改變其標(biāo)題的控件的事件
54、或方法程序代碼。THIS.Parent.BackColor = RGB(192,0,0)表單上一個(gè)控件的事件或方法程序代碼。這個(gè)命令將表單的背景顏色改為暗紅色。在運(yùn)行時(shí)刻使用表達(dá)式設(shè)置屬性在運(yùn)行時(shí)刻也可以使用表達(dá)式或函數(shù)來(lái)設(shè)置屬性。若要在運(yùn)行時(shí)刻用表達(dá)式來(lái)設(shè)置屬性 · 為屬性指定一個(gè)表達(dá)式。 -或者 -· 為屬性指定一個(gè)用戶(hù)自定義函數(shù)的結(jié)果。 例如,根據(jù)一個(gè)變量的不同值,可以將一個(gè)按鈕的標(biāo)題設(shè)置為“Edit”或“Save”。首先在表單的調(diào)用程序中聲明這個(gè)變量:PUBLIC glEditingglEditing = .F.然后在 Caption 設(shè)置中使用一個(gè) IIF 表達(dá)式
55、:frsSet1.frmForm1.cmdButton1.Caption = ; IIF(glEditing = .F., "Edit", "Save")可以決定按鈕的大小,使用帶有表的字段的表達(dá)式設(shè)置標(biāo)題:*將按鈕寬度設(shè)置為 'Call '的寬度 +姓名的寬度f(wàn)rmForm1.cmdButton1.Width = 5 + ; LEN(ALLTRIM(employee.first_name+ " " + employee.last_name)*將按鈕標(biāo)題設(shè)置為 'Call ' +姓名frmForm1.c
56、mdButton1.Caption = "Call " + ; ALLTRIM(employee.first_name + " " + employee.last_name)還可以用一個(gè)用戶(hù)自定義函數(shù)設(shè)置標(biāo)題:frsSet1.frmForm1.cmdButton1.Caption = setcaption()設(shè)置多個(gè)屬性可以同時(shí)設(shè)置多個(gè)屬性。若要設(shè)置多個(gè)屬性 · 使用WITH . ENDWITH 結(jié)構(gòu)。 例如,要設(shè)置表單中表格的列的多個(gè)屬性,可在表單中任何事件或方法程序代碼中包含下面的語(yǔ)句:WITH THISFORM.grdGrid1.grcC
57、olumn1.Width = 5.Resizable = .F.ForeColor = RGB(0,0,0).BackColor = RGB(255,255,255).SelectOnEntry = .T.ENDWITH在運(yùn)行時(shí)刻調(diào)用方法程序調(diào)用對(duì)象的方法程序的語(yǔ)法是:Parent.Object.Method如果創(chuàng)建了對(duì)象,您就可以在應(yīng)用程序的任何地方調(diào)用這個(gè)對(duì)象的方法程序。下面的命令調(diào)用方法程序來(lái)顯示表單并將焦點(diǎn)設(shè)置到一個(gè)命令按鈕:*保存在 MYF_SET.SCX中的表單集myf_set.frmForm1.Showmyf_set.frmForm1.cmdButton1.SetFocus若要隱藏表單,使用這個(gè)命令:myf_set.frmForm1.Hide對(duì)事件作出響應(yīng)當(dāng)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 逃學(xué)保證協(xié)議書(shū)
- 租大客車(chē)協(xié)議書(shū)
- 墊付培訓(xùn)叉車(chē)證協(xié)議書(shū)
- 租賃公司協(xié)議書(shū)
- 肥料采購(gòu)協(xié)議書(shū)
- 站點(diǎn)合租協(xié)議書(shū)
- 糧食代賣(mài)協(xié)議書(shū)
- 美體項(xiàng)目協(xié)議書(shū)
- 資料代做協(xié)議書(shū)
- 崇川區(qū)股權(quán)架構(gòu)協(xié)議書(shū)
- 樂(lè)理考試題及答案2024
- 2025年春滬科版七年級(jí)數(shù)學(xué)下冊(cè) 第9章 分式 小結(jié)與復(fù)習(xí)
- 養(yǎng)老機(jī)構(gòu)人力資源管理課件
- 污水處理廠排水管道施工流程
- 《斷魂槍》老舍課件
- 胖東來(lái)考察報(bào)告
- 中考數(shù)學(xué)總復(fù)習(xí)第四章第20課時(shí)解直角三角形課件
- 低空經(jīng)濟(jì)產(chǎn)業(yè)園商業(yè)計(jì)劃書(shū)
- 2025中國(guó)鐵路濟(jì)南局集團(tuán)招聘生60人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2024-2030年中國(guó)內(nèi)河碼頭產(chǎn)業(yè)前景預(yù)測(cè)規(guī)劃研究報(bào)告
- 2025年上海市各區(qū)高三語(yǔ)文一模試題匯編之文言文二閱讀(含答案)
評(píng)論
0/150
提交評(píng)論