




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