標簽(Label)控件
命令按鈕(CommandButton) 控件
命令組(CommandGroup)控件
文本框(textBox)控件
編輯框(editbox)控件
復選框(checkbox)控件
選項組(optiongroup)控件列表框(listbox)控件
組合框(combox)控件
表格控件
頁框控件
可以編寫代碼來改變 Label 控件顯示的文本,以響應運行時的事件。例如,如果一個應用程序要幾分鐘時間作改動,則可以顯示 Label 中的進程狀態(tài)信息。還可以使用 Label 來標識控件,例如 TextBox 控件沒有自己的 Caption 屬性,這時就可以使用 Label 來標識這個控件。
在 Label 控件中定義訪問鍵時,就可以按 ALT + 設定的字符來把焦點移動到 TAB 鍵順序中的下一個控件。
常用的標簽屬性
設置值 | 效果 |
DOS | 直接按訪問鍵選擇對象,若當前焦點處于組合框、列表框等要接收鍵盤輸入的對象時,訪問鍵無效。 |
WINDOWS | 一般情況下直接按訪問鍵選擇對象。若當前焦點處于組合框、列表框等要接收鍵盤輸入的對象時,按組合鍵Alt+<訪問鍵〉選擇對象。 |
語法
object.Alignment [= number],該屬性的設置值如表所述。
設置值 | 說明 |
0 | (默認值)左對齊,文本顯示在區(qū)域的左邊 |
1 | 右對齊,文本顯示在區(qū)域的右邊 |
2 | 中央對齊,將文本居中排放,使左右兩邊的空白相等 |
例 表單中有三個標簽,當鼠標單擊任何一個標簽時,都使其他兩個 標簽的標題互換。
內容要點:假設三個標簽的名稱(name屬性值)分別是Label1、Label2、Label3,它們可以從屬性窗口中獲得。
操作步驟:
CommandButton 控件可以開始、中斷或者結束一個進程。選取這個控件后,CommandButton 顯示按下的形狀,所以有時也稱之為下壓按鈕。為了在 CommandButton 控件上顯示文本,需要設置其 Caption 屬性??梢酝ㄟ^單擊 CommandButton 選中這個按鈕。為了能夠在按 ENTER 鍵時也選中命令按鈕,需要將其 Default 屬性設置為 True。為了能夠按 ESC 鍵時也選中 CommandButton,則需要將 CommandButton 的 Cancel 屬性設置成 True。
常用屬性有以下幾個:
部分 | 描述 |
Object | 對象表達式 |
Boolean | 布爾表達式,指定該命令按鈕是否為缺省按鈕, |
設置值
boolean 的設置值為
設置值 | 描述 |
True | 該 CommandButton 是缺省命令按鈕。 |
False | (缺省值)該 CommandButton 不是缺省命令按鈕。 |
窗體中只能有一個命令按鈕可以為缺省命令按鈕。當某個命令按鈕的 Default 設置為 True 時,窗體中其它的命令按鈕自動設置為 False。
確認按鈕的行為要受KEYCOMP設置(DOS或WINDOWS)的影響。在“確認”按鈕所在的表單激活的情況下,“確認”按鈕的行為如表所示。
設置值 | 效果 |
DOS | 按Ctrl+Enter,選擇“確認”按鈕,執(zhí)行 click事件代碼 |
WINDOWS | 當焦點不在命令按鈕上時,按enter,選擇“確認”按鈕,執(zhí)行click事件代碼。 |
命令組(CommandGroup)控件
命令組控件是包含一組命令按鈕的容器控件,用戶可以單個或作為一組來操作其中的 按鈕。
在表單設計器中,為了選擇命令組中的某個按鈕,有如下兩種方法:從屬性窗口的對象下拉式組合框中選擇所需的命令按鈕;用鼠標右鍵單擊命令組,然后從彈出的快捷菜單中選擇“編輯”命令,這樣命令組就進入了編輯狀態(tài),用戶可以通過鼠標單擊來選擇某個具體的命令按鈕。
常用的屬性有:
文本框(textBox)控件
用戶利用它可以在內存變量、數組元素或非備注型字段中輸入或編輯數據。文本框可以編輯任何類型的數據。如果編輯的是日期型或日期時間型數據,那么在整個內容被選定的情況下,按“+”或“-”,可以使日期增加一天或減少一天。
為了在 TextBox 控件中顯示多行文本,要將 MultiLine 屬性設置為 True。如果多行 TextBox 沒有水平滾動條,那么即使 TextBox 調整了大小,文本也會自動換行。為了在 TextBox 上定制滾動條組合,需要設置 ScrollBars 屬性。如果文本框的 MultiLine 屬性設置為 True 而且它的 ScrollBars 沒有設置為 None (0),則滾動條總出現在文本框上。如果將 MultiLine 屬性設置為 True,則可以在 TextBox 內用 Alignment 屬性設置文本的對齊。如果 MultiLine 屬性是 False,則 Alignment 屬性不起作用。
常用的屬性為:
X | 允許輸入任何字符 |
9 | 允許輸入數字和正負號 |
# | 允許輸入數字、空格和正負號 |
$ | 在固定位置上顯示當前貨幣符號(由SET CURRENCY 命令指定) |
$$ | 在數值前面相鄰的位置上顯示當前貨幣符號(浮動貨幣符) |
* | 在數值左邊顯示* |
. | 指定小數點的位置 |
, | 分隔小數點左邊的數字串 |
inputmask屬性值中可包含其他字符,這些字符在文本框中將會原樣顯示。
該屬性在設計和運行時可用。除了文本框,還適用于組合框、列等控件。例 用表單設計一個登陸界面,如圖所示,當輸入用戶名和口令并按確認鍵后,檢驗其輸入是否正確,若正確(假定用戶名為ABCDEF,口令為123456),就顯示“歡迎使用...”若不正確,則顯示“用戶名或口令不對,”如果三次輸入不正確,就顯示“用戶名或口令不對,登陸失??!”并關閉。
要將“確認”按鈕設置為Default按鈕。另外,口令限制為6位數字,輸入時顯示*號。
內容要點:
假設“用戶名”文本框、“口令”文本框以及“確認”命令按鈕的name屬性值分別為Text1、Text2和command1。Text2的InputMask屬性值為999999,passwordChar屬性值為*。Command1的Default屬性值為.T.。
命令按鈕Command1的click事件代碼如下,其中num是為表單新添加的屬性,用以保存本次登陸輸入的次數。
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
操作步驟:
編輯框(editbox)控件
與文本框相似,但它有自己的特點:編輯框實際上是一個完整的字處理器,利用它能夠選擇、剪切、粘貼以及復制正文;可以實現自動換行;能夠有自己的 垂直滾動條可以用箭頭鍵在正文里面移動光標。編輯框只能輸入、編輯字符型數據,包括字符型內存變量、數組元素、字段以及備注字段里的內容。
常用屬性有:
設置值 | 說明 |
True (.T.) | 編輯框里允許使用tab鍵;按Ctrl+Tab時焦點移出編輯框 |
False (.F.) | 編輯框里不能使用tab鍵,按tab時焦點移出編輯框 |
設置值 | 說明 |
True (.T.) | (默認值)失去焦點時,編輯框中選定的文本不顯示為選定狀態(tài)。當編輯框再次獲得焦點時,選定文本重新顯示為選定狀態(tài) |
False (.F.) | 失去焦點時,編輯框中選定的文本仍顯示為選定狀態(tài) |
readonly屬性
指定用戶能夠編輯編輯框中的內容。其屬性設置如表所示。readonly屬性與enabled屬性是有區(qū)別的。盡管在readonly為.T.和enabled為.F.兩種情況下,都使編輯框具有只讀的特點,但在前兩種情況下,用戶仍能夠移動焦點至編輯框上并使用滾動條,而后種情況則不可能。該屬性在設計時可用,在運行時可讀寫。除了編輯框,還適用于文本框、表格等控件。
設置值 | 說明 |
True (.T.) | 不能編輯編輯框中的內容 |
False (.F.) | (默認值)能夠編輯編輯框中的內容 |
srollbars屬性
指定編輯框是否具有滾動條,當屬性值為0時,編輯框沒有滾動條;當屬性值為2時,編輯框有垂直滾動條。
該屬性在設計時可用,在運行時可寫。除了編輯框,還適用于表單、表格等控件。
selstart屬性
返回用戶在編輯框中所選文本的起始點位置(沒有文本選定時)。也可用以指定要選文本的起始位置或插入點位置。屬性的有效取值范圍在0與編輯區(qū)中的字符總數之間。
該屬性在設計時不可用,在運行時可讀寫。除了編輯框,還適用于文本框、組合框等控件。
selLength屬性
返回用戶在控件的文本輸入區(qū)中所選定字符的數目,或指定要選定的字符數目。屬性的有效范圍在0與編輯區(qū)中的字符總數之間,若小于0,將產生一個錯誤。
該屬性在設計時不可用,在運行時可寫。除了編輯框,還適用于文本框、組合框等控件。
seltex屬性
返回用戶編輯區(qū)內選定的文本,如果沒有選定任何文本,則返回空串。該屬性在設計時不可用,在運行時可讀寫。除了編輯框,還適用于文本框、組合框等控件。
selstart屬性、selLength屬性和seltex屬性配合使用,可以完成諸如設置插入點的位置、控制插入點的移動范圍、選擇字串、清除文本等的一些任務。
使用這些屬性時,需要注意它們的以下行為:
例 表單里飽含一個編輯框edit1和兩個命令按鈕command1(查找)、command2(替換),如圖所示,要求:單擊command1時,選擇edit1里的某個單詞example;單擊command2時,用單詞exercise置換一選擇的單詞example。
內容要點:
編輯框的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操作步驟:
復選框(checkbox)控件
一個復選框用于標記一個兩值狀態(tài),如真(.T.)或假(.F.)。當處于真狀態(tài)時,復選框內顯示一個對勾;否則,復選框內為空白。
復選框(checkbox)控件
一個復選框用于標記一個兩值狀態(tài),如真(.T.)或假(.F.)。當處于真狀態(tài)時,復選框內顯示一個對勾;否則,復選框內為空白。
屬性值 | 說明 |
0或.f. | (默認值),未被選中 |
1或.t. | 被選中 |
2或.null. | 不確定,只在代碼中有效 |
controlsource屬性
指明與復選框建立聯系的數據源。作為數據源的字段變量或內存變量,其類型可以是邏輯型或數值型。對于邏輯型變量,值.F.、.T.和.null.分別對應復選框未被選中、被選中和不確定。對于數值型變量,值0、1和2(或.null.)分別對應復選框未被選中、被選中和不確定。用戶對復選框操作結果會自存儲到數據源變量以及value屬性中。
復選框的不確定狀態(tài)與 不可選狀態(tài)不同。不確定狀態(tài)只表明復選框的當前狀態(tài)值不屬于兩個正常狀態(tài)之中的一個,但用戶仍能對其進行選擇操作,并使其變?yōu)榇_定狀態(tài)。而不可選狀態(tài)則表明用戶現在不適合針對它作出某種選擇。在屏幕上,不確定狀態(tài)復選框以灰色顯示,標題文字正常顯示。而不可選狀態(tài)復選框標題文字的顯示顏色由diasbledbackcolor和diasbledforecolor
選項按鈕組是包含選項按鈕的容器。通常,選項按鈕允許用戶指定對話框中幾個操作選項中的一個,而不是輸入數據。
設置選項按鈕組中的選項按鈕數目
在表單中創(chuàng)建一個選項按鈕組時,它默認地包含兩個選項按鈕,改變 ButtonCount 屬性可以設置選項按鈕組中的選項按鈕數目。
THISFORM.opgChoices.Buttons(3).Caption = "Sort by Customer"
列表框(listbox)控件
列表框提供一組條目(數據項),用戶可以從中選擇一個或多個條目。一般情況下,列表框顯示其中的若干條目,用戶可以通過滾動條瀏覽其他條目。
常用的屬性:
rowsourcetype rowsourcetype屬性指明列表框中條目數據源的類型,rowsource屬性指定列表框的條目數據源。 rowsourcetype屬性的取值范圍及含義如下表所示。
屬性值 | 說明 |
0 | 無(默認值)。在程序運行時,通過additem方法添加列表框條目,通過removeitem方法移去列表框條目 |
1 | 值。通過rowsource屬性手工指定的具體的列表框條目 |
2 | 別名。江表中的字段執(zhí)作為列表框的條目。columncount屬性指定要取的字段數目,也就是列表框的列數。指定的字段總是表中最前面的若干字段。 |
3 | sql語句。將sql select語句的執(zhí)行結果作為列表框的條目的數據源。 |
4 | 查詢(.pqr)。將.pqr文件執(zhí)行產生的結果作為列表框條目的數據源 |
5 | 數組。將數組中的內容作為列表框條目的來源。 |
6 | 字段。將表中的一個或幾個字段作為列表框條目的數據源 |
7 | 文件。將某個驅動器和目錄下的文件名作為列表框的條目,在運行時,用戶可以選擇不同的驅動器和目錄,可以利用文件名框架指定一部分文件。如要在列表框中顯示當前目錄下visual foxpro表文件清單,可將rowsource屬性設置為*.dbf |
8 | 結構。將表中的字段名作為列表框的條目,由rowsource屬性指定表。若Rowsource屬性值為空,則列表框顯示當前表中的 字段名清單 |
9 | 彈出式菜單。將彈出式菜單作為列表框條目的數據源 |
兩個屬性在設計和運行時可用。還適合于組合框。
list屬性 用以存取列表框中數據條目的字符串數組。 該屬性在設計時不可用,在運行時可讀寫。還適合于組合框。
istcount屬性 指明列表框中數據條目的數目。 該屬性在設計時不可用,在運行時只讀。還適合于組合框。
columncount屬性 指定列表框的列數 對于列表框和組合框,該屬性在設計和運行時可用。還適合于組合框和表格。
value屬性 返回列表框中別選中的條目。該屬性值可以是數值型也可以是字符型。如果列表框不止一列,則返回由 boundcolumn指明的列上的數據項。 對于列表框和組合框。該屬性只讀,該屬性的取值及類型總是與controlsource屬性所指定的字段或內存變量 的取值及類型保持一致。
controlsource屬性 該屬性在列表框中的用法與其他控件中的用法有所不同。在這里,用戶可以通過該屬性指定的一個字段或變量 用以保存用戶從列表框中選擇的結果。
selectd屬性 制定列表框內的某個條目是否處于選定狀態(tài)。
multiselect屬性 指定用戶能否在列表框控件內進行多重選定。
返回
組合框(combox)控件組合框和列表框類似,主要區(qū)別在于:組合框只有一個條目是可見的。組合框不提供多重選擇的功能。
組合框有兩種形式:下拉組合框和下拉列表框,通過設置style屬性可選擇想要的形式。
返回
表格控件
表格是一個容器對象,和表單集包含表單一樣,表格也能包含列。這些列除了包含標頭和控件外,每一個列還擁有自己的一組屬性、事件和方法程序,從而為表格單元提供了大量的控件。
表格設計的基本操作
調整表格中行的高度
在表格設計方式下,將鼠標指針置于“表格”控件左側的第一個按鈕和第二個按鈕之間,這時指針將變成帶有向上和向下箭頭的橫條。
將行拖動到需要的寬度。
– 或者 –在“屬性”窗口中設置列的 Height 屬性。
提示 將 AllowRowSizing 設置為“假”(.F.),可以防止用戶在運行時刻改變表格行的高度。
表格設計也可以調用表格生成器來進行。步驟如下:
先在表單上放置一個表格。
右鍵單擊表格在彈出的快捷菜單中選擇表單生成器打開生成器對話框,然后設置有關參數。
生成器選項卡的含義
表格項指定要在表格中顯示的字段。
樣式指定表格顯示的樣式。
布局指定列標題和控件類型。
關系指定表格字段與表字段之間的關系。
常用的表格屬性
recordsourcetype屬性
recordsourcetype屬性指明表格數據源的類型,recordsource屬性指定表格數據源。
屬性值 | 說明 |
0 | 表。數據來源于由recordsourse屬性指定的表,該表被自動打開 |
1 | (默認值)別名。數據來源于已打開的表,由recordsource屬性指定該表的別名 |
2 | 提示。運行時,由用戶根據提示選擇表格數據源 |
3 | 查詢。數據來源于查詢,由recordsource屬性指定一個查詢文件 |
4 | sql語句,數據來源于sql語句,由recordsource屬性指定一條sql語句 |
設置了表格的recordsource屬性后,可以通過cintrolsource屬性為表格中的一列指定它所要顯示的內容,如果不指定,該列將顯示表格數據源中下一個沒有顯示的字段。這兩個屬性在設計時可用,在運行時可讀寫,都適用于表格。
ColumnCount 屬性 指定列的數目。如果 ColumnCount 設置為 -1,表格將具有和表格數據源中字段數一樣多的列。
linkmasker屬性 顯示在表格中的子記錄的父表。
childorder 和父表的主關鍵字相聯接的子表中的外部關鍵字。
relationalexpr屬性 確定基于主表字段的關聯表達式。
下表列出了在設計時刻常用的列屬性。
屬性 | 說明 |
ControlSource | 在列中要顯示的數據。常見的是表中的一個字段。 |
Sparse | 如果將 Sparse 屬性設置為“真”(.T.),表格中控件只有在列中的單元被選中時才顯示為控件(列中的其他單元仍以文本形式顯示)。將 Sparse 設置為“真”(.T.),允許用戶在滾動一個有很多顯示行的表格時能快速重畫。 |
CurrentControl | 表格中哪一個控件是活動的。默認值為“Text1”。如果在列中添加了一個控件,則可以將它指定為 CurrentControl。 |
交互地在表格列中添加控件,操作步驟如下:
products.discontinu
,這個文件保存在 \Samples\VFP\DATA 目錄下。 當運行表單時,這個控件將顯示在表格列中。
在運行時刻,復選框顯示在列中。
提示 如果想讓復選框在表格列中居中,可先創(chuàng)建一個容器類,將復選框添加到容器類中,并調整復選框在容器類中的位置。然后將容器類添加到表格列中,并將復選框的 ControlSource 屬性設置為需要的字段。若要在“表單設計器”中移去表格列中的控件。
也可以在代碼中使用 AddObject 方法程序將控件添加到表格列中。
可以把頁框想象為有多層頁面的三維容器,只有最上層頁面(或在頁框的頂部)中的控件才是可見和活動的。
表單上一個頁框可有多個頁面,頁框定義了頁面的位置和頁面的數目,頁面的左上角固定在頁框的左上角??丶芊胖迷诔鲰摽虺叽绲捻撁嫔?。這些控件是活動的,但如果不從程序中改變頁框的 Height 和 Width 屬性,那么這些控件不可見。
使用頁框和頁面,可以創(chuàng)建帶選項卡的表單或對話框,和“項目管理器”中見到的一樣。
此外,用頁框還能在表單中定義一個區(qū)域,在這個區(qū)域中可以方便地將控件換入換出。例如,在向導中,表單的大部分內容是保持不變的,但有一個區(qū)域在每一步都要更改。此時不必為向導的不同步驟創(chuàng)建五個表單,而只需創(chuàng)建一個帶有頁框的表單,頁框中有五個頁面即可。
將頁框添加到表單的操作步驟如下:
向頁框中添加控件的操作步驟如下:
從頁框的快捷菜單中選擇“編輯”命令,將頁框激活為容器。頁框的邊框變寬,表示它處于活動狀態(tài)。
同與向表單中添加控件的方法,向頁框中添加控件。
注釋 和其他容器控件一樣,必須選擇頁框,并從用鼠標右鍵彈出的快捷菜單中選擇“編輯”命令,或在“屬性”窗口的“對象”下拉列表中選擇容器。這樣,才能先選擇這個容器(具有寬邊),再朝正設計的頁面中添加控件。在添加控件前,如果沒有將頁框作為容器激活,控件將添加到表單中而不是頁面中,即使看上去好象是在頁面中。
在頁框中選擇不同的頁面的操作方法如下:
單擊鼠標右鍵,將頁框作為容器激活,然后選擇“編輯”。
選擇要使用的頁面選項卡。
– 或者 –
– 或者 –
如果將控件添加到頁面上,它們只有在頁面活動時才可見和活動。
THISFORM.pgfOptions.ActivePage = 3
下表列出了在設計時刻常用的頁框屬性。
例 設計一個包含兩個選項卡的查詢對話框,用于設置查詢學生數據時所需的參數。“條件”選項卡用于設置出生日期,“輸出”選項卡用于設置顯示字段。單擊“確認”按鈕將根據設置的參數查詢顯示有關學生數據。單擊“取消”按鈕,關閉對話框。
條件選項卡
“輸出”選項卡
操作過程: