標簽(Label)控件 命令按鈕(CommandButton) 控件 命令組(CommandGroup)控件 文本框(textBox)控件 編輯框(editbox)控件 復選框(checkbox)控件 選項組(optiongroup)控件
列表框(listbox)控件
組合框(combox)控件 表格控件 頁框控件
標簽(Label)控件
可以編寫代碼來改變 Label 控件顯示的文本,以響應運行時的事件。例如,如果一個應用程序要幾分鐘時間作改動,則可以顯示 Label 中的進程狀態(tài)信息。還可以使用 Label 來標識控件,例如 TextBox 控件沒有自己的 Caption 屬性,這時就可以使用 Label 來標識這個控件。 在 Label 控件中定義訪問鍵時,就可以按 ALT + 設定的字符來把焦點移動到 TAB 鍵順序中的下一個控件。 常用的標簽屬性
- Caption屬性
當創(chuàng)建一個新的對象時,其缺省標題為缺省的 Name 屬性設置。該缺省標題包括對象名和一個整數(shù),如 Command1 或 Form1。為了獲得一個描述更清楚的標簽,應對 Caption 屬性進行設置。 可以使用 Caption 屬性賦予控件一個訪問鍵。在標題中,在想要指定為訪問鍵的字符前加一個 (\<) 符號。比如,下面代碼在為標簽設置Caption屬性的同時,指定了一個訪問鍵“x”: ThisForm.MyLabel.Caption="選擇項目(\<X)" 對于一般控件,按下相應的訪問鍵,將激活該控件,使該控件獲得焦點。而對于標簽,按下相應的訪問鍵,將把焦點傳遞給tab鍵次序中緊跟著標簽的下一個控件。比如,在某個列表框的上方 放置一個標簽,并把列表框的Tab鍵次序安排在標簽之后,這樣,按下標簽訪問鍵時,其下方的列表獲得焦點。 訪問鍵的使用方法受KEYCOMP設置(DOS或WINDOWS)的影響。在當前表單激活的情況下,訪問鍵的使用方法如表所示。
設置值 |
效果 |
DOS |
直接按訪問鍵選擇對象,若當前焦點處于組合框、列表框等要接收鍵盤輸入的對象時,訪問鍵無效。 |
WINDOWS |
一般情況下直接按訪問鍵選擇對象。若當前焦點處于組合框、列表框等要接收鍵盤輸入的對象時,按組合鍵Alt+<訪問鍵〉選擇對象。 |
- Label 控件標題的大小沒有限制。對于窗體和所有別的有標題的控件,標題大小的限制是 255 個字符。
提示 對于標簽來說,將 AutoSize 屬性設為 True 自動調(diào)整控件的大小以與其標題相適合。
- Alignment屬性
指定的標題文本在控件中顯示的對齊方式
語法 object.Alignment [= number],該屬性的設置值如表所述。
設置值 |
說明 |
0 |
(默認值)左對齊,文本顯示在區(qū)域的左邊 |
1 |
右對齊,文本顯示在區(qū)域的右邊 |
2 |
中央對齊,將文本居中排放,使左右兩邊的空白相等 |
例 表單中有三個標簽,當鼠標單擊任何一個標簽時,都使其他兩個 標簽的標題互換。 內(nèi)容要點:假設三個標簽的名稱(name屬性值)分別是Label1、Label2、Label3,它們可以從屬性窗口中獲得。

- 標簽Label1的Click事件代碼為:
t=thisform.Label2.Captipn thisform.Label2.Caption=thisform.Label3.Caption thisform.Label3.Caption=t
- 標簽Label2的click事件代碼為:
t=thisform..label1.Caption thisform.Label1.Caption=thisform.Label3.Caption thisform.Label3.Caption=t
- 標簽Label3的click事件代碼為:
t=thisform.Label1.Caption thisform.Label1.Caption=thisform.Label2.Caption thisform.Label2.Caption=t
操作步驟:
- 創(chuàng)建表單,然后在表單中添加3個標簽按鈕。
- 分別為3個標簽控件設置caption屬性,如示意圖所示。
- 分別為3個標簽控件設置click事件代碼。
返回
命令按鈕(CommandButton) 控件
CommandButton 控件可以開始、中斷或者結束一個進程。選取這個控件后,CommandButton 顯示按下的形狀,所以有時也稱之為下壓按鈕。為了在 CommandButton 控件上顯示文本,需要設置其 Caption 屬性??梢酝ㄟ^單擊 CommandButton 選中這個按鈕。為了能夠在按 ENTER 鍵時也選中命令按鈕,需要將其 Default 屬性設置為 True。為了能夠按 ESC 鍵時也選中 CommandButton,則需要將 CommandButton 的 Cancel 屬性設置成 True。
常用屬性有以下幾個:
- Cancel 屬性
使用 Cancel 屬性使得用戶可以取消未提交的改變,并把窗體恢復到先前狀態(tài)。窗體中只能有一個 CommandButton 控件為取消按鈕。當一個 CommandButton 控件的 Cancel 屬性被設置為 True,窗體中其它 CommandButton 控件的 Cancel 屬性自動地被設置為 False。當一個 CommandButton 控件的 Cancel 屬性設置為 True 而且該窗體是活動窗體時,用戶可以通過單擊它,按 ESC 鍵,或者在該按鈕獲得焦點時按 ENTER 鍵來選擇它。
- Enabled 屬性
Enabled 屬性允許在運行時使窗體和控件成為有效或無效。默認值為.T. Enabled 屬性使得用戶(程序)可以根據(jù)應用的當前狀態(tài)隨時決定一個對象是有效的還是無效的,也可以限制一個對象的使用,如用一個無效的編輯框(Enabled=.f.)來顯示只讀信息。 說明:如果一個容器對象的enable屬性值為.f.,那么它里面的所有對象也都不會響應用戶引發(fā)的事件。
- Visible屬性
指定對象可見還是隱藏。在表單設計器中,默認值為.T.,在程序代碼中,默認值為.F.,一個對象即使是隱藏的,在代碼中可以訪問它。 當一個表單由活動變成隱藏時,最近活動的表單或其他對象將成為活動的。當一個表單的Visible屬性由.F.設置成.T.時,表單將成為可見的,但并不成為活動的。要使一個表單成為活動的,可使用show方法。show方法是表單成為可見的同時,使其成為活動的。
返回
命令組(CommandGroup)控件 命令組控件是包含一組命令按鈕的容器控件,用戶可以單個或作為一組來操作其中的 按鈕。 在表單設計器中,為了選擇命令組中的某個按鈕,有如下兩種方法:從屬性窗口的對象下拉式組合框中選擇所需的命令按鈕;用鼠標右鍵單擊命令組,然后從彈出的快捷菜單中選擇“編輯”命令,這樣命令組就進入了編輯狀態(tài),用戶可以通過鼠標單擊來選擇某個具體的命令按鈕。 常用的屬性有:
- ButtonCount屬性
指定命令組中命令按鈕的數(shù)目。在表單中創(chuàng)建一個命令組時,ButtonCount屬性的默認值是2,既包含兩個命令按鈕??梢酝ㄟ^改變ButtonCount屬性的值來重新設置命令組中的包含的命令按鈕數(shù)目。
- buttons屬性
用于存取命令組中各按鈕的數(shù)組。該屬性數(shù)組在創(chuàng)建命令組時建立,用戶可以利用該數(shù)組為命令組中的命令按鈕設置屬性或調(diào)用其方法。例如,下面代碼可以放在與命令組myCommandG處于同一表單中的某個對象的 方法或事件代碼中,其命令組中的第二個按鈕設置成隱藏的: ThisForm.myCommandG.Buttons(2).Visible=.F. 屬性數(shù)組下標的取值范圍應該在1至ButtonCount屬性值之間。 該屬性在設計時不可用。除了命令組,還適合于選項組。
- value屬性
指定命令組當前的狀態(tài)。該屬性的類型可以是數(shù)值型的,也可以是字符型的。如果命令組內(nèi)的某個按鈕有自己的click事件代碼,那么一旦單擊該按鈕,就會優(yōu)先執(zhí)行為它單獨設置的代碼,而不會執(zhí)行命令組的click事件代碼。 該屬性在設計和運行時可用。
返回
文本框(textBox)控件 用戶利用它可以在內(nèi)存變量、數(shù)組元素或非備注型字段中輸入或編輯數(shù)據(jù)。文本框可以編輯任何類型的數(shù)據(jù)。如果編輯的是日期型或日期時間型數(shù)據(jù),那么在整個內(nèi)容被選定的情況下,按“+”或“-”,可以使日期增加一天或減少一天。 為了在 TextBox 控件中顯示多行文本,要將 MultiLine 屬性設置為 True。如果多行 TextBox 沒有水平滾動條,那么即使 TextBox 調(diào)整了大小,文本也會自動換行。為了在 TextBox 上定制滾動條組合,需要設置 ScrollBars 屬性。如果文本框的 MultiLine 屬性設置為 True 而且它的 ScrollBars 沒有設置為 None (0),則滾動條總出現(xiàn)在文本框上。如果將 MultiLine 屬性設置為 True,則可以在 TextBox 內(nèi)用 Alignment 屬性設置文本的對齊。如果 MultiLine 屬性是 False,則 Alignment 屬性不起作用。
常用的屬性為:
- ControlSource屬性
一般情況下,可以利用該屬性為文本框指定一個字段或內(nèi)存變量。運行時,文本框首先顯示該變量的內(nèi)容。而用戶對文本框的編輯結果,也會最終保存到該變量中。 該屬性在設計和運行時可用。除了文本框,還適用于編輯框、命令組、選項按鈕、選項組、復選框、列表框、組合框等控件。
- value屬性
返回文本框當前內(nèi)容。該屬性默認值是空串。如果ControlSource屬性指定了字段或內(nèi)存變量,則該屬性將ControlSource屬性指定的變量具有相同的數(shù)據(jù)和類型。為了在對話框中創(chuàng)建一個密碼域應使用此屬性。雖然能夠使用任何字符,但是大多數(shù)基于 Windows 的應用程序使用 號 (*) (Chr(42))。此屬性不影響 Text 屬性;Text 準確地包括所鍵入或代碼中所設置的內(nèi)容。將 PasswordChar 設置為長度為 0 的字符串 ("") (缺省值),將顯示實際的文本。能夠?qū)⑷我庾址x予此屬性,但只有第一個字符是有效的,所有其它的字符將被忽略。 注意 如果 MultiLine 屬性被設為 True,那么設置 PasswordChar 屬性將不起效果。
- InputMask屬性
指定在一個文本框中如何輸入和顯示數(shù)據(jù)。 InputMask屬性值是一個字符串。該字符串通常有一些所謂的模式符組成,每個模式符規(guī)定了相應的位置上數(shù)據(jù)的輸入和顯示行為。
X |
允許輸入任何字符 |
9 |
允許輸入數(shù)字和正負號 |
# |
允許輸入數(shù)字、空格和正負號 |
$ |
在固定位置上顯示當前貨幣符號(由SET CURRENCY 命令指定) |
$$ |
在數(shù)值前面相鄰的位置上顯示當前貨幣符號(浮動貨幣符) |
* |
在數(shù)值左邊顯示* |
. |
指定小數(shù)點的位置 |
, |
分隔小數(shù)點左邊的數(shù)字串 |
inputmask屬性值中可包含其他字符,這些字符在文本框中將會原樣顯示。 該屬性在設計和運行時可用。除了文本框,還適用于組合框、列等控件。
例 用表單設計一個登陸界面,如圖所示,當輸入用戶名和口令并按確認鍵后,檢驗其輸入是否正確,若正確(假定用戶名為ABCDEF,口令為123456),就顯示“歡迎使用...”若不正確,則顯示“用戶名或口令不對,”如果三次輸入不正確,就顯示“用戶名或口令不對,登陸失??!”并關閉。

要將“確認”按鈕設置為Default按鈕。另外,口令限制為6位數(shù)字,輸入時顯示*號。 內(nèi)容要點: 假設“用戶名”文本框、“口令”文本框以及“確認”命令按鈕的name屬性值分別為Text1、Text2和command1。Text2的InputMask屬性值為999999,passwordChar屬性值為*。Command1的Default屬性值為.T.。 命令按鈕Command1的click事件代碼如下,其中num是為表單新添加的屬性,用以保存本次登陸輸入的次數(shù)。 if thisform.text1.value="ABCDEF" and thisform.text2.value="123456" wait"歡迎使用..." window timeout 1 thisform.release else thisform.num=thisform.num+1 if thisform.num=3 WAIT"用戶名或口令不對,登陸失敗!"window timeout 1 thisform.release else WAIT"用戶名或口令不對,請重輸!"window timeout 1 endif endif 操作步驟:
- 創(chuàng)建表單,然后在表單上添加兩個標簽、兩個文本框和一個命令按鈕。
- 設置兩個標簽和一個命令按鈕的caption屬性值,并將命令按鈕的default屬性值設置為.T.。
- 設置文本框text2的inputmask屬性值。可在設置框直接輸入999999或輸入="999999"。設置文本框text2的passwordchar屬性值。
- 從“表單”菜單選擇“新建屬性”命令,打開“新建屬性”對話框,為表單添加新屬性num。然后在“屬性”窗口中將其默認值設為0。
- 設置“確認”按鈕的click事件代碼。
返回
編輯框(editbox)控件 與文本框相似,但它有自己的特點:編輯框?qū)嶋H上是一個完整的字處理器,利用它能夠選擇、剪切、粘貼以及復制正文;可以實現(xiàn)自動換行;能夠有自己的 垂直滾動條可以用箭頭鍵在正文里面移動光標。編輯框只能輸入、編輯字符型數(shù)據(jù),包括字符型內(nèi)存變量、數(shù)組元素、字段以及備注字段里的內(nèi)容。
常用屬性有:
- allowtabs屬性
指定編輯框中能否使用tab鍵。其屬性值設置如表所示。該屬性在設計時和運行時均是可用的。
設置值 |
說明 |
True (.T.) |
編輯框里允許使用tab鍵;按Ctrl+Tab時焦點移出編輯框 |
False (.F.) |
編輯框里不能使用tab鍵,按tab時焦點移出編輯框 |
- hideselection屬性
指定當前編輯框失去焦點時,編輯框中的選定的文本是否仍顯示為選定狀態(tài)。該屬性在設計時和運行時均是可用的。除了編輯框,還適用于文本框、組合框等控件。
設置值 |
說明 |
True (.T.) |
(默認值)失去焦點時,編輯框中選定的文本不顯示為選定狀態(tài)。當編輯框再次獲得焦點時,選定文本重新顯示為選定狀態(tài) |
False (.F.) |
失去焦點時,編輯框中選定的文本仍顯示為選定狀態(tài) |
設置值 |
說明 |
True (.T.) |
不能編輯編輯框中的內(nèi)容 |
False (.F.) |
(默認值)能夠編輯編輯框中的內(nèi)容 |
-
srollbars屬性 指定編輯框是否具有滾動條,當屬性值為0時,編輯框沒有滾動條;當屬性值為2時,編輯框有垂直滾動條。 該屬性在設計時可用,在運行時可寫。除了編輯框,還適用于表單、表格等控件。
-
selstart屬性 返回用戶在編輯框中所選文本的起始點位置(沒有文本選定時)。也可用以指定要選文本的起始位置或插入點位置。屬性的有效取值范圍在0與編輯區(qū)中的字符總數(shù)之間。 該屬性在設計時不可用,在運行時可讀寫。除了編輯框,還適用于文本框、組合框等控件。
-
selLength屬性 返回用戶在控件的文本輸入?yún)^(qū)中所選定字符的數(shù)目,或指定要選定的字符數(shù)目。屬性的有效范圍在0與編輯區(qū)中的字符總數(shù)之間,若小于0,將產(chǎn)生一個錯誤。 該屬性在設計時不可用,在運行時可寫。除了編輯框,還適用于文本框、組合框等控件。
-
seltex屬性 返回用戶編輯區(qū)內(nèi)選定的文本,如果沒有選定任何文本,則返回空串。該屬性在設計時不可用,在運行時可讀寫。除了編輯框,還適用于文本框、組合框等控件。 selstart屬性、selLength屬性和seltex屬性配合使用,可以完成諸如設置插入點的位置、控制插入點的移動范圍、選擇字串、清除文本等的一些任務。
使用這些屬性時,需要注意它們的以下行為:
- 如果把sellength屬性值設置成小于0,將產(chǎn)生一個錯誤。
- 如果selstart的設置值大于文本總字符數(shù),系統(tǒng)將其調(diào)整為文本的總字符數(shù),即插入點位于文本末尾。
- 如果改變了selstart屬性的值,系統(tǒng)將自動把sellength屬性值設置0如果selstart屬性設置成一個新值,那么這個新值會去置換編輯區(qū)中的所選文本并將sellength置為0。
- 如果sellength值本來就是0,那么新值就會被插入到插入點處。
例 表單里飽含一個編輯框edit1和兩個命令按鈕command1(查找)、command2(替換),如圖所示,要求:單擊command1時,選擇edit1里的某個單詞example;單擊command2時,用單詞exercise置換一選擇的單詞example。

內(nèi)容要點: 編輯框的hideselection屬性值為.F.,這樣“查找”命令按鈕找到的字符串就會顯示成選定狀態(tài)。 命令按鈕command1的click事件代碼為: n=at("example",thisform.edit1.value) if n<>0 thisform.edit1.selstart=n-1 thisform.edit1.sellength=len("example") else WAIT WINDOWS"沒有相匹配的單詞"TIMEOUT1 endif 命令按鈕command2的click事件代碼為: if thisform.edit1.seltex="example" thisform.edit1.seltext="excercise" else WAIT WINDOWS"沒有選擇需要置換的單詞"TIMEOUT1 endif
操作步驟:
- 創(chuàng)建表單,然后在表單上田紀一個編輯框兩個命令按鈕。
- 檢查編輯框控件的name屬性值是否與題目中所說的名稱一致。
- 如果不一致,應該進行設置,否則,就需要對上面的代碼作相應的修改。
- 設置編輯框的hide selection屬性值。分別設置兩個命令按鈕的caption屬性值。
- 分別為兩個命令按鈕設置click事件代碼。
返回
復選框(checkbox)控件 一個復選框用于標記一個兩值狀態(tài),如真(.T.)或假(.F.)。當處于真狀態(tài)時,復選框內(nèi)顯示一個對勾;否則,復選框內(nèi)為空白。
- caption屬性
用來指定復選框旁邊的文字。
- value屬性
用來指明復選框的當前狀態(tài)。設置值有三種情況如表所示
復選框(checkbox)控件 一個復選框用于標記一個兩值狀態(tài),如真(.T.)或假(.F.)。當處于真狀態(tài)時,復選框內(nèi)顯示一個對勾;否則,復選框內(nèi)為空白。
- caption屬性
用來指定復選框旁邊的文字。
- value屬性
用來指明復選框的當前狀態(tài)。設置值有三種情況如表所示
屬性值 |
說明 |
0或.f. |
(默認值),未被選中 |
1或.t. |
被選中 |
2或.null. |
不確定,只在代碼中有效 |
返回
選項組(optiongroup)控件
選項按鈕組是包含選項按鈕的容器。通常,選項按鈕允許用戶指定對話框中幾個操作選項中的一個,而不是輸入數(shù)據(jù)。
設置選項按鈕組中的選項按鈕數(shù)目
在表單中創(chuàng)建一個選項按鈕組時,它默認地包含兩個選項按鈕,改變 ButtonCount 屬性可以設置選項按鈕組中的選項按鈕數(shù)目。
- ButtonCount屬性
設置 ButtonCount 屬性,表示所需的選項按鈕數(shù)目。
- Value 屬性
選項按鈕組的 Value 屬性表明用戶選定了哪一個按鈕。例如,選項按鈕組有六個選項按鈕,如果用戶選擇了第四個選項,選項按鈕組的 Value 屬性就是 4。
- ControlSource 屬性
指明與選項組建立聯(lián)系的數(shù)據(jù)源。作為選項組數(shù)據(jù)源的字段變量或內(nèi)存變量,其類型可以示數(shù)值型或字符型。比如,變量值為數(shù)值型3,則選項組中第三個按鈕被選中;若變量值為字符型“option3”,則caption屬性值為“option3”的按鈕被選中。用戶對選項組操作結果會自動存儲到數(shù)據(jù)源變量以及value屬性中。
- Buttons 屬性
還可以在運行時刻使用 Buttons 屬性,并指定選項按鈕在組中的索引號來設置這些屬性。例如,如果 optCust 是組中的第三個按鈕,下面一行代碼同樣完成對 optCust 標題的設置:
THISFORM.opgChoices.Buttons(3).Caption = "Sort by Customer"
返回
列表框(listbox)控件 列表框提供一組條目(數(shù)據(jù)項),用戶可以從中選擇一個或多個條目。一般情況下,列表框顯示其中的若干條目,用戶可以通過滾動條瀏覽其他條目。 常用的屬性:
兩個屬性在設計和運行時可用。還適合于組合框。
-
list屬性
用以存取列表框中數(shù)據(jù)條目的字符串數(shù)組。
該屬性在設計時不可用,在運行時可讀寫。還適合于組合框。
-
istcount屬性
指明列表框中數(shù)據(jù)條目的數(shù)目。
該屬性在設計時不可用,在運行時只讀。還適合于組合框。
-
columncount屬性
指定列表框的列數(shù)
對于列表框和組合框,該屬性在設計和運行時可用。還適合于組合框和表格。
-
controlsource屬性
該屬性在列表框中的用法與其他控件中的用法有所不同。在這里,用戶可以通過該屬性指定的一個字段或變量
用以保存用戶從列表框中選擇的結果。
-
selectd屬性
制定列表框內(nèi)的某個條目是否處于選定狀態(tài)。
-
multiselect屬性
指定用戶能否在列表框控件內(nèi)進行多重選定。
返回
組合框(combox)控件
組合框和列表框類似,主要區(qū)別在于:
組合框只有一個條目是可見的。
組合框不提供多重選擇的功能。
組合框有兩種形式:下拉組合框和下拉列表框,通過設置style屬性可選擇想要的形式。
返回
表格控件 表格是一個容器對象,和表單集包含表單一樣,表格也能包含列。這些列除了包含標頭和控件外,每一個列還擁有自己的一組屬性、事件和方法程序,從而為表格單元提供了大量的控件。
表格設計的基本操作
- 調(diào)整表格中列的寬度
在表格設計方式下,將鼠標指針置于表格列的標頭之間,這時指針變?yōu)閹в凶笥覂蓚€方向箭頭的豎條。 將列拖動到需要的寬度或者在“屬性”窗口中設置列的 Width 屬性。
-
調(diào)整表格中行的高度
-
在表格設計方式下,將鼠標指針置于“表格”控件左側(cè)的第一個按鈕和第二個按鈕之間,這時指針將變成帶有向上和向下箭頭的橫條。
-
將行拖動到需要的寬度。
– 或者 –在“屬性”窗口中設置列的 Height 屬性。 提示 將 AllowRowSizing 設置為“假”(.F.),可以防止用戶在運行時刻改變表格行的高度。
表格設計也可以調(diào)用表格生成器來進行。步驟如下:
生成器選項卡的含義
-
表格項指定要在表格中顯示的字段。
-
樣式指定表格顯示的樣式。
-
布局指定列標題和控件類型。
-
關系指定表格字段與表字段之間的關系。
常用的表格屬性
屬性值 |
說明 |
0 |
表。數(shù)據(jù)來源于由recordsourse屬性指定的表,該表被自動打開 |
1 |
(默認值)別名。數(shù)據(jù)來源于已打開的表,由recordsource屬性指定該表的別名 |
2 |
提示。運行時,由用戶根據(jù)提示選擇表格數(shù)據(jù)源 |
3 |
查詢。數(shù)據(jù)來源于查詢,由recordsource屬性指定一個查詢文件 |
4 |
sql語句,數(shù)據(jù)來源于sql語句,由recordsource屬性指定一條sql語句 |
設置了表格的recordsource屬性后,可以通過cintrolsource屬性為表格中的一列指定它所要顯示的內(nèi)容,如果不
指定,該列將顯示表格數(shù)據(jù)源中下一個沒有顯示的字段。
這兩個屬性在設計時可用,在運行時可讀寫,都適用于表格。
-
ColumnCount 屬性
指定列的數(shù)目。如果 ColumnCount 設置為 -1,表格將具有和表格數(shù)據(jù)源中字段數(shù)一樣多的列。
-
linkmasker屬性
顯示在表格中的子記錄的父表。
-
childorder
和父表的主關鍵字相聯(lián)接的子表中的外部關鍵字。
-
relationalexpr屬性
確定基于主表字段的關聯(lián)表達式。
常用的列屬性
下表列出了在設計時刻常用的列屬性。
屬性 |
說明 |
ControlSource |
在列中要顯示的數(shù)據(jù)。常見的是表中的一個字段。 |
Sparse |
如果將 Sparse 屬性設置為“真”(.T.),表格中控件只有在列中的單元被選中時才顯示為控件(列中的其他單元仍以文本形式顯示)。將 Sparse 設置為“真”(.T.),允許用戶在滾動一個有很多顯示行的表格時能快速重畫。 |
CurrentControl |
表格中哪一個控件是活動的。默認值為“Text1”。如果在列中添加了一個控件,則可以將它指定為 CurrentControl。 |
交互地在表格列中添加控件,操作步驟如下:
- 表單中添加一個表格。
在“屬性”窗口中,將表格的 ColumnCount 屬性設置為需要的列數(shù)。 例如,如果需要一個兩列的表格則鍵入“2”。
- 在“屬性”窗口的“對象”框中為控件選擇父列。
例如,要選擇 Column1 來添加控件,當選擇這一列時,表格的邊框發(fā)生變化,表明正在編輯一個包含其中的對象。
- 在“表單控件”工具欄中選擇所要的控件,然后單擊父列。
在“表單設計器”中,新控件不在表格列中顯示,但在運行時刻會顯示出來。
- 在“屬性”窗口中,要確保該控件縮進顯示在“對象”框中父列下面。如果新控件是一個復選框,應將復選框的 Caption 屬性設置為“ ”,并將列的 Sparse 屬性設置“假”(.F.)。
- 將父列的 ControlSource 屬性設置為需要的表字段。
例如,下面的演示中,列的 ControlSource 屬性是文件 TESTDATA.DBC 的 products.discontinu ,這個文件保存在 \Samples\VFP\DATA 目錄下。
- 將父列的 CurrentControl 屬性設置為新加入的控件。
當運行表單時,這個控件將顯示在表格列中。 在運行時刻,復選框顯示在列中。 提示 如果想讓復選框在表格列中居中,可先創(chuàng)建一個容器類,將復選框添加到容器類中,并調(diào)整復選框在容器類中的位置。然后將容器類添加到表格列中,并將復選框的 ControlSource 屬性設置為需要的字段。
若要在“表單設計器”中移去表格列中的控件。
- 在“屬性”窗口的對象框中選擇要移去的控件。
- 激活“表單設計器”。
- 如果“屬性”窗口可見,控件的名稱將顯示在“對象”框中。
- 按下 DELETE 鍵。
也可以在代碼中使用 AddObject 方法程序將控件添加到表格列中。
返回
頁框(pageframe)控件 頁框是包含頁面的容器對象,頁面又可包含控件??梢栽陧摽颉㈨撁婊蚩丶壣显O置屬性。 查看使用頁框的示例操作如下:
- 運行 Solution.app ,該文件位于 Visual Studio …\Samples\Vfp98\Solution 目錄下。
- 在目錄樹視圖中,單擊“Controls”,然后選取“Page frame”。
可以把頁框想象為有多層頁面的三維容器,只有最上層頁面(或在頁框的頂部)中的控件才是可見和活動的。
表單上一個頁框可有多個頁面,頁框定義了頁面的位置和頁面的數(shù)目,頁面的左上角固定在頁框的左上角。控件能放置在超出頁框尺寸的頁面上。這些控件是活動的,但如果不從程序中改變頁框的 Height 和 Width 屬性,那么這些控件不可見。 使用頁框和頁面,可以創(chuàng)建帶選項卡的表單或?qū)υ捒颍?#8220;項目管理器”中見到的一樣。 此外,用頁框還能在表單中定義一個區(qū)域,在這個區(qū)域中可以方便地將控件換入換出。例如,在向?qū)?/font>中,表單的大部分內(nèi)容是保持不變的,但有一個區(qū)域在每一步都要更改。此時不必為向?qū)У牟煌襟E創(chuàng)建五個表單,而只需創(chuàng)建一個帶有頁框的表單,頁框中有五個頁面即可。
將頁框添加到表單的操作步驟如下:
- 在“表單控件”工具欄中,選擇“頁框”按鈕并在“表單”窗口拖動到想要的尺寸。
- 設置 PageCount 屬性,指定頁框中包含的頁面數(shù)。
向頁框中添加控件的操作步驟如下:
-
從頁框的快捷菜單中選擇“編輯”命令,將頁框激活為容器。頁框的邊框變寬,表示它處于活動狀態(tài)。
-
同與向表單中添加控件的方法,向頁框中添加控件。
注釋 和其他容器控件一樣,必須選擇頁框,并從用鼠標右鍵彈出的快捷菜單中選擇“編輯”命令,或在“屬性”窗口的“對象”下拉列表中選擇容器。這樣,才能先選擇這個容器(具有寬邊),再朝正設計的頁面中添加控件。在添加控件前,如果沒有將頁框作為容器激活,控件將添加到表單中而不是頁面中,即使看上去好象是在頁面中。
在頁框中選擇不同的頁面的操作方法如下:
-
單擊鼠標右鍵,將頁框作為容器激活,然后選擇“編輯”。
-
選擇要使用的頁面選項卡。
– 或者 –
– 或者 –
將控件添加到頁面上的操作方法:
如果將控件添加到頁面上,它們只有在頁面活動時才可見和活動。
- 在“屬性”窗口的“對象”框中選擇頁面,頁框的周圍出現(xiàn)邊框,表明可以操作其中包含的對象。
- 在“表單控件”工具欄中,選擇想要的控件按鈕并在頁面中調(diào)整到想要的大小。
管理“頁面”選項卡上的長標題
如果選項卡上的標題太長,不能在給定頁框?qū)挾群晚撁鏀?shù)的選項卡上顯示出來,可以有下面兩種選擇:
- 將 TabStretch 屬性設置為“1 - 單行”,這樣只顯示能放入選項卡中的標題字符,“單行”是默認設置。
- 將 TabStretch 屬性設置為“0 - 多重行”,這樣選項卡將層疊起來,以便所有選項卡中的整個標題都能顯示出來。
在程序中換頁面
不管頁框是否具有選項卡,都可以從程序中使用 ActivePage 屬性來激活一個頁面。例如,下面列出表單中一個命令按鈕的 Click 事件過程代碼,它將表單中頁框的活動頁面改為第三頁面。
THISFORM.pgfOptions.ActivePage = 3
常用的頁框?qū)傩?/h4>
下表列出了在設計時刻常用的頁框?qū)傩浴?/span>
例 設計一個包含兩個選項卡的查詢對話框,用于設置查詢學生數(shù)據(jù)時所需的參數(shù)。“條件”選項卡用于設置出生日期,“輸出”選項卡用于設置顯示字段。單擊“確認”按鈕將根據(jù)設置的參數(shù)查詢顯示有關學生數(shù)據(jù)。單擊“取消”按鈕,關閉對話框。
條件選項卡

“輸出”選項卡

操作過程:
- 創(chuàng)建一個新表單,打開“數(shù)據(jù)環(huán)境設計器”窗口,向其中添加學生表。
- 通過“表單控件”工具欄在表單上添加一個頁框控件和兩個命令按鈕。
- 右鍵單擊頁框控件,在彈出的快捷菜單中選擇“編輯”命令。單擊選擇頁框中的第一個頁面(page1),然后在其中添加選項組(將buttoncount屬性值設置成4),并添加相應的標簽和文本框控件。
- 單擊頁框中的第二個頁面(page2),然后在其中添加兩個列表框及相應的標簽和命令按鈕。
- 設置表單及表單中的各標簽、命令按鈕和選項按鈕的caption屬性值,并調(diào)整好表單及表單內(nèi)各控件的位置與大小。
- 將“可選字段”列表框(list1)的rowsourcetype屬性值設置成8(結構),rowsource屬性值設置成“學生”,multiselect屬性值設置成.t.。
- 將“被選字段”列表框(list2)的rowsourcetype屬性值設置成0(無),multiselect屬性值設置成.t.。該列表框的條目將在表單運行過程中通過方法additem和removeitem添加和刪除。
- 為使表單符合對話框的特點,將表單的maxbutton和minbutton屬性值設置成.f.,
- 設置“所有學生”選項按鈕的click事件代碼:
this.parent.parent.text1.enabled=.f. this.parent.parent.text2.enabled=.f. this.parent.parent.text3.enabled=.f. this.parent.parent.text4.enabled=.f.
- 設置其他各選項按鈕的click事件代碼。
設置“在……之前”選項按鈕的click事件代碼: this.parent.parent.text2.enabled=.f. this.parent.parent.text3.enabled=.f. this.parent.parent.text4.enabled=.f. this.parent.parent.text1.enabled=.t. 設置“在……之后”選項按鈕的click事件代碼: this.parent.parent.text1.enabled=.f. this.parent.parent.text3.enabled=.f. this.parent.parent.text4.enabled=.f. this.parent.parent.text2.enabled=.t. 設置“在……之間”選項按鈕的click事件代碼: this.parent.parent.text1.enabled=.f. this.parent.parent.text2.enabled=.f. this.parent.parent.text3.enabled=.t. this.parent.parent.text4.enabled=.t.
- 設置“添加”命令按鈕的click事件代碼:
for i=1 to this.parent.list1.listcount if this.parent.list1.selected(i) this.parent.list2.additem(this.parent.list1.list(i)) endif endfor
- 設置“移去”命令按鈕的click事件代碼:
i=1 do while i<=this.parent.list2.listcount if this.parent.list2.selected(i) this.parent.list2.removeitem(i) else i=i+1 endif enddo
- 設置“確認”命令按鈕的click事件代碼:
*生成條件表達式字符串 cond="" me=thisform.pageframe1.page1.optiongroup1.value do case case me=2 cond="出生日期<ctod(thisform.pageframe1.page1.text1.value)" case me=3 cond="出生日期>ctod(thisform.pageframe1.page1.text2.value)" case me=4 cond="出生日期>ctod(thisform.pageframe1.page1.text3.value); .and.出生日期<ctod(thisform.pageframe1.page1.text4.value)" endcase *生成輸出項字符串 items="" if thisform.pageframe1.page2.list2.listcount=0 items="*" else for i=1 to thisform.pageframe1.page2.list2.listcount items=items+thisform.pageframe1.page2.list2.list(i)+"," endfor items=subs(items,1,len(items)-1) endif if cond=="" select &items from 學生表 else select &items from 學生表 where &cond endif
- 設置“取消”命令按鈕的click事件代碼:
thisform.release
|